| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> MOCO论文精读-具有离散拆分送货和取货的车辆路径问题的禁忌搜索算法(Meng Qiu .et al. 2018) -> 正文阅读 |
|
[游戏开发]MOCO论文精读-具有离散拆分送货和取货的车辆路径问题的禁忌搜索算法(Meng Qiu .et al. 2018) |
Paper: A Tabu Search algorithm for the vehicle routing problem with discrete split deliveries and pickups论文:Qiu M, Fu Z, Eglese R, et al. A Tabu Search algorithm for the vehicle routing problem with discrete split deliveries and pickups[J]. Computers & Operations Research, 2018, 100: 102-116. 被引量:70(数据来源:谷歌学术,截止到2022.03.08) 论文链接:https://doi.org/10.1016/j.cor.2018.07.021 作者介绍Meng Qiu, Zhuo Fu,: 中南大学交通运输工程学院, 中国长沙 本文工作本研究对VRPDSPDP(具有离散拆分交付和取货的 VRP )的贡献有两个:
概念解释
文章目录摘要离散拆分交付(Discrete Split Deliveries and Pickups, DSPDP)和取货的车辆路径规划问题(Vehicle Routing Problem, VRP)是拆分交付和取件的车辆路径问题的变体,其中客户的需求在批次(或订单)方面是离散的。 它存在于物流配送的实践中,包括设计一组成本最低的路线来服务给定的一组客户,同时尊重车辆容量的限制。 本文对其特点进行了分析。 提出了一种数学模型和禁忌搜索算法,特别设计了批量组合和项目创建操作。 批量组合操作旨在避免不必要的旅行成本,而项目创建操作有效地加快了搜索速度,增强了算法搜索能力。 本文提供了计算结果并与文献中的其他方法进行了比较,这表明在大多数情况下,所提出的算法可以找到比文献中更好的解决方案。 1. Introduction在经典的车辆路径问题(VRP)中,客户只有一个(送货或取货)需求。然而,对环境保护的日益关注导致了逆向物流的发展;除了分发给客户,回收或再制造的物品必须反向运输。为了应对这种情况,人们提出了VRP的变体,本文将其命名为VRP with Delivery and Pickups(VRPDPs)。 Parragh等人(2008年)[1]将VRPDPs分为四个子问题:
VRPCB和VRPMB中的长途和回程客户是不同的,这意味着所有客户只能有一种需求(送货或取货)。VRPCB和VRPMB之间的区别在于,前者要求在任何回程之前必须访问所有的长途运输,而后者允许长途运输和回程在行程中以任何顺序发生。与VRPCB和VRPMB相比,VRPSDP和VRPDDP中的客户可以同时有送货和取货需求。在VRPSDP中,必须满足每个客户同时满足这两个需求的限制。然而,与要求每个客户只访问一次的VRPSDP不同,在VRPDDP中,可以进行两次访问,一次送货,一次取货。 考虑到顾客为了方便可能更喜欢某一站,VRP和VRPDP总是假设每个顾客只能拜访一次,属于没有需求拆分的问题。 然而,客户的需求通过多种车辆运输的情况并不鲜见,理论研究和实际应用都证明,分担负载有利于利用车辆容量,降低车辆出行成本。 这种类型的问题被归类为具有货物分割需求的问题。 自从 Dror 和 Trudeau (1989) [2] 引入了文献中众所周知的 在关于拆分装载问题的文献中,大多数假设是连续问题,其中客户的需求可以灵活地拆分为以单元(units)(最小计量单位)为单位的任何数量的负载。这个假设有实际应用背景,但也有局限性。在实际的物流操作中,负载可能被分配给多个独立的批次或订单。一个批次或订单由多个units或仅一个unit组成,并且这被视为一个整体,不能拆分。这意味着客户的需求是离散的。例如,一个unit可以是一公斤(kg)或一立方米(
m
3
m^3
m3 ),具体取决于负载是按重量还是按体积计量。如果一台笔记本电脑的重量为 4 公斤,则不能将其拆分为四个部分,每个部分称一个unit,因此可以将笔记本电脑视为一个离散的批次(订单)。考虑到另一种情况,由于不同类型的货物可能需要不同的装卸设备和运输工具,因此将同一类型的货物作为一个整体分配给一个批次(订单)可更好地提高效率。本研究首次在文献中介绍了具有离散拆分送货和取货的 VRP (VRP with Discrete Split Deliveries and Pickups, VRPDSPDP), 拆分负载:某些负载的交付由多辆车辆而不是一辆车辆运送,从而有机会减少使用的车辆数量和行驶距离。 具有离散拆分需求的 VRP (VRP with Discrete Split Demand, DSDVRP):在这个问题中,每个客户需要不同批次(订单)的需求。 每批(订单)的需求可能大于一个unit,并且虽然可以多次访问客户,但每个项目必须由一辆车提供服务。VRPDDP可以归类为具有离散需求的问题的特殊情况。 2. Tabu search(禁忌搜索算法)禁忌(Tabu Search)算法是一种元启发式(meta-heuristic)随机搜索算法,它从一个初始可行解出发,选择一系列的特定搜索方向(移动)作为试探,选择实现让特定的目标函数值变化最多的移动。为了避免陷入局部最优解,TS搜索中采用了一种灵活的“记忆”技术,对已经进行的优化过程进行记录和选择,指导下一步的搜索方向,这就是Tabu表的建立。 参考资料:
2.1 简介为了找到“全局最优解”,就不应该执着于某一个特定的区域。局部搜索的缺点就是太贪婪地对某一个局部区域以及其邻域搜索,导致一叶障目,不见泰山。禁忌搜索就是对于
这三个概念是禁忌搜索和一般搜索准则最不同的地方,算法的优化也关键在这里。 打个比方: 2)禁忌搜索算法 2.2 主要思路step1:给以禁忌表H=空集,并选定一个初始解xnow; step2:满足停止规则时,停止计算,输出结果;否则,在xnow的邻域N(xnow)中选择不受禁忌的候选集Can_N(xnow);在Can_N(xnow)中选一个评价值最佳的解xnext,xnow=xnext;更新历史记录H,保存f(xnow),重复step2; step3:在保存的众多f中,挑选最小(大)值作为解;
2.3 注意事项
2.4 相关概念解释
2.5 其他类似算法
3. Problem description and propertiesVRPDSPDP旨在设计最优路线集,以最低的成本(最少的车辆和最短的行程距离)满足所有客户的需求,同时满足以下约束:
一般来说,拥有或租用一辆车相关的固定成本远大于通过以使用更多车辆为代价缩短行程距离所节省的成本。 因此,我们将最小车辆数量设置为输入参数。 令
G
=
(
V
,
E
)
G = ( V, E )
G=(V,E) 是给定的无向网络,其中
V
=
0
∪
N
V = {0} ∪ N
V=0∪N是顶点集(顶点 i = 1,…,n 对应于客户,而顶点 0 对应于仓库)和
E
=
(
i
,
j
)
∣
i
,
j
∈
V
,
i
=
j
E = {( i, j )| i, j ∈ V, i = j }
E=(i,j)∣i,j∈V,i=j是边集。 每条边$ (i, j) ∈ E $对应一个非负
c
i
j
c_{ij}
cij? ,表示从顶点 i 到顶点 j 的成本。 最大车辆容量为
Q
Q
Q ,使用的车辆数量为
K
K
K 。我们将
D
M
i
DM_{i}
DMi? 和
P
M
i
PM_{i}
PMi? 设置为客户
i
i
i 的交货批次和取货批次数。
d
i
m
(
m
=
1
,
.
.
.
,
D
M
i
)
d_{i}^{m}(m=1,...,DM_{i})
dim?(m=1,...,DMi?)为客户
i
i
i 第
m
m
m 批交货的需求负荷.
D
i
=
∑
m
=
1
D
M
i
d
i
m
D_{i}=\sum_{m=1}^{D M_{i}} d_{i}^{m}
Di?=∑m=1DMi??dim?为客户
i
i
i的交货总量,同理,
p
i
p_{i}
pi?和
P
i
=
∑
m
=
1
P
M
i
p
i
m
P_{i}=\sum_{m=1}^{P M_{i}} p_{i}^{m}
Pi?=∑m=1PMi??pim?为取货的批处理需求以及取货的总和。
3.1 Problem properties客户的每一批次(订单)都是一个绝对的对象,相互独立。 由于坐标位置相同,同一客户的一对批次(a pair of batches, 交付和/或取货?)之间的距离为零。 在讨论 VRPDSPDP 的属性之前,先解释一下路径的表达式。 如上节所述,客户 i 的交货和取货需求分别由 DM i 和 PM i 批次(订单)组成。 因此,一条路径被表示为一个序列,该序列由代表仓库或访问客户的顶点编号以及在该访问时处理的批次(交付和/或取货)的需求组成。如: 为了研究 VRPSPDP 的特性,我们讨论图 1 所示的示例,网络中有 3 个客户(括号中的数字代表交付和取货批次的总需求,以逗号分隔)。 每条边旁边的数字表示对应的代价(距离),代价矩阵满足三角不等式(两边之和大于第三边)。 车辆容量为 10,因此所需的最小车辆数量为 2。 4. A Tabu Search algorithm for the VRPDSPDPTS 是一种基于记忆的搜索策略,用于指导局部搜索方法在局部最优之外继续搜索。 实现此目的的一种方法是在禁忌列表中跟踪过去所做的最近移动或解决方案的属性。 每当算法试图在禁忌列表中移动时,该移动就会被禁止。 4.1 Initial solution禁忌搜索算法对初始解有一定的依赖性。 一个好的初始解可以帮助 TS 在解空间中找到一个好的最终解,而一个较差的初始解会降低 TS 的收敛速度。 在本文中,客户的每个批次(订单)在开始时都是一个绝对对象(absolute object),作为一个单独的项目。也就是说,存在
D
M
i
+
P
M
i
DM_{i}+PM_{i}
DMi?+PMi?同一地点(co-located)的虚拟客户。由于问题的严重复杂性,TS的运行时间要求尽可能短,这初始解的质量更重要,我们更喜欢随机生成初始解,过程耗时更少,并为TS留下更多进一步提高解质量的机会。因此, 4.2 Batch combination由于每个离散的批次(订单)被视为一个独立的对象,因此 4.3 Item creation原因:在传统的邻域搜索中,有一个基本假设,即移动对象是单个客户。 但是,VRPDSPDP的操作对象实际上是每个batch(订单); 因此,仅使用路径中的batch都包含在内的客户并不能反映离散拆分的特征。 但是,将单个批次作为操作对象会导致计算密集且耗时的过程,因为批次的数量远远大于客户的数量。 考虑到上述情况,本文设计了一个个体算子(individual operator),旨在创建一个邻域移动对象,它对应于本文中的一个“item”。
如图5所示,选取的订单顶点是i(步骤1),通过前后检查,t、i、j和k显示为与同一客户相关(步骤2)。 假设 i、j 和 k 是选择的相邻批次顶点以创建表示为顶点 i ? i* i? 的item。 在本文的其余部分,为了简洁起见,我们将路线路径(route path)的每个顶点称为一个item,如
i
?
i*
i?。 4.4 Neighbourhood structure局部搜索方法(Local search methods)已被证明可以有效地解决 VRPSDP。 局部搜索方法中的几个常用的为 2-opt、2-opt?、3-opt、or-opt、swap、shift、reverse、cross、relocate 和 relocate split,它们用于找到 VRPSPDP 或 VRPDDP 的解决方案。关于此类算法具体介绍,本文不多涉及,感兴趣的可以百度哈~ 这里我们就举一个2-opt算法最原始应用的例子——解决TSP问题: 假设有一个旅行商必须要从A城市出发经过BCDEFGH这几个城市最后回到A城市(可以理解为约束条件),目标函数是路程最短(更广义的说是 费用最少)。 首先我们可以任选一个可行解s={A,B,C,D,E,F,G,H,A},并假设s是最优解Smin。然后使用2-opt算法进行问题的求解:随机选取两点i和k,将i之前的路径不变添加到新路径中,将i到k之间的路径翻转其编号后添加到新路径中,将k之后的路径不变添加到新路径中。 原路径: A --> B --> C --> D --> E --> F -->G --> H --> A 新路径:
从而获得一个新的可行解。将可行解代入目标函数可得目标函数值,将其与Smin的目标函数值比较,取两者目标函数值较小的可行解为Smin,直到找不到比Smin还小的函数值为止。至此,该TSP问题已用2-opt算法解决。 很容易将2-opt算法推广到k-opt算法,即将上例s中的k个元素进行调换,以更换可行解并检验其在目标函数中的优度。2-opt也叫2-exchange方法。或者说k-exchange,其中k≥2 。 除了 Relocate 算子和 Relocate split 算子专门针对拆分负载而设计外,大部分局部搜索方法都考虑了客户的移动,无论其需求是否被拆分。 在我们的启发式中,由于item创建的操作,对于这些移动的操作,客户与要交付或取货的item之间的差异可以忽略不计。 在我们的实现中,五个类的邻域移动被应用于当前的解决方案。 这些移动包括两个路线内的操作和三个不同路线之间的操作。 表 5 提供了简要介绍。
4.5 Evaluation of the solutionsVRPDSPDP 有两个需要优化的目标:总行驶成本(距离)和固定成本(使用的车辆数量)。 如关于 VRPDSPDP 所述, 为了便于搜索空间的探索,本文允许item的移动,即使它会导致不可行的解决方案。不可行的程度可以通过在目标函数中加入车辆通行能力来衡量,如果约束条件被打破,可以增加惩罚,引入了惩罚,产生了可行和不可行的混合解决方案,并避免了在VRP的禁忌路由算法中陷入局部极小值的可能性。我们采用该机制,并使用以下公式: 4.6 Tabu list我们为不同类别的移动创建了五个独立的禁忌列表。 例如,如果为内部交换移动选择了顶点i和j,则禁忌状态将保存在intra-wap矩阵的元素 (i,j) 中。 4.7 TS algorithmTS算法描述中使用的变量及其解释:
启发式的伪代码如下:
5. Computational results and comparisons5.1 A priori split strategy据我们所知,目前的研究没有为 VRPDSPDP 设计的任何测试基准,也没有任何拆分策略来为相应的 VRPDSPDP 生成离散需求。 曾经有人提出了两种先验拆分策略,在 SDVRP 中而不是在算法过程中提前拆分交付,旨在将每个客户的需求拆分为多个商品部分(离散批次或订单),以便充分利用 车辆的容量。 本文提出了两种类似的拆分策略,命名为 20/10/5/1/ x 和 25/10/5/1/ x ,以适应 VRPSPDP 中的离散需求。 以 20/10/5/1/ x 为例,我们假设每个客户的需求只能被拆分并分配到五个单独的组中,每个组的数量都不同。 四组批次的固定需求(车辆需求)分别为 0.2Q 、 0.1Q 、 0.05Q 和 0.01Q 。 第五组包括数量小于 0.01Q 的负载。 D i D_{i} Di? ,也就是给客户 i 的订单货物,将分为五个不同的组 W s ( s = 20 , 10 , 5 , 1 , x ) W_{s}( s = 20, 10, 5, 1, x ) Ws?(s=20,10,5,1,x)。 W s W_{s} Ws?中的每个批次的需求量为 T s T_{s} Ts? ,属于 W s W_{s} Ws?的订单数记为 H s H_{s} Hs? 。 20/10/5/1/x的策略如表7所示( ? u ? \lfloor u\rfloor ?u?为不大于u的最大整数)。 本文还提出了 25/10/5/1/ x 策略,其基本原理与 20/10/5/1/ x 相同。 例如,如果 Q = 1000 且 D i D_{i} Di?= 566,则通过 20/10/5/1/ x 策略将 D i D_{i} Di?需求分为 200、200、100、50、10 和 6 ,采用 25/10/5/1/ x 策略则分为 250, 250、50、10 和 6 。 我们在计算实验中使用这两种策略。 具体计算(我个人理解):第五组包括数量小于 0.01Q 的负载,所以 20/10/5/1/ x 应为200,100,50,10,还剩下206,x不能大于0.01Q,所以要再分一次200,剩下6;同理,25/10/5/1/ x 应为250,100,50,10,余下566-410=156,不管是多分一次100还是50都不符合,所以为保证分的组数尽可能少,所以多分一次250,去掉100,最终为250, 250、50、10 和 6 5.2 Performance of the a priori split strategy我们将具有 20/10/5/1/ x 和 25/10/5/1/ x 拆分策略的 TS 算法应用于不同类别的 VRPSPDP 实例,在我们的TS算法中,我们将变量MaxConsIter和MaxCandList分别设置为 4500 + 10 ? n 4500+10?n 4500+10?n和 150 + 2 ? n 150+2?n 150+2?n。 每种策略下每个客户交付和提货的离散批次: 本文采用了多种公开数据集,分别是Mitra(2008)[3]、Yin(2013)[4] 为了显示解决方案的性能,进行了比较,包括相应的路线、沿途客户的送货和取货负载以及总路线距离。
在与Yin的对比中,TS算法的收敛性和解的质量都显示出了优秀的表现,通过对收敛性和解质量的分析,该算法表明收敛性好,解质量稳定,在此就不附图了。 实验 1 和 2 展示了我们启发式算法的良好性能。 为了进一步确认我们的 TS 算法的有效计算能力,本实验测试了更多实例(Mitra (2005) 为 VRPSPDP 给出的三组问题)。 每对客户之间的距离有两种情况(交货以及取货),对于这两种情况,路线成本是对称的。 具体分析可以查看原文。 5.3 Performance on the DSDVRP为了更好地判断算法的质量,本文对DSDVRP进行了另一组计算实验比较。本实验使用了Chen等人(2017)[5]提供的数据。表14和表15给出了解决方案比较,所有实例解决方案均采用我们的TS算法,以最少的车辆数量进行求解。具体参照原文。 总结VRPDSPDP不仅在理论上很有意义,而且在配送中也有实际应用。允许多个车辆访问客户,通过充分利用车辆容量并减少路线距离可节省差旅成本。在这项工作中,我们描述了这个问题,并建立了相应的数学模型,分析了VRPDSPDP的特点,给出了问题的最优解性质,提出了一种禁忌搜索算法,设计了两个独立的运算,避免了不必要的旅行费用,加快了搜索速度,增强了算法的搜索能力。计算结果表明,在大多数情况下,所提出的TS算法可用于找到比文献中更好的解决方案,以解决约束较小的VRPSPDP。 在未来的研究中,包括开发VRPDSPDP的特殊结构,这可能会进一步改善所提出方法的性能。未来的研究还可能包括额外的离散需求限制对解决方案成本的影响。我们认为,值得进一步探索新的 “Item Creation”,以关注由于其不同的替代最优方案而导致的所提出公式的局限性,这能够减少可以考虑的替代方案的数量。 References
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 18:58:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |