干货 | column generation求解VRPTW问题 java代码分享

00 前言

经过小编不断的努力,关于column generation求解VRPTW的代码终于新鲜出炉啦。

01 运行说明

关于这部分的代码,这里提供两个版本。

第一个版本GitHub一个叫Seminar的国外大神写的,他的子问题求解采用的是建模的方式(建模请看上一期的教程),找一条reduced cost最短的路径,运行只需要更改下面文件中算例文件的路径即可。

1240

运行的中间结果如下:
1240

  • Iteration:迭代次数
  • SbTime:子问题求解时间(s)
  • nPaths:Master Problem中的总路径
  • MP lb:Master Problem的线性松弛最优解,这里由于建模方式的原因,该最优解把服务时间也算在路径距离上的,最终减去9000即可得到路径距离。
  • SB lb:子问题的线性松弛最优解。
  • SB int:子问题的整数最优解。

关于子问题的最大求解时间限制(s),可以在下面文件中设置:
1240

第二个版本是小编写的:

运行参数说明:
-in:算例文件路径
-out:结果文件输出。

比如:【-in input\Solomon\100_customer\C101.TXT -out output】

参数设置请找到以下主运行文件:
1240

运行设置里面进行配置。(默认情况下输入上面的参数能直接运行)
1240

中间结果:

1240

  • Iteration:迭代次数
  • SbTime:子问题求解时间(s)
  • nPaths:Master Problem中的总路径
  • MP lb:Master Problem的线性松弛最优解。
  • SB lb:子问题的最优解。

02 简要讲解

关于第一个版本,其子问题建模方式还是依赖主问题的对偶变量的,如下:
1240

其中t_ij就是每条边本来的cost,pi就是Master Problem的对偶变量。每一次迭代就是这样更新子问题的cost,重新建模求解的。

关于小编的版本:
1240

每次迭代的时候会更新ESPPRC问题中的cost,然后运行pulse算法重新求解。

其他的话结构和注释都写得非常清晰了,大家肯定能看懂的。

由于是精确算法,子问题时间没有保障的,有时候很快能跑完,有时候一天都跑不完。和算例有很大关系的。

03 代码获取

可以关注我们的公众号哦!获取更多精彩消息!

1240

转载于:https://www.cnblogs.com/dengfaheng/p/11382178.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值