由于两个连续变量的乘积,我有一个线性化约束的问题。
设非线性约束为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
。这确实仍然是非线性的,但使用分段线性近似时更容易处理。- 您可以使用麦考密克信封(https://optimization.mccormick.northwestern.edu/index.php/McCormick_envelopes)。但这只是一个近似值。为了获得更高的精度,将范围分成几段。
- 有时(在特殊情况下)对数变换可以帮助。
- 一些求解器可以直接处理这个二次表达式。