'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)
如果我明白你在做什么,你是在尝试使一个集合 (nt
) 取决于通过 R_2_j
的某些变量的值。
这不是一个有效的公式,所有集合和参数值必须独立于变量(但可以依赖于其他参数!)。
我认为在某些情况下您会尝试使用隐式产品,例如model.q[j]R_2_j(model, j, -1)
。
如果您要获取的是产品,则需要明确写明:
model.q[j] * R_2_j(model, j, -1)
(注意 *
)
同一行至少还有一个案例。
我正在尝试 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)
如果我明白你在做什么,你是在尝试使一个集合 (
nt
) 取决于通过R_2_j
的某些变量的值。 这不是一个有效的公式,所有集合和参数值必须独立于变量(但可以依赖于其他参数!)。我认为在某些情况下您会尝试使用隐式产品,例如
model.q[j]R_2_j(model, j, -1)
。 如果您要获取的是产品,则需要明确写明:model.q[j] * R_2_j(model, j, -1)
(注意
*
)同一行至少还有一个案例。