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

时间:2020-07-07 15:01:12

标签: optimization linear-programming constraint-programming mixed-integer-programming

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

a)CP是否比LP快?与MILP相比又如何?
b)CP和MILP是否可以提供相同的目标函数值?
c)什么时候应该使用CP代替MILP? (如果我有一个混合整数线性问题)

谢谢。

1 个答案:

答案 0 :(得分:1)

曾经与CP和LP / MILP一起工作过,也许我可以对您的查询提供一些见解。 CP和LP唯一的共同点是“编程”。

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

a)CP是否比LP快?在大多数情况下,我会认为CP较慢,因为CP中没有显式算法。它依赖于搜索。但是,CP模型往往需要较少的变量。仅具有线性约束,就需要更多的变量进行建模(例如,使用大型M方程)。

b)CP和MILP给出相同的目标函数值-如果约束条件都是线性的,并且所有变量都是整数,那么使用CP来解决问题就不会很有趣,因为CP的性能较低。 / p>

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

选中此question。整合这两种方法的一些研究工作产生了CLP(r)之类的开源软件。