白盒测试基本路径生成工具_基于基本最短路径列生成的车辆路径问题
论文作者:Alain Chabrier
论文发表日期:2005
摘要
车辆路径问题的列生成模型通常包含一个基本的最短路径子问题。由于该问题已知算法的最坏情况复杂度过高,其基本路径约束通常被松弛。实际上,由于每个客户必须被访问一次,所以有和没有基本路径约束的两个问题都有相同的最优整数解。在这篇文章中,我们提出了一个理论和几个实践改进算法的基本路径。我们获取最好的下界和修建搜索树,这些改进允许我们寻找精确的解决方案。
1 介绍
文本研究VRPTW问题,分为两类,一类是启发式算法,快速寻找可行解,通常基于本地搜索技术有时与约束规划的混合合作。令一方面精确算法聚焦于发现最优解。列生成技术就是精确算法的一部分。通过 Dantzig–Wolfe分解将原始的线性规划问题分解为一个线性RMP和一个定价的子问题。这个主问题变成一个二元变量的分区问题,定价子问题负责生成新的有希望列约束最短路径问题。子问题分解的版本必须可以解决ESPRCTW(资源约束和时间窗的基本最短路径问题)。路径中循环通常被松弛,通过SPRCTW(资源约束和时间窗的最短路径)代替。在这种情况下,可以看出,该列生成模型的最优整数解在放宽循环约束的情况下,只包含基本路径。松弛掉循环约束的最主要的原因是可以使用更强大的算法来解决SPRCTW而不是解决ESPRCTW问题。事实上,伪多项式算法是可用的SPRCTW,而相反,它已表明,ESPRCTW是NP-hard[14]。在本文中,我们提出了ESPRCTW的几个优点,如在放宽限制的主问题下获得了更好的下界质量,并提出了几种技术来降低考虑循环约束对效率的影响。
2 VRP分解模型
2.1 MIP模型
2.2 Dantzig–Wolfe 分解
对于给定的路线k考虑矩阵
提示:车辆k和路线p不是一个概念
定义
如果我们将这些表达式替换到原始模型,我们将获得分解的模型:
容量,子消除和时间窗口约束被整体移动到定义极值点路径的有效性的子问题。
我们在这里认识问题包括从仓库到仓库找到基本路径并满足容量约束。
2.3 车辆的类型相同
可以对模型进行进一步的压缩
该分解模型包含大量可能的路径变量。如果N是节点数,理论路径变量的数量可以增长到N!。对于10个节点的简单情况,这对应于3 628 800个路径。 因此,我们使用列生成技术,其中变量是动态添加的。
3 列生成
在本节中,我们将讨论分解模型可能的各种列生成过程。特别是,我们强调不同类型的子问题是可能的基本事实。
3.1 定价方案
让
因此,子问题包括找到关于以下成本的最短基本路径并且遵守容量约束。
3.2 各种可能的子问题
有效路线是从仓库到仓库的基本路径,满足某些资源的约束(路径长度,容量,时间)。
让p是一条路径
根据该模型,路线不应包含循环。然而,文献中提出的大多数算法放宽了这个约束以简化子问题。实际上,即使松弛受限主要问题的解决方案可能包含具有非零小数值的非基本路线,最佳整数解也不包含这样的路线。
定理1 当资源的累积尊重三角不等式并且节点之间的成本累积严格为正时,具有非基本路径的主问题的最优整数解包含仅基本路径。
3.3 标签算法
标记算法将标签与部分路径相关联,并创建扩展路径的新标签。当不再生成标签时,最佳路径由末端节点处的标签给出,并且有最好的检验数。在节点i处,一个部分路径p关联一个标签
如果
该优势规则不能直接用于搜索基本最短路径。最后一个问题要复杂得多。本文的核心结果是为基本最短路径提出了该算法的实用,有效的修改。
3.4 分支计划
我们使用基于改编的Ryan-Fosterrules的常用分支方案。我们寻找两个共享同一对节点 i 和 j 的分数路线 其中一个路线使用弧线 (i, j) 而另一个不使用。可以证明,总能找到这样的路线。在每个分支中,可以容易地修改最短路径子问题而不破坏问题的结构(只需从底层图中删除弧即可)。
4 界限比较
提出两种方法增加松弛的质量。一种为添加切割平面松弛;第二个是基于基本的最短路径子问题。使用SPRCTW,主问题表示为MP。使用ESPRCTW,主问题表示为EMP。当我们从MP中删除完整性约束时,我们将其表示为RMP。当我们从EMP中删除完整性约束时,我们将其表示为REMP。
4.1 简单的例子
只有两个客户节点i,j。
4.2 使用切割
改进从松弛问题中获得的解决方案的最广泛使用的方法是添加切割平面,例如k路径切割,当k = 1时也称为子切割。让S是一组节点的集合,
即使这种解决方案没有违反任何减少的次数,它也包含一个循环,因此不会成为EMP的解决方案。最后,我们必须记住,即使ESP更难解决,当我们使用切割平面时,我们还必须使用其他一些复杂的算法来隔离违规切割以增加松弛。
4.3 使用路径
MP和EMP的约束相同并且列的集合彼此包含在一起,很明显MP是EMP的松弛,并且RMP是REMP的松弛。我们之前看到MP和RMP具有相同的整数解。 对于RMP和REMP来说,这样的好结果是不正确的,但松弛关系意味着用REMP获得的界限至少与用RMP获得的结果相同。因此,我们的想法是将ESPRCTW用于子问题。从理论上讲,这个问题要复杂得多,我们必须使用一种实现,在算法的最差实际效率和更好的边界质量之间提供良好的折衷。
5 基本最短路径
在这个部分,我们提出一些对基本路径问题标签算法的修改
1.部分路线已经存在的节点无法对当前的部分路线进行扩展
2通常的优势规则不能直接删除标签。
第一项意味着只有当部分路径尚未访问j时,以i结尾的部分路径才能延长到j。如果我们将部分路径p的节点集合表示为V(p),如果我们已经有j∈V(p),我们就不能将p延长到j。
第二项是主要困难,即使一些部分路径
5.1 初步修改的优势规则
最初的优势规则不能确保
5.2 优势规则的确切改进
如果部分路径
让
另请注意,在无法以任何方式将其附加到p2的情况下,我们可能不会考虑某些元素
我们在这里使用三角不等式的性质。现在让我们考虑
1.与
(本人理解为需要将n插入到
这里
通过删除成本部分(三角定理),消除
2.与
5.3算法的启发式改进(简单的启发式减少算法)
略
5.4 面向实施的改进
前一小节介绍了对基本最短路径的全球定价过程的一些算法改进。我们在这里介绍一些我们过去以高效的方式实现它的想法。
5.4.1 存放标签
当我们使用算法的略微修改和有限版本的许多连续运行时,可以在算法的预热中使用很多时间,即,在先前运行结束时已经存在的许多标签的重新创建中。 因此,我们使用标签存储作为增量工具。
此存储可以使用来自任何算法的标签填充,然后用于在运行之前使用实际标签填充新算法。
5.5 其他改进
之前已经提出过几项其他改进措施:
- 基于时间窗口的图缩减:我们从可能的弧线中删除那些由于时间窗口而无法实现的弧线。
- 最少的路径数:正如[12]中提出的那样,当生成固定的最小数量的路径和标签时,我们停止执行算法。这种减少特别有趣,因为当没有找到路径时,我们知道这样的路径不存在,我们不必重新运行该算法的另一个版本。
- 基于降低成本的图表缩减:我们还会根据检验数的原因减少初始图表。
6.2 分支
当没有更多新列可以定价时,松弛RMP是当前Branch-and-Price分支的下限。在分支定价根节点的情况下,我们获得完整问题的全局下界。当处理仅具有基本路径的子问题时,我们解决了更受约束的问题,并且获得的界限在理论上更好。在表1中,我们将系列R1和RC1上获得的界限与[11]中给出的界限进行了比较。 给出的两个比较是
在我们的下界LB和来自[11]的LB(1)之间,对应于仅禁止具有形式i-j-i的循环的子问题。
来自[11]的LB(2)和LB(1)之间。 LB(2)对应于LB(1),加上在Branch-and-Price根节点处添加了子路径和2路径切割。我们可以在这个表中看到,我们的下界确实比用非基本路径获得的下限更好。 平均而言,我们的下限与最优解之间的差距比LB(1)与最优解之间的差距小17%。 相同的计算将得到47%的LB(2)并且表明可以将切割平面的使用添加到我们的算法中。
白盒测试基本路径生成工具_基于基本最短路径列生成的车辆路径问题相关推荐
- html自动生成工具_关于STM32代码自动生成的工具的进度....
前情提要:STM32代码自动生成工具_本想...但是...可是...所以 首先说一下那几天大家的反应,有的持观望态度,毕竟STM32CUBE很香:有的很激动,期待我快点出东西:还有的很淡定,知道我在挖 ...
- java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...
TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...
- mysql javabean 工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)...
TableGo_20200520 v6.9.0 正式版发布,此次版本更新如下: 1.新增对JDK9及以上版本Java环境的支持 2.生成JavaBean更名为生成数据模型并且提供了C#.C++.Gol ...
- c mysql实体类生成工具_【干货分享】C# 实体类生成工具
前言: 项目实战中不论是业务编码还是通用编码,总会归纳出一些通用的工具类.放入项目中一劳永逸,让兄弟姐妹们避免编写重复代码.所以利用了工作之余的时间,将这些散落在多个项目中精致优雅的工具类,归纳起来形 ...
- pandas基于日期信息(time or date)生成季度信息(quarter)实战:pandas基于日期信息列生成季度信息列、dt.quarter生成季度信息、dt.to_period生成季度信息
pandas基于日期信息(time or date)生成季度信息(quarter)实战:pandas基于日期信息列生成季度信息列.dt.quarter生成季度信息.dt.to_period生成季度信息 ...
- 启动图一键生成工具_一键即运行!清华团队推出图深度学习工具包CogDL v0.1
一行代码命令可以做什么? "一行命令可以实现'一条龙'运行实验." 访问 http://github.com/THUDM/cogdl 一键体验! 近年来,结构化数据的表示学习备受业 ...
- ubuntu生成密钥和证书_基于浏览器的密钥生成以及与浏览器的密钥/证书存储的交互...
ubuntu生成密钥和证书 想象以下情况: 您需要从访问您的网站的用户那里获取一个密钥(在非对称情况下为用户的公共密钥 ),并希望浏览器记住私有部分,而不会因冗长的导入过程而困扰用户. 老实说,实际上 ...
- html自动生成工具_「写论文神器」一个好用的论文自动生成工具,内含30w 文献数据...
最近这不是快到考试周了嘛,毕竟其他东西分量再重,也重不过考试.但是文章发出去才发现事情好像不是那么简单,好像和考试相比,眼下更紧迫的应该是作业才对.比如,你们亲爱的小编我已经连续五天凌晨三点睡了,说实 ...
- xml工具生成工具_研究当前的XML工具
xml工具生成工具 常用缩略语 API:应用程序编程接口 DITA:达尔文信息键入体系结构 DTD:文档类型定义 HTML:超文本标记语言 IDE:集成开发环境 URL:统一资源定位符 W3C:万维网 ...
最新文章
- spark-submit --files 动态加载外部资源文件
- c语言编写弹窗提示是否确认退出_世人觉得C语言和C++太难?没前途?过来人告诉你真相...
- linux操作系统上课,Linux操作系统使用的文件系统是
- arduino 土壤温湿度传感器_智慧农业温室大棚环境监测传感器
- Run-time Settings--General--Run Logic
- 240多个jQuery常用到的插件
- 时间计算题100道_2019四校及分校自招开放日情况汇总(含时间安排、考试内容难度、到场人数等)...
- Windows Workflow Foundation 4.0
- 微软云架构服务器,微软云存储架构(Azure Cloud Storage)
- 信息安全工程师考试大纲(含pdf)
- 运营Tumblr的几个建议-教你成为tumblr达人
- php中斜杠是什么,php加斜杠的转义方法
- 继续谈下脑残的NODE_MODULE_VERSION,全世界冷眼看着electron
- FIR 线性相位系统 最小相位系统 滤波器延迟
- c++编程拼图小游戏
- 力天创见区域客流人数统计
- Python调用高德地图API实现经纬度换算、地图可视化
- 快速提升认知,你必须知道四种底层思维(系列一)
- 给定一个整数,判断它能否被3,5,7整除,并输出以下信息:
- OllyDBG 破解入门教程
热门文章
- c#中的Form.Show和Form.ShowDialog的区别
- linux 运行cmd文件,cmd文件如何在虚拟linux下运行
- java 文件下载漏洞,文件上传和下载漏洞
- android数据回传多个页面_Android Day06四大组件之Activity多页面跳转和数据传递
- cesium 获取圆形边界位置_Cesium中级教程4 – 空间数据可视化(二)
- SQL注入-SQL注入的WAF绕过(十六)
- 暴力破解(初级)以及弱口令工具的使用
- checkbox设置颜色,style样式等
- css钢铁侠视角,CSS3 Iron Man 钢铁侠肖像
- 安卓-04-实例01-XML布局UI界面