1

我正在尝试在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()

4

2 回答 2

2

在 Python 中,您可以简单地创建一个模型列表:

from pyomo.environ import *

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

然后,可以通过索引列表来访问每个模型: models[19]是第 19 个模型。

于 2016-08-25T13:29:31.187 回答
0

您可以使用commands而不是循环加载 AMPL 模型model

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

使用标准 Python 的机制可以在 Pyomo 中完成类似的事情:

g = globals()
for i in range(n + 1):
  g['model_' + str(i)] = ConcreteModel()
于 2014-03-13T14:25:26.713 回答