python - 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)
解决方案
您不能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))
推荐阅读
- angular - 无法获取“library@latest”的包信息:无法将 undefined 或 null 转换为对象
- c# - .NET 库中的 JWT 无效签名
- delegates - 将属性委托传递给 Blazor 组件给出“不接受 1 个参数”错误
- java - 没有静态引用的 Java Runnable
- html - 如何在 Github Repository 中显示代码的渲染 HTML
- sql - T-SQL 触发器 - 审计列更改
- python-3.x - 如何使用列表动态创建 Python 类实例?
- php - 已安装 php-mysql 但未在 phpinfo 中显示
- c# - 我可以通过使用 cookie 自动重新登录到我的 SignInManager 和 UserManager (Identity) -> Asp.Net-Core Identity (Deployed live)
- shell - 为什么 curl 无法使用选项 -i 显示 http 标头