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

Pyomo使用索引Set时报字符串索引必须为整数错误如何解决

问题修复方案

报错根因

你触发报错的核心原因是FlowBalance_rule约束的写法存在两处逻辑错误:

  • 你定义的NodesIn[node]、NodesOut[node]存储的本身就是管道名称字符串,无需做二次索引。你写的m.Flow[m.NodesIn[node][pipe]]会把字符串类型的pipe当成列表的整数下标使用,直接触发索引类型不匹配的报错。
  • 流出节点的流量求和部分,你错误引用了NodesIn集合,应该直接使用NodesOut里存储的管道名称。

修正代码

仅需替换FlowBalance_rule函数即可:

def FlowBalance_rule(m, node):
    return m.Supply[node] \
        + sum(m.Flow[pipe] for pipe in m.NodesIn[node]) \
        - m.Demand[node] \
        - sum(m.Flow[pipe] for pipe in m.NodesOut[node]) \
        == 0

验证结果

替换后代码可正常创建实例并求解,计算结果和官方参考版本完全一致:管道AB流量为1、管道AC流量为1、管道CB流量为0,最小总成本为4.1,完全符合你的管道名索引的需求。

内容的提问来源于stack exchange,提问作者MaxImal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:27:01