约束规划与线性规划:解决方案的速度和质量

Constraint Programming vs Linear Programming: Speed and quality of solution

我一直在研究优化算法,遇到了一些找不到答案的问题。

a) CP 比 LP 快吗?与 MILP 相比如何?
b) CP 和 MILP 会提供相同的 objective 函数值吗?
c) 我什么时候应该使用 CP 而不是 MILP? (如果我有混合整数线性问题)

谢谢。

与 CP 和 LP/MILP 一起工作过后,也许我可以就您的疑问提供一些见解。 CP和LP唯一的共同点就是“编程”这个词。

  • 变量类型不同(CP=离散整数values/LP=连续 values/MILP=有些变量是离散的,有些变量是连续的。
  • 处理的约束类型不同(CP涉及非线性,LP是 当然在使用的变量中是线性的。

a) CP 比 LP 快吗?在大多数情况下,我会认为 CP 更慢,因为 CP 中没有明确的算法。它依赖于搜索。然而,CP 模型往往需要较少的变量。只有线性约束,需要更多变量来建模(例如使用大 M 方程)。

b) CP 和 MILP 给出相同的 objective 函数值 - 如果约束都是线性的,并且所有变量都是整数,那么使用 CP 来解决问题就没有意义了,因为它性能会降低。

c) 当问题约束在 CP 方程中得到很好的表达时,我们应该使用 CP,and/or 在线性(大 M)方程中表达不佳,向最优收敛不好或很慢。

检查此 question. Some research work to integrate both approaches result in open source software like CLP(r)