Определение нескольких моделей в Pyomo / AMPL

Я пытаюсь настроить (и решить) несколько проблем оптимизации в Pyomo/AMPL. Для этого мне нужно сначала определить модели для AMPL:

model model_1.mod

model model_2.mod

model model_3.mod

...

model model_n.mod

для Pyomo:

model_1 = ConcreteModel()

model_2 = ConcreteModel()

...

model_n = ConcreteModel()

Мне было интересно, есть ли автоматический способ сделать это, будь то цикл for или некоторая индексация, чтобы при n = 100 мне не нужно было писать 100 model_k = ConcreteModel().


person user2960040    schedule 12.03.2014    source источник


Ответы (2)


Вы можете загружать модели AMPL в цикле, используя commands вместо model:

for {i in 1..n}
  commands('model_' & i & '.mod');

То же самое можно сделать в Pyomo, используя стандартные механизмы Python:

g = globals()
for i in range(n + 1):
  g['model_' + str(i)] = ConcreteModel()
person vitaut    schedule 13.03.2014
comment
Спасибо, это было очень полезно. - person user2960040; 30.03.2014

В Python вы можете просто создать список моделей:

from pyomo.environ import *

models = []
for i in range(100):
  models.append( ConcreteModel() )

Затем к каждой модели можно получить доступ, проиндексировав список: models[19] - 19-я модель.

person Bill Hart    schedule 25.08.2016