【问题标题】:Subtour constraints formulations for the TSP and Christofide's heuristicTSP 和 Christofide 启发式的 Subtour 约束公式
【发布时间】:2019-08-26 13:29:14
【问题描述】:

我正在比较旅行商问题 (TSP) 的不同表述。特别是,我正在比较 DFJMTZ 子旅游约束公式。这些是使用 GLPK 求解器实现的(通过带有pyomo 包的 Python 代码。由于前者的约束非常多,因此 TSP 求解如下:

  1. 放松所有子巡视限制
  2. 解决 MIP
  3. 如果解决方案可接受:完成
  4. else:为当前解中的每个子循环添加 DFJ 子循环约束

这对于我需要处理的实例非常有效。另一方面,MTZ 公式方式较慢(在 10 到 10k 次之间)。因此我有以下问题:

  1. MTZ 公式是否也可以有效地迭代求解?
  2. 时间增加 10-10k 倍的原因是什么?

关于第二个问题,两个不同之处在于 DFJ 公式包含 $O(2^n)$ 子游览约束,而 MTZ 包含 $O(n^2)$ 子游览约束并且 DFJ 使用 $n$ 变量,而MTZ 使用 $2n$。然而,由于 DFJ 是迭代求解的,所以不需要所有的 subtour 约束(实际上对于我使用的实例来说,少于 10 次迭代就足够了),我们留下了相似数量的约束。因此,我假设差异是变量的数量,但我无法弄清楚为什么这会导致如此大的差异。

最后一点,我认为使用启发式方法(即Christofide's algorithm)可以在目标上产生一个上限,该上限可以用作新的约束(希望大大减少可行解决方案的集合)。但是,如果我首先应用 Christofide 的启发式方法对目标设置一个上限,然后在求解 MIP 之前将其添加到约束条件中,则效率最多保持不变,最坏的情况最多下降 10 倍。

怎么会?这与可行解集的新形式有关吗?我的一个朋友还假设 GLPK 可能不会执行适当的预处理来消除主导约束,但我不知道这是否属实,我也不知道在哪里寻找这个。

有人对我提出的众多问题中的一个有想法吗?

【问题讨论】:

    标签: mathematical-optimization heuristics glpk


    【解决方案1】:

    关于 Christofides 启发式的使用:我不认为正确的方法是将其目标作为约束。相反,您希望将目标作为求解器的上限。我不确定 GLPK 是如何处理这个问题的,但我想有一种方法可以提供一个初始上限,求解器首先可以使用它来计算分支定界树,然后才能找到一个可行的解决方案:比你的界限更好。

    此外,Christofides 具有很好的理论性质,但一般来说,它并不是 TSP 的最佳启发式方法。即使是一些非常简单的方法,比如最远插入,平均性能也会更好。

    很遗憾,我对 DFJ 与 MTZ 子巡回消除约束没有任何建议......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-23
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多