'SumExpression' 对象不可迭代

'SumExpression' object is not iterable

我正在尝试 pyomo 中的优化问题...我得到 'SumExpression' object is not iterable error at line(model.nt[j] = model.ntm1[j] + ....)... 如下代码所示 R_2_j(), R_1_j() 函数输出取决于决策变量...如果我将 model.nt 作为它显示的参数,因为涉及的决策变量 t 不是我的真实域,所以我现在做了 model.nt 一个集合 而且我也不能这样做“"model.ntm1[j] + model.q[j]*R_2_j(model, j, -1)"”喜欢乘法和添加函数和模型......如果是这样我应该怎么做......而且因为model.nt涉及决策变量我应该保留model.nt 一个集合或一个参数或一个变量

model.q = Param(model.l,
                 initialize={2: 0.235,
                             4: 0.235,
                             6: 0.235,
                             8: 0.235},
                 doc='q')
model.nt = Set(model.l)
model.ntm1 = Param(model.l,
                 initialize={2: 0,
                             4: 0,
                             6: 0,
                             8: 0},
                 doc='queuesmm1')
for j in model.l:
  model.nt[j] =  model.ntm1[j] + model.q[j]*R_2_j(model, j, -1) + model.q[j]*(R_1_j(model,j, 0) + G_e_j(model,j, 0)) - model.s[j]*G_e_j(model,j, 0)

  1. 如果我明白你在做什么,你是在尝试使一个集合 (nt) 取决于通过 R_2_j 的某些变量的值。 这不是一个有效的公式,所有集合和参数值必须独立于变量(但可以依赖于其他参数!)。

  2. 我认为在某些情况下您会尝试使用隐式产品,例如model.q[j]R_2_j(model, j, -1)。 如果您要获取的是产品,则需要明确写明:

    model.q[j] * R_2_j(model, j, -1)
    

    (注意 *

    同一行至少还有一个案例。