当前位置: 主页 > 奇亿注册 > 网络营销
项目服务
  • 提交需求
  • 策划设计
  • 技术开发
  • 维护修改
  • 售后服务

其实很多软件,例如Matlab甚至Excel都自带了优化模块,可以解线性规划和整数规划问题。

由于他们不是专门做数学规划的,因此只能说可以用,关于效率和速度,和专门做这个的求解器,是没有对比价值的。

运筹学与国民经济、企业供应链、能源交通等优化息息相关,这些实际问题都可以被建模成为运筹学模型。

而优化求解器是数学规划建模后求解这些实际问题的核心,这个核心长期被国外软件公司所垄断(黑盒子),华人在此领域在2017年以前几乎是空白。

进入运筹学领域7年多以来,结识了全球很多华人运筹学者。一大感觉便是,研究启发式、进化算法、元启发算法的华人学者占了多数,而研发求解器所必须的精确算法华人学者却屈指可数。

留德华叫兽:【学界】整数规划精确算法/近似算法/(元)启发算法/神经网络反向传播等算法的区别与关联

CMIP和Leaves的出现打破了这一僵局。--这一段摘自这个知乎专栏。



一、安装

太只人:Gurobi安装教程

gurobi.com/ 首先官网注册

注册的邮箱尽量使用学校的邮箱,同时大学的名称要写对。

这个注册文件从官网上下载填好即可,没有问题的话,当天就能收到激活码。

有一个群,里面有很多参考资料可以下载:

Gurobi是用C++写的,提供各种语言的接口,可以MATLAB+YALMIP+Gurobi;Python+Gurobi;Julia+Gurobi多种方式调用。

三年级三班班长:MATLAB+YALMIP+Gurobi;Python+Gurobi;Julia+Gurobi

MATLAB基于Yalmip调用solver(Gurobi、Cplex)是非常容易上手的一门语言,对于运筹优化建模爱好者小菜一碟;

太只人:Gurobi安装教程

具体的安装过程,知乎上有很多帖子。

二、Gurobi是什么?

留德华叫兽:【学界】运筹学数学规划|离散优化求解器大搜罗

整数规划求解器是什么?

大家可以把它理解为一个专门求解整数规划模型的算法包,你可以用任何编程语言(C/C++、Java、Python)去调用这个包里的方程,只要你把你要求解的整数规划模型目标方程和系数矩阵输入进去(告诉它你要求解的具体问题),它就会给你求解出结果。

  1. IBM ILOG Cplex

没错,就是笔者在意大利Blogna“实习”半年所在的求解器公司

网址:IBM ILOG CPLEX Optimization Studio


支持模型:混合整数(平方)规划、Constraint programming

支持语言:C/C++、Java、Python、Matlab等

特点:支持Benders分解模块(仅此一家)、速度Top2

2. Gurobi

网址:The State-of-the-Art Mathematical Programming Solver

支持模型:混合整数(平方)规划、Constraint programming

支持语言:C/C++、Java、R、Python、Matlab等

特点:速度Top1、价格最高

学生|高校|科研用途都是免费的,只需学校邮箱即可免费下载并使用!

  1. SCIP

网址:SCIP

开发地:德国柏林ZIB研究中心(该中心毕业的博士就职于二中各大求解器公司,share着办公室并一起交流,得益于德国的一个政府项目)

支持:混合整数(非线性)规划、Constraint integer programming

支持语言:C/C++、Java、Python、Matlab等

特点:支持Branch&Price(仅此一家)

当前版本:6.0


2. GLPK、LP_Solve

网址:lp_solve reference guideGLPK

. COIN-OR旗下的CBC和SYMPHONY

网址:COIN-OR Branch-and-Cut MIP SolverSYMPHONY

这里还是重点介绍下COIN-OR这个组织吧

它成立于17th International Symposium on Mathematical Programming (ISMP) conference in Atlanta in the summer of 2000,是一个公益组织,维护着市面上几乎所有的开源优化求解器,并且使得它们之间的交互变得可能。

它的网址:The COIN-OR Foundation

ortools是一款非常优秀的求解器,背靠google亲爹得到更多的关注和支持, 一个主要原因是ortools的整数规划的API比较混乱,LP,CP问题按理说相同的,结果有两个不同的接口方法,此外MIP问题要求约束的系数是整数,如果是小数(分数),官方是建议统一转成整数求解。另外就是平时工作没接触到路径规划问题,没感受到ortools路径规划模块的强大。关于整数规划接口混乱的问题,不知道这两年有没有解决,毕竟用ortools是两年前的事情了。在这里需要说明一下运筹建模框架和运筹求解器的区别。建模框架,是指将数学问题转成LP,MPS格式的编程工具,比如ortools,pyomo等,只有将人类理解的数学问题转成计算机理解的LP,MPS格式,求解器才能高效求解。求解器,商用的比较有名的是gurobi、scip,国产的有copt,开源中最有名应用最广泛的就是CBC了。ortools作为一个建模框架,在解MIP问题时,其底层调用的也是CBC求解器。今天介绍一个运筹建模框架py-mip,既然是一个建模框架,在底层也是要调用其他求解器的,py-mip默认使用CBC求解器,当然也支持gurobi求解器,只要指定参数即可,非常方便。这一点和pyomo倒是非常相似。

py-mip的官网是:python-mip.com/


三、推荐一个专栏--苏老师的

笔记-Python最优化算法实战(Gurobi)

星河:笔记-Python最优化算法实战(Gurobi)

QInzhengk/Math-Model-and-Machine-Learning (github.com)

【Gurobi 第三方学习资料推荐】运小筹 公众号

微信关注 运小筹 公众号(或者扫描二维码),上面很多高质量的优化技巧和范例采用了Gurobi 软件做为求解器工具。为学习和应用Gurobi 的同学提供了更广泛的参考资料。


相关资料收集

链接:pan.baidu.com/s/1QcYuV0

提取码:ujm8

平台注册入口