文章目录
1、TSP问题描述
\qquad TSP问题为travelling salesman Problem的缩写,问题描述为:一名旅行商需要从他的住址(home)出发,游历n个城市,之后再返回home。已知所有城市间的旅行成本,问题目标为:这位旅行商应该选择怎样的线路旅游,才能花最少的钱游历一遍所有的城市?
2、TSP问题建模
2.1 参数定义
\qquad 定义城市的总个数为: 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 变量定义
\qquad 定义0-1变量 x i j = { 1 , i f 旅行商从城市 i 到城市 j 0 , i f 旅行商不从城市 i 到城市 j x_{ij}=\left\{ \begin{matrix} 1,if旅行商从城市i到城市j\\ 0,if旅行商不从城市i到城市j \end{matrix} \right. xij={1,if旅行商从城市i到城市j0,if旅行商不从城市i到城市j
2.3 模型建模
2.3.1 目标函数
m
i
n
i
m
i
z
e
C
i
j
x
i
j
minimize \quad C_{ij}x_{ij}
minimizeCijxij
\qquad
目标函数表示最小化旅行总费用。
2.3.2 约束条件
∑
j
≠
i
x
i
j
=
1
,
i
∈
n
(
1
)
\sum_{j\neq i} {x_{ij}=1, \ i\in n} \qquad\qquad\qquad\qquad\qquad\qquad\qquad (1)
j=i∑xij=1, i∈n(1)
\qquad
约束条件(1)表示每一个城市
i
i
i需要离开一次。
∑
i
≠
j
x
i
j
=
1
,
j
∈
n
(
2
)
\sum_{i\neq j} {x_{ij}=1, \ j\in n}\qquad\qquad\qquad\qquad\qquad\qquad\qquad (2)
i=j∑xij=1, j∈n(2)
\qquad
约束条件(2)表示每一个城市
i
i
i需要进入一次。
\qquad
若仅仅考虑上述问题情景中的描述要去,则约束(1)和(2)已经满足所有条件,但是会出现子路径的情况
\qquad
如上图所示,旅行商从红色城市出发,上述的路径满足所有的约束条件,但是明显不符合实际情况,所以需要添加额外的子路径消除约束来避免上述情况的发生。
3、 子路径消除约束
3.1 子路径消除不等式一(SEC1)
∑
i
∈
S
∑
j
∉
S
x
i
j
≥
1
,
S
⊂
N
=
{
1
,
2
,
.
.
.
,
n
}
,
S
≠
∅
(
3
)
\sum_{i\in S}\sum_{j\notin S} {x_{ij}\geq1, \, S\subset N=\{1,2,...,n\},S\neq\emptyset} \qquad\qquad (3)
i∈S∑j∈/S∑xij≥1,S⊂N={1,2,...,n},S=∅(3)
\qquad
解释: 对于每一个非空集合
S
S
S,
S
S
S中城市的个数最多为
n
−
1
n-1
n−1个,从
S
S
S中流出的弧的个数必定大于或者等于一条。将上述图中的子路径的情况套用到这个不等式上,很明显会违反不等式一,所以将这条不等式加入到模型中能够有效消除子路径问题。同时,不等式一会添加的约束个数为:
c
n
1
+
c
n
2
+
.
.
.
+
c
n
n
−
1
=
2
n
−
2
c_{n}^{1}+c_{n}^{2}+...+c_{n}^{n-1}=2^{n}-2
cn1+cn2+...+cnn−1=2n−2条约束。
3.2 子路径消除不等式二(SEC2)
∑
i
∈
S
∑
j
∈
S
x
i
j
≤
∣
S
∣
−
1
,
S
⊂
N
=
{
1
,
2
,
.
.
.
,
n
}
,
2
≤
∣
S
∣
≤
n
−
1
(
4
)
\sum_{i\in S}\sum_{j\in S} {x_{ij}\leq|S|-1, \, S\subset N=\{1,2,...,n\},\,2\leq|S|\leq n-1} \qquad (4)
i∈S∑j∈S∑xij≤∣S∣−1,S⊂N={1,2,...,n},2≤∣S∣≤n−1(4)
\qquad
解释: 对于每一个集合
S
S
S,
S
S
S相互链接的弧的个数最多为
∣
S
∣
−
1
|S|-1
∣S∣−1条,即只有当
S
S
S中的城市的个数为
n
n
n个时,才允许构成环路,这样不等式二也可以避免上述图中的情况发生。同时,不等式二会添加的约束个数为:
c
n
2
+
c
n
3
+
.
.
.
+
c
n
n
−
1
=
2
n
−
2
−
n
c_{n}^{2}+c_{n}^{3}+...+c_{n}^{n-1}=2^{n}-2-n
cn2+cn3+...+cnn−1=2n−2−n条约束。
3.3 子路径消除不等式三(MTZ [ 1 ] ^{[1]} [1])
\qquad
引入一个新的变量
u
i
∈
[
1
,
n
−
1
]
,
i
∈
{
1
,
.
.
.
,
n
−
1
}
u_i\in[1,n-1], i\in\{1,...,n-1\}
ui∈[1,n−1],i∈{1,...,n−1}表示city
i
i
i 在TSP路径中的索引位置,MTZ子环路消除不等式的形式如下所示:
u
i
−
u
j
+
(
n
−
1
)
⋅
x
i
j
≤
n
−
2
,
i
,
j
∈
{
1
,
.
.
.
,
n
−
1
}
:
i
≠
j
u_i-u_j+(n-1)\cdot x_{ij}\le n-2,\ \ i,j\in \{1,...,n-1\}:i\neq j
ui−uj+(n−1)⋅xij≤n−2, i,j∈{1,...,n−1}:i=j
\qquad
MTZ不等式通过引入
n
n
n个新的变量,将子环路消除不等式约束的数量变为了
n
2
n^2
n2个,对于规模较大的算例,相对于SEC不等式更有优势。而且避免了SEC不等式的显式枚举过程。
3.4 子路径消除不等式四(DL [ 2 ] ^{[2]} [2])
\qquad
DL不等式针对MTZ不等式进行了进一步的改进,DL的形式如下所示:
u
i
−
u
j
+
(
n
−
1
)
⋅
x
i
j
+
(
n
−
3
)
⋅
x
j
i
≤
n
−
2
,
i
,
j
∈
{
1
,
.
.
.
,
n
−
1
}
:
i
≠
j
u_i-u_j+(n-1)\cdot x_{ij}+(n-3)\cdot x_{ji}\le n-2,\ \ i,j\in \{1,...,n-1\}:i\neq j
ui−uj+(n−1)⋅xij+(n−3)⋅xji≤n−2, i,j∈{1,...,n−1}:i=j
\qquad
DL不等式相对于MTZ不等式在空间切割的效果更强,有利于模型在更短的时间内收敛。
Reference
[1]. Miller, C. E., Tucker, A. W., & Zemlin, R. A. (1960). Integer programming formulation of traveling salesman problems. Journal of the ACM (JACM), 7(4), 326-329.
[2]. Desrochers, M., & Laporte, G. (1991). Improvements and extensions to the Miller-Tucker-Zemlin subtour elimination constraints. Operations Research Letters, 10(1), 27-36.