二维码
萨马伯南

扫一扫关注

当前位置: 首页 » 新闻资讯 » 行业新闻 » 正文

带时间窗约束的配载车辆调度问题研究

放大字体  缩小字体 发布日期:2024-11-28 15:56:56    来源:本站    作者:admin    浏览次数:74    评论:0
导读

  满载车辆调度中,每台车只给一个客户送货,运输线路取广义费用(费用、时间或距离)的最短路,可以采用图论中Dijkstr

  满载车辆调度中,每台车只给一个客户送货,运输线路取广义费用(费用、时间或距离)的最短路,可以采用图论中Dijkstra或Floyd算法求解。车辆调度问题可分为满载车辆调度和配载车辆调度两大类。配载车辆调度中,每台车给多个客户送货,运输途中需要多次停靠、卸货,调度人员不但要将多项运输任务分组,为每组指派1台运输车辆,还要确定每台车辆的运输线路(客户停靠顺序),因此其求解过程比满载车辆调度问题复杂得多。时间窗约束是指客户对货物送达的时间要求,用客户允许送货车辆最早到达和最迟到达的时间范围来描述。

  配载车辆调度问题属于NP-hard问题,只有在问题规模很小时才可能存在可行的精确算法,通常采用启发式算法求得满意解?1?。如果不考虑时间窗和车辆容量约束,配载车辆调度问题就转化为图论中的多重旅行商问题,可以采用Clarke和Wright提出的C-K节约算法求解。C-K节约算法自从1964年被提出后就得到普遍认同,它原理简单、灵活性强、交互性好,许多优化算法都局部或全部采用C-K节约算法。本文通过改进C-K节约算法,构造配载车辆调度问题的启发式算法。

  1 配载车辆调度模型

  配载车辆调度问题可以描述为:车场向n个客户送货,第 i个客户货运量为gi,卸货时间为UTi,最早允许车辆到达时间为ETi,最迟允许车辆到达时间为LTi,中心与客户、客户与客户两两间的广义运输费用为cij,运输时间为tij(i,j = 0,1,2,…,n,车场编号为0,客户编号为1,2,…,n),送货卡车装载容量为q(q>gi,i = 1,2,…,n)。车辆不允许超载且必须在时间窗内把货物送达客户。要求指派运输车辆,并确定每台车运输线路,使得总运输费用Z最低。

  把车场和客户统一看作是运输网络中的节点。设在同一条线路上点h是点i前面的相邻点,车辆到达点h的时间为RTh,到达点i的时间为RTi,则有:

  RTi=RTh+UTh+thi(1)

  为建立调度模型,并定义二进制变量xijk、yki:

  xijk=

  yki=

  带时间窗约束的配载车辆调度模型为:

  目标函数:minZ=cijxijk(2)

  约束条件:giyki≤q ∨k(3)

  ETi≤RTi≤LTi i=1?2?…,n(4)

  yki=1 i=1?2?…,n (5)

  xijk=yki j=1?2?…,n? ∨k(6)

  xijk=yki i=1?2?…,n? ∨k(7)

  X=(xijk)∈S(8)

  目标函数(2)表示总运输里程最低,约束条件(3)表示任一台车装载量不允许车辆超过容量约束,约束条件(4)货物送到各个客户的时间必须在时间窗范围内,约束条件(5)表示任一客户只有1台车停靠卸货,约束条件(6)表示车辆k只驶入分配给其运输任务的客户,约束条件(7)表示车辆k只驶出分配给其运输任务的客户,约束条件(8)表示车辆k的线路必须是连通的。

  2 启发式算法

  2.1 C-K节约算法

  C-K节约算法的基本思想是首先把各个客户单独与车场相连,构成n条“0→i→0”(i=1,2,…,n)初始化线路,第i条线路的运输费用为:

  zi=c0i+ci0(9)

  然后把客户i和客户j连接在一起,形成线路“0→i→j→0”(i,j=1,2,…,n),计算连接后费用“节约值”:

  s(i?j)=ci0+coj-cij(10)

  s(i,j)越大,说明把客户i和客户j连接在一起时总费用节约值越多,因此应优先连接s(i,j)值大的点i和j。基于这一原则,Clarke和Wright在1964年提出C-K节约算法。约定把只有一个客户的线路(如“0→i→0”)称为初始化线路,把包含两个或两个以上客户的线路(如“0→…→i→…→0”)称为已构成线路,则C-K节约算法可以描述如下:

  step1:计算费用节约值s(i,j),i,j=1,2,…,n,并排列成二维表格。

  step2:在表格中选择最大元素s(i,j)。

  step3:考察s(i,j)对应的点i和j:

  ①若点i和j都在初始化线路上,则连接点i和j,形成已构成线路“0→i→j→0”,转step4;②若点i和j中有一个点在已构成线路上,且与车场“0”相连,而另一个点在初始化线路上,则连接点i和j,得到线路“0→i→j→…→0”或“0→…→i→j→0”,转step4;③若点i和j分别在两条不同已构成线路上,且均与车场相连,则连接点i和j,得到线路“0→…→i→j→…→0”,转step4。

  step4:划去表格中的第i行和第j列,即i点不能再作为车辆的发点,点j不能再作为车辆的收点。

  step5:若表格中所有元素s(i,j)都被划去,则已通过不断连接点对得到完整的旅行线路方案,算法终止;否则,在未划去的元素中选择最大元素,并转step3。

  2.2 C-K节约算法的改进

  C-K节约算法是为求解旅行商问题设计的,它不考虑各种约束条件,不能直接求解配载车辆调度模型。本文通过在C-K节约算法中插入时间窗和车辆容量约束的检验子程序,使之能够处理时间窗和车辆容量约束,从而构造出能够求解配载车辆调度问题的启发式算法。所谓启发式算法是指借助归纳推理和实验分析来解决问题的方法,它从与研究问题有关而较基本的模型和算法中寻求联系,得到启发,发现解决问题的思路和途径?2?。启发式算法强调满意解,即决策者认为解决方案是令人满意即可,而不去刻意追求最优性和最优解,这对求解NP-hard问题具有不可估量的作用。

  对于车辆容量约束,可以在考察点i和j时,插入车辆的装载量验算子程序,如果连接后的车辆装载量大于车辆容量,则不允许连接点i和j。设线路“0→…→i→0”的货运量为Qi,线路“0→j→…→0”的货运量为Qj,只有Qi+Qj≤q时,才允许连接点i和j,形成线路“0→…→i→j→…→0”。Qi和Qj通过累加线路上的客户货运量得到。

  对于时间窗约束需要考虑连接点i和j后会引起车辆到达j点的时间发生变化。设EFj表示连接点i和j后车辆到达j点的时间变化量,则有:

  EFj=RTi+UTi+tij-RTj(11)

  显然EFj<0时,车辆到达j点时间提前;EFj=0,车辆到达j点时间不变;EFj>0,车辆到达j点时间推迟。设r表示同一条线路上j及其后面各点,Δj-表示车辆到达j及其后面各点不违反时间窗约束的最大允许时间提前量,Δj+表示车辆到达j及其后面各点不违反时间窗约束的最大允许时间推迟量,则有:

  Δj-=min?sr-ETr?(12)

  Δj+=min?LTr-sr?(13)

  因此,当连接点i和j时,若有EFj<0且|EFj|≤Δj-,或者EFj>0且EFj≤Δj+,则连接点i和j后不会违反时间窗约束。利用这一原理,可以编写时间窗约束检验子程序,插入到C-K节约算法的step3中,只有在不违反时间窗约束情况下,才允许连接点i和j。改进的C-K节约算法如下:

  step1:计算s(i,j),令M={s(i,j)|s(i,j)>0,i,j=1,2,…,n},并把集合M内的元素s(i,j)从大到小排序。

  step2:选择集合M内的第1个元素s(i,j),考察点i和j,是否满足下列条件之一:

  ①点i和j均在初始化线路上;②点i和j一个在已构成线路上,且与车场相连,另一个在初始化线路上;③点i和j位于不同线已构成线路上,且都与车场相连。

  若满足则转step3,否则转step6。

  step3:计算若连接点i和j后车辆的总装载容量Q,若Q≤q,转step4,否则转step6。

  step4:计算若连接点i和j后的EFj值:

  ①若EFj=0,转step5;②若EFj<0,计算Δj-,若|EFj|≤Δj-,转step5,否则转step6;③若EFj>0,计算Δj+,若EFj≤Δj+,转step5,否则转step6。

  step5:连接点i和j,计算车辆到达各个客户的时间。

  step6:在集合M中消去这个最大元素s(i,j)。若M=φ,算法终止,否则转step2。

  把改进C-K节约算法编写成计算机程序,上机运算就能够很快求解出配载车辆调度问题的满意解,输出结果应包括运输线路的图形界面。配载车辆运输线路是多个闭合回路,每一个闭合回路代表1台的行驶线路?3?。如果有客户不在闭合回路上,说明该客户时间窗约束太紧,不存在满足时间窗约束解。

  3 模拟分析

  某物流中心经营啤酒配送业务,每天向12个客户运送箱装的啤酒。测量比例为1:1 000 000地图得到中心和客户坐标(xi,yi),为简化起见,中心与客户、客户与客户两两之间的运输距离通过公式dij=1.2xi-xj?2+?yi-yj0.5近似计算。车辆调度的基础数据如表1所示,送货车辆装载容量是600箱,行驶速度为60kmh,发车时间为早晨6?30。试确定车辆调度方案,使总运输里程最短。

  求解过程如下:

  (1)由公式dij=1.2xi-xj?2+?yi-yj0.5计算中心与客户、客户与客户的运输距离矩阵(dij)13×13。因为地图比例尺为1? 1 000 000,所以图中1mm代表1km,按表1数据带入公式后计算的距离单位为km。把运输距离矩阵除以车速(60kmh)得到运输时间矩阵(tij)13×13。

  (2)把车辆容量和车辆数,各客户的时间窗约束、啤酒需求量和卸货时间数据,以及运输时间矩阵和早晨发车时间输入到改进C-K节约算法程序,上机运算得到如下结果:

  第1台车:运输线路“0→5→8→12→7→0”,行驶里程为250km,在途时间6.2h;

  第2台车:运输线路“0→9→1→3→4→0”,行驶里程174km,在途时间6.2h;

  第3台车:运输线路“0→10→2→11→6→0”,行驶里程370km,在途时间8.2h。

  运输线路如图1所示。3台车总运输里程为794km,各车的发车、停靠和收车时间、装载量变化情况和各路段里程如表2所示。

  4 结束语

  配载车辆调度是一种异化的多重旅行商问题,在多重旅行商模型中添加符合配载车辆线路构形的各种约束条件后,就可以建立配载车辆调度模型。通过改进求解旅行商问题的C-K节约算法,在点对连接前插入约束条件检验子程序,能够求解配载车辆调度问题,得到满意的调度方案。文中模型和算法还可以进一步扩展,如添加驾驶员途中工作时间限制或单车线路长度约束等,处理方法同车辆容量约束类似。配载车辆调度问题有多种类型,本文只研究了单车场纯送货情况下的配载车辆调度问题,对于多车场、集货送货相结合的配载车辆调度问题有待于进一步研究。

 
(文/admin)
打赏
免责声明
• 
部分文章来源于网络,我们均标明出处,如果您不希望我们展现您的文章,请与我们联系,我们会尽快处理。
0相关评论
 

(c)2023-2023 www.pec33.com All Rights Reserved

浙ICP备14008059号