Pyomo 以不同方式设置索引变量的界限

Pyomo Setting bounds of indexed variables differently

我正在尝试在 pyomo 中创建一个索引变量,但我想像这样以不同方式设置各种索引的范围:

model.vProduct = Var(SC, N, G, bounds=(0, limit[g])

其中 SC、N 和 G 是范围,因此它有 3 个索引。 (这是行不通的,因为像这样我为每个变量分配了一个上限向量)

现在我希望它像 model.vProduct[SC, N, 0] bounds are (0, limit[0])

有人知道如何解决这个问题吗?

您可以将规则(a.k.a。Python 函数)传递给 bounds 关键字来执行此操作

def _bounds_rule(m, sc, n, g):
    return (0, limit[g])
model.vProduct = Var(SC, N, G, bounds=_bounds_rule)