带时间窗的车辆路径规划问题(VRPTW)
转载自: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代码文中已经全部给出,只需改动相应部分即可使用。
带时间窗的车辆路径规划问题(VRPTW)相关推荐
- 【路径规划】基于粒子群算法求解带时间窗的车辆路径规划问题VRPTW模型matlab源码
1 模型简介 将粒子群算法(PSO)应用于带时间窗车辆路径优化问题(VRPTW),构造车辆路径问题的粒子表达方法,建立了此问题的粒子群算法,并与遗传算法作了比较.实验结果表明,粒子群算法可以快速,有效 ...
- 【TWVRP】基于matlab模拟退火算法结合狼群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1075期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 【TWVRP】基于matlab模拟退火算法求解带时间窗的车辆路径规划问题【含Matlab源码 160期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 【TWVRP】基于matlab遗传算法求解多车场开放式多商品带时间窗的车辆路径规划问题【含Matlab源码 1849期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 转 | 禁忌搜索算法(Tabu Search)求解带时间窗的车辆路径规划问题详解(附Java代码)
以下文章来源于数据魔术师 ,作者周航 欲下载本文相关的代码及算例,请关注公众号[程序猿声],后台回复[TSVRPJAVA]不包括[]即可 前言 大家好呀! 眼看这9102年都快要过去了,小编也是越来越 ...
- MATLAB实战系列(二十四)-大规模邻域搜索(LNS)求解带时间窗的车辆路径问题(VRPTW)(附matlab源代码)
前言 大规模邻域搜索算法(后文统一称为LNS)用MATLAB编写文中的提出的LNS求解带时间窗的车辆路径问题(后文统一称为VRPTW问题)的代码. 本文会带大家详细梳理LNS的基本流程,其实说白了LN ...
- 【TWVRP】基于matlab粒子群算法求解带时间窗的车辆路径规划问题(总成本最低)【含Matlab源码 2590期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 【TWVRP】基于matlab蚁群算法求解带时间窗的车辆路径规划(成本最低)【含Matlab源码 2514期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 【VRP问题】基于模拟退火遗传实现带时间窗的车辆路径规划问题
模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小 ...
- 【TWVRP】粒子群算法求解带时间窗的车辆路径规划问题【含Matlab源码 334期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
最新文章
- CS研究笔记-缓存 (转)
- 高校一副教授2021年全部收入清单来了!对比清华大学教授工资单 ,差距究竟大不大?...
- 优麒麟在linux下安装教程,在优麒麟Ubuntu Kylin系统中安装百度网盘Linux版.deb的方法...
- 为什么铺天盖地都是Python的广告,它真的是无所不能吗?
- 清新BLOG-CMS博客主题源码
- php属性赋值吗,php – 设置类中属性的默认值
- 翻牌抽奖 php,PHP+jQuery开发简单的翻牌抽奖实例
- jar命令指定入口类
- L1-019. 谁先倒-PAT团体程序设计天梯赛GPLT
- 转 十道海量数据处理面试题与十个方法大总结
- cameralink解码编码FPGA代码定制
- 【专题5: 硬件设计】 之 【62.案例四:简易空气净化器,完整原理图】
- 信息学奥赛NOIP/CSP-J初赛知识点汇总
- python办公自动化——批量向excel填充数据
- 记录一下blender烘焙光照漫反射贴图
- 给博士一年级新生的建议!
- 淘宝API upload_img - 上传图片到淘宝
- 提高代码质量的那些建议
- 0002、Freemarker导出Word文档
- 毕设教程:基于嵌入式Linux和Qt实现的视频监控系统(Arm/树莓派/jetson)
热门文章
- 四川大学计算机学院2020转专业,四川大学化学学院2020年本科生转专业工作实施方案...
- 基于java的客户关系管理系统的设计与实现(论文+毕业设计)(完整源码可演示)
- solidworks新建工程图默认单位为毫米
- ZZNUOJ_C语言1007:鸡兔同笼(完整代码)
- C/C++ typedef用法详解
- EasyUI实现用户登录界面
- JMP软件在质量管理中的应用简述
- 初次使用dcm4che-tool-findscu做查询
- Google Guice 快速入门
- 饥荒联机建立好服务器找不到,饥荒联机版浏览世界找不到已经创建的世界 | 手游网游页游攻略大全...