我正在尝试线性化我在纸浆中的乘法约束。
它看起来像这样:
prob += (1 - Y) * (3 - X)
这等于:
prob += 3 - 3*Y - X + X*Y
其中 Y 是二元变量,在公式中,除了以下部分之外,所有内容都是线性的:Y*X
。我试图通过使用我在另一个问题中找到的公式来解决这个问题:
所以我尝试使用X1*X2 = Y
,使用我的代码,这给出了X*Y = A
。我使用了日志替换方法。这给了我以下代码:
prob += math.log(float(A)) = math.log(float(X)) + math.log(float(y))
另一个约束:
prob += 3 - 3*Y - X + A
只是这似乎不起作用,因为浮点数只能是字符串或数字,而不是LpVariable
. 有没有办法使用公式图像中给出的第一种替换方法来解决这个问题?