Pyomo Установка границ индексированных переменных по-разному

Я пытаюсь создать индексированную переменную в 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]) и т. д.

Кто-нибудь знает, как решить эту проблему?


person Christian P    schedule 31.05.2018    source источник


Ответы (1)


Вы можете передать правило (также известное как функция Python) ключевому слову bounds, чтобы сделать это.

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