求解器介绍之gurobi
Gurobi 是一个高性能的数学优化求解器,广泛应用于工业界和学术界,用于求解线性规划(LP)、整数规划(MIP)、二次规划(QP)、二次约束规划(QCP)等问题。它以速度快、求解能力强、支持问题类型广泛而著称,是目前商业优化软件中的领导者之一。
🧠 核心特性简介
特性类别 | 说明 |
---|---|
支持模型类型 | LP、MILP、QP、MIQP、QCP、MIQCP、SOCP、MISOCP 等 |
编程语言接口 | Python(最流行)、C、C++、Java、.NET、MATLAB、R |
并行计算 | 自动多线程求解,大幅提升性能 |
多平台支持 | Windows、Linux、macOS |
支持大规模模型 | 可处理数百万变量和约束的工业级优化问题 |
学术免费许可 | 对学术用途免费(需注册验证) |
云端计算 | 提供 Gurobi Instant Cloud 服务 |
与建模语言集成 | 与 Pyomo、JuMP、AMPL、CVXPY 等集成良好 |
🛠 示例(Python)
使用 Gurobi Python 接口求解一个简单的线性规划问题:
import gurobipy as gp
from gurobipy import GRB# 创建模型
model = gp.Model("example")# 添加变量
x = model.addVar(name="x")
y = model.addVar(name="y")# 设置目标函数:Maximize 3x + 4y
model.setObjective(3 * x + 4 * y, GRB.MAXIMIZE)# 添加约束
model.addConstr(2 * x + y <= 100, "c1")
model.addConstr(x + 2 * y <= 80, "c2")# 求解模型
model.optimize()# 输出结果
if model.status == GRB.OPTIMAL:print(f"x = {x.X}, y = {y.X}, objective = {model.ObjVal}")
✅ 优势与应用场景
优势 | 应用场景示例 |
---|---|
世界最快的求解器之一 | 大规模供应链优化、生产排程、金融组合优化 |
易于集成与建模 | 与 Pandas、NumPy、Scikit-learn 兼容性强 |
稳定性和精度高 | 银行、物流、电信、能源等核心系统 |
📌 商业授权 vs 学术授权
- 商业用户需付费授权,价格较高
- 学术用户可免费申请 https://www.gurobi.com/academia/academic-program-and-licenses/
是否需要我进一步展示某种类型的问题如何用 Gurobi 建模与求解?例如选址优化、排程问题、网络流、车辆路径等?