首页 > 其他分享 >菜鸟VRP求解引擎为何如此强大?(一)

菜鸟VRP求解引擎为何如此强大?(一)

时间:2022-12-12 18:32:36浏览次数:63  
标签:VRP 求解 菜鸟 route 路径 算法 搜索 算子 节点

愿你搜索到人生的最优解



hello,大家好。各位可点击左下方,访问公众号官方店铺。谨防上当受骗,感谢各位支持!


新来的小伙伴可在公众号后台回复 代码,即可提取一整套高质量智能优化算法MATLAB代码


前一段时间看到阿里车辆路径规划算法入围Franz Edelman奖(全球运筹和管理科学界的最高工业应用奖)决赛,于是找资料了解了一下这个VRP算法,今天我们从元启发式算法的角度与各位简单的聊聊为什么菜鸟VRP求解引擎如此强大


本期推文目录:

01 算法框架

02 丰富算子


菜鸟VRP求解引擎为何如此强大?(一)_当前路径

01 算法框架


菜鸟仓配智能化算法团队使用自适应大规模邻域(Adaptive Large Neighborhood Search, ALNS)作为VRP引擎的算法框架。



相对于其它算法,ALNS算法的优势包括:

  • 算法框架易于拓展,除了求解标准的VRP之外,还能够求解VRPPD,MDVRP等变型问题;
  • 相对于普通的Local Search类型的算法,ALNS在每一步搜索过程中能够探索更大的解空间;
  • ALNS算法在搜索过程中能够自适应地选择合适的算子,从而对于不同类型的问题数据能够有比较稳定的良好求解结果;
  • 通过设计实现不同类型的算子,ALNS可以实现不同的搜索策略,从而便于算法的升级拓展。



何柱、守初、本华,公众号:阿里技术​​世界冠军之路:菜鸟车辆路径规划求解引擎研发历程​

经典的ALNS算法的主流程如下图所示:

菜鸟VRP求解引擎为何如此强大?(一)_路径规划_02

图片来源:​​世界冠军之路:菜鸟车辆路径规划求解引擎研发历程​



ALNS算法的步骤为:

(1)使用一定的规则构造一个初始解(即Initial过程);

(2)基于算子的权重,选择此次迭代过程中使用的Ruin算子Insert算子

(3)对此次迭代的初始解执行Ruin操作,即将部分已经被车辆服务的客户点删除,使初始解成为一个不可行解;

(4)对步骤3获得的解执行Insert操作,即对于还没有被车辆服务的客户点,将其插入到解中,尽量获得一个可行解;

(5)基于优化目标函数评估步骤4获得的新的解,并根据一定的策略决定是否接受新解

(6)判断是否达到终止条件。如果是,则终止计算,返回当前找到的最好解;否则,基于此轮计算中算子的表现,更新算子的权重,并返回到步骤2。



何柱、守初、本华,公众号:阿里技术​​世界冠军之路:菜鸟车辆路径规划求解引擎研发历程​

菜鸟VRP求解引擎为何如此强大?(一)_当前路径

02 丰富算子


在​​世界冠军之路:菜鸟车辆路径规划求解引擎研发历程​​这篇文章中提到,菜鸟仓配智能化算法团队在VRP求解引擎中增加了Two-Opt, Three-Opt, Cross-Exchange等不同类型的局部搜索算子,那么上述这3个算子究竟是怎么一回事?除上述3个算子外,还有哪些VRP局部搜索算子?接下来,我们来一探究竟。


(1)2opt算子

2opt算法为一种路径内搜索方法。该方法随机选择当前路径方案中的一条路径,在该路径内改变顾客的排序。在维基百科中2opt交换算子的伪代码如下:

procedure 2optSwap(route, i, k) {
1. take route[0] to route[i-1] and add them in order to new_route
2. take route[i] to route[k] and add them in reverse order to new_route
3. take route[k+1] to end and add them in order to new_route
return new_route;
}


比如说:某一条路线为A → B → C → D → E → F → G → H → A,假设i=4,k=7(初始索引为1),则按照上述伪代码的步骤,对上述路线执行2opt交换操作:

a)(A → B → C)

b)A → B → C → (G → F → E → D)

c)A → B → C → G → F → E → D → (H → A)


在使用上述2opt交换算子后,如果该路径的成本降低,则保留改变后的路径;否则,仍然保留原始路径


(2)3opt算子

3opt算法为一种路径内搜索方法。3opt算子就是从原始路径中移除3条边,然后再新增3条边,重新将路径连接起来。比2opt复杂的是,在重新连接路径时共有8种(包含原始路径)连接方式。如下图所示,3条虚线为新增的3条边。

菜鸟VRP求解引擎为何如此强大?(一)_路径规划_04


实际上kopt算子,就是从原始路径移除k条边,然后采用种方式重连路径。


在使用上述kopt交换算子后,如果该路径的成本降低,则保留改变后的路径;否则,仍然保留原始路径


(3)Cross-Exchange算子

Cross-Exchang算法为一种路径间搜索方法。该算子的基本思路为从一条路径中移除2条边  和  ,从另一条路径中移除2条边  和  ,然后交换上述4条边  ,产生新的4条边  。下图左侧4条红色的边为被移除的边,右侧4条蓝色的边为新生成的边。

菜鸟VRP求解引擎为何如此强大?(一)_当前路径_05


(4)swap算子

swap算法为一种路径间搜索方法。该算子随机选择当前路径方案中的两条路径分别在每条路径中选择一个顾客节点交换后形成两条新的路径。

菜鸟VRP求解引擎为何如此强大?(一)_路径规划_06


(5)shift算子

shift算法为一种路径间搜索方法。该算子随机选择当前路径方案中的两条路径,从一条路径中随机选择一个顾客节点i,将节点随机插入另一条路径中,形成两条新的路径。

菜鸟VRP求解引擎为何如此强大?(一)_当前路径_07


(6)relocate算子

relocate算法为一种路径内搜索方法。该算子随机选择当前路径方案中的一条路径,选择该路径中m个连续的顾客节点,将这m个节点重新定位该路径中,形成一条新的路径。下图以m=2为例,将顾客节点j和j+1重定位到顾客节点i和i+1之间。

菜鸟VRP求解引擎为何如此强大?(一)_路径规划_08


(7)exchange算子

exchange算法为一种路径内搜索方法。该算子随机选择当前路径方案中的一条路径,再随机选择该路径中两个顾客节点进行交换,形成一条新的路径。

菜鸟VRP求解引擎为何如此强大?(一)_当前路径_09

(8)GENE算子

广义交换(Generalized exchange,GENE)算法为一种路径间搜索方法。该算子随机选择当前路径方案中的两条路径,再随机选择一条路径中一个顾客节点插入另一条路径中,且插入位置距离该顾客最近的两个节点(这两个节点可以不连续)之间。

菜鸟VRP求解引擎为何如此强大?(一)_路径规划_10


(9)Three-point算子

Three-point算法为一种路径间搜索方法。该算子随机选择当前路径方案中的两条路径分别在一条路径中选择一个顾客节点,在另一条路径中选择一对相邻顾客节点交换后形成两条新的路径。下图红色的点为一对相邻顾客节点蓝色的点为第3个顾客节点

菜鸟VRP求解引擎为何如此强大?(一)_路径规划_11


菜鸟VRP求解引擎为何如此强大?(一)_当前路径

03 参考文献


1.https://mp.weixin.qq.com/s/U3qlIsSLJ6E1eNzQ-ZZ6zQ

2.https://www.zhihu.com/question/440079767/answer/1688213738

3.https://www.zhihu.com/question/440079767/answer/1690070842

4.https://www.zhihu.com/question/440079767/answer/1685950322

5.王超, 刘超, 穆东, 等. 基于离散布谷鸟算法求解带时间窗和同时取送货的车辆路径问题[J]. 计算机集成制造系统, 2018 (2018 年 03): 570-582.

8.Blazinskas A, Misevicius A. combining 2-opt, 3-opt and 4-opt with k-swap-kick perturbations for the traveling salesman problem[J]. Kaunas University of Technology, Department of Multimedia Engineering, Studentu St, 2011: 50-401.


各位小伙伴可点击下方图片留言,未来我们讲解的具体内容由你做主。如果可以的话,可以把希望讲解的文献也在留言板上写出来。

菜鸟VRP求解引擎为何如此强大?(一)_当前路径_13







知乎 | bilibili:随心390

菜鸟VRP求解引擎为何如此强大?(一)_搜索_14

长按识别二维码关注我们



标签:VRP,求解,菜鸟,route,路径,算法,搜索,算子,节点
From: https://blog.51cto.com/u_15810430/5931287

相关文章