在Pyomo/AMPL中定义多个模型

1 投票
2 回答
902 浏览
提问于 2025-04-17 21:56

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

撰写回答