0

我在非线性问题中有几个约束。

例如:

In   m(x+y-n)^2
If    x+y-n>=0 Then m=0, 
Else  m=1.

如何将此条件约束写为线性或非线性约束?

4

2 回答 2

0

好吧,您可以将其写为[min(x+y-n,0)]^2. 不确定这是否对您有任何好处(这是不可微分的,因此对于许多求解器来说很困难)。min()我们可以使用额外的二进制变量使表达式线性化:

z <= x+y-n
z <= 0
z >= x+y-n - b * M
z >= 0 - (1-b) * M
b in {0,1}

M足够大的常数。在许多情况下,可以应用更好的重新表述,但这取决于模型的其余部分。

于 2016-08-10T09:47:53.817 回答
0

如果您使用约束规划求解器,例如Choco Solver,那么您可以直接使用 IfThenElse 约束以及其他非线性约束,例如正方形。

于 2016-08-10T10:13:26.123 回答