起初是为了解决一个线性规划问题,实际上世面上的解决方法以及优化器也比较多。
开始想使用scipy库,因为比较方便,但是其功能似乎无法解决我的问题。(也可能是我没有仔细研究)
后来准备使用scip优化器, 主要它是开源的,也能比较好地解决我的问题,但不知道为什么其网站主页始终上不去。
所以最终选择使用Gurobi, 主要也是因为网站做的内容比较详细,文档全面, 相关博客也非常多,同时对于学术用途是免费使用的。 本篇文章主要是详细讲述安装过程以及其中博主遇到问题的一些解答,对于其他系统下载安装Gurobi也有借鉴的意义。
下载GUROBI
首先登录【官网】 注册账号
注册的时候使用大学的邮箱,注册完毕以后登录你的账号。
进入下载中心
进入页面以后,下拉你会看见如下几个选项:
你需要选择第一个
这里有许多版本,你可以选择你需要的版本进行下载, 当然页面上还有更老的版本
获取学术许可
GUROBI显然是对学术用途是免费的, 如果是连着校园网的情况下, 并且学校的网关已经对ip地址进行了学术机构认证,那么直接按照下面(1)操作就行了。
如果IP认证不成功,需要通过邮件的方式去获取激活码。
(1)
点击【Academic】
进入页面后下拉
选择这个single person single pc
然后我的情况就是审核不通过。
(2)发邮件的形式获取激活码
中国官网GUROBI
按照其教程一步步做即可,一般当天就能获得激活码。
安装注意事项
(1)其实大体步骤很简单, 就是cd到对应的文件夹,然后输入
grbgetkey 激活码
不过macos 安装的时候, 安装流程你并不知道它把GUROBI装哪里了, 为此我到官网看了文档,这是官网文档
默认是安装在
"/Library/gurobi1002/macos_universal2"
(2)注意要改环境变量
激活以后会产生一个许可文件gurobi.lic,产生的 gurobi.lic 许可文件保存在以下目录:
Windows 操作系统:把 gurobi.lic 文件放在 c:\gurobi 目录下;
Linux 操作系统: 把 gurobi.lic 文件放在 opt/gurobi 目录下;
Mac 操作系统: 把 gurobi.lic 放在 /Library/gurobi 目录下;
如果保存到其他位置,需要创建 GRB_LICENSE_FILE 系统环境变量(不是用户环境变量),指向保存的目录和文件名(例如 GRB_LICENSE_FILE = C:\myfolder\gurobi.lic)。需要重启电脑使之生效。如果既放置在了上面的默认搜索目录,又设置了 GRB_LICENSE_FILE 系统环境变量指向不同的目录和文件,Gurobi 会以 GRB_LICENSE_FILE 的设置为准。
(3) setup.py
文件夹中有个setup.py的文件, cd到目录下面以后
python setup.py install
它会将包安到你的默认搜索路径下面, 如下:
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/gurobipy
copying lib/python3.9/gurobipy/__init__.py -> build/lib/gurobipy
copying lib/python3.9/gurobipy/gurobipy.so -> build/lib/gurobipy
running install_lib
creating /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/gurobipy
copying build/lib/gurobipy/gurobipy.so -> /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/gurobipy
copying build/lib/gurobipy/__init__.py -> /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/gurobipy
byte-compiling /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/gurobipy/__init__.py to __init__.cpython-39.pyc
running install_egg_info
Writing /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/gurobipy-10.0.2-py3.9.egg-info
removing /Library/gurobi1002/macos_universal2/build
Jupyter中使用Gurobi
然后进入jupterLab运行程序
注:代码摘来自这篇博客
from gurobipy import *
try:
# Create a new model
m = Model("mip1")
# Create variables
x = m.addVar(vtype=GRB.BINARY, name="x")
y = m.addVar(vtype=GRB.BINARY, name="y")
z = m.addVar(vtype=GRB.BINARY, name="z")
# Set objective
m.setObjective(x + y + 2 * z, GRB.MAXIMIZE)
# Add constraint: x + 2 y + 3 z <= 4
m.addConstr(x + 2 * y + 3 * z <= 4, "c0")
# Add constraint: x + y >= 1
m.addConstr(x + y >= 1, "c1")
m.optimize()
for v in m.getVars():
print(v.varName, v.x)
print('Obj:', m.objVal)
except GurobiError:
print('Error reported')
运行结果如下(安装成功):