【问题标题】:Setting constraint in Gurobi model with a rolling lower and upper bound在具有滚动下限和上限的 Gurobi 模型中设置约束
【发布时间】:2019-05-23 15:16:17
【问题描述】:

我的 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))

【问题讨论】:

  • 我不是 Gurobi 语法方面的专家,但你不能在 t 的循环中构建约束,为每个 t 指定正确的边界吗?

标签: python constraints gurobi continuous


【解决方案1】:

您可以在创建变量时传递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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-22
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    相关资源
    最近更新 更多