干货 | column generation求解VRPTW问题 java代码分享
00 前言
经过小编不断的努力,关于column generation求解VRPTW的代码终于新鲜出炉啦。
01 运行说明
关于这部分的代码,这里提供两个版本。
第一个版本GitHub一个叫Seminar的国外大神写的,他的子问题求解采用的是建模的方式(建模请看上一期的教程),找一条reduced cost最短的路径,运行只需要更改下面文件中算例文件的路径即可。

运行的中间结果如下:

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

第二个版本是小编写的:
运行参数说明:
-in:算例文件路径
-out:结果文件输出。
比如:【-in input\Solomon\100_customer\C101.TXT -out output】
参数设置请找到以下主运行文件:

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

中间结果:

- Iteration:迭代次数
- SbTime:子问题求解时间(s)
- nPaths:Master Problem中的总路径
- MP lb:Master Problem的线性松弛最优解。
- SB lb:子问题的最优解。
02 简要讲解
关于第一个版本,其子问题建模方式还是依赖主问题的对偶变量的,如下:

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

每次迭代的时候会更新ESPPRC问题中的cost,然后运行pulse算法重新求解。
其他的话结构和注释都写得非常清晰了,大家肯定能看懂的。
由于是精确算法,子问题时间没有保障的,有时候很快能跑完,有时候一天都跑不完。和算例有很大关系的。
03 代码获取
可以关注我们的公众号哦!获取更多精彩消息!

干货 | column generation求解VRPTW问题 java代码分享的更多相关文章
- 干货 | 10分钟教你用column generation求解vehicle routing problems
OUTLINE 前言 VRPTW description column generation Illustration code reference 00 前言 此前向大家介绍了列生成算法的详细过程, ...
- 干货 | 10分钟带你彻底了解column generation(列生成)算法的原理附java代码
OUTLINE 前言 预备知识预警 什么是column generation 相关概念科普 Cutting Stock Problem CG求解Cutting Stock Problem 列生成代码 ...
- 干货 | 云智慧透视宝Java代码性能监控实现原理
这篇图文并茂,高端大气上档次,思维缜密的文章,一看就和我平时的风格不同.对了.这不是我写的,是我家高大英俊,写一手好代码,做一手好菜的男神老公的大作,曾发表于技术公号,经本人授权转载~~ 一.Java ...
- eclipse 4.5.2 源码修改 格式化Java代码
注:本文代码基于eclipse4.5.2 1. 需求:在换电脑之后,如何不用配置eclipse就可以很快进入开发呢,并保持原来的编码规范. 2. 方法:修改eclipse源码 分别修改了两个jar包2 ...
- [置顶] oracle 数据库表中转换成java代码
--数据库中字段java代码 select col.TABLE_NAME,replace(initcap(col.TABLE_NAME),'_', '') , 'private '||decode ...
- [置顶] oracle 快速查询数据库各种信息、及转换对应java代码
1 查询表中数据量 select 'select '||''''||t.TABLE_NAME||''''||' as table_name, count(*) from '|| t.TABLE_NAM ...
- 如何用70行Java代码实现深度神经网络算法
http://www.tuicool.com/articles/MfYjQfV 如何用70行Java代码实现深度神经网络算法 时间 2016-02-18 10:46:17 ITeye 原文 htt ...
- 200行Java代码搞定计算器程序
发现了大学时候写的计算器小程序,还有个图形界面,能够图形化展示表达式语法树,哈哈;) 只有200行Java代码,不但能够计算加减乘除,还能够匹配小括号~ 代码点评: 从朴素的界面配色到简单易懂错误提示 ...
- java代码求阶乘n!
面试过程中总是遇到要求写一段Java代码求阶乘.下面就是就是两种求阶乘 n! 的方法: 1.使用递归求解n! public int doFactorial(int n){ if(n<0){ re ...
随机推荐
- -透明度中百分比与十六进制的对应关系 MD
目录 目录 透明度中百分比与十六进制的对应关系 计算代码 对应关系表 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao ...
- nginx+lua访问流量实时上报kafka
在nginx这一层,接收到访问请求的时候,就把请求的流量上报发送给kafka storm才能去消费kafka中的实时的访问日志,然后去进行缓存热数据的统计 从lua脚本直接创建一个kafka prod ...
- nrm的安装和使用
1.安装nodejs,下载地址,http://nodejs.cn/download/,安装过程直接点击下一步即可 安装完成后cmd输入npm -v 查看当前安装的npm的版本,如下图提示所示则表示安装 ...
- mongodb常规操作语句
db.c_user.insertOne({ name: "ljm", pwd: "123456" }); //插入一个 db.c_user.insertMany ...
- Visual Studio 2019 安装
目录 写在前面 官网下载 安装 等待安装 启动 写在前面 目前工作的开发环境还是旧版本的Visual Studio 2013版.个人感觉还是有点跟不上时代更新迭代的节奏了.毕竟,技术在进步.如果我们也 ...
- NEST refresh flush forcemerge
public void Refresh() { client.Refresh("employee"); } public void Flush() { client.Flush(& ...
- 解决Ajax前台中文传到后台出现中文乱码
遇到的问题是: 前台利用Ajax, get方式向后台发送中文数据出现乱码. 解决办法是前台两次编码, 后台一次解码即可. 前台jsp文件 1 var text = "张三"; 3 ...
- Java自学-控制流程 continue
Java的 continue语句 继续下一次循环 示例 1 : continue 如果是双数,后面的代码不执行,直接进行下一次循环 public class HelloWorld { public s ...
- Jmeter:内存配置 -- 转发
在压测过程中jmeter报内存溢出,可能的原因有很多.要注意下面三点: 1.单击压测过程中使用过多的线程,官网建议1000-2000.具体看机器的配置和启动应用的情况.(A single JMeter ...
- Oracle数据库之操作符及函数
一.操作符: 1.分类: 算术.比较.逻辑.集合.连接: 2.算术操作符: 执行数值计算: -- 工资加1000 from emp; 3.比较操作符: -- 比较运算符(between and包头不包 ...