我想分析在编程问题中约束是应该增加还是减少边界:
以下是简化的问题。 V[(i,t)]是决策变量,输入S[i]。我想知道增加S [i]`的单位时obj是增加还是减少。
我知道影子价格和边际成本可能是决定变量而不是输入。在Gurobi中,双重价值(也称为影子价格)可以使用Pi功能。

for t in range(T):
    for i in range(I):
        m.addConstr(V[(i,t)] <= Lambda*S[i])
        m.addConstr(other constrints without S[i])
obj =cf*quicksum(V[(i,0)] for i in range(I))+ cs*quicksum(S[i]for i in range(I))+...
m.setObjective(obj, GRB.MAXIMIZE)
m.optimize()

最佳答案

有两种方法可以获取影子价格:(Python + Gurobi):

shadow_price = model.getAttr('Pi', model.getConstrs())


要么

shadow_price = model.getAttr(GRB.Attr.Pi)


它将所有约束的影子价格依次返回到数组中。

关于python - 如何计算古罗比的影子价格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49126492/

10-15 16:53