Классический способ создания ограничения или списка ограничений в Pyomo - использовать правило
E.g.
def ConSatisfyDemand(model,p):
return sum(model.OutQty[pl,r] for (pl,r) in model.OutputTypeIndex if pl==p) == DemandQty[p]
Однако, если DemandQty - это внешние данные, например Для серии Pandas его необходимо каким-то образом передать функции или объявить как глобальную, чтобы она попала в область видимости. Кажется, нет удобного способа сделать первое согласно Почему поведение Pyomo меняется при передаче параметров в функцию ограничения?
Глобальное объявление допустимо в сценарии, но нецелесообразно в производственном приложении.
Альтернативой является загрузка данных DemandQty в качестве параметра модели, чтобы иметь к ней доступ. Но это может не масштабировать производительность, и может быть неудобно поддерживать вторую копию данных только для Pyomo. Есть ли способ получить доступ к этим «внешним данным» в функции правила ограничения?