【问题标题】:Display dual variable with Pulp用纸浆显示双变量
【发布时间】:2020-08-19 12:19:59
【问题描述】:

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

对于这个例子:

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 打印每个约束的对偶值,我会得到“无”。

有没有办法使用纸浆的默认求解器获得对偶值?

谢谢!

【问题讨论】:

    标签: pulp


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      感谢您的回答。

      但是,如果我使用

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

      我仍然得到“无”。

      PULP_CBC_CMD 对我不可用。

      【讨论】:

      • 您确定PULP_CBC_CMD 不可用吗?这个在纸浆里面,所以你应该可以接触到它。我认为GLPK_CMD(这是您使用别名GLPK 使用的那个)还没有读取双重价格。
      猜你喜欢
      • 1970-01-01
      • 2021-02-08
      • 2020-09-16
      • 2022-01-10
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多