Optimization 约束规划与线性规划:解的速度和质量

Optimization 约束规划与线性规划:解的速度和质量,optimization,linear-programming,constraint-programming,mixed-integer-programming,Optimization,Linear Programming,Constraint Programming,Mixed Integer Programming,我一直在研究优化算法,我遇到了一些我找不到答案的问题 a) CP比LP快吗?它与牛奶相比怎么样? b) CP和MILP将提供相同的目标函数值? c) 我什么时候应该使用CP来代替MILP?(如果我有一个混合整数线性问题) 谢谢。与CP和LP/MILP合作后,也许我可以就您的问题提供一些见解。CP和LP唯一的共同点是“编程”一词 变量类型不同(CP=离散整数值/LP=连续 值/MILP=一些是离散的,而其他变量是连续的) 处理的约束类型不同(CP涉及非线性,LP为 当然,使用的变量是线性的)

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

a) CP比LP快吗?它与牛奶相比怎么样?
b) CP和MILP将提供相同的目标函数值?
c) 我什么时候应该使用CP来代替MILP?(如果我有一个混合整数线性问题)


谢谢。

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

  • 变量类型不同(CP=离散整数值/LP=连续 值/MILP=一些是离散的,而其他变量是连续的)
  • 处理的约束类型不同(CP涉及非线性,LP为 当然,使用的变量是线性的)
a) CP比LP快吗?在大多数情况下,我认为CP是较慢的,因为在CP.中没有明确的算法,它依赖于搜索。然而,CP模型往往需要较少的变量。只有线性约束时,需要更多的变量来建模(例如,使用大型M方程)

b) CP和MILP给出相同的目标函数值-如果约束都是线性的,并且所有变量都是整数,那么使用CP来解决问题就没有什么意思了,因为它的性能较差

c) 当问题约束在CP方程中得到很好的表达,和/或在线性(大M)方程中表达得很差时,我们应该使用CP,而线性(大M)方程的收敛性很差或很慢


看看这个。将这两种方法结合起来的一些研究工作产生了开放源代码软件,如。

因此,可能不是提出这一问题的合适地方(不完全是关于编程;非常广泛;非常固执己见)。这是一个非常复杂的问题,每个答案都以“视情况而定”开头,这并不奇怪,因为两种方法都能解决大多数问题,这是np难的。有一些一般性的事情可以争论(关于他们的证明系统,他们的局部/全局观点),但如果没有广泛的背景,这只不过是一个没有太多欢乐的评论。我建议抓住van Hentenryck/Milano的
混合优化
。正如前面的评论者所写,它间接地回答了这个问题,这要看情况而定,因此不可能回答。特别是,这不仅关系到要解决的问题和解决问题所使用的技术,还取决于所使用的公式对特定技术的效果如何。当直接移植到CP时,为MIP所做的模型通常不是很好。我建议使用Minizing编写高级模型(不是MIP样式),该模型可以自动转换为CP,并且MIP.CP通常不是连续LPs的替代方案。许多CP和SAT解算器仅对离散变量有效(或效果最佳)。因此,如果问题是100%离散的,CP和MIP是直接的“竞争对手”(尽管最好的MIP配方可能与最好的CP配方非常不同)。如果模型是离散变量和连续变量的组合,根据情况,MIP可能更简单(尽管有时我们会离散,使模型更适合CP和SAT解算器)。