0
我正在线性化我在纸浆中的乘法约束。约束条件下的乘法 - 求解纸浆(python)
它看起来是这样的:
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。有没有办法使用公式图像中给出的第一种取代方法来解决这个问题?
谢谢,但是当我这样做时,它说:'float()参数必须是字符串或数字,而不是'NoneType',如果我删除了float '需要浮动'。我不认为记录LpVariable是可能的。 – WhatTheShrimp
挖掘到模块的源代码,获取值是一个不同的呼叫抱歉。从他们的代码在这里 - https://github.com/coin-or/pulp/blob/master/src/pulp/pulp.py - 在LpVariable类中: def value(self): return self.varValue 所以得到一个变量的值是x.value()而不是值(x),它应该给你你的值,假设该变量有一个赋值给它的值。您将需要保留float()部分,但内部没有将值分配给LpVariable类中的浮点类型。 – huma474