Gurobi求解器Matlab安装配置教程

文章目录

Gurobi 是目前性能顶尖的大规模优化求解器,支持线性规划、整数规划、二次规划,求解速度快,比 Matlab 自带的 intlinprog 快很多,大规模问题一定要用它。本文讲官方下载安装和 Matlab 配置步骤。

下载Gurobi

去 Gurobi 官方网站下载页,注册账号之后下载对应你操作系统的版本,Gurobi 有免费学术许可,学生和学术研究者可以免费申请使用。

下载文件名一般是:

  • Windows: gurobi9.5.0 win64.tar.gz 或者 .exe 安装包
  • macOS: gurobi9.5.0 macos.tar.gz
  • Linux: gurobi9.5.0 linux64.tar.gz

下载完成开始安装。

安装步骤

Windows

直接运行 .exe 安装包,一路下一步,选择安装路径,默认 C:\gurobi950\win64 就行,等着安装完成。

macOS/Linux

解压压缩包到你想要安装的路径,比如:

bash 复制代码
tar -zxf gurobi*.tar.gz
sudo mv gurobi950 /opt/

就安装完了,很简单。

配置Matlab接口

安装完要把 Gurobi 的 Matlab 路径加到 Matlab 搜索路径。

Windows

假设安装在 C:\gurobi950\win64,打开 Matlab,输入:

matlab 复制代码
cd C:\gurobi950\win64\matlab
gurobi_setup

运行 gurobi_setup,它会自动帮你加路径,保存路径就好了。

macOS

安装在 /opt/gurobi950/macos,命令:

matlab 复制代码
cd /opt/gurobi950/macos/matlab
gurobi_setup

Linux

matlab 复制代码
cd /opt/gurobi950/linux64/matlab
gurobi_setup

运行完提示 "Gurobi added to Matlab path" 就成功了。

测试一下能不能用:

matlab 复制代码
gurobi

输出来帮助信息,说明配置成功。

获取许可

Gurobi 需要许可才能运行,学术用户可以在官网免费申请学术许可,申请完得到一个 gurobi.lic 文件,放到 Gurobi 安装目录的 license 文件夹里就好了。

测试许可:

matlab 复制代码
gurobi_check

提示 "License is valid" 就可以用了。

Gurobi求解线性规划实例

测试一下,解一个简单线性规划:

目标: min ⁡ x + y + z \min x + y + z minx+y+z

约束:
x + 2 y + 3 z = 10 x + 2y + 3z = 10 x+2y+3z=10
x > = 0 , y > = 0 , z > = 0 x >= 0, y >= 0, z >= 0 x>=0,y>=0,z>=0

Matlab 代码:

matlab 复制代码
clear;
model.A = sparse([1 2 3]);
model.obj = [1 1 1];
model.modelsense = 'min';
model.rhs = 10;
model.lb = [0 0 0];

params.outputflag = 1;
result = gurobi(model, params);

disp(result.objval);
disp(result.x);

运行得到结果,目标值 10/3 ≈ 3.333,x=10,y=0,z=0,正确,说明能用了。

整数规划例子

刚才那个整数规划例子,用 Gurobi 解:

matlab 复制代码
model.A = sparse([2 3 5]);
model.obj = [1 2 3];
model.modelsense = 'min';
model.rhs = 20;
model.lb = zeros(3,1);
model.vtype = 'I'; % 整数变量

result = gurobi(model, params);
disp(result.objval);
disp(result.x);

直接就出结果,整数规划也没问题。

大规模问题对比

同样的整数规划问题,规模大了之后,Gurobi 比 Matlab 自带 intlinprog 快很多,有时候自带的跑几十分钟出不来,Gurobi 几分钟就出来了,性能差距明显,所以做运筹学优化问题,真的推荐用 Gurobi。

常见问题解决

提示找不到gurobi函数

就是路径没加对,重新运行 gurobi_setup,然后运行 savepath 保存路径,重启 Matlab 就好了。

提示License错误

就是许可文件不对,检查 gurobi.lic 路径对不对,许可有没有过期,学术许可过期重新申请一个就行。

编译错误怎么办

Windows 一般不用自己编译,安装包已经编译好 mex 文件,直接就能用,macOS Linux 如果需要编译,运行 make 就行,前提你装了 Xcode 或者 gcc,正常都能编译过。

调用Gurobi出来Segmentation fault

一般是版本不对,Matlab 版本和 Gurobi 版本不兼容,换对应版本重新编译一下 mex 文件就好了。

小结

Gurobi 安装配置不复杂,下载解压,运行 gurobi_setup,放许可文件,三步就好了,配完就能在 Matlab 里调用,比自带求解器快很多,大规模优化问题一定要试试。学术使用免费,申请个许可就能一直用,非常划算。

urobi 版本不兼容,换对应版本重新编译一下 mex 文件就好了。

小结

Gurobi 安装配置不复杂,下载解压,运行 gurobi_setup,放许可文件,三步就好了,配完就能在 Matlab 里调用,比自带求解器快很多,大规模优化问题一定要试试。学术使用免费,申请个许可就能一直用,非常划算。

相关推荐
2401_8949155321 小时前
Geo 优化源码部署常见报错排查:连接失败、地图加载、地域词失效解决方案
服务器·开发语言·python·安全·php
c2385621 小时前
C/C++每日一练20
c语言·开发语言·c++
可爱系程序猿1 天前
msvcp140_codecvt_ids.dll 缺失的排查记录:C++ 程序启动异常时如何核对运行库版本
开发语言·c++·程序人生·电脑
weixin_440784111 天前
【IntentSeivice实现原理】
android·java·开发语言·intentservice
岁岁养乐多1 天前
Java 序列化相关问题
java·开发语言
CAE二次开发工程师1 天前
【C语言入门到精通】-基础篇
c语言·开发语言·python
AAIshangyanxiu1 天前
涡度通量碳观测数据 MATLAB 全流程解析与敏感性定量分析、观测数据质控、插补及 footprint 建模技术
开发语言·matlab·涡度通量·生态碳汇·生态碳汇模拟
小短腿乄1 天前
java实现pdf加水印+签名
java·开发语言·pdf
聆风吟º1 天前
【金仓数据库征文】Java 应用接入金仓数据库:从驱动、连接池到存储过程调试的踩坑实录
java·开发语言·数据库
不会代码的小猴1 天前
11. 类和动态内存分配
开发语言·c++