Gurobi版本9介绍
和以往一样,Gurobi 每个新版本都有突破,都有很多新亮点。但Gurobi 版本9的新亮点尤其明显。Gurobi 版本9是Gurobi 突破传统线性和凸二次混合整数规划,向非凸非线性优化迈出的最重要第一步。新版本中的非凸非线性优化表现在几个方面。
第一, 对于二次规划,在增加了对双线性形式(bilinear)支持之后,现在Gurobi 可以支持任何形式的二次型约束和目标,不论是否是半正定。这个意义十分重大。以往我们有很多潜在客户,主要在石油化工、电力、钢铁冶金等领域,存在理化反应、物料平衡等场景,发给我们很多模型都因为不是半正定而要么无法求解,要么需要采取很多人工线性化方法进行转换,增加了落地难度。现在就不存在这个问题,可以直接求解。
第二, 增加了一类新的约束表达形式,Gurobi 称之为广义函数约束。函数形式可以是高阶多项式、对数、指数、三角函数等非线性函数,那么Gurobi 会对这些函数自动分段线性化进行近似,用户可以通过参数来平衡近似的精度和速度。这样我们就允许在传统的线性和二次型模型中看到这些非线性函数,大大扩展了Gurobi求解器的适用范围,而且这些结果也具有全局最优性。
我们相信这些非凸非线性扩展只是 Gurobi 突破自己的第一步,后续还会在求解速度、非线性方面有进一步的扩展。
除了这些非凸非线性扩展之外,另外一个显著的提升发生在对于Gurobi 运算服务架构的扩展。随着“中台”概念的兴起,越来越多企业希望将优化资源集中管理,成为服务企业各种应用的智慧中间层。因此Gurobi 新版本扩展了运算服务器中的集群管理功能,包括
允许建立企业运算集群,并提供可视化(网页化)集中管理允许同步和异步优化。以往启动一个优化任务,客户端需要一直等待服务器的运行,直到服务器优化结束返回优化结果给客户端为止。现在允许批量化发送优化任务,然后客户端可以做其他事情,过段时间之后再来取优化结果。客户端的资源得到充分利用。
除此之外,Gurobi 新版本在操作上也有很多提升
增加了Python 对于矩阵操作的接口对于混合整数模型增加了多场景的实验分析,观察特定数据的敏感度丰富了变量和约束的下标操作支持优化过程中间输出结果到文件中等等。
Gurobi 版本9 在很多方面突破了自己原来的版本功能,在求解问题范围、优化性能、系统架构、易用性上都有显著提高。
Gurobi 版本9在传统的线性二次型混合整数规划方面有哪些进展?
Gurobi 9 在扩展功能的同时,没有忽略传统优化功能的性能提升。按照Gurobi 研发团队的反馈,混合整数线性问题的速度提升了18% 到26%,混合整数二次型问题提升了24%,内点法和单纯形法提升了7% 到11%。
这些提升主要得益于引入了一些新切平面、启发式方法等技术。
Gurobi 在中国哪些领域有应用?
Gurobi 在中国已经不再是陌生名字,在各行各业的领军企业中得到了广泛的应用,包括石油石化、钢铁冶金、物流快递、电商仓储、生产制造、金融投资、媒体管理、网络通讯、航空运输、电力市场等等。任何希望引入求解器进行业务优化的企业,都会想到Gurobi 优化器。即便有些企业希望开发自己的优化算法,也会将Gurobi 的结果和性能作为标杆,来改进自己的求解器。
优化算法是很多企业希望取得竞争优势的秘密武器和突破口,因此绝大部分企业在公开场合很少分享最核心算法和做法,但我们知道一些领军企业在这方面的投入都是不小的。
Gurobi 的许可设置如何适应不同的商业应用场合,例如个人开发,企业应用,集群计算,或者私有云环境等?
Gurobi 对于学术许可,提供了单用户许可形式,仅供老师和学生个人科研和教学使用。如果在院系局域网范围内很多学生同时使用,还可以申请院系许可,每个学生就不必单独申请。
但对于商业许可,则提供了多种许可形式,满足个人开发、企业应用、集群计算和私有云管理的需要。一般选择许可类型时,需要区分以下几种场景
(1)个人开发和个人计算:使用范围一般局限在明确的个体和机器上。(2)企业应用:一般需要支持B/S, C/S 系统架构,需要部署在一台中央服务器上,终端用户不需要了解优化器的细节,只需要在客户端上点击按钮。(3)集群和私有云管理:支持企业内部各种平台、各种语言、各种属性(开发、测试、备份、部署)的客户端机器的集中优化资源管理。客户端本身需要安装Gurobi 软件,但计算任务则汇总到中央优化资源上。(4)分布式计算:需要将一个复杂的模型,从一台机器上发布到多台机器上(往往是几十台),一起帮助计算。我们会根据客户实际应用场景,提供合适的许可类型。
上一条:GUROBI新一代大规模优化器
下一条:Gurobi求解日志解读