【学界】运筹学数学规划|离散优化求解器大搜罗

【学界】运筹学数学规划|离散优化求解器大搜罗

本文作者@留德华叫兽 系美国克莱姆森大学运筹学硕士,Ph.D. Candidate,欧盟玛丽居里学者,德国海德堡大学组合优化、计算机视觉博士,期间前往意大利IBM Cplex实习半年,巴黎综合理工访问一季。
欢迎原链接转发,转载请前往 @留德华叫兽的主页获取信息,盗版必究。
会邀请全球知名学者陆续发布运筹学、供应链管理、人工智能中优化理论、知乎Live及相关行业动态:『运筹OR帷幄』大数据人工智能时代的运筹学--知乎专栏

一、前言

这篇文章笔者一年前就已开始构思,苦于时间有限而迟迟没有下笔。今天终于鼓足勇气,动笔时间晚上11点,今天就算通宵也要把它写完~

言归正传,由于笔者背景偏重于整数规划,因此本文大量篇幅将介绍整数规划求解器。

【学界】离散/整数/组合/非凸优化概述及其在AI的应用

当我们费劲千辛万苦对一个实际问题用整数规划建模以后,写成如下优化问题:

https://en.wikipedia.org/wiki/Integer_programming

我们知道,建模完成后要求解具体的实例,下一步便是设计相应算法。

而求解整数规划模型的基本算法便是分支定界法:

留德华叫兽:【学界】混合整数规划/离散优化的精确算法--分支定界法及优化求解器


那么我们是否要亲自手撸一遍分支定界法呢?

几十年前,当市面上这些求解器还不存在的时候,很不幸的告诉你:当然需要!

这是我与欧洲运筹协会主席、巴塞罗那理工Elena Fernandez教授亲切会谈后她给我的回答。

当时作为一名运筹学研究精确算法的博士生毕业难度(代码能力)可想而知。


而今,正因为有了优化求解器的存在,我们只需将以上整数规划模型的系数矩阵输入到优化求解器中,它就能够给我们快速求出最优解或可行解(除了分支定界法还集成了各种花式启发式和割平面算法)!

因此,运筹学博士生的毕业难度大大降低!


整数规划求解器是什么?

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


怎么样,是不是很神奇?

废话不多说,今天我们来梳理一遍市面上流行的整数规划求解器!


二、商业整数规划求解器

  1. IBM ILOG Cplex

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

网址:IBM ILOG CPLEX Optimization Studio


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

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

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

当前版本:12.8


2. Gurobi

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

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

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

特点:速度Top1、价格最高

当前版本:8.0


3. FICO Xpress

网址:FICO® Xpress Optimization | FICO®

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

特点:速度Top3,支持鲁棒优化

当前版本:8.5


4. MOSEK

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

支持模型:混合整数(平方)规划、Second-order cone programming、Semidefinite programming、General convex nonlinear

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

特点:解SOCOP、SDP更快

当前版本:8.1


价格:

因为是商业软件,意味着他们是收费的

以下这份价格列表转自高级建模语言AMPL的官网:

https://ampl.com/products/standard-price-list/

MOSEK售价为1950刀起

从价格可以看出,Gurobi是目前的NO.1(一个小插曲,或许是因为SCIP创始人Tobias Achterberg从Cplex跳槽至Gurobi以后的事)

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

三、开源整数规划求解器

  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

摘抄一段Gurobi官网对这俩个开源求解器的介绍:

http://www.gurobi.com/resources/switching-to-gurobi/open-source-solvers


3. 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


4. 华人求解器

开源求解期

  • 中科院的CMIP
  • 上海财大|杉数科技主导的Leaves优化求解器

【资讯】中科院CMIP混合整数规划求解器正式发布


商业求解器

  • 杉数科技的Cardinal

【资讯】专访葛冬冬:我们做华人该有的求解器,BAT和国内科研单位做不了



四、求解器大PK

市面上琳琅满目的求解器,到底该用哪个好呢?

这时候就需要Public Dataset和Benchmark给你一些参考了

这里我仅贴出几个对比的案例:

http://strimas.com/prioritization/scip-performance/
http://plato.asu.edu/ftp/solvable.html

五、其他优化求解器

以上重点介绍了数学规划中整数规划的求解器

熟悉运筹学的同学们知道,数学规划除了整数规划,还有凸优化、非凸优化、半正定规划、锥规划等等。

什么?对以上术语一无所知?请点击:

【学界】人工智能的“引擎”--运筹学,一门建模、优化、决策的科学


Again,COIN-OR 上面罗列着几乎所有的开源优化求解器

这里我就简单地介绍其中一个--Couenne

为啥?

因为Couenne的开发者,是笔者在Clemson读博期间的导师Pietro Belotti博士(后跳槽至FICO Xpress)。

Couenne (Convex Over and Under ENvelopes for Nonlinear Estimation) is a branch&bound algorithm to solve Mixed-Integer Nonlinear Programming (MINLP) problems of the form:

六、高级建模语言

GAMS、AMPL、JuMP、Mosel、Glop

这里仅作简述

他们又是做什么的?

作为一种高级建模语言,首先可以把一个数学规划问题更简单地编程

其次,它可以调用以上任意一种优化求解器(如果兼容,Mosel只能调用Xpress)

这样,你只需写一遍code,便可比较多种不同的求解器,然后取结果最好的那个。


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

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


七、展望

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

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

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

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

CMIP和Leaves的出现打破了这一僵局。

衷心希望它们早日能与世界一流的求解器匹敌,为国筑器


P.S.:熬夜写到凌晨俩点,总算完成了拖了一年的任务,希望这个总结对大家有帮助。

错误和疏漏在所难免,恳请大家留言指正。

关注文末公众号后台回复关键词:“学界”,查看“求解器”文件夹,即可免费获取 IBM Cplex 12.8版本以及Gurobi 8.0版本benchmark ppt,如果觉得有用, 请勿吝啬你的留言和赞哦!~


如果你是运筹学|人工智能硕博或在读,请在下图公众号后台留言:“加微信群”。系统会进一步提示,邀请您进全球运筹或AI学者群(群内学界、业界大佬云集)。

可以在本公众号后台回复关键词:“学界”获取大量由我平台编辑精心整理的学习资料,如果觉得有用, 请勿吝啬你的留言和赞哦!~
同时我们有:【运筹|优化】【供应链|物流】【人工智能】【数据科学|分析】爱好者千人QQ群,请关注下方公众号点击“加入社区”按钮,获得入群传送门。

编辑于 2018-08-09

文章被以下专栏收录