AttributeError: 'gurobipy.QuadExpr' object has no attribute 'getVar'

AttributeError: 'gurobipy.QuadExpr' object has no attribute 'getVar'

我正在尝试使用 Python 和 Gurobi Solver 解决 MILP 问题。当我用约束解决模型时(附在下面),出现这样的错误:“AttributeError:'gurobipy.QuadExpr' object has no attribute 'getVar'”。 你能帮我解决这个错误吗?提前致谢!

mdl.addConstrs((t[i,k] * X[i,j,k] - te1[i] <= 5) >> (z1[i,k] == 1) for i,j,k in arcos if i != 0 and i != 23)

where: t[i,j]: a continuous variable; X[i,j,k], z1[i,k]: binary variables; te1[i]: a parameter

这确实不是一条信息量很大的错误消息。开发人员因不太注意制定好的、有意义的错误消息而臭名昭著。他们应该。更好的错误消息本可以避免这种情况 post.

现在谈谈根本问题。指标约束具有以下结构:

binary variable = 0 ==> linear constraint 

binary variable = 1 ==> linear constraint 

您需要重新制定内容以适应此方案。或者使用 big-M 公式。

Gurobi 文档演示了如何添加指标约束:Model.addGenConstrIndicator() Model.addConstrs() 的文档也有一个在一次调用中添加多个指标约束的示例:

model.addConstrs((x[i] == 1) >> (y[i] + z[i] <= 5) for i in range(5))

一般来说,您需要定义一个二进制变量作为指标。您的约束似乎是相反的,满足条件会导致是否设置指示变量。