带时间窗的车辆路径规划问题(VRPTW)

2023-05-16

转载自:https://blog.csdn.net/qq_44776064/article/details/108313037

带时间窗的车辆路径规划问题VRPTW

 

AlchemyLee 2020-11-07 11:14:55 1881 收藏 27

文章标签: 算法 python

版权

车辆路径规划问题是运筹学中经典的NP难问题,本文将选取其变种问题,结合实际生产中遇到的配送问题进行综合考虑,给出了相应的解决算法。

一、VRP问题

车辆路径规划问题(Vehicle Routing Problem,VRP)一般指的是:对一系列发货点和收货点,组织调用一定的车辆,安排适当的行车路线,使车辆有序地通过它们,在满足指定的约束条件下(例如:货物的需求量与发货量,交发货时间,车辆容量限制,行驶里程限制,行驶时间限制等),力争实现一定的目标(如车辆空驶总里程最短,运输总费用最低,车辆按一定时间到达,使用的车辆数最小等)。

二、VRPTW问题

带时间窗的车辆路径规划问题(Vehicle Routing Problem with Time Window,VRPTW)是在VRP基础上添加配送时间约束条件产生的一个新问题。在这类问题中,给定车辆到达目的地的最早时间和最晚时间,要求车辆必须在规定的时间窗内到达,早于最早时间或晚于最晚时间都要产生额外的惩罚费用。此时,决策如何规划调度车辆使得配送的总费用最小化。

VRP与VRPTW对比:

在这里插入图片描述

三、问题描述

本文将要研究的问题参考自文章《Fruit and Vegetable Agricultural Products Logistics Transport Routing Optimization - A Case Study of Qingdao blueberries distribution》。

某果蔬农产品运输配送中心 C0 (Center)。该配送中心有足够的能力满足顾客所有对果蔬农产品数量的要求。同时该配送中心有足够多且完全相同的车辆 J 能够完成配送活动的需要,运输车辆的最大容量为 V(Volume),配送车辆在配送活动过程中均能一次到达,中间不会出现任何阻碍和特殊情况。C={C0 ,C1 ,C2 ……Cn }。其中 C0 代表配送中心。Ci (i=1,2, ……,n)(Consumer)表示有需求的客户的需求数量;n 表示有需求的客户数量。Dik (Distance):表示顾客 Ci 到顾客 Ck 的距离(其中i不等于k);Qdi (Quantity Demanded):表示顾客 Ci 的需求量;Qg (Quality good):表示果蔬农产品刚刚采摘完,完好时的果蔬农产品的质量;[ETi ,LTi ]表示客户 Ci 对某类产品的时间窗约束。

在已知以上的条件情况下,合理安排最优的配送路线使得配送过程中满足所有条件情况下,各个费用之和最少。

四、数学模型

(具体模型参见(三)中文献)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、算法设计

本文采用禁忌搜索算法,禁忌搜索(Tabu Search,TS)是Glover教授于1986年提出的一种亚启发式随机搜索算法。它从一个初始可行解出发,选择一系列的特定搜索方向作为试探,选择实现让特定的目标函数值变化最多的移动。逐步迭代,以逼近最优解。为了避免陷入局部最优,TS搜索中采用禁忌表的方式,对已经进行的优化过程进行记录和选择,从而指导下一步移动搜索的方向。

a)算法流程

搜索最优解(基于禁忌搜索算法)

Step1:设最优解x*=x,禁忌表为空,k=0,候选解集为S 为空;

Step2:通过邻域动作生成候选解集S;

Step3:进行特设准则判断,计算候选解的评价函数,记最小解为f(x1);

Step4:若f(x1)<f(x*),那么x*=x1;否则更新禁忌表,释放被解禁的操作算子;

Step5:重复Step2-5,直到k满足终止条件;

Step5:输出最优解x*;

b)邻域设计

本文采用的编码方式为节点编号的全排列形式,编码与解码如下所示(以7个节点为例):相应的邻域为节点编号的全排列。

在这里插入图片描述

本文中采用的邻域动作为1-opt操作算子,如下图所示:

在这里插入图片描述

图a

在这里插入图片描述

图b

图a表示初始解为0-2-3-0,0-4-5-0,0-1-7-6-0,车辆数目为3,1opt算子是将随机选取的节点(图中为1号节点)插入另一条车辆路径中,以形成新的解,图b表示邻域操作之后生成的新的解,虚线表示新的路径,新解即为0-2-3-0,0-4-5-1-0,0-7-6-0.

六、实验结果

相关算例与参数均采用原文章算例。节点包括青岛、烟台、东营、泰安、潍坊、日照、枣庄、聊城、济南、淄博、德州、滨州、菏泽等城市。

以某次运行的结果为例,分析该路线各个成本的表格如下所示,禁忌搜索最终解为:[7, 12], [5, 6, 3], [8, 10], [1,4], [2, 11, 9],相关信息如下:

在这里插入图片描述

每个车辆的时刻表:
在这里插入图片描述

七、可视化分析

为了更清楚展示最终结果的路线图,笔者利用百度地图API爬取了上述城市的经纬度,并利用Folium工具包将上述结果的路线在地图上进行展示。(文中只考虑两点之间的欧几里得距离)

在这里插入图片描述

首先需要登陆百度地图官网,申请获得密钥,利用如下代码依次获取相应城市的经纬度;

然后,将禁忌搜索得到的各条路线用不同的颜色在folium上画出来。最终以网页的形式存储。

八、说明事项

文中算例和参数信息均来自文章《Fruit and Vegetable Agricultural Products Logistics Transport Routing Optimization - A Case Study of Qingdao blueberries distribution》。

文中关于VRPTW的禁忌搜索代码只给出了相关算法设计,完整python代码获取请关注微信公众号“不想打电竞的码农不是好球迷”,并留言。

关于可视化实验结果的python代码文中已经全部给出,只需改动相应部分即可使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带时间窗的车辆路径规划问题(VRPTW) 的相关文章

随机推荐