杉数求解器COPT 6.5正式发布:MIP求解性能大幅提升,新增Callback功能
杉数求解器最新版本COPT 6.5已正式发布。此次升级的COPT 6.5版本大幅提升了混合整数规划的求解性能,进一步提升了线性规划等求解模块的速度和稳定性,在ASU测评榜上,取得了5项第一、5项第二的成绩。其中线性规划的最优顶点解和最优数值解两个榜单均排名世界第一,MIP榜单排名世界第二。
COPT 6.5新增Callback功能,拓展了求解器的使用场景;改进了indicator和SOS约束功能的底层实现,显著提升其稳定性;在COPT Python接口中新增对广义约束(AND/OR/MAX/MIN/ABS/PWL)的支持。
欢迎您前往杉数官网申请试用COPT最新版本,老用户需重新安装COPT并更新license文件。针对学术用户(以有效学术邮箱申请),我们提供365天可续用的免费试用权限;针对非学术用户,我们提供180天的免费试用权限。
MIP求解性能大幅提升,ASU测评榜排名领先
COPT 6.5版本大幅提升了混合整数规划的求解性能,进一步提升了线性规划等求解模块的速度和稳定性。在ASU测评榜上排名领先,取得了5项世界第一、5项世界第二的成绩。
ASU测评榜是由美国亚利桑那州立大学Hans Mittelmann教授维护的国际权威数学优化软件测评平台,其中选取工业界有代表性的实际问题作为算例,其测评得到求解器业界的一致认可。在线性规划的最优顶点解和最优数值解两个榜单中,COPT 6.5均位列世界第一。
COPT 6.5版本的MIP求解性能大幅提升,在MIP测评榜的3个榜单中均排名世界第二,综合求解性能和第一名差距缩减至一倍左右,也是榜单上唯一的国产求解器。以下是COPT 6.5 MIP求解模块的测评数据:
对于非线性规划问题的求解模块,COPT 6.5取得了3项第一、2项第二的成绩,各模块的测评数据如下所示:
COPT 6.5支持求解的问题类型及最新性能测评结果汇总如下表所示:
注:该表数据来源于美国亚利桑那州立大学Hans Mittelmann 教授维护的国际权威数学优化软件测评平台 http://plato.asu.edu/bench.html 2023年4月7日的测评结果。
针对有着广泛且重要应用的MIP问题,在每一次的版本迭代中,COPT的求解性能都在不断提升,下图为MIPLIB测评集上的性能测评结果,未解出问题数量逐渐减少,加速比逐渐提升。
注:
1. “未解出数量”表示在MIPLIB算例集中,COPT每次更新版本未能解出的问题数量;
2. “加速比”表示相较于V2.0版本,COPT每次更新版本的相对求解速度。
增加Callback功能
Callback(回调)功能是针对混合整数规划问题的高级控制功能,便于用户针对特定问题嵌入自己的算法。Callback功能支持在MIP求解过程中,根据指定触发点,获取中间信息(如:当前最优解、可行解或LP松弛解等)、动态控制MIP求解进程,如:添加惰性约束或用户割平面,以及设置自定义的启发式解等。
以旅行商问题(Travelling Salesman Problem,简称TSP)为例,用户可以调用Callback功能,当找到MIP可行解时,获取当前可行解的信息(判断是否包含子回路),通过添加惰性约束,交互式地消除对应的子回路。
以Python为例,调用Callback功能,简单来说,可概括为以下几个步骤:
1. 构建自定义 Callback 类,并继承 CallbackBase 类;
2. 实现 CallbackBase.callback() 函数;
3. 新建自定义 Callback 实例,并传入用户所需参量;
4. 通过 Model 类的 Model.setCallback() 函数添加 Callback 实例。
关于如何在不同接口中调用Callback功能,可参考《杉数求解器用户手册》中相应章节的介绍以及各API函数说明。访问杉数教学平台即可查看完整TSP案例分析和代码实现,COPT安装包examples目录下也有示例代码(以Python接口为例,文件名为“cb_ex1.py”)。
Python接口新增支持广义约束
COPT的Python接口中新增对广义约束(AND/OR/MAX/MIN/ABS/PWL)的支持,对于目标或约束中含有上述函数的优化问题,用户可以通过调用Model类的相关成员函数,直接添加上述广义约束进行建模和求解,如 Model.addGenConstrMax(y, [x1, x2, x3]),添加⼀条形如 y = max{x1, x2, x3} 的约束到模型中。具体的函数用法可以参考《杉数求解器用户手册》Python API的相关函数说明。