用纸浆显示双变量

时间:2020-08-19 12:19:59

标签: pulp

我尝试使用带有默认求解器的纸浆来显示对偶变量,但是对于对偶值,我总是获得“无”。

对于此示例:

from pulp import *
prob = LpProblem("test080", LpMinimize)
x = LpVariable("x", 0, 5)
y = LpVariable("y", -1, 1)
z = LpVariable("z", 0)
c1 = x+y <= 5
c2 = x+z >= 10
c3 = -y+z == 7

prob += x + 4*y + 9*z, "obj"
prob += c1, "c1"
prob += c2,"c2"
prob += c3,"c3"

prob.solve()

如果我使用.pi打印每个约束的对数值,则会获得“无”。

有没有一种方法可以使用默认的纸浆求解器来获取对数值?

谢谢!

2 个答案:

答案 0 :(得分:0)

为了从默认求解器(CBC)获取LP信息,您必须明确告诉求解器问题是LP:

prob.solve(PULP_CBC_CMD(mip=False))
print(c3.pi)
# 8.0

答案 1 :(得分:0)

谢谢您的回答。

但是,如果我使用

prob.solve(GLPK(mip=False))
print(c3.pi)

我仍然获得“无”。

PULP_CBC_CMD对我不可用。