Optimization CPLEX中整数与二进制约束的复杂性

Optimization CPLEX中整数与二进制约束的复杂性,optimization,linear-programming,cplex,mixed-integer-programming,Optimization,Linear Programming,Cplex,Mixed Integer Programming,最近,我一直在尝试学习一些关于CPLEX的知识,希望有人能帮助我理解解决整数和二进制约束时的复杂性 例如,假设我们试图为最大效用分配一个10人左右的馅饼,每个人的效用与他们收到的馅饼数量成线性关系。然而,我们想引入一个约束,即至少有3个人必须得到一点馅饼 将其视为单个整数约束(人数为3人)与10个二进制变量(人数为1人+人数为2人+人数为10人)之间有什么区别?我想前者是最简单的,但不知道用二进制变量来构造问题是否有好处 除此之外,任何为更好地理解MIP和CPLEX而推荐的阅读材料都将受到极大的

最近,我一直在尝试学习一些关于CPLEX的知识,希望有人能帮助我理解解决整数和二进制约束时的复杂性

例如,假设我们试图为最大效用分配一个10人左右的馅饼,每个人的效用与他们收到的馅饼数量成线性关系。然而,我们想引入一个约束,即至少有3个人必须得到一点馅饼

将其视为单个整数约束(人数为3人)与10个二进制变量(人数为1人+人数为2人+人数为10人)之间有什么区别?我想前者是最简单的,但不知道用二进制变量来构造问题是否有好处

除此之外,任何为更好地理解MIP和CPLEX而推荐的阅读材料都将受到极大的赞赏,尤其是在更好地理解问题在哪里变成NP或在什么情况下单纯形难以找到全局极小值时


谢谢

这取决于具体情况,但在您的案例中,我将使用1个决策变量,而不是10个

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

我推荐一个关于认知课程的MOOC:


以及OPL语言手册:

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


一旦添加完整性或SOS约束,问题就会变成NP难问题。亚历克斯·施里杰(Alex Schrijver)的《整数和线性规划理论》是MIP的一本好书。这应该涵盖深入理解事物所需的所有主题。

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