首页 > 解决方案 > Gurobi 表达式如何在 Python 上工作?

问题描述

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

前往设施“i”的城市“j”的需求<=安装在“i”中的设施“k”的容量

我想我需要使用“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)

标签: pythonconstraintsgurobi

解决方案


您不能np.transpose在 Gurobis 变量对象上使用 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))

推荐阅读