送货路线的优化设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一问题重述
现今社会网络越来越普及,网购已成为一种常见的消费方式,随之物流行业也渐渐兴盛,每个送货员需要以最快的速度及时将货物送达,而且他们往往一人送多个地方,请设计方案使其耗时最少。
现有一快递公司,库房在图1中的O点,一送货员需将货物送至城市内多处,请设计送货方案,使所用时间最少。该地形图的示意图见图1,各点连通信息见附表表3,假定送货员只能沿这些连通线路行走,而不能走其它任何路线。各件货物的相关信息见附表表1,50个位置点的坐标见附表表2。
假定送货员最大载重50公斤,所带货物最大体积1立方米。送货员的平均速度为24公里/小时。假定每件货物交接花费3分钟,为简化起见,同一地点有多件货物也简单按照每件3分钟交接计算。
现在送货员要将100件货物送到50个地点。请完成以下问题。
1. 若将1~30号货物送到指定地点并返回。设计最快完成路线与方式。给出结果。要求标出送货线路。
2. 假定该送货员从早上8点上班开始送货,要将1~30号货物的送达时间不能超过指定时间,请设计最快完成路线与方式。要求标出送货线路。
3. 若不需要考虑所有货物送达时间限制(包括前30件货物),现在要将100件货物全部送到指定地点并返回。设计最快完成路线与方式。要求标出送货线路,给出送完所有快件的时间。由于受重量和体积限制,送货员可中途返回取货。可不考虑中午休息时间。
图1 快递公司送货地点示意图
O点为快递公司地点,O点坐标(11000,8250),单位:米
(各货物号及信息见附表一;五十个为位置点的坐标见附表二;各连通位置点之间的相互到达信息见附表三)
二模型假设
一:假定送货员在送货期间不需要休息,且速度保持以二十四公里每小时不变。二:假定送货员只能沿这些连通线路行走,而不能走其它任何路线。
三:假定任一送货员的最大载重为五十公斤,所带货物最大体积为一立方米。四:假定送货员按时上班并且不考虑中午休息时间。
五:假定送货员在送货途时能顺利到达下一个目的地,途中无意外事件的发生。六:假定不存在交接货物延时情况且单件或多件货物交接时交接时间均能按每
件三分钟计算。
三 符号说明
m
为蚁群中蚂蚁数量;
()i b t 为t 时刻位于点i 的蚂蚁个数,且m =1
()n
i i b t =∑;
ij d 为城市i 和j 之间的距离;
ij n
为边(i ,j )的能见度,反映由点i 转移到点j 的启发程度; ij τ
为边(i ,j )上的信息素轨迹强度;
ij τ
为蚂蚁k 在边(i ,j )上留下的单位长度轨迹信息素量; k ij p 为蚂蚁k 的转移概率; J 是尚未访问的城市。 n 为城市个数
C
为n 个城市的坐标,n ×2的矩阵
NC_max 最大迭代次数 M
为蚂蚁个数
Alpha 表征信息素重要程度的参数 Beta 表征启发式因子重要程度的参数 Rho 信息素蒸发系数 Q
信息素增加强度系数 R_best 各代最佳路线 L_best
各代最佳路线的长度
四 问题分析
问题一:
此问题研究如何最快地将货物送到指定地点并返回。问题中不考虑时间限制,由于送货时涉及到最大载重量和最大体积,所以此处我们先考虑前30件货物的总重量 m 和总体积 v ,经过计算得:m =48.5公斤, 1V =0.88立方米。
所有需运送的货物重量及体积均未达最大承受值。即送货员可往复一次将所要求货物送完。因此该问题是经典的最佳旅行售货员回路的求解问题。 问题二:
由简单计算可得30件货物的质量和体积均在送货员一次送货运载能力范围内,此时问题等价于在第一问中添加了时间限制因素。在这种条件下,一种极端的情况送货员沿任意一条路径送递完全部货物,都能满足所有货物的时限要求,这时问题已变成了第一问中一般的TSP 问题;在另一种极端情况下,一个送货员不可能在规定的时限内将全部货物送达,即问题无解。经过计算,可知第二问中的描述属于中间情况,故可将其进行组合优化得到最优解。
五 模型的建立及求解
问题一:建立图论模型。在此采用蚁群算法进行求解。
第一步:初始化,将所有送货点坐标列出,并计算出关联两点之间的距离,对于不关联的两点距离赋给一个很大的值,以便于求解。在利用蚁群算法求解赋权图(,)G V E =的最佳旅行售货员回路中,需先求出G 中任意两个顶点之间的最短路径,然后构造一个完全赋权图'G '(,)V E =,'(,),(,)min (,)G i j E i j d i j ω∀∈=。求解任意两顶点的最短路采用Floyd 算法。为得到最短路径,设路径矩阵R ,i 到j 之间经过的点()k ij r ,()()2525()k k ij R r ⨯=。
利用Floyd 算法求解完全赋权图:输入带权邻接矩阵2525((,))W i j ω⨯= (1) 赋初值:对所有,i j ,(,)(,),(,), 1.d i j i j r i j j k ω←←← (2) 更新:对所有i,j,若(,)(,)(,)d i k d k j d i j +<,则
(,)(,)(,),(,).d i j d i k d k j r i j k ←+←
(3) 若25,k =停止运算;否则1,k k ←+重复(2)(3).
(4) 若()1,k ij r a =则点1a 是i 到j 的最短路的中间点。然后用同样方法查找。
第二步:用蚁群算法迭代一次,得出一个最优解,由此来计算出max τ和min τ的大小。由max τ得到信息素的初值,然后进行信息素更新,判断是否超出(max τ,min τ)范围,如果超出,则限制大小。
第三步:继续迭代,直到第三次,得到min τ。判断信息素是否超出(max τ,min τ),如果超出,则限制大小。
第四步:往复迭代计算,直到达到最大迭代次数。每一次计算都得出新的最优解,所以每一次计算中,max τ和min τ都会重新被更新,是一个动态变化范围。
第五步:输出最后结果。
利用Matlab 程序进行计算 (为便于计算,现将货物送达地点重新进行编号,其对应关系及位置点坐标见附表)得出结果:
路线:0—18—13—19—24—31—27—39—27—31—34—40—45—42—49—42—43—38—36—38—35—32—23—16—14—17—21—26—0
路程:54668m 路线图