【问题标题】:Determining whether an integer program is infeasible确定整数程序是否不可行
【发布时间】:2018-03-01 23:58:44
【问题描述】:

假设我们有一个包含数千个约束的整数或混合整数程序。

如何判断这个IP/MIP是否可行?

【问题讨论】:

  • 一般来说:只需将其扔给求解器,看看它是否返回“不可行”或其他内容。在实践中:证明不可行可能非常昂贵。
  • en.wikipedia.org/wiki/Halting_problem 是一个类似的问题。 (并且约束的数量并没有真正发挥作用,“大”数字只会让它听起来更复杂)。
  • 不,停机问题是不可判定的,也就是说,即使你给一台计算机无限的时间,它也无法解决它。可行是指能否在合理的时间内计算出来。
  • 当它只是整数时,the number of variables is what matters。​ ​

标签: mathematical-optimization integer-programming mixed-integer-programming


【解决方案1】:

假设我们有一个包含数千个约束的整数或混合整数规划问题。

约束的数量不一定会随着不可行性而扩展:通常,约束会限制必须枚举的可能性的数量。另一个相关问题是随机 3-SAT,例如,其中最难的问题是约束数量与变量数量相比大约以四倍的比例缩放的问题。

我们如何才能意识到这个问题是完全可行的?

有很好的(混合)整数编程求解器可以在合理的时间内解决一些(困难的)问题。然而,众所周知,通用整数规划问题是NP-hard。这意味着不太可能在合理的时间内找到解决这些问题的算法。有时我们很幸运,整数规划问题是否有一些结构我们可以利用来有效地找到解决方案,但正如所说:总的来说,这是一个难题。

求解器通常使用 branch-and-bound,其中通过松弛限制变量的域,直到达到稳定条件。然后求解器为其中一个变量选择一个值(首先对哪个变量和什么值进行深入研究,因为这些对找到解决方案有很大影响)。然后问题被进一步放宽,直到证明不存在具有该值的解决方案,或者系统必须分配一个新值。如果一个模型被证明不能满足一组给定的分配变量,系统回溯:它撤消分配的一些变量并重新分配值并继续搜索。最终会找到解决方案(但可能需要很长时间),或者解决者可以证明问题无法满足(不存在解决方案)。如果找到解决方案,我们还没有完成:因为我们通常对某个优化函数的最优解决方案感兴趣。在这种情况下,我们添加一个约束,从现在开始,我们寻找比迄今为止建立的解决方案更好的解决方案。我们一直这样做,直到我们用完新的解决方案,在这种情况下,我们已经证明了最优性。

如果很容易找到正确的解决方案(相对于硬约束),但很难获得最佳解决方案,可以使用元启发式近似 em> 最好的解决方案。这里考虑满足硬约束的解决方案的“解决方案空间”。通过构造一些“变异函数”,将一个有效的解决方案转化为另一个解决方案,人们可​​以通过迭代操作解决方案来生成一种搜索最佳解决方案的算法。如果我们用完了时间,我们会返回迄今为止最好的解决方案。尽管我们永远无法保证我们有 最优 解决方案,但元启发式通常工作得很好,并返回 接近最优 解决方案。 模拟退火等一些元启发式算法可以对解决方案的质量做出统计保证。

【讨论】:

  • 很好的概述。但是恕我直言:对 3-SAT 的相变评论只是对 random 3SAT 的观察(否则它可能看起来非常不同,例如经典的 pigeonhole problem)。并且 MIP 求解器大量使用此处未提及的切割平面(分支和切割),恕我直言,在证明不可行的情况下甚至变得更加重要。
  • 确切的方法如brand & bound通过解决LP松弛来解决问题。在大问题的情况下,这些方法的计算量很大,并且不能保证它可以找到任何整数解。在我提出的问题的情况下,启发式算法也不起作用,因为这些方法是从可行的解决方案开始的!如果我们有一个可行的解决方案,那么我们就知道我们的问题是可行的。但是如果遇到困难和大问题,我们没有可用的可行解决方案开始,所以像 SA 这样的算法都不会工作。
  • @FarazRamtin:但是如果 LP 松弛已经不可行,那么肯定是不可行的。因为 LP 不是 NP 难的:它在 P 中。所以这意味着它与 ILP 相比非常有效。所以不行。在这种情况下,您应该放松问题本身:看看是否可以删除细节等。
【解决方案2】:

您可以肯定地说,如果问题的线性松弛已经不可行,那么整数规划问题也是如此。

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2014-04-14
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多