我想知道在解决问题时是否有办法获得LP(线性程序)的结果。我正在寻找的值不是应该使用每个项目的百分比,而是为每个约束找到的值。我查看了纸浆模块的文档和文档字符串,但没有找到获取这些值的方法。
我查看的网站检查是否有任何方法:
答案 0 :(得分:2)
不确定完全理解您的问题。我假设您要求如何找到纸浆约束的值。
让 prob 成为你的纸浆线性问题 您可以通过两种方式获取约束的值:
# iterate over the variables of the constraint and sum their values
# I'm not considering here the possibility that varValue may be None
for constraint in prob.constraints:
sum = 0
for var, coefficient in prob.constraints[constraint].items():
sum += var.varValue * coefficient
print(prob.constraints[constraint].name, sum)
否则直接使用value属性,但如果约束具有RHS,则必须注意并考虑它,因为约束的值将考虑它。
# getting the value of the constraint
for constraint in prob.constraints:
print(prob.constraints[constraint].name, prob.constraints[constraint].value() - prob.constraints[constraint].constant)
实际上,这就是 LpAffineExpression 中实现value()方法的方法, LpConstraint 的超类:https://github.com/coin-or/pulp/blob/master/src/pulp/pulp.py
def value(self):
s = self.constant
for v,x in self.items():
if v.varValue is None:
return None
s += v.varValue * x
return s