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

使用Gurobi Python编写双索引约束时遇索引错误求助

解决Gurobi约束中"list indices must be integers or slices not tuple"错误

错误原因:你在约束中使用了b[i,j]这种元组索引方式,但此时b实际是Python列表(而非numpy数组)。列表不支持元组索引,必须用b[i][j]这种逐层索引的形式。

两种解决方法:

方法1:确保b是numpy数组

在添加约束前,确认b已经被正确转换为numpy数组:

  • 检查转置步骤:尽量使用numpy原生的转置方法(如b = b.T),而非基于列表的转置操作(如zip(*b)),避免意外将b转回列表。
  • 在添加约束前打印type(b),如果输出不是numpy.ndarray,重新执行b = np.array(b)完成转换。

方法2:调整列表索引方式

如果b确实需要保持为列表结构,将约束中的b[i,j]改为b[i][j]:

model.addConstrs((gp.quicksum(b[i][j] * x[i, j, k] for i in I) <= B * z[j, k] for j in J for k in K), name="constraint3")

额外建议

使用numpy处理矩阵操作时,尽量全程保持numpy数组类型,避免在列表和numpy数组之间反复转换,减少此类索引错误的概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 06:32:16