Pyomo 以不同方式设置索引变量的范围

Chr*_*n P 3 python modeling pyomo

我正在尝试在 pyomo 中创建一个索引变量,但我想以不同的方式设置各种索引的边界,如下所示:

model.vProduct = Var(SC, N, G, bounds=(0, limit[g])
Run Code Online (Sandbox Code Playgroud)

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

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

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

Bet*_*son 5

您可以将规则(也称为 Python 函数)传递给bounds 关键字来执行此操作

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