热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

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

规划路径中的子回路转自知乎:https:zhuanlan.zhihu.comp159270139TSP问题包含两个重要的约束。约束1:进入点i的次数与从点i出发的次数相等,且次数为

规划路径中的子回路

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

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

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

VRP问题本身存在多条回路,但是对于每一辆车所服务的需求点,也不允许出现子回路现象。
《规划路径中的子问题——子圈消去的DFJ和MTZ约束》
《规划路径中的子问题——子圈消去的DFJ和MTZ约束》

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

1、DFJ方法:

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

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

2、MTZ方法:

《规划路径中的子问题——子圈消去的DFJ和MTZ约束》
新增变量u,其值不具有任何物理意义(只谈大小)。若经过边(i,j),则xij=1,上式可化成:
《规划路径中的子问题——子圈消去的DFJ和MTZ约束》
即:
《规划路径中的子问题——子圈消去的DFJ和MTZ约束》

因此,上式可确保经过的节点的u值保持增长趋势。对于图2中顶点集合{1,2,4}就有u1

3、两种方法优劣比较:

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

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

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


推荐阅读
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 信用评分卡的Python实现与评估
    本文介绍如何使用Python构建和评估信用评分卡模型,涵盖数据预处理、模型训练及验证指标选择。附带详细代码示例和视频教程链接。 ... [详细]
  • 深入剖析 DEX 赛道:从 60 大头部项目看五大趋势
    本文通过分析 60 大头部去中心化交易平台(DEX),揭示了当前 DEX 赛道的五大发展趋势,包括市场集中度、跨链协议、AMM+NFT 结合、新公链崛起以及稳定币和衍生品交易的增长潜力。 ... [详细]
  • Linux 学习路径与核心框架
    本文提供了一套系统化的 Linux 学习路径,旨在帮助初学者和中级用户构建全面的知识体系。通过逐步深入的学习方法,掌握从基础命令到高级系统管理的技能。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 本文介绍了一种解决二元可满足性(2-SAT)问题的方法。通过具体实例,详细解释了如何构建模型、应用算法,并提供了编程实现的细节和优化建议。 ... [详细]
  •   上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系,到底是什么关系呢?我们就来探讨一下吧。(这一篇数学推导占了大多数,可能看起来会略有枯燥,但这本身就是一个把之前算法 ... [详细]
  • 分离单元格中的汉字与数字
    本文介绍如何将Excel表格中A列的混合文本(汉字和数字)分离,分别放置在B列(汉字)和C列(数字)。通过简单的公式操作即可实现这一需求。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 堆是一种常见的数据结构,广泛应用于计算机科学领域。它通常表示为一棵完全二叉树,并可通过数组实现。堆的主要特性是每个节点的值与其父节点的值之间存在特定的关系,这使得堆在优先队列和排序算法中非常有用。 ... [详细]
  • 深入理解一致性哈希算法及其应用
    本文详细介绍了分布式系统中的一致性哈希算法,探讨其原理、优势及应用场景,帮助读者全面掌握这一关键技术。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 开发笔记:9.八大排序
    开发笔记:9.八大排序 ... [详细]
author-avatar
手机用户2602922981
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有