如何找出LP在解决时发现的价值?

时间:2018-04-11 19:32:26

标签: python python-3.x pulp

我想知道在解决问题时是否有办法获得LP(线性程序)的结果。我正在寻找的值不是应该使用每个项目的百分比,而是为每个约束找到的值。我查看了纸浆模块的文档和文档字符串,但没有找到获取这些值的方法。

我查看的网站检查是否有任何方法:

https://pythonhosted.org/PuLP/pulp.html

1 个答案:

答案 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