旅行商(TSP)问题建模和子路径(subtour)消除约束详解

简介: 旅行商(TSP)问题建模和子路径(subtour)消除约束详解

1、TSP问题描述


TSP问题为travelling  salesman  Problem的缩写,问题描述为:一名旅行商需要从他的住址(home)出发,游历n个城市,之后再返回home。已知所有城市间的旅行成本,问题目标为:这位旅行商应该选择怎样的线路旅游,才能花最少的钱游历一遍所有的城市?




2、TSP问题建模


2.1 参数定义


定义城市的总个数为: n n n,从城市 i i i到城市 j j j的旅行成本为: C i j , i ∈ n , j ∈ n C_{ij},i\in n,j\in n Cij,i∈n,j∈n。


2.2 变量定义


定义0-1变量

image.png



2.3 模型建模


2.3.1 目标函数


image.png



目标函数表示最小化旅行总费用。



2.3.2 约束条件

image.png


约束条件(1)表示每一个城市    i需要离开一次。


image.png


约束条件(2)表示每一个城市 i i i需要进入一次。


若仅仅考虑上述问题情景中的描述要去,则约束(1)和(2)已经满足所有条件,但是会出现子路径的情况


20210715113624705.png


如上图所示,旅行商从红色城市出发,上述的路径满足所有的约束条件,但是明显不符合实际情况,所以需要添加额外的子路径消除约束来避免上述情况的发生。





3、 子路径消除约束


3.1 子路径消除不等式一

image.png

解释: 对于每一个非空集合 S S S, S S S中城市的个数最多为 n − 1 n-1 n−1个,从 S S S中流出的弧的个数必定大于或者等于一条。将上述图中的子路径的情况套用到这个不等式上,很明显会违反不等式一,所以将这条不等式加入到模型中能够有效消除子路径问题。同时,不等式一会添加的约束个数为:


image.png


条约束。



3.2 子路径消除不等式二

image.png


解释: 对于每一个集合 S S S, S S S相互链接的弧的个数最多为 ∣ S ∣ − 1 |S|-1 ∣S∣−1条,即只有当 S S S中的城市的个数为 n n n个时,才允许构成环路,这样不等式二也可以避免上述图中的情况发生。同时,不等式二会添加的约束个数为:


条约束。


THE END. THANKS FOR WATCHING.



相关文章
|
6月前
静态时序分析:工艺库的特征化条件和工作条件
静态时序分析:工艺库的特征化条件和工作条件
51 0
|
6月前
[贴装专题] 贴装流程中涉及到的位置关系计算
[贴装专题] 贴装流程中涉及到的位置关系计算
59 0
|
11月前
|
数据可视化 Java 关系型数据库
智慧工厂高精度定位系统源码,支持零维、一维、二维定位方式
电子巡检 可提前为标签预设巡检任务,包括巡检时间/路线/名称。一旦巡检人员未按规定的时间/路线巡查,系统将立即报警。 人员管理 可以提前将人员的详细数据(如姓名、职务ID) 输入到系统中,并与标签ID绑定。 角色管理
|
11月前
|
移动开发 人工智能
马尔可夫链预测举例——钢琴销售的存贮策略
马尔可夫链预测举例——钢琴销售的存贮策略
170 0
|
算法 C语言
基于雨流计数法的源-荷-储双层协同优化配置研究(Matlab代码实现)
基于雨流计数法的源-荷-储双层协同优化配置研究(Matlab代码实现)
151 1
|
机器学习/深度学习 传感器 算法
基于模拟退火算法无人机药品配送路线规划(条件:距离近优先)附Matlab代码
基于模拟退火算法无人机药品配送路线规划(条件:距离近优先)附Matlab代码
|
机器学习/深度学习 算法 机器人
基于双参数蜜蜂算法解决车辆路径问题(Matlab代码实现)
基于双参数蜜蜂算法解决车辆路径问题(Matlab代码实现)
|
传感器 机器学习/深度学习 算法
【目标定位】基于拓展卡尔曼滤波实现GPS-INS组合导航系统附matlab代码
【目标定位】基于拓展卡尔曼滤波实现GPS-INS组合导航系统附matlab代码
|
存储 人工智能 供应链
通过二维材料增强的模拟退火算法,解决组合优化「大问题」
通过二维材料增强的模拟退火算法,解决组合优化「大问题」
135 0
|
计算机视觉 智慧交通
智慧交通day02-车流量检测实现03:辅助功能(交并比and候选框的表现形式)
IOU是交并比(Intersection-over-Union)是目标检测中使用的一个概念是产生的候选框
162 0