GurobiPy 入门指南
Gurobi 是一个强大的数学优化求解器,支持线性规划(LP)、混合整数线性规划(MILP)、二次规划(QP)等多种优化问题。GurobiPy 是 Gurobi 的 Python 接口,允许用户通过 Python 调用 Gurobi 的功能。
1. 安装 Gurobi 和 GurobiPy
1.1 安装 Gurobi
访问 Gurobi 官网 并注册账号。
下载并安装 Gurobi Optimizer。
获取许可证(学术用户可申请免费许可证)。
1.2 安装 GurobiPy
安装 Gurobi 后,GurobiPy 会自动安装。如果没有,可以通过以下命令手动安装:
bash
pip install gurobipy
2. 基本使用
2.1 导入 GurobiPy
python
import gurobipy as gpfrom gurobipy import GRB
2.2 创建模型
python
model = gp.Model("my_model")
2.3 添加变量
python
# 添加连续变量 x,范围 0 到 10x = model.addVar(lb=0, ub=10, vtype=GRB.CONTINUOUS, name="x")# 添加整数变量 y,范围 0 到 100y = model.addVar(lb=0, ub=100, vtype=GRB.INTEGER, name="y")
2.4 设置目标函数
python
# 最大化目标函数:2x + 3ymodel.setObjective(2 * x + 3 * y, GRB.MAXIMIZE)
2.5 添加约束
python
# 添加约束:x + y <= 20model.addConstr(x + y <= 20, "c1")# 添加约束:x - y >= 5model.addConstr(x - y >= 5, "c2")
2.6 求解模型
python
model.optimize()
2.7 查看结果
python
if model.status == GRB.OPTIMAL:
print(f"Optimal solution found:")
print(f"x = {x.X}")
print(f"y = {y.X}")
print(f"Objective value = {model.ObjVal}")else:
print("No optimal solution found.")
3. 示例:线性规划问题
问题描述
最大化目标函数:3x + 4y
约束条件:
x + 2y <= 14
3x - y >= 0
x - y <= 2
x >= 0
y >= 0
代码实现
python
import gurobipy as gpfrom gurobipy import GRB# 创建模型model = gp.Model("lp_example")# 添加变量x = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="x")y = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="y")# 设置目标函数model.setObjective(3 * x + 4 * y, GRB.MAXIMIZE)# 添加约束model.addConstr(x + 2 * y <= 14, "c1")model.addConstr(3 * x - y >= 0, "c2")model.addConstr(x - y <= 2, "c3")# 求解模型model.optimize()# 查看结果if model.status == GRB.OPTIMAL:
print(f"Optimal solution found:")
print(f"x = {x.X}")
print(f"y = {y.X}")
print(f"Objective value = {model.ObjVal}")else:
print("No optimal solution found.")
4. 进阶功能
4.1 多目标优化
Gurobi 支持多目标优化,可以通过 setObjectiveN 方法设置多个目标函数。
4.2 参数设置
可以通过 setParam 方法设置求解器参数,如时间限制、求解精度等。
python
model.setParam('TimeLimit', 600) # 设置求解时间限制为 600 秒
4.3 模型保存与加载
可以将模型保存为文件,或从文件加载模型。
python
model.write("model.lp") # 保存模型model.read("model.lp") # 加载模型
通过本指南,您应能使用 GurobiPy 进行基本的优化建模与求解。更多高级功能请参考官方文档。
上一条:gurobipy是什么
下一条:Zemax光学设计操作数和技巧