如何为古罗比添加条件

时间:2019-07-06 07:31:34

标签: python gurobi

我有变量,其值在一天中的每一小时都会变化(24个值):

plants = ['Plant1', 'Plant2']
users = ['user1', 'user2']
time_steps = range(0,24)

p_gen = model.addVars(plants, time_steps, name="pow_gen")

tot_consume = model.addVars(users, time_steps, name="total_demand")

p_grid = model.addVars(time_steps, lb = -GRB.INFINITY, name="exch_pow")

我想实现这样的东西:

If ((quicksum(p_gen[t] for pp in plants) - quicksum(tot_d[u,t] for u in users) )>= p_grid[t] for t in time_steps)

model.addConstrs(A)
model.addConstrs(B)

else:

model.addConstrs(C)

我的问题是Gurobi无法理解取决于时间的变量。我要实现条件,因此取决于程序的条件,您是否需要不同的addConstr。

如何在Gurobi中实现这种条件?

1 个答案:

答案 0 :(得分:0)

线性编程不能像这样工作。

您有约束条件,并且您的模型必须必须实现它们,否则您的模型将不可行。

您不能基于约束条件放置约束,如果您可以基于布尔条件(例如设置,值...)放置约束,或者可以放置boolean constraints.

但是,您可以同时拥有两个模型,并且在if / else分支之前 具有相同的变量和约束。

您可以解析第一个模型,使用x属性获得所需的值(只需调用variable.x即可获得其值),然后使用该值可以选择将哪些约束添加到第二个模型中,然后解决它。