运筹优化求解器有什么用?
其实,运筹学不仅仅存在于我们的生活中,更加被广泛应用在企业中。例如生产和制造系统中的排产排程、生产调度;交通工具和乘务的调度排班、路径规划;电力系统中潮流优化“等等这些现代工业生产中的应用场景,往往都需要优化求解器来进行底层的算法支持。如下图中所示:
这里我们仅以手机的制造过程为例,一部手机有上千个零件构成,每个零件都在指定的供应商处生产,例如手机屏幕,摄像头,电池,充电器等,每个零件都由不同的工厂来生产,完成所有零件的生产后会把它们运送到最终的组装厂拼装成一台成品的手机。那么,如何合理地安排每个工厂在什么时候该生产多少零件是一个需要决策的重要问题。这个问题的核心在于要考虑尽量满足订单的需求的前提下降低库存水位或周转率,同时还要考虑物料、产能和运输的约束等等,使得最终的生产成本最低。以上借助了手机生产的例子,让大家了解运筹学是如何解决工业制造中的问题。总结起来在企业中面对实际的整数规划问题,我们一般是采用两步走的思路:
数学建模,把具体的实际问题抽象为通用的数学优化问题
算法求解,针对这些优化问题设计高效的算法来求解。
数学建模+算法求解是运筹学解决实际问题的基本步骤,这里,我更愿意将算法类比作汽车引擎,它平常是不被看到的,但是却驱动着车子的前进。同时,这个算法引擎是可以通用的,只要数学模型和原理一致,算法引擎可以应用于不同的行业。
当我们针对实际业务建立了优化模型之后,便可以将建立好的模型直接导入到求解器中,这时候,求解器会智能地选择最适合该模型的算法,给出最优解或可行解。如下图所示:
求解器通常集成了大多数目前最顶级的算法包,并建立了API,可以让算法工程师非常方便的调用。求解器是经过长期打磨的软件产品,其内部有很多加速求解的小技巧,对于一般的整数规划问题而言往往有着不错的效果。这样,我们就可以将更多的精力放在数学建模上,而不用操心求解器内部具体算法的实现,我们也可以把求解器看作是一个有神奇魔法的“黑匣子”。
1 运筹优化求解器国内外发展现状
商业优化求解器的传统三巨头:Gurobi, Cplex和 Xpress,前两家是美国公司,后者成立于英国爱丁堡大学,又被美国公司FICO收购。商业求解器三大厂凭借多年的算法积累和商业经验,在国际市场上占据了超过90%的份额。
开源求解器目前主要有两家:SCIP和HiGHS,SCIP 是德国柏林的ZIB研究院,花了近20年时间及好几代的PhD,开发了开源的求解器 SCIP。HiGHS 目前是爱丁堡大学Julian Hall 教授团队开发的开源求解器,目前是开源求解器中性能最好的。各大求解器在混合整数线性规划问题中的性能排名如下所示:
求解器是数学,运筹学,计算机和软件工程诸多学科的综合运用的结果,这导致求解器的研发是一个大的系统工程,长期稳定的高质量技术投入是研发求解器的必要条件。而欧美等国在求解器领域深耕几十年所形成的技术壁垒,使得他们在求解器研发领域始终保持领先地位。
当然可喜的是近几年来国内对求解器的研发也越来越重视,杉数科技有 COPT,阿里达摩院有 MindOpt, 华为有 OptVerse (天筹),例如 COPT 求解器 目前已经在benchmark测试榜单上 线性规划问题取得第一名,混合整数线性规划取得第二名,为国产求解器的发展做出了卓越的贡献。
2 运筹优化求解器开发技术
运筹优化求解器涉及到的技术非常多,这里主要以线性规划和混合整数线性规划为例子,如下图中所示:
线性规划包括
模型输入模块主要负责各类模型文件的读写,各类不同编程语言的API支持和各类建模工具
预求解(Presolve),预求解可以在模型求解之前通过一些技巧将线性规划模型冗余的变量或者冗余的约束删掉,使得模型变得更好,以便于后续求解的加速
求解,主要是针对稀疏矩阵的分解算法包括 LU 分解算法和 Cholesky 分解算法
单纯形算法,主要包括寻找初始可行解,不可行问题的判断,防止循环的摄动算法等
混合整数线性规划包括
模型输入模块主要负责各类模型文件的读写,各类不同编程语言的API支持和各类建模工具
预求解(Presolve),预求解可以在模型求解之前通过一些技巧将线性规划模型冗余的变量或者冗余的约束删掉,使得模型变得更好,以便于后续求解的加速
初始的LP求解,这块是依赖于LP求解模块
割平面的生成,主要负责生成割平面,主流的有十几种割平面
启发式算法,主要是一些数学启发式算法来快速获取可行解
分支定界,主要是一些节点选择,分支选择,reduced cost fixing,对称性处理等模块。
3 优化求解器开发的难点
优化求解器是一个综合运用 软件工程和运筹优化的产品,兼具良好工程能力和优化理论能力的人较少
优化求解器是一个需要长期稳定投入的产品,非常依赖于算法人员的长期经验
很多实用的优化算法并没有代码,甚至说连算法流程也没有公开,像Gurobi里边的算法大多都没有发表paper,连专利都不写,毕竟是涉及商业机密的事情。后来的开发者只能从零开始,大大增加了难度
学术界大量的paper是在实际中没有用处,Gurobi的研发人员曾说他们每年会复现100篇paper的算法真正可以对求解器有提升的不超过3个算法
综上所述,运筹优化求解器是很多应用问题的技术底座。在全球范围内,商业求解器的市场主导地位主要被 Gurobi、Cplex 和 Xpress 三大巨头垄断。然而,国内也涌现出一些颇具潜力的求解器,如 COPT,MindOpt 和 OptVerse 等
然而,我们也直面了优化求解器开发的一些难点。这个领域需要综合软件工程和运筹优化的专业知识,而且长期稳定的高质量技术投入是不可或缺的。算法人员的经验和长期的积累成为求解器开发的关键因素。同时,开发者面临着从零开始的挑战,因为许多优秀的优化算法并没有公开的代码和流程,增加了开发的难度。
总体而言,运筹优化求解器在解决实际问题中发挥着不可替代的作用,而在其背后的技术和开发过程中却存在着一系列挑战。希望未来国内的优化求解器研发能够不断取得新的突破,为我国在这一领域的发展贡献更多力量。
上一条:Gurobi版本8功能新亮点