【问题标题】:Complexity of Integer vs. Binary Constraints in CPLEXCPLEX 中整数约束与二进制约束的复杂性
【发布时间】:2019-06-30 18:43:48
【问题描述】:

最近,我一直在尝试了解一些关于 CPLEX 的知识,并希望有人可以帮助我理解解决整数与二进制约束时的复杂性。

例如,假设我们试图分配一个大约 10 人的馅饼以获得最大效用,其中每个人的效用与他们收到的馅饼数量成线性关系。但是,我们要引入至少 3 人必须得到一点馅饼的约束。

将其视为单个整数约束(number_of_people_with_pie >= 3)与 10 个二进制变量(person_1_has_pie + person_2_has_pie + ... person_10_has_pie >= 3)之间有什么区别?我想前者是最简单的,但想知道用二进制变量形成问题是否有任何好处?

除此之外,任何推荐阅读以更好地理解 MIP 和 CPLEX 将不胜感激,特别是在更好地理解问题在哪里变成 NP 或在什么情况下单纯形难以找到全局最小值时。

谢谢!

【问题讨论】:

  • 在大多数情况下,最好选择使模型最简单的表示。复杂性并不是其中的一个重要因素。

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


【解决方案1】:

我同意 Alex 和 Erwin 的评论,即这实际上取决于您要建模的内容。对于这个特定的模型,我不同意 Alex:对我来说,每个人使用一个决策变量更有意义,否则可能很难弄清楚哪个人得到了多少。

只要添加完整性或 SOS 约束,问题就会变成 NP 难题。一般来说,MIP 的一个很好的读物是 Alex Schrijver 的“整数和线性规划理论”。这应该涵盖您深入了解事物所需的所有主题。

【讨论】:

    【解决方案2】:

    这真的取决于具体情况,但在你的情况下,我会使用 1 个决策变量而不是 10 个。

    有时,这并不明显,尝试和衡量可以证明自己是对还是错。这就是使用高级建模语言可以提供帮助的原因之一。 (OPL等抽象建模语言)

    我推荐一个关于认知课的 MOOC:https://cognitiveclass.ai/courses/mathematical-optimization-for-business-problems/

    和 OPL 语言手册:https://www.ibm.com/support/knowledgecenter/SSSA5P_12.7.0/ilog.odms.studio.help/pdf/opl_languser.pdf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多