在构造(初始化)之前无法迭代 AbstractOrderedScalarSet

Cannot iterate over AbstractOrderedScalarSet before it has been constructed (initialized)

我刚开始使用 pyomo 和 Python,并尝试创建一个简单的模型,但在添加约束时遇到问题。

我遵循了 GitHub 中的以下示例 https://github.com/brentertainer/pyomo-tutorials/blob/master/introduction/02-lp-pyomo.ipynb

import pandas as pd
import pyomo.environ as pe
import pyomo.opt as po

#DATA
T=3;
CH=2;


time = ['t{0}'.format(t+1) for t in range(T)]
CHP=['CHP{0}'.format(s+1) for s in range(CH)]

#Technical characteristic

heat_maxprod = {'CHP1': 250,'CHP2': 250} #Only for CHPS

#MODEL
seq=pe.ConcreteModel
### SETS
seq.CHP = pe.Set(initialize = CHP) 
seq.T = pe.Set(initialize = time)

### PARAMETERS
seq.heat_maxprod = pe.Param(seq.CHP, initialize = heat_maxprod) #Max heat production

### VARIABLES

seq.q_DA=pe.Var(seq.CHP, seq.T, domain=pe.Reals)

### CONSTRAINTS

##Maximum and Minimum Heat Production

seq.Heat_DA1 = pe.ConstraintList()
for t in seq.T:
    for s in seq.CHP:
        seq.Heat_DA1.add( 0 <= seq.q_DA[s,t])
        
seq.Heat_DA2 = pe.ConstraintList()
for t in seq.T:
    for s in seq.CHP:
        seq.Heat_DA2.add( seq.q_DA[s,t] <= seq.heat_maxprod[s])


### OBJECTIVE 

       
seq.obj=Objective(expr=sum( seq.C_fuel[s]*(seq.rho_heat[s]*seq.q_DA[s,t]) for t in seq.T for s in seq.CHP))
 

当我 运行 程序时出现以下错误:

RuntimeError: 无法迭代 AbstractOrderedScalarSet 'AbstractOrderedScalarSet' 在构造(初始化)之前:'iter' 是抽象组件上的一个属性,直到该组件已使用 AbstractModel.create_instance() 或 AbstractOrderedScalarSet.construct().

完全构建(转换为混凝土组件)

有人可以帮忙解决一个问题吗?谢谢!

P.S。我知道问题的最终答案是零,我只是想让它按照正确的语法工作。

在这行代码中:

seq=pe.ConcreteModel

您缺少括号。所以,我认为你只是为函数创建了一个别名而不是调用它。

尝试:

seq=pe.ConcreteModel()