首页>软件资讯>常见问题

常见问题

gurobipy入门指南

发布时间:2025-03-17 21:02:17人气:157


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光学设计操作数和技巧