Мне было интересно, есть ли способ создать переменную, которая присоединяется к модели, без указания ее имени. Или как мне динамически создавать переменные с разными именами в pyomo?
Предыстория: в настоящее время у меня есть конкретная модель для основной проблемы и еще одна конкретная модель для подзадачи. Моя цель - решить двухэтапную задачу оптимизации с использованием алгоритма генерации столбцов и ограничений в рамках этой основной и подзадач.
Я пытаюсь сузить цикл while, чтобы добавить новые переменные и ограничения к основной задаче. В частности, я пытаюсь создать новую переменную для каждой итерации цикла while. Затем я хотел бы добавить к основной задаче несколько новых ограничений / сокращений, которые включают новую переменную на каждой итерации.
Для этого я пытался построить словарь, используя цикл for. В словаре каждый ключ соответствует вновь созданной переменной. Я написал примерно так:
for i in I:
xname= 'x' + str(i)
new_x[xname] = model.add_component(xname, pyo.Var())
где I - набор счетчиков итераций, используемых для создания новых переменных и присвоения их ключу словаря.
Однако это не работает, потому что model.add_component (xname, pyo.Var ()) не может быть назначен ключу, поскольку это процедура, которая добавляет новую переменную непосредственно в модель. Однако я не могу использовать стандартный синтаксис model.x = pyo.Var () для создания новых переменных либо потому, что это означает, что я должен делать это вручную, что противоречит цели цикла while.
Мне было интересно, есть ли способ создать переменную, которая присоединяется к модели, без указания ее имени. Или как мне динамически создавать разные переменные в pyomo?
Спасибо!