用递增的整数创建变量

creating variables with increasing integers

我想创建一个包含 1000 个基本 pyomo 变量的 pyomo 模型。 我知道像下面的脚本那样做是个坏主意。 而且它也不起作用。我希望你理解这个想法并能够帮助我。

import pyomo.core as pyomo

def create_model_a():
    m = pyomo.ConcreteModel()

    for i in range(1000):
        m.var_i = pyomo.Var(within=pyomo.NonNegativeReals)

    return m

所以基本上我没有将 m.var_0 = ... 写到 m.var_999 = ...,而是使用了一个 for 循环,当然这样它不起作用,但我的想法是创建 1000 个变量而无需硬编码 m.var_0m.var_1m.var_2,依此类推直到 m.var_999我该怎么做?

我想创建这个不是为了建模任何东西,而是想在此函数上使用内存配置文件来了解具有 1000 个变量的 pyomo 模型需要多少内存。

Ps:我尝试了以下但它不起作用(当我投射 m.pprint() 时看不到任何声明):

def create_model_a():
    m = pyomo.ConcreteModel()
    m.var = {}
    for i in range(1000):
        m.var[i] = pyomo.Var(within=pyomo.NonNegativeReals)

    return m

PS2:也检查了 How to increment variable names/Is this a bad idea and How do I create a variable number of variables? ...遗憾的是没有帮助

如果你真的想了解有很多 Pyomo 变量的内存影响,你应该比较有很多单例变量的情况和有一个大索引变量的情况。两者的示例如下:

# Make a large indexed variable
m = ConcreteModel()
m.s = RangeSet(1000)
m.v = Var(m.s, within=NonNegativeReals)

# Make many singleton variables
m = ConcreteModel()
for i in range(1000):
    name = 'var_' + str(i)
    m.add_component(name, Var(within=NonNegativeReals))