我想分析边界是否应该在编程问题的约束中增加或减少:
以下是简化问题。 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()
答案 0 :(得分:1)
有两种方法可以获取影子价格:(Python + Gurobi):
shadow_price = model.getAttr('Pi', model.getConstrs())
或
shadow_price = model.getAttr(GRB.Attr.Pi)
它将所有约束的影子价格依次返回到数组中。