The Electric Vehicle-Routing Problem with Time Windows and Recharging Stations

       困扰了快三天的问题,还是没有完全解决,留个坑在这,等下次有时间再来解决吧。希望有知道原因的朋友可以给予指导或者提供解决问题的思路,不甚感激!!!

经过互联网友友的帮助,这个坑填上啦,所有算例的结果和原文均一样!(2024.04.09)

代码放在github上了,有需自取:mumuorMUMU/EVRPTW_GUROBI: GUROBI code for paper " The Electric Vehicle-Routing Problem with Time Windows and Recharging Stations " (github.com)

或者有知道这篇论文源码的同学可以分享一下吗,github上的不太确定是复现的还是源码

这篇论文里的EVRPTW问题的经典模型,采用的也是经典的公开算例集

The Electric Vehicle-Routing Problem with Time Windows and Recharging Stations | Transportation Science (informs.org)

1. 用cplex求解的结果如下表

用的是github上的一个用cplex建模求解的(不确定是自己复现的还是论文的源码)

E-VRPTW/E-VRPTW.mod at main · jmanzolli/E-VRPTW (github.com)

2. 用Gurobi求解的结果如下表

是自己根据论文里的数学模型和上述cplex例子,用Gurobi的python api写的

算例论文CplexGurobi
C101-5

m = 2

257.75

 m =3

247.15

m = 3 (不约束车辆数)

247.15

m =2 (约束m<=2)

257.75

m<=1

无解

C103-5

m=1

176.05

 m = 2

165.67

m=2(不约束车辆数)

165.67

m = 1(约束m<=1)

无解

C206-5

m=1

242.55

 m = 3

236.58

m = 3

236.58

 m =2

236.58

m =1

245.34

C208-5

m=1

158.48

m =1

158.48

R104-5

m =2

136.69

m =2 

136.69

R105-5

m =2 

156.08

 m =2 

156.08

R202-5

m=1

128.78

m =1 

128.78

出现的问题如下:

问题一  cplex(246.7)和gurobi(247.15)求解同一个算例得到的目标函数值不一样,但最优解对应的路径是一样的

      怀疑是数值精度问题,发现cplex得到的解里面的浮点数都只有一位小数,明显精度不够,于是想到要提高计算精度,但查找了很多资料也没有找到提高计算精度的方式,修改了.ops文件里的"Display presion"也没有用。

最后按图索骥,返回去检查代码所有会产生浮点数计算的地方,发现在计算距离矩阵的时候只保留了一位小数:

修改上述问题,此问题得到了解决!!!!cplex和gurobi求解同一算例得到的目标函数值完全相同!

小结:出现此类问题首先注意是不是数值精度问题;接着考虑两个模型是否完全等价;最后考虑是否cplex和gurobi中的gap(终点)不一样。

问题二  前三个算例和论文里给出的结果不一致

       怀疑是设置的车辆数量约束导致的不一样,论文里应该是第一目标都是最小化车辆数,再在最小化车辆数的前提下来最小化总路径长度,但论文给出的数学模型并没有表示出这一点

于是尝试在gurobi中给模型添加总车辆数量的约束(论文中给出的数学并没有这一约束):

于是出现了下表所示的情况,C101-5算例确实如猜想一样,但C103-5算例当设置车辆数为1时,根本无可行解,C206-5算例得到的结果和论文给出的不一样,所以应该不完全是否设置车辆数量约束的问题,。对其他的算例进行测试,发现得到的结果和论文又是一样的,所以不知道前面这三个算例的结果到底问题出在哪里?????

本人目前小白入门,欢迎大家讨论、指教,谢谢!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值