Pyomo优化中含输入变量求和表达式的正确写法咨询
Pyomo中求和表达式的正确构建方式
错误原因
你遇到的TypeError是因为列表无法直接与Pyomo的SumExpression对象执行除法运算。代码里左侧是包含变量表达式的列表,右侧是sum()生成的求和表达式,Pyomo不支持这种操作逻辑。
正确实现方式
先计算所有元素的总和,再通过列表推导式让每个元素分别除以这个总和,这样每个运算都会生成合法的Pyomo表达式:
x = [k * model.input[i] for i in range(3)] total = sum(x) return [xi / total for xi in x]
补充说明
- 这里的
total是Pyomo的SumExpression对象,每个xi是变量或变量表达式,xi / total会自动生成Pyomo支持的除法表达式,可直接用于后续模型构建。 - 如果需要避免除以0的风险,需在模型中添加约束
total >= 1e-6(或其他极小正数),确保总和不为0。
内容的提问来源于stack exchange,提问作者Sakchhi
相关产品推荐
相关产品推荐

