Pyomo仓库优化模型运行报错IndexError: list index out of range求助
Pyomo仓库问题代码IndexError排查
出现IndexError: list index out of range的核心原因是命令行参数未正确传入,以下是具体分析和解决办法:
最可能的原因:缺少命令行参数
代码中使用sys.argv[1]读取Excel文件路径,sys.argv[2]读取仓库数量上限P,但如果运行脚本时没有传入这两个参数,sys.argv列表的长度不足3,访问索引1或2就会触发索引越界。
解决方式
运行脚本时必须传入两个参数,格式如下:
python your_script.py path/to/your/excel_file.xlsx 2
(把your_script.py换成你的脚本文件名,path/to/your/excel_file.xlsx换成实际的Excel路径,2是你要设置的仓库数量上限)
其他可能的排查方向
- Excel工作表名称不匹配:代码指定读取名为
'Delivery Costs'的工作表,检查你的Excel文件中是否存在完全同名的工作表(注意大小写、空格都要一致) - Excel数据格式错误:确保Excel文件的第一行是表头、第一列是索引列,否则
pandas.read_excel可能读取不到有效数据,导致N或M为空列表,后续创建变量/约束时也可能引发索引错误
优化建议:添加参数校验
可以在脚本开头加入参数检查,提前提示错误:
import pandas import sys from pyomo.environ import* # 新增参数校验 if len(sys.argv) != 3: print("请传入正确参数:python 脚本名.xlsx <Excel文件路径> <仓库数量上限P>") sys.exit(1) df = pandas.read_excel(sys.argv[1], 'Delivery Costs',header=0, index_col=0) # 后续代码保持不变
内容的提问来源于stack exchange,提问作者Samuel M
相关产品推荐
相关产品推荐

