Можем ли мы добавить переменную модели в качестве верхней границы для другой переменной в Pyomo?

#python #variables #pyomo

#python #переменные #pyomo

Вопрос:

Я пытаюсь сделать это в pyomo Concretemodel(), но я получаю и ошибка:

  model.Smax = Var( within=PositiveIntegers )
 model.Z = Var(model.T, bounds=(0, model.Smax))


 ValueError: Non-fixed input of type '<class 'pyomo.core.base.var.SimpleVar'>' supplied as variable 
 upper 
 bound - legal types are fixed expressions or variables.parameters
  

Как я могу изменить код, чтобы иметь эту верхнюю границу? Или вместо этого я должен использовать ограничение на максимальное значение для Z [t]?

Спасибо

Комментарии:

1. Было бы целесообразно установить его как ограничение, а не как ограничение.

Ответ №1:

Для верхнего или нижнего предела вы можете установить его следующим образом:

 model.P_min = Param(model.J)
model.P_max = Param(model.J)

def Pbounds(model, j):
    return (model.P_min[j], model.P_max[j])
model.P = Var(model.J, bounds=Pbounds, domain=NonNegativeReals)