如何使用 model.getVars() 获取 tupledict 对象?

How do I get the tupledict object using model.getVars()?

Gurobi 允许您使用(例如)一次创建多个变量:

x = model.addVars(2,3,vtype=GRB.BINARY)

这个 returns 一个包含 6 个二进制变量的 tupledict 对象,可以像 x[0,2]x[1,1]、... 等访问

但是,当我使用命令 x = model.getVars()(例如在回调中)时,它 returns 是一个变量列表,而不是元组字典。因此,当我转到引用变量 x[0,1] 时,出现错误:

TypeError: list indices must be integers or slices, not tuple

我已经根据它们的 tupledict 键建立了我的所有变量,而不是列表索引,所以我不知道哪个变量是哪个。有什么方法可以让模型给我 tupledict 而不是列表?

正确,Model.getVars() returns所有变量的列表;它不知道 Python tupledict 结构。要保存 tupledict x 用于回调,请将其添加到模型对象,例如:model._myxvars = x,然后您可以在回调函数中使用它。