线性化非线性约束(两个连续变量的乘积)

Linearize non-linear constraint (product of two continuous variables)

由于两个连续变量的乘积,我在对约束进行线性化时遇到问题。

假设非线性约束为A = b + x1 x2 : A,x1,x2为非负连续变量

如何线性化此约束?

我试图通过创建两个新的连续变量(y1 和 y2)来重新表述它 其中 y1 = 1/2 (x1 + x2) 和 y2= 1/2 (x1 - x2)。 在这种情况下,约束也变成非线性的。

我该怎么办?

如果 x 和 y 是连续的,则没有精确的线性化方法 w=x*y

  • 重新表述 z1 = 1/2 (x + y)z2 = 1/2 (x - y) 得到 w = z1^2 - z2^2。这确实仍然是非线性的,但是使用分段线性近似时更容易处理。
  • 您可以使用 McCormick 信封 (https://optimization.mccormick.northwestern.edu/index.php/McCormick_envelopes)。但这只是一个近似值。为了获得更高的精度,请将范围分成几部分。
  • 有时(在特殊情况下)对数变换会有所帮助。
  • 一些求解器可以直接处理这个二次表达式。