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))
我正在研究 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))