旅行商问题(TSP)建模方法

旅行商问题(TSP)建模方法

旅行商问题是著名的NP-hard问题,具体描述如下:给定一个有向图 G = ( V , E ) G=(V,E) G=(V,E),其中V是总数为N的节点集合 ∣ V ∣ = N |V|=N V=N,E是边的集合,TSP的目标是找到一条从某个起点出发,一次不重复地经过所有其他节点,最终返回起点的最短路。

TSP问题建模需要考虑因素包括:

  • 决策变量:边(i, j)在最优解中是否被选中
  • 目标函数:最小化总成本
  • 约束1:每个点被到达且仅被到达一次
  • 约束2:每个点离开且只被离开一次

初步模型如下:
min ⁡ ∑ i ∑ j c i j x i j ∑ i ∈ V x i j = 1 ∑ j ∈ V x i j = 1 x i j ∈ { 0 , 1 } \small \min \sum_i{\sum_j{\begin{array}{c} c_{ij}x_{ij}\\ \end{array}}} \\ \sum_{i\in V}{\begin{array}{c} x_{ij}=1\\ \end{array}} \\ \sum_{j\in V}{x_{ij}=1} \\ x_{ij}\in \left\{ 0,1 \right\} minijcijxijiVxij=1jVxij=1xij{0,1}

由于该模型的不完备,容易导致子环路的出现。子环路是指没有包含所有节点V的一条闭环。一般采用 subtour-eliminationMiller-Tucker-Zemlin (MTZ) 方法消除上述模型会出现的子环路


消除子环路:Subtour-Elimination

子环路出现意味着出现了包含点个数为 S , ( S < ∣ V ∣ = N ) S,(S<|V|=N) S,(S<V=N) 的子环。因此我们可以朴素地认为,只要加入子环路删除约束,依次删除所有少于N的子环即可。
∑ i , j ∈ S x i j ≤ ∣ S ∣ − 1 2 ≤ ∣ S ∣ ≤ n − 1 ,    S ⊂ V \small \sum_{i,j\in S}{x_{ij}\le |S|-1} \qquad 2\le|S|\le n-1,\; S\subset V i,jSxijS12Sn1,SV

上述约束的数量级至多为 2 N 2^N 2N,略显繁杂,一般通过求解器callback函数,以惰性更新的方式添加约束。


消除子环路:Miller-Tucker-Zemlin (MTZ)

通过引入辅助决策变量 μ i    ∀ i ∈ V , μ i ≥ 0 \mu_i \; \forall i \in V, \mu_i \ge 0 μiiV,μi0,对于每条边 ( i , j ) ∈ E (i,j) \in E (i,j)E,构造 MTZ 约束。

μ i − μ j + M x i j ≤ M − 1 , ∀ i , j ∈ V ,    i , j ≠ 0 , i ≠ j \small \mu_i-\mu_j+Mx_{ij} \le M-1, \quad \forall i,j \in V, \; i,j\ne 0, i\ne j μiμj+MxijM1,i,jV,i,j=0,i=j

M是一个足够大的正数,理论上应当为 μ i − μ j + 1 \mu_i -\mu_j+1 μiμj+1 的一个上界即可。在建模时,需要进行一些处理防止某些不可行的情况出现。一是要将起点复制一份,标记为终点,从而满足起点与终点的重合。二是要当 i ≠ j i\ne j i=j 时才加入约束。因此上述MTZ约束改进为:
μ i − μ j + N x i j ≤ N − 1 ∀ i ∈ { 1 , . . . , N } ,    j ∈ { 2 , . . . N + 1 } ,    i ≠ j \small \mu_i -\mu_j+Nx_{ij} \le N-1 \quad \forall i \in \{1,...,N\},\; j \in \{2, ... N+1\},\; i \ne j μiμj+NxijN1i{1,...,N},j{2,...N+1}i=j

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值