差异LP / MIP和CP

时间:2017-08-06 10:43:46

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

约束编程(CP)和线性编程(LP)或混合整数编程(MIP)之间有什么区别?我知道什么是LP和MIP,但不明白与CP的区别 - 或者CP与MIP和LP相同?我对此感到困惑......

2 个答案:

答案 0 :(得分:2)

这个问题的答案取决于您将MIP和CP视为算法,问题还是科学研究领域。

例如,每个MIP问题显然都是一个CP问题,因为MIP问题的定义是找到一组线性约束的(n最优)解,而CP问题的定义是找到一个(n一组(未指定)约束的最佳解决方案。另一方面,许多重要的CP问题可以直接转换为线性约束集,因此从MIP角度看CP问题也很有意义。

从算法上讲,CP算法历来倾向于涉及更多搜索分支和复杂的约束传播,而MIP算法在很大程度上依赖于解决问题的LP松弛。尽管存在混合算法(例如SCIP,其字面意思是“解决约束整数程序”),并且最新的求解器经常从另一侧借用技术(例如,不好的学习和回跳起源于CP,但现在也存在于MIP求解器中。

从科学研究的角度来看,差异纯粹是历史性的:MIP是运筹学的一部分,起源于第二次世界大战末期,是出于优化大型“运维”的需要,而CP则从人工智能领域的逻辑编程,以声明方式建模和解决问题。但是有一个很好的理由,那就是这两个领域都研究相同的问题。请注意,甚至还有一个大型共享会议:CPAIOR

因此,总的来说,我要说的是MIP和CP在大多数方面都是相同的,除了在每种算法的典型算法中使用的主要技术上。

答案 1 :(得分:0)

LP 和 MIP 是使用数学规划解决的,而解决约束规划问题有特定的方法。以下参考资料有助于理解差异: http://ibmdecisionoptimization.github.io/docplex-doc/mp_vs_cp.html