You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyomo带字符串索引参数定义及PI/PJ除法运算报错求助

Pyomo带索引参数除法运算报错解决方案

错误原因

  • 集合初始化逻辑错误:原有代码误将集合长度作为初始化值,没有传入实际的字符串元素,导致集合与后续参数的索引维度不匹配
  • 参数初始化格式错误:传入参数字典时额外嵌套了列表,导致Pyomo无法正确读取键值对
  • 表达式定义不符合Pyomo语法:在expr参数内写入生成器表达式,且未给带索引的参数PI、PJ指定对应维度的索引,同时表达式括号逻辑有误,减1操作本该在指数运算的结果后执行,原有写法将其放到了整个乘法项外

修正后完整代码

from pyomo.environ import ConcreteModel, Set, Param, Expression

HN_model = ConcreteModel()

# 修正集合初始化:直接传入实际元素
i = ['U4241', 'U241', 'U241A']
HN_model.i = Set(initialize=i)
j = ['U4283', 'U283', 'U283A', 'U3283', 'U2280', 'U1280']
HN_model.j = Set(initialize=j)
k = ['PSA4241', 'PSA241', 'PSA241A', 'PSA3241']
HN_model.k = Set(initialize=k)
s = [1]
HN_model.s = Set(initialize=s) # 直接传入s列表,和后续参数的s=1匹配

HN_model.ij = Set(within=HN_model.i*HN_model.j, initialize = [(i,j) for i in HN_model.i for j in HN_model.j])

# 固定参数定义无问题
HN_model.T = Param(initialize=300.00)
HN_model.Cp_hidrogenio = Param(initialize=29.00)
HN_model.Cp_metano = Param(initialize=50.00)
HN_model.Cp_medio = Param(initialize=35.00)
HN_model.ef = Param(initialize=0.6)
HN_model.T0 = Param(initialize=288.7)
HN_model.P0 = Param(initialize=1.00)
HN_model.R = Param(initialize=8.314)
HN_model.PPi = Param(initialize=5.5)
HN_model.gama = Expression(expr=HN_model.Cp_medio/(HN_model.Cp_medio - HN_model.R))

# 修正参数初始化:直接传入字典,不要嵌套列表
PJ = {}
PJ['U4283',1] = 137
PJ['U283',1] = 88.5
PJ['U283A',1] = 88.5
PJ['U3283',1] = 30
PJ['U2280',1] = 30
PJ['U1280',1] = 30
HN_model.PJ = Param(HN_model.j, HN_model.s, initialize=PJ)

PI = {}
PI['U4241',1] = 21.3
PI['U241',1] = 21.1
PI['U241A',1] = 21.1
HN_model.PI = Param(HN_model.i, HN_model.s, initialize=PI)

# 修正表达式定义:用rule函数按索引生成对应表达式,修正括号逻辑
def u_power_rule(model, i, j, s):
    return (model.T/model.ef) * model.Cp_medio * ( (model.PJ[j,s]/model.PI[i,s])**((model.gama-1)/model.gama) - 1 ) * (model.T/model.T0) * (model.P0/model.PPi)
HN_model.u_power = Expression(HN_model.ij, HN_model.s, rule=u_power_rule)

内容的提问来源于stack exchange,提问作者Patricia Rodrigues da Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:39:00