python - 创建整数递增的变量
问题描述
我想创建一个包含 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:还检查了如何增加变量名/这是一个坏主意以及如何创建可变数量的变量?...遗憾的是没有帮助
解决方案
如果您真的想了解拥有许多 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))
推荐阅读
- php - CS-Cart 中的 Elasticsearch 实现
- batch-file - 如何在BIRT中通过cmd(BIRT运行时引擎)传递输入参数?
- javascript - 转换为字符串 NodeJS Express http 响应在 AngularJS 中返回
- wordpress - WordPress中的电子邮件发送问题
- laravel - 如何在laravel中显示存储为数组的多个图像?
- python - 加快numpy数组分配
- spring - @Cacheable 注解给出 404
- php - 如何从php中的url获取id值
- asp.net - 捕获所有查询参数、模型数据、路由到动作方法以防止 XSS 攻击
- python - 在 DRF+Angular 中下载文件的问题