Gurobi 全球用户超过2600家,广泛应用在金融、物流、制造、航空、石油石化、商业服务等多个领域,为智能化决策提供了坚实的基础,成为上千个成熟应用系统的核心优化引擎。 Gurobi 是全局优化器,支持的模型类型包括: (1)连续和混合整数线性问题 (2)凸目标或约束连续和混合整数二次问题 (3)非凸目标或约束连续和混合整数二次问题 (4)含有对数、指数、三角函数、高阶多项式目标或约束,以及任何形式的分段约束的非线性问题 (5)含有绝对值、最大值、最小值、逻辑与或非目标或约束的非线性问题 Gurobi 技术优势: (1)可以求解大规模线性问题,二次型问题和混合整数线性和二次型问题 (2)支持非凸目标和非凸约束的二次优化 (3)支持多目标优化 (4)支持包括SUM, MAX, MIN, AND, OR等广义约束和逻辑约束 (5)支持包括高阶多项式、指数、三角函数等的广义函数约束 (6)问题尺度只受限制于计算机内存容量,不对变量数量和约束数量有限制 (7)采用最新优化技术,充分利用多核处理器优势。支持并行计算 (8)提供了方便轻巧的接口,支持 C++, Java, Python, .Net, Matlab 和R,内存消耗少 (9)支持多种平台,包括 Windows, Linux, Mac OS X . \8 _! P7 @) Z) B
激活安装
- V0 A) G, _( e8 E激活 使用教育邮箱申请https://zhuanlan.zhihu.com/p/212191049免费使用 中文官网:http://www.gurobi.cn/ ! @. R' a5 q, l ~3 K- l
安装 打开Anaconda Prompt,并输入以下两条指令: conda config --add channels http://conda.anaconda.org/gurobiconda install gurobi 即可在anaconda中完成Gurobi包的下载安装。
6 z$ z k) D7 {& q( Y, i, x: U使用demo
官方文档:https://www.gurobi.com/documentation/9.1/quickstart_windows/cs_simple_python_example.html · Model(name=“”) name是模型的名称, 返回值是一个model对象,初始情况下没有变量和约束条件 调用方式:model1 = Model() · Model.addVar(lb, ub, obj, vtype, name,column) lb是下限,ub是上限,obj是目标的优化系数,vtype是变量类型,name是变量的名称,column是变量参与的约束以及优化系数。 所有的参数都是可选的,不指定就是默认值 变量的类型有GRB.CONTINUOUS, GRB.BINARY, GRB.INTEGER, GRB.SEMICONT, or GRB.SEMIINT · Model.addConstr( lhs, sense=None, rhs=None, name="" ) lhs是约束的右侧,rhs是约束的左侧,sense是约束的类型,有(GRB.LESS_EQUAL, GRB.EQUAL, or GRB.GREATER_EQUAL name是约束的名称 · Model.addConstrs( generator, name="" ) generator是Python表达式。这种表达方式比 2 直观一点,返回值是tupledict类型的 例:model.addConstrs(x + x[j] <= 1 for i in range(5) for j in range(5)) 注意:generator表达式只能由一个比较关系。 · Model.update() 对修改了的模型进行更新 Model.setObjective(expr, sense) 设置模型的优化函数 expr是优化目标表达式,sense是优化类型,优化类型有GRB.MINIMIZE和GRB.MAXIMIZE,如果省略sense可以使用ModelSense函数来指定优化的类型。 · Model.write(filename) 将优化模型,解向量,基向量,起始向量或参数设置写入文件,文件的类型有.mps, .rew, .lp .rlp,也可以只保存的模型的一部分,详见refman · Model.getVars() 返回模型中的所有变量
1 X: T8 o' l {: ]# ?4 U! Z下面是Gurobi的代码示例:$ J) L8 z9 O/ y1 B
8 P* j$ N8 S1 W& [
$ L1 L$ {. D9 T* @. j$ g, r# @ r" g5 A; ~/ m7 a& Z5 t
5 R2 o4 J" h7 l8 n5 m
; O+ H/ l5 R6 Y4 u- D0 a6 } |