最新物流配送中的最优路径规划模拟软件课件
- 格式:doc
- 大小:807.00 KB
- 文档页数:25
2018.No011 软件的功能1)输入随机的两个点,弹出两个窗口;2)窗口1中显示生成的随机路径图,计算出来的随机路径的距离,及它所经过的点;3)窗口2显示两个点之间的最短路径图,计算出的最短路径的距离,及所经过的点。
2 软件的设计将城市数量设置为50个;xy=10*rand(N,2)随机产生N个城市的地理位置坐标,第一列表示横坐标,第二列纵坐标,产生地理位置坐标的无向连接图A;A(i,j)=1表示从城市i到城市j存在通路,为0则不可达。
A=zeros(N)区域三角分割,形成部分可达路径,即连接图;输入任意两点,以生成一条随机可达路径;source=input请输入起始物流点序号(1,2,...,N,默认为1);sink=input请输入终止物流点序号(1,2,...,N,默认为N);窗口1显示生成随机路径图、所经过的点和随机路径的距离;窗口2显示最短路径图、所经过的点和最短路径的距离。
3 软件的实现1)如图1,程序运行,输入起始点1,终止点9。
生成窗口1(如图2)随机路线图,路径路程为30,所显示的点是1至9之间一条可以通行的路径。
窗口2(如图3所示)生成1到9最短路径图;通过计算在图中找出最短路径,这条路径的路程是9。
物流配送中的最优路径规划模拟软件设计及实现王茂钢(广东省工业贸易职业技术学校 广东佛山 528237)2)如图4所示,输入起始点2,终止点16,得出运行结果:如图5,输入2和16后,在窗口1中生成随机路线图,这些点连接成一条2到16的路。
窗口2(如图6所示)在2到16的所有路径中计算得到最短路线图,最短路径为:2,32,15,7,16。
3)如图7,输入起始点20,终止点48。
如图8所示,d在窗口1生成一个20到48的随机路线图。
窗口2(如图9所示)生成20到48的最短路径图,最优配送路径为20,40,1,15,48;并显示计算出的最短路程:根据实现结果分析:在给定点的范围内,任意输入两个点,窗口1显示生成的随机路线图及路线的路程;窗口2显示生成的最短路径图及最短路径的路程,通过图可以直观的得到这两个点之间配送的最优路径。
物流配送中的最优路径规划模拟软件说明书学校:武汉轻工大学院系:数学与计算机学院专业:信息与计算科学指导教师:王防修小组名称:一苹微歌小组成员:胡鹏程新强彭肖飞日期:_____年______月_____日目录1引言-----------------------------------------------------1 2算法思路-------------------------------------------------2 3总体设计------------------------------------------------15 4系统出错处理设计----------------------------------------17 5客户数据生成模块设计说明--------------------------------18 6行车路径最短模块设计说明--------------------------------18 7行车时间最短模块设计说明--------------------------------19 8解决堵车问题模块设计说明--------------------------------20 9未解决的问题--------------------------------------------21 10参考资料-----------------------------------------------211引言1.1编写目的在B2C农产品电子商务物流配送时,物流车装载当日需要配送的货品从仓库出发,按照事先规划好的最优配送路径为每一个客户进行配送,最后返回仓库。
物流配送模拟系统就是在配送之前需要根据客户的配送地址间线路间距、经验路况做分析计算出一条最优配送路径。
在配送过程中,如果某路段堵车,物流配送模拟系统需要动态调整配送路线。
1.2背景说明设计一个物流配送中的最优路径规划模拟软件,解决物流配送过程中路程最短,时间最短以及堵车后重新规划等问题,并在软件的界面上模拟车辆的运行。
物流配送中的最优路径规划模拟软件说明书学校:武汉轻工大学院系:数学与计算机学院专业:信息与计算科学指导教师:王防修小组名称:一苹微歌小组成员:胡鹏程新强彭肖飞日期:_____年______月_____日目录1引言-----------------------------------------------------1 2算法思路-------------------------------------------------2 3总体设计------------------------------------------------15 4系统出错处理设计----------------------------------------17 5客户数据生成模块设计说明--------------------------------18 6行车路径最短模块设计说明--------------------------------18 7行车时间最短模块设计说明--------------------------------19 8解决堵车问题模块设计说明--------------------------------20 9未解决的问题--------------------------------------------21 10参考资料-----------------------------------------------211引言1.1编写目的在B2C农产品电子商务物流配送时,物流车装载当日需要配送的货品从仓库出发,按照事先规划好的最优配送路径为每一个客户进行配送,最后返回仓库。
物流配送模拟系统就是在配送之前需要根据客户的配送地址间线路间距、经验路况做分析计算出一条最优配送路径。
在配送过程中,如果某路段堵车,物流配送模拟系统需要动态调整配送路线。
1.2背景说明设计一个物流配送中的最优路径规划模拟软件,解决物流配送过程中路程最短,时间最短以及堵车后重新规划等问题,并在软件的界面上模拟车辆的运行。
随着市场经济的发展和物流技术专业化水平的提高,物流配送业得到了迅猛发展。
配送路径的选择是否合理,对加快配送速度、提高服务质量、降低配送成本及增加经济效益都有较大影响。
配送路径的优化问题是物流配送系统的一个主要问题,物流配送路径的优化就是以最低的运营成本,最快捷的响应速度、最短的配送运输时间,把货物运至用户手中,而后两个指标与第一个指标之间存在着一定的制约关系,无法达到全体的最优,因此严格地讲,这是一个多目标的优化问题。
1.3定义T S P(Traveling Salesman Problem):旅行商问题Backtrack:回溯GA (Genetic Algorithm ):遗传算法SA(Simulated Annealing):模拟退火算法2算法思路2.1回溯算法2.1.1回溯法的定义回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。
但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
2.1.2 回溯法的描述可用回溯法求解的问题P ,通常要能表达为:对于已知的由n 元组),...,,(21n X X X 组成的一个状态空间E={),...,,(21n X X X ∣i X ∈i S ,i=1,2,…,n},给定关于n 元组中的一个分量的一个约束集D ,要求E 中满足D 的全部约束条件的所有n 元组。
其中i S 是分量i X 的定义域,且 |i S | 有限,i=1,2,…,n 。
我们称E 中满足D 的全部约束条件的任一n 元组为问题P 的一个解。
解问题P 的最朴素的方法就是枚举法,即对E 中的所有n 元组逐一地检测其是否满足D 的全部约束,若满足,则为问题P 的一个解。
但显然,其计算量是相当大的。
我们发现,对于许多问题,所给定的约束集D 具有完备性,即i 元组),...,,(21i X X X 满足D 中仅涉及到1X ,2X ,…,i X 的所有约束意味着j 元组(1X ,2X ,…,j X )一定也满足D 中仅涉及到1X ,2X ,…,j X 的所有约束,i =1,2,…,n 。
换句话说,只要存在0≤j≤n -1,使得(1X ,2X ,…,j X )违反D 中仅涉及到1X ,2X ,…,j X 的约束之一,则以(1X ,2X ,…,j X )为前缀的任何n 元组(1X ,2X ,…,j X ,1+j X ,…,n X )一定也违反D 中仅涉及到1X ,2X ,…,i X 的一个约束,因此,对于约束集D 具有完备性的问题P ,一旦检测断定某个j 元组(1X ,2X ,…,j X )违反D 中仅涉及1X ,2X ,…,j X 的一个约束,就可以肯定,以(1X ,2X ,…,j X )为前缀的任何n 元组(1X ,2X ,…,j X ,1+j X ,…,n X )都不会是问题P 的解,因而就不必去搜索它们、检测它们。
回溯法正是针对这类问题,利用这类问题的上述性质而提出来的比枚举法效率更高的算法。
回溯法首先将问题P 的n 元组的状态空间E 表示成一棵高为n 的带权有序树T ,把在E 中求问题P 的所有解转化为在T 中搜索问题P 的所有解。
树T 类似于检索树,它可以这样构造:设i S 中的元素可排成i X (1),i X (2),…,i X (i m -1),|i S |=i m ,i=1,2,…,n 。
从根开始,让T 的第I 层的每一个结点都有i m 个儿子。
这i m 个儿子到它们的双亲的边,按从左到右的次序,分别带权1+i X (1) ,1+i X (2) ,…,1+i X (i m ) ,i=0,1,2,…,n-1。
照这种构造方式,E 中的一个n 元组),...,,(21n X X X 对应于T 中的一个叶子结点,T 的根到这个叶子结点的路径上依次的n 条边的权分别为n X X X ,...,,21,反之亦然。
另外,对于任意的0≤i≤n -1,E 中n 元组),...,,(21n X X X 的一个前缀I 元组),...,,(21i X X X 对应于T 中的一个非叶子结点,T 的根到这个非叶子结点的路径上依次的I 条边的权分别为i X X X ,...,,21,反之亦然。
特别,E 中的任意一个n 元组的空前缀(),对应于T 的根。
因而,在E 中寻找问题P 的一个解等价于在T 中搜索一个叶子结点,要求从T 的根到该叶子结点的路径上依次的n 条边相应带的n 个权n X X X ,...,,21满足约束集D 的全部约束。
在T 中搜索所要求的叶子结点,很自然的一种方式是从根出发,按深度优先的策略逐步深入,即依次搜索满足约束条件的前缀1元组(1X )、前缀2元组(1X ,2X )、…,前缀I 元组),...,,(21i X X X ,…,直到i=n 为止。
在回溯法中,上述引入的树被称为问题P 的状态空间树;树T 上任意一个结点被称为问题P 的状态结点;树T 上的任意一个叶子结点被称为问题P 的一个解状态结点;树T 上满足约束集D 的全部约束的任意一个叶子结点被称为问题P 的一个回答状态结点,它对应于问题P 的一个解。
2.1.3回溯法的基本思想(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
用回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间。
在任何时刻,算法只保存从根结点到当前扩展结点的路径。
如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为O(n)。
而显式地存储整个解空间则需要O(2n)或O(n!)内存空间.2.1.4回溯法在TSP问题上的应用旅行商问题的回溯算法可作为类Traveling 的一个成员。
在其他例子中,有一个成员函数:Backtrack与T S P。
前者是一个保护或私有成员,后者是一个共享成员。
函数G .T S P ( v )返回最少耗费旅行的花费,旅行自身由整型数组 v 返回。
若网络中无旅行,则返回No edge。
Backtrack在排列空间树中进行递归回溯搜索, T S P是其一个必要的预处理过程。
TSP假定x(用来保存到当前节点的路径的整型数组),best x(保存目前发现的最优旅行的整型数组),c c(类型为T的变量,保存当前节点的局部旅行的耗费),best c (类型为T的变量,保存目前最优解的耗费)已被定义为Traveling 中的静态数据成员。
函数Backtrack见下。
它的结构与函数Perm相同。
当i=n 时,处在排列树的叶节点的父节点上,并且需要验证从X到n X有一条边,n[]1从X到起点1X也有一条边。
若两条边都存在,则发现了一个新旅行。
n在本例中,需要验证是否该旅行是目前发现的最优旅行。
若是,则将旅行和它的耗费分别存入best x与best c中。
当i <n 时,检查当前i-1 层节点的孩子节点,并且仅当以下情况出现时,移动到孩子节点之一:1. 有从1 i X 到i X 的一条边(如果是这样的话,]:1[i X 定义了网络中的一条路径);2.路径]:1[i X 的耗费小于当前最优解的耗费。
变量cc 保存目前所构造的路径的耗费。
每次找到一个更好的旅行时,除了更新best x 的耗费外,Backtrack 需耗时O((n- 1 )!)。
因为需发生O((n-1)!)次更新且每一次更新的耗费为(n)时间,因此更新所需时间为O(n(n- 1)!)。
通过使用加强的条件能减少由Backtrack 搜索的树节点的数量。
2.2遗传算法2.2.1遗传算法的定义遗传算法(Genetic Algorithm )是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它是由美国Michigan 大学J. Holland 教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems 》,GA 这个名称才逐渐为人所知,J. Holland 教授所提出的GA 通常为简单遗传算法(SGA )。
遗传算法是从代表问题可能潜在的解集的一个种群(population )开始的,而一个种群则由经过基因(gene )编码的一定数目的个体(individual)组成。
每个个体实际上是染色体(chromosome)带有特征的实体。
染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。