问题描述
我正在尝试使用Pulp和XPRESS求解器来获得LP问题的影子价格。
使用CBC求解器,.pi命令可以正常工作:
import pulp
my_lp_problem = pulp.LpProblem("My LP Problem",pulp.LpMinimize)
a = pulp.LpVariable("L",lowBound=-10,upBound=10,cat='Continuous')
my_lp_problem += a<= 2
my_lp_problem += a >= -5
my_lp_problem += a
my_lp_problem.solve(pulp.PULP_CBC_CMD())
for name,c in list(my_lp_problem.constraints.items()):
print(c.pi)
给予
0.0
1.0
但是,使用XPRESS:
import pulp
my_lp_problem = pulp.LpProblem("My LP Problem",cat='Continuous')
my_lp_problem += a<= 2
my_lp_problem += a >= -5
my_lp_problem += a
my_lp_problem.solve(pulp.XPRESS())
for name,c in list(my_lp_problem.constraints.items()):
print(c.pi)
给予
None
None
有人知道如何解决这个问题吗?
谢谢!
解决方法
目前,据我所知,PuLP中的XPRESS API并不支持获得影子价格。随时在项目网站https://github.com/coin-or/pulp/issues
中打开问题