1.3 数学规划求解器
数学规划求解器是一种专门为求解常见的数学规划模型而开发的数学软件。当数学规划模型的变量和约束数目较少时,可以采用手工计算的方式进行求解。例如,对于2个决策变量和2个约束的线性规划模型,可以采用图解法、单纯形法等方法进行求解。但是实际问题一般规模较大,其对应的数学规划模型往往含有大量的决策变量和约束,少则成百上千,多则几千万甚至几亿。针对这些大规模的模型,手工求解不再适用,借助数学规划求解器进行求解就成了主要的方法。目前已有的数学规划求解器主要包括两类:开源求解器和商业求解器。开源的数学规划求解器有SCIP、HiGHS、OR-Tools、COIN-OR Linear Programming(CLP)、Soplex、Google Linear Optimization Package(GLOP)、GNU Linear Programming Kit(GLPK)等;商业数学规划求解器有COPT、Gurobi、CPLEX、Mosek、MindOpt、Xpress、LINGO、BARON等。各种求解器可以求解的数学规划模型种类有所不同,并且在求解效率上也有一定差别。熟练掌握数学规划求解器的使用可以为后续章节的学习打下坚实的基础。本书主要以COPT和Gurobi两款求解器为例来展示各章所涉及模型的编程实现。本书第III部分和第IV部分将分别详细地介绍COPT和Gurobi的使用方法。
杉数求解器COPT是由杉数科技独立自主研发的高效数学规划求解器软件,是首个国产专业求解器,其性能和稳定性在国内外同类竞争者中名列前茅。成书时的COPT 7.1版本支持求解多种数学规划模型,包括混合整数规划、线性规划、二次规划、二阶锥规划、指数锥和半定规划等。COPT支持Windows、Linux和MacOS等主流操作系统,以及X86-64、ARM64、龙芯、英伟达和国产GPU等多种硬件架构。COPT提供了高效易用的Python、C++,C#和Java等面向对象的建模接口和C语言接口。此外,用户也可以通过多种第三方建模工具,如Julia、AMPL、GAMS、Pyomo、PuLP、CVXPY、MATLAB和北太天元等调用COPT。用户可以访问杉数求解器官方网站www.shanshu.ai/copt申请免费试用以及了解COPT的最新功能和研发进展。如在使用COPT过程中遇到问题,请查阅参考杉数求解器用户手册[39]或联系coptsupport@shanshu.ai获取技术支持。
Gurobi是一款多功能、高性能的新一代大规模数学规划求解器,它由美国的Gurobi Optimization公司开发。根据独立第三方优化器评估报告,Gurobi性能优越,在同类大规模优化器的竞争者中处于领先地位。2008年,顾宗浩(Zonghao Gu)、爱德华·罗斯伯格(Edward Rothberg)和罗伯特·比克斯比(Robert Bixby)共同创立了Gurobi。Gurobi的名称正是来源于三位创立者姓氏的前两个字母。Gurobi是全局优化器,支持的模型类型包括连续和混合整数线性规划,连续和混合整数二阶锥规划,二次凸目标或约束的连续和混合整数模型,二次非凸(双线性、二次等式约束等)目标或约束的连续和混合整数模型,含有除式、范数、对数、指数、三角函数、高阶多项式等形式的非线性规划,含有分段线性目标和约束、绝对值、最大值、最小值、AND、OR、INDICATOR逻辑条件的模型等。Gurobi支持多种平台,包括Windows、Linux、ARM-Linux、MacOS和国产操作系统等,并且支持C、C++、Java、Python、.Net、MATLAB和R等编程接口。
COPT和Gurobi都可以为学校教师和学生免费提供使用许可,符合条件的用户只需到官方网站进行申请即可。
[1]数学优化还可以根据决策变量的类型、目标函数和约束条件的类型、参数的类型(确定的或随机的)等来进行划分。
[2]孙小玲等《中国数学规划新近进展及展望》,源自中国运筹学会(ORSC)官网。
[3]半定规划的另一种定义见文献[16]。