python - (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'
解决方案
看起来您发现了一个不调用自动更新的情况。我会向开发人员提及一些事情。同时,在调用 tupledict.sum() 之前添加对 Model.update() 的调用:
m.update()
print(m_var.sum(1, '*'))
推荐阅读
- php - 在“选择选项”按钮上显示一个弹出窗口 - Woocommere
- reactjs - 为什么我必须单击 TextField 两次才能显示我的列表?
- pyspark - PySpark 将索引列传递给 element_at()
- c++ - 模板如何避免无限递归?
- ruby-on-rails - 以设定的时间间隔对表进行版本控制的“Rails 方式”是什么?
- python - 不允许的方法 (POST):/experience/create-review/
- html - Parent container ignores child container's width when using flex column wrap
- mysql - 使用 mySQL 和 nodejs 传递承诺
- c# - 如果我删除了一个可交互的对象,我该如何做到这一点,它将通过从列表中删除该项目来更新检查器中的列表?
- python-3.x - 如何在 Python 中使用语音识别自动检测语言