规划路径中的子问题——子圈消去的DFJ和MTZ约束

2023-11-03 05:59

本文主要是介绍规划路径中的子问题——子圈消去的DFJ和MTZ约束,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

规划路径中的子回路

转自知乎:https://zhuanlan.zhihu.com/p/159270139

TSP问题包含两个重要的约束。约束1:进入点i的次数与从点i出发的次数相等,且次数为1;约束2:消除子回路约束。

对于TSP问题,图1和图2所示路径都满足约束条件1,但只有图1是正确的路径(仅仅有一个回路,TSP问题的特点);而像图2将一个回路拆成了两个及两个以上的回路情况,将每个回路称为子回路,需要建立合适的约束条件来消除此种情况,即约束条件2。

VRP问题本身存在多条回路,但是对于每一辆车所服务的需求点,也不允许出现子回路现象。
图1
图2

目前,网络上消除子回路的方法有两种。方法一由Dantzig,Fulkerson and Johnson提出,称之为DFJ方法;方法二由Miller Tucker and Zemlin提出,称之为MTZ方法。

1、DFJ方法:

在这里插入图片描述

刚刚其中V表示顶点集合;S表示集合V的真子集(即集合S≠V),|S|表示集合S中顶点的数量。上式其含义是:对于任意顶点集合的真子集S来讲,顶点间连通的边数之和小于等于顶点数减1.若路径含有子回路,如图2所示,对于顶点集合V的真子集{1,2,4},其连通的边数之和等于3,顶点数也等于3,违背了上面的式子。从而证明了上式能有效避免子回路。

2、MTZ方法:

在这里插入图片描述
新增变量u,其值不具有任何物理意义(只谈大小)。若经过边(i,j),则xij=1,上式可化成:
在这里插入图片描述
即:
在这里插入图片描述

因此,上式可确保经过的节点的u值保持增长趋势。对于图2中顶点集合{1,2,4}就有u1<u2<u4<u1,产生了矛盾,因此,可有效避免出现子回路。

3、两种方法优劣比较:

对于方法一来讲,顶点集合的真子集包含了N种组合,从而约束条件的数量随着n的增加而成指数式增加。

对于方法二来讲,新增n个变量,约束条件增加n-1的平方个。

综上,规模越大,方法二的优势越明显。

这篇关于规划路径中的子问题——子圈消去的DFJ和MTZ约束的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336085

相关文章

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

C# Where 泛型约束的实现

《C#Where泛型约束的实现》本文主要介绍了C#Where泛型约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用的对象约束分类where T : structwhere T : classwhere T : ne

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、