Gurobi 表达式如何作用于 Python?

How does Gurobi expressions work on Python?

我正在研究 Gurobi(上个月开始),我尝试编写一个小的设施位置问题。我知道约束是如何工作的,但有一个我遇到了更多困难,请检查 link:

Demand of city 'j' that goes to the facility 'i' <= Capacity of facility 'k' installed in 'i'

我想我需要使用 "LinExpr" 函数,但文档中没有太多信息。可以的话有没有其他的学习资源

这是我尝试过的方法:

for i in facilities:
    for j in cities:
       exp_1 = d[j]*x[i,j]
    for c in cap:
       exp_2 = np.transpose(capacity)[i,c]*y[i,c]

m.addConstr(exp_1<=exp_2)

您不能在 Gurobis 变量对象上使用像 np.transpose 这样的 numpy 函数。相反,您必须借助 gurobi 函数直接编写它。假设设施、城市和容量是适当的列表,您可以这样做:

from gurobipy import quicksum, Model

m = Model()

# ... defining your lists and the variables d, x, cap

# Adding the constraints
for i in facilities:
    m.addConstr(quicksum(d[j]*x[i,j] for j in cities) <= quicksum(cap[k]*y[i,k] for k in capacities))