未能找到路径的一部分_车辆路径规划三种MIP模型
车辆路径规划问题的三个MIP模型。从直观的模型推导出高效的模型。
我们用最最标准的Capacitated VRP为例:
CVRP问题描述:给定一张完全有向图:
假设:1)图
这个组合优化问题暗含两个决策点:1) 哪辆车配送哪些客户;2)对每辆车而言,以什么顺序配送。所以,我们定义一个决策变量
(1.2)表示每个客户都必须服务到位;(1.3)就是进入的流等于出去的流; (1.4)和(1.5)就是每辆车必须从o出发,回到d,不能停在客户家不走了;(1.6)不能超载;(1.7)子回路消除。也就是避免出现,一辆车在几个客户之间无限打圈; (1.8)整数约束。
这个模型有个很不好的地方就是变量是三个索引,问题规模大了以后,变量瞬间就会变得很多。而且车辆都是相同的,整个搜索空间会有很强的对称性,这会降低B&B分支的效率。最后一点是,子回路约束的数量是指数级,需要用行生成解LP松弛问题。所以我们改一改:
嗯,这样看起来,干净了一些。其中(2.6)把子回路消除约束和满足容量的约束合并了起来。这个模型的决策变量只有两个index,消除了车辆带来的对称性,唯一不太好的地方就是(2.6)需要引入cut generation。
除了第二个模型以外,还可以对第一个模型做D-W[3]分解得到Set Partitioning模型。因为D-W的精髓就是“挑选合适的约束进入子问题”,所以先说哪些约束应该被选中。
观察(1.3-1.5以及1.7),对于某个
因为主问题的
其中:
进一步对约束分析:
因为
还有,由于车辆是一致的,所以有
其中:
第三个模型的优势:1)提供了很好的低界 ;2)能够处理路径相关的非线性成本或者约束。3) 减少相同资源带来的对称性问题。第一点和第三点的好处对于分支定界算法不言而喻,而第二点在我看来极大地提升了列生成的工程价值。
但是这个模型也有劣势。子问题中包含了(1.7),所以子问题凸多面体P2是有指数级的极点。那么对主问题来说,我们只能先选择一部分极点,然后慢慢生成剩余的。这也就引入了列生成。列生成和车辆路径规划(Vehicle Routing Problem, VRP)大概自从这篇文章[1]开始,相爱相杀了快30年。这30年里,几乎所有高效的VRP精确算法都离不开列生成技术。子问题自身也是一个NP难问题,属于Elementary shortest path problem with resource constraint (ESPPRC)。
所以在实际问题中,会采用一些启发式算法先产生很多高质量的路径,然后导入第三个模型里求解来从这些高质量的路径中选择出比较好的组合。
References:
[1] Agarwal Y, Mathur K, Salkin HM. A set‐partitioning‐based exact algorithm for the vehicle routing problem. Networks. 1989 Dec;19(7):731-49.
[2] Schrijver, A. (1998). Theory of linear and integer programming. John Wiley & Sons.
[3] Bertsimas, D., & Tsitsiklis, J. N. (1997). Introduction to linear optimization (Vol. 6, pp. 479-530). Belmont, MA: Athena Scientific.
[4] Desaulniers, G., Desrosiers, J., Solomon, M. M., Soumis, F., & Villeneuve, D. (1998). A unified framework for deterministic time constrained vehicle routing and crew scheduling problems. In Fleet management and logistics (pp. 57-93). Springer, Boston, MA.
未能找到路径的一部分_车辆路径规划三种MIP模型相关推荐
- python 鱼骨图_数据分析必备的三种思考模型
原标题:数据分析必备的三种思考模型 新人学习数据分析有个误区,认为Excel很Low,SQL做久了又是表哥表姐,学习python又陷入无尽的工具包中不能自拔,迷茫到找项目学习,结果是分析又不得要领,说 ...
- java绝对路径和相对路径的区别_相对路径和绝对路径的区别
1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://ww ...
- 数据分布策略_有效数据项目的三种策略
数据分布策略 Many data science projects do not go into production, why is that? There is no doubt in my mi ...
- 网络资产管理系统_固定资产管理系统的三种网络架构方式
随着互联网技术的发展和信息技术的广泛使用,固定资产管理系统在各行业的应用越来越普及,固定资产管理系统作为当今主流的企业固定资产信息化管理模式,能够对企业固定资产进行有效管理并提升企业的管理水平.对于固 ...
- python编程剪刀石头布思路_剪刀石头布小习题三种语言python2、php、go代码
剪刀石头布小习题三种语言python2.php.go代码 # coding:utf-8 """ python核心编程6-14习题的解题思路 设计一个"石头,剪子 ...
- python车辆路径优化_车辆路径问题中距离维的设置
我正在尝试解决一个有5个司机送货的车辆路线问题.我用haversine和lat long来计算距离矩阵.我是新的或工具,所以遵循vrp的例子.在 问题是,对于5个驱动程序,只为2个驱动程序生成路由,并 ...
- 中相对路径与绝对路径的写法_相对路径和绝对路径?简洁易懂解释+实例
欢迎评论和指正,希望我的学习经验可以帮助到你. 绝对路径:目标文件在硬盘上的真实路径(最精确路径) 举个栗子:找到文件,右键点击后打开属性,可以看到我把喜欢的封面'cover1.jpg'储存在了路径_ ...
- openwrt打印机支持列表_共享打印机的三种安装连接方法
打印机共享是办公中常用到的方法,可以多人共享一台打印机,节省设备资源,减少费用支出.如何在局域网中添加共享打印机或者网络打印机呢? 共享打印一般有两种方式: 第一种是打印机自带网络接口,具备网络打印能 ...
- win10连接共享打印机_共享打印机的三种安装连接方法
打印机共享是办公中常用到的方法,可以多人共享一台打印机,节省设备资源,减少费用支出.如何在局域网中添加共享打印机或者网络打印机呢? 共享打印一般有两种方式: 第一种是打印机自带网络接口,具备网络打印能 ...
最新文章
- 网站优化不仅仅只为排名而在!
- python之sys模块详解_(转)python之os,sys模块详解
- 使用JProfiler查看GC Roots
- Android开发面试题之Android四大组件
- 交换网络中的sniffer讨论-基于交换网络的ARP spoofing sniffer
- C++中指针和引用的区别与联系
- HBase流量限制和表负载均衡剖析
- java服务端 json接口_java以json格式向后台服务器接口发送请求的实例
- gre计算机考试成绩查询,2016年GRE考试成绩查询方法及出分时间最全介绍
- ST25读FeliCa卡记录
- redis的hscan替换hgetall的疑问,redis返回列表获取数据示例
- 小米手机浏览器部分图片显示异常
- MFC控件-Spin控件和编辑框控件Edit Control绑定使用
- Pocket PC C#
- 嫁给年薪百万的程序员,结婚 6 年后的我竟然还是处女
- Tensorflow中的masking和padding
- 我为Bill Gates熬夜加班的那个晚上
- excel2007计算机试题,巧用excel2007/2003进行拍照
- 严格别名规则“-fstrict-aliasing”和“-fno-strict-aliasing”及类型双关
- 放大器的传递函数_谁惧怕电容负载变化?斩波放大器吗?
热门文章
- ffmpeg库编译加文字_ffmpeg第三方库编译记录
- 支持的sql语法_PostgreSQL 12 新特性解读之一|支持 SQL/JSON path
- 传输预编码matlab,基于MATLAB的MIMO系统预编码性能仿真教程.doc
- Python zipfile 文件名称编码 file_name.encode(‘cp437‘).decode(‘gbk‘)
- 本科学计算机研究生读哲学,计算机专业本科生创新思维培养及其哲学思考
- python中dict的fromkeys用法
- python中常见的一些题目汇总
- Python 全局变量和局部变量迷惑人的小示例
- 计算机组成与结构实验箱,HQFC-B1计算机组成和数字电路实验箱
- python 四舍五入 round( x [, n] )函数 int()函数