在Gurobi中,可以使用getAttr()
方法获取变量的阴影价格。阴影价格表示目标函数值对变量的单位变化的敏感度。
下面是一个使用Gurobi的Python API的代码示例:
import gurobipy as gp
# 创建模型
model = gp.Model()
# 添加变量
x = model.addVar(vtype=gp.GRB.CONTINUOUS, lb=0, ub=10, name="x")
y = model.addVar(vtype=gp.GRB.CONTINUOUS, lb=0, ub=10, name="y")
# 添加约束
model.addConstr(x + y <= 10, name="c1")
# 设置目标函数
model.setObjective(x + y, sense=gp.GRB.MAXIMIZE)
# 求解模型
model.optimize()
# 获取变量的阴影价格
shadow_price_x = model.getAttr(gp.GRB.Attr.Pi, x)
shadow_price_y = model.getAttr(gp.GRB.Attr.Pi, y)
print("Shadow Price for variable x:", shadow_price_x)
print("Shadow Price for variable y:", shadow_price_y)
在上述代码中,首先创建了一个模型,并添加了两个变量x
和y
,以及一个约束x + y <= 10
。然后设置了目标函数为x + y
,并调用optimize()
方法求解模型。最后使用getAttr()
方法获取变量x
和y
的阴影价格,并打印输出。
需要注意的是,获取阴影价格前需要先求解模型。阴影价格是基于最优解计算的,因此需要确保模型已经被求解。