在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()
我在想有没有什么自动化的方法可以做到这一点,比如用一个循环,或者一些索引,这样如果 n=100,我就不需要写 100 个 model_k = ConcreteModel()
了。
2 个回答
2
在Python中,你可以很简单地创建一个模型的列表:
from pyomo.environ import *
models = []
for i in range(100):
models.append( ConcreteModel() )
然后,你可以通过列表的索引来访问每个模型:比如 models[19]
就是第19个模型。
1
你可以通过使用 commands
来循环加载 AMPL 模型,而不是使用 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()