pyomo - 如何在 pyomo 中添加到集合
问题描述
我正在尝试运行此代码(代码的一些重要部分在这里):
Master = AbstractModel()
Master.intIndices = Set(initialize=INTVARS)
Master.constraintSet = Set(initialize=CONS)
Master.conIndices = Set(initialize=CONVARS)
Master.intPartList = Set()
Master.dualVarSet = Master.constraintSet * Master.intPartList
Master.theta = Var(domain=Reals, bounds = (None, None))
Master.intVars = Var(Master.intIndices, domain=NonNegativeIntegers, bounds=(0, 10))
Master.dualVars = Var(Master.dualVarSet, domain=Reals, bounds = (None, None))
max_iters = 1000
opt = SolverFactory("couenne")
for i in range(max_iters):
Master.intPartList.add(i)
但它在最后一行向我显示了这个错误:
RuntimeError: Cannot access add on AbstractOrderedSimpleSet 'intPartList' before it has been constructed (initialized).
有人可以帮助我吗?
解决方案
您没有Master.intPartList
使用任何数据进行初始化,因此您不能那样更新它。但是,如果您将模型设为具体模型,并为您的集合提供初始化,您可以...
In [11]: from pyomo.environ import *
In [12]: m2 = ConcreteModel()
In [13]: m2.X = Set(initialize=[1,])
In [14]: m2.X.add(2)
Out[14]: 1
In [15]: m2.X.pprint()
X : Size=1, Index=None, Ordered=Insertion
Key : Dimen : Domain : Size : Members
None : 1 : Any : 2 : {1, 2}
In [16]:
推荐阅读
- javascript - highcharts typeerror 这不是一个函数
- spring-boot - 用于测试的 Spring Security Oauth2 H2 - 未找到表“OAUTH_ACCESS_TOKEN”
- java - Leetcode 351 Android 解锁模式
- javascript - 循环中的同步 AJAX 请求得到相同的响应
- excel - .copyfromrecordset 没有响应
- php - 我想知道我的产品表中的产品总数,但它显示错误,正确的语法是什么
- html - 雷鸟 - 从苹果邮件到雷鸟的电子邮件签名是一行
- r - 关于过热包中的ggsave
- bootstrap-4 - 带有下拉菜单的药丸 - 使下拉菜单处于活动状态
- javascript - 在 Reactjs (material-ui) 中交换两个 TextField 的值