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

Pyomo框架运行优化模型报KeyError(0,0)错误,该如何排查解决?

错误产生原因
  • 索引不匹配是核心诱因
    你定义的成本字典d的键是从1开始的二元组((1,1)到(3,4)),但你给模型定义的Locations集合是range(3)也就是取值为0,1,2,Customers集合是range(4)也就是取值为0,1,2,3。在目标函数计算时会尝试访问d[0,0]这个不存在的键,直接触发KeyError: (0, 0)。
  • 代码还存在两个潜在运行错误
    1. 约束single_x的求和语句里误用了未定义的变量model.Locations,你的模型实例命名是seq,这里会触发NameError
    2. 约束bound_y里的&lt;是HTML转义字符,实际Python代码中要替换为<=才可以正常解析
修复方案

你可以选择调整集合索引对齐字典的起始值,修改集合定义部分即可:

# 原来的定义是从0开始,修改为从1开始和d字典的键对齐
seq.Locations = range(1, N+1) #Set N
seq.Customers = range(1, M+1) #Set M

同时替换两个错误代码段:

  1. 把sum(seq.x[n,m] for n in model.Locations )改为sum(seq.x[n,m] for n in seq.Locations )
  2. 把seq.x[n,m] &lt;= seq.y[n]改为seq.x[n,m] <= seq.y[n]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:15:03