首页 > 解决方案 > (Python&Gurobi)AttributeError: Index out of range for attribute 'VarName'

问题描述

我是gurobi的菜鸟。以下代码尝试实现 tupledict 的 sum()。但是,它不能给我正确的结果。控制台告诉我代码面临 AttributeError。我只是不知道如何解决这样的错误。

这是代码的全部内容。我在 Jupyter Notebook 中完成了这个代码。

import gurobipy as gp

m = gp.Model("test_model")

t_list = gp.tuplelist([(1, 1), (1, 2),
                   (2, 1), (2, 2)])

m_var = m.addVars(t_list, name="x")

print(m_var.select(1, '*'))
print(m_var.sum(1, '*'))

结果是:

[<gurobi.Var *Awaiting Model Update*>, <gurobi.Var *Awaiting Model Update*>]
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-4-0aa273e3b4c3> in <module>
     10 
     11 print(m_var.select(1, '*'))
---> 12 print(m_var.sum(1, '*'))

src\gurobipy\linexpr.pxi in gurobipy.LinExpr.__repr__()

src\gurobipy\var.pxi in gurobipy.Var.getAttr()

src\gurobipy\attrutil.pxi in gurobipy.__getattr()

AttributeError: Index out of range for attribute 'VarName'

标签: pythongurobi

解决方案


看起来您发现了一个不调用自动更新的情况。我会向开发人员提及一些事情。同时,在调用 tupledict.sum() 之前添加对 Model.update() 的调用:

m.update()
print(m_var.sum(1, '*'))

推荐阅读