用递增的整数创建变量
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_0
、m.var_1
、m.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))
我想创建一个包含 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_0
、m.var_1
、m.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))