问题描述
我有一个Python纸浆线性程序,可将成本降至最低。在无法降低成本的退化情况下,我希望它退还固定成本。但是,在没有变量的情况下,纸浆似乎会添加__dummy变量,其值为None。我在下面添加了一个最小的工作示例。
from pulp import *
model = LpProblem("Degenerate_Model",LpMinimize)
fixed_cost = 10
model += fixed_cost
print(model) #Prints MINIMIZE 10
model.solve()
print(model.objective) #prints 0*__dummy + 10
print(value(model.objective)) #returns None. Desired output is 10
在上面的示例中,我想要的输出将是返回10。非常感谢您的帮助
解决方法
您绝对正确。 This happens是因为__dummy
的{{1}}中varValue
是None
,而您根本不希望包含它。我会提交错误报告,要求他们从LpAffineExpression.value()
中排除虚拟变量-因为pulp.value(model.objective)
是model.objective.value()
的快捷方式。
现在,我将使用following workaround:model.objective.valueOrDefault()
。
您可以将固定成本声明为具有固定值的变量。
>>> model = LpProblem("Degenerate_Model",LpMinimize)
>>> fixed_cost = LpVariable('fixed cost',lowBound=10,upBound=10)
>>> model += fixed_cost
>>> model.solve()
>>> print(value(model.objective))
10.0