ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

CW节约算法构造VRPTW初始解(附MATLAB代码)

2021-03-25 20:53:25  阅读:1068  来源: 互联网

标签:代码 VRPTW MATLAB 小编 CVRP 顾客 CW 初始


前几天有小伙伴后台问我能不能写一个求解VRPTW问题的代码,我想了一下,还是在一种构造CVRP问题初始解的启发式方法续集(附matlab代码)这篇文章写的代码基础上修改,注意小编同样只是构造VRPTW的初始解,后续如何对初始解进行优化,小编还需琢磨一段时间。

VRPTW与CVRP的区别就是配送中心与顾客都有明确的时间窗的要求[ai,bi],其中ai表示配送中心或顾客允许最早开始服务时间,bi表示配送中心或顾客允许最晚开始服务时间。代码里写的时间窗属于硬时间窗,即配送车量可以比最早开始服务时间早到,但是要一直等到最早开始服务时间才可以开始服务,而不允许比最晚开始服务时间晚到。

在CVRP的基础上,VRPTW的MATLAB代码只是加上判断是否时间窗约束的代码,看起来很简单的一句话,小编可是折腾了很长时间才把代码写出来。小编把代码的思路给大家梳理一下:

图片

小编依然使用的是solomon算例中的c102算例,具体的数据在一种构造CVRP问题初始解的启发式方法续集(附matlab代码)这篇推文中已经给出。接下来小编就带领各位感受一下求解的结果。

首先放出初始时配送中心和顾客的分布图:

在使用节约算法构造初始解后,效果如下所示:

各个车辆所经过顾客序号如下所示,其中0代表配送中心,一共用了16辆车,初始解中所有车辆所行驶的总距离为1143.3,各位小伙伴看到这里发现这次求得的总距离居然与上次求得的总距离相等,说实话,小编也大吃一惊,不过咱们继续往下看。

这是所求得得VRPTW初始解:

这是上一篇推文所求得的CVRP的初始解:

图片

图片

图片

看到这里小伙伴发现每辆车所服务的顾客明显与构造CVRP初始解有些相同,有些不同,这其实也好理解,因为有了时间窗的约束,有一些顾客必定要先服务,而有一些顾客必定要后服务

16辆车每辆车所运输货物的载重量都没超过容量限制,即没超过200(正好等于200,是可以允许的)

下面是求解VRPTW时所得到的16辆车载货量:

图片

下面是求解CVRP时所得到的16辆车载货量:

图片

与上次提出的问题一样,有些车辆明显所经过的顾客的数量少,并且所运输的货物的重量远没达到200,很明显可以将这条路径融合到相应的路径上但是这个节约算法是构造VRPTW问题的初始解,接下来的进一步优化还需要各位小伙伴一起努力完成。


最后附上代码链接(后台回复“CW求VRPTW”提取代码)

链接:https://pan.baidu.com/s/1J4ua8y9DLNWwW5V99RL_sg 

提取码:ya1n


标签:代码,VRPTW,MATLAB,小编,CVRP,顾客,CW,初始
来源: https://blog.51cto.com/15057852/2672247

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有