假设我们有一个带有几千个约束的整数或混合整数程序。
我们如何确定此IP / MIP是否可行?
答案 0 :(得分:3)
假设我们有一个整数或混合整数编程问题,有几千个约束。
约束数不必随着不可行性而扩展:通常约束限制了必须枚举的可能性的数量。另一个相关的问题是 random 3-SAT,例如最困难的问题是约束数量与变量数量相比大约为4倍。
我们如何能够实现这个问题是可行的?
有很好的(混合)整数编程求解器可以在合理的时间内解决一些(硬)问题。然而,已知通用的整数规划问题是 NP-hard 。这意味着通常在合理的时间内找到解决这些问题的算法的可能性很小。有时我们很幸运,并且整数规划问题有一些我们可以利用的结构来有效地找到解决方案,但正如所说:一般来说这是一个难题。
求解器通常使用分支定界,通过放松来限制变量的域,直到达到稳定的条件。然后求解器为其中一个变量选择一个值(这个变量和首先被大量研究的值,因为它们对找到解决方案有很大的影响)。然后问题进一步放宽,直到证明该值不存在解决方案,或者系统必须分配新值。如果模型被证明对给定的一组指定变量不可满足,则系统回溯:撤消已分配的一些变量并将值重新分配给这些变量并继续搜索。最终会找到一个解决方案(但可能需要很长时间),或者解算器可以证明问题不可满足(没有解决方案)。如果找到解决方案,我们还没有完成:因为我们通常对某些优化函数的最优解决方案感兴趣。在这种情况下,我们添加一个约束,从现在开始,我们寻找比迄今为止建立的解决方案更好的解决方案。我们一直这样做,直到我们用完新的解决方案,在这种情况下,我们已经证明了最佳性。
如果很容易找到正确的解决方案(关于硬约束),但很难获得最佳解决方案,可以使用 metaheuristics 来 近似 最佳解决方案。这里考虑满足硬约束的解决方案的“解决方案空间”。通过构建一些采用有效解决方案并将其转换为另一种解决方案的“变异函数”,可以生成一种算法,通过迭代操作解决方案来搜索最佳解决方案。如果我们用完了时间,我们就会返回迄今为止最好的解决方案。虽然我们从来没有保证我们有最优解决方案,但通常metaheuristics工作得很好,并返回接近最佳解决方案。像 Simulated Annealing 这样的元启发式算法可以对解决方案的质量做出统计保证。
答案 1 :(得分:3)
你可以肯定的一点是,如果问题的线性松弛已经不可行,整数规划问题也是如此。