【发布时间】:2015-05-21 04:23:30
【问题描述】:
如果总和是偶数,我想在优化函数中关联一个固定的成本。也就是说,如果
(x1 + x2 + x3)%2 = 0
有没有办法可以在 CPLEX 中对此进行建模?所有的变量都是二进制的,所以真的,我只想表达x1 + x2 + x3 = 0 OR x1 + x2 + x3 = 2
【问题讨论】:
如果总和是偶数,我想在优化函数中关联一个固定的成本。也就是说,如果
(x1 + x2 + x3)%2 = 0
有没有办法可以在 CPLEX 中对此进行建模?所有的变量都是二进制的,所以真的,我只想表达x1 + x2 + x3 = 0 OR x1 + x2 + x3 = 2
【问题讨论】:
是的,您可以通过引入一个新的二进制变量来做到这一点。 (请注意,我们正在修改基础公式,而不是修改 CPLEX 本身的模数。)
你的约束是
x1 + x2 + x3 = 0 OR 2
让我们引入一个新的二进制变量Y并重写约束。
组合约束:x1 + x2 + x3 = 0(1-Y) + 2Y
这是因为如果 Y 为 0,则选择其中一个选项,如果 Y=1,则选择另一个选项。
简化时:
x1+x2+x3-2Y = 0
x_i, Y binary
在您的特定情况下,约束得到了简化,因为其中一个 rhs 项是 0。相反,更一般地说,如果您将 b1 或 b2 作为两个 rhs选择,
约束将变为
x1 + x2 + x3 = b1(Y) + b2(1-Y).
如果您的约束 (不等式,您将使用 Big-M 技巧,然后引入一个新的二元变量,从而使模型选择其中一个约束。
希望对您有所帮助。
【讨论】: