简体   繁体   中英

Defining multiple models in Pyomo/AMPL

I am trying to set up (and solve) multiple optimizations problems in Pyomo/AMPL . For this I need to define the models first, for AMPL :

model model_1.mod

model model_2.mod

model model_3.mod

...

model model_n.mod

for Pyomo :

model_1 = ConcreteModel()

model_2 = ConcreteModel()

...

model_n = ConcreteModel()

I was wondering if there is an automatic way to do this, whether with a for loop, or some indexing so that if n=100 I don't have to write 100 model_k = ConcreteModel() .

In Python, you can simply create a list of models:

from pyomo.environ import *

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

Then, each model can be accessed by indexing the list: models[19] is the 19th model.

You can load AMPL models in a loop using commands instead of model :

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

Similar thing can be done in Pyomo using standard Python's mechanisms :

g = globals()
for i in range(n + 1):
  g['model_' + str(i)] = ConcreteModel()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM