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))
一般来说,您需要定义一个二进制变量作为指标。您的约束似乎是相反的,满足条件会导致是否设置指示变量。
我正在尝试使用 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))
一般来说,您需要定义一个二进制变量作为指标。您的约束似乎是相反的,满足条件会导致是否设置指示变量。