如何在 Python 中使用 Gurobi quicksum

How to use Gurobi quicksum in Python

我正在尝试弄清楚如何在 Python 中为 Gurobi 编写此约束。

这是正确的方法吗?

model.addConstr(
    (gp.quicksum(a[i,r]*y[r] for i in range (len(n))) for r in range(len(R)))==1 , name='firstConst')

您应该始终尝试直接使用 Python 迭代器而不是使用 range(len(R).

因此,编写这些约束(实际上 |P| 很多)的更好方法是

for i in P:
    model.addConstr(gp.quicksum(a[i,r]*y[r] for r in R) == 1, name='firstConst')

您还可以使用 addConstrs():

在单个调用中创建一组类似的约束
model.addConstrs((gp.quicksum(a[i,r]*y[r] for r in R) == 1 for i in P), name='firstConst')

您还应该以类似的方式添加变量:

y = model.addVars(R)