【发布时间】:2020-07-07 15:01:12
【问题描述】:
我一直在研究优化算法,遇到了一些我找不到答案的问题。
a) CP 比 LP 快吗?它与 MILP 相比如何?
b) CP 和 MILP 会提供相同的目标函数值吗?
c) 我什么时候应该使用 CP 而不是 MILP? (如果我有一个混合整数线性问题)
谢谢。
【问题讨论】:
-
SO 可能不是问这个问题的正确地方(与编程无关;非常广泛;自以为是)。这是一个非常复杂的问题,每个答案都以“取决于”开头,这并不奇怪,因为这两种方法都解决了大多数问题,都是 np-hard。人们可能会争论一些一般性的事情(关于他们的证明系统,他们的本地/全球观点),但如果没有广泛的背景,这只不过是没有太多优点的评论。我建议抓住
Hybrid Optimizationby范亨腾瑞克/米兰。恕我直言,它间接回答了这个问题 -
正如之前的评论者所写,这真的取决于,因此无法回答。特别是,它不仅与要解决的问题和用于解决问题的技术有关,还取决于所使用的公式对特定技术的适用程度。为 MIP 完成的模型在直接移植到 CP 时通常不是很好。我建议研究 MiniZinc 来编写一个高级模型(不是 MIP 样式),它可以自动转换为 CP 和 MIP。
-
CP 通常不是连续 LP 的替代品。许多 CP 和 SAT 求解器仅对离散变量起作用(或工作得最好)。所以如果问题是 100% 离散的,CP 和 MIP 是直接的“竞争对手”(尽管最好的 MIP 公式可能与最好的 CP 公式有很大不同)。如果模型是离散变量和连续变量的组合,根据具体情况,MIP 可能更直接(尽管有时我们会进行离散化以使模型更适合 CP 和 SAT 求解器)。
标签: optimization linear-programming constraint-programming mixed-integer-programming