解决无变量的Python Pulp

问题描述

我有一个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}}中varValueNone,而您根本不希望包含它。我会提交错误报告,要求他们从LpAffineExpression.value()中排除虚拟变量-因为pulp.value(model.objective)model.objective.value()的快捷方式。

现在,我将使用following workaroundmodel.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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...