在上下滚动的Gurobi模型中设置约束

时间:2019-05-23 15:16:18

标签: python constraints linear gurobi continuous

我的gurobi模型模拟了电池的功能。但是,我想知道是否可以为半连续变量设置滚动的上下限。以下示例显示了(恒定)上限和下限,我希望每个间隔取一个不同的值。 T是间隔的总数。

P_bat_discharge = m.addVars(T, vtype = gp.GRB.SEMICONT, name="P_bat_discharge", lb = x, ub = y)

我想知道是否可以指定要模拟的每个区间的上下限,在任何地方都找不到,但是也许你们中的任何人都知道一个聪明的窍门。

类似的东西:

P_bat_discharge = m.addVars(T, vtype = gp.GRB.SEMICONT, name="P_bat_discharge", lb = x[t] for t in range (T), ub = y[t] for t in range (T))

1 个答案:

答案 0 :(得分:0)

创建变量后,可以传递lbub属性的值列表。这是一个简单的示例,试图捕获您想要实现的目标:

import gurobipy as gp
T = 3
lbdata = [1,2,3]
ubdata = [4,5,6]

m = gp.Model()
m.addVars(3, vtype=gp.GRB.SEMICONT, lb=lbdata[0:T], ub=ubdata[0:T])
m.write('a.lp')

在我的机器上,这会生成LP

Minimize
  0 C0 + 0 C1 + 0 C2
Subject To
Bounds
 1 <= C0 <= 4
 2 <= C1 <= 5
 3 <= C2 <= 6
Semi-continuous
 C0 C1 C2
End