杉数求解器COPT 6.5正式发布!
杉数求解器COPT 6.5亮点
混合整数规划求解性能大幅提升,ASU测评榜排名领先
新增Callback功能
COPT Python接口新增支持广义约束
杉数求解器最新版本COPT 6.5已正式发布。此次升级的COPT 6.5版本大幅提升了混合整数规划的求解性能,进一步提升了线性规划等求解模块的速度和稳定性,在ASU测评榜上,取得了5项第一、5项第二的成绩。其中线性规划的最优顶点解和最优数值解两个榜单均排名世界第一,MIP榜单排名世界第二。
COPT 6.5新增Callback功能,拓展了求解器的使用场景;改进了indicator和SOS约束功能的底层实现,显著提升其稳定性;在COPT Python接口中新增对广义约束(AND/OR/MAX/MIN/ABS/PWL)的支持。
欢迎您前往杉数官网 https://www.shanshu.ai/copt 申请试用COPT最新版本,老用户需重新安装COPT并更新license文件。针对学术用户(以有效学术邮箱申请),我们提供365天可续用的免费试用权限;针对非学术用户,我们提供180天的免费试用权限。
✦ +
MIP求解性能大幅提升,ASU测评榜排名领先
COPT 6.5版本大幅提升了混合整数规划的求解性能,进一步提升了线性规划等求解模块的速度和稳定性。在ASU测评榜上排名领先,取得了5项世界第一、5项世界第二的成绩。
ASU测评榜是由美国亚利桑那州立大学Hans Mittelmann教授维护的国际权威数学优化软件测评平台,其中选取工业界有代表性的实际问题作为算例,其测评得到求解器业界的一致认可。在线性规划的最优顶点解和最优数值解两个榜单中,COPT 6.5均位列世界第一。
.png)
LP-最优顶点解榜单:COPT 6.5排名世界第一
.png)
LP-最优数值解榜单:COPT 6.5排名世界第一
COPT 6.5版本的MIP求解性能大幅提升,在MIP测评榜的3个榜单中均排名世界第二,综合求解性能和第一名差距缩减至一倍左右,也是榜单上唯一的国产求解器。以下是COPT 6.5 MIP求解模块的测评数据:
.png)
对于非线性规划问题的求解模块,COPT 6.5取得了3项第一、2项第二的成绩,各模块的测评数据如下所示:
.png)
COPT 6.5支持求解的问题类型及最新性能测评结果汇总如下表所示:
.png)
注:该表数据来源于美国亚利桑那州立大学Hans Mittelmann 教授维护的国际权威数学优化软件测评平台 http://plato.asu.edu/bench.html 2023年4月7日的测评结果。
针对有着广泛且重要应用的MIP问题,在每一次的版本迭代中,COPT的求解性能都在不断提升,下图为MIPLIB测评集上的性能测评结果,未解出问题数量逐渐减少,加速比逐渐提升。我们也将持续努力提升各求解模块的性能,欢迎大家保持关注!
.png)
注:
1. “未解出数量”表示在MIPLIB算例集中,COPT每次更新版本未能解出的问题数量;
2. “加速比”表示相较于V2.0版本,COPT每次更新版本的相对求解速度。
✦ +
Callback功能
Callback(回调)功能是针对混合整数规划问题的高级控制功能,便于用户针对特定问题嵌入自己的算法。Callback功能支持在MIP求解过程中,根据指定触发点,获取中间信息(如:当前最优解、可行解或LP松弛解等)、动态控制MIP求解进程,如:添加惰性约束或用户割平面,以及设置自定义的启发式解等。
以旅行商问题(Travelling Salesman Problem,简称TSP)为例,用户可以调用Callback功能,当找到MIP可行解时,获取当前可行解的信息(判断是否包含子回路),通过添加惰性约束,交互式地消除对应的子回路。
.png)
旅行商问题 (TSP):消除子环约束数量指数级
.png)
MIP求解中添加Lazy Constraint,找到最优路径
以Python为例,调用Callback功能,简单来说,可概括为以下几个步骤:
1. 构建自定义 Callback 类,并继承 CallbackBase 类;
2. 实现 CallbackBase.callback() 函数;
3. 新建自定义 Callback 实例,并传入用户所需参量;
4. 通过 Model 类的 Model.setCallback() 函数添加 Callback 实例。
.png)
.png)
TSP调用Callback程序片段
关于如何在不同接口中调用Callback功能,可参考《杉数求解器用户手册》中相应章节的介绍以及各API函数说明。访问杉数教学平台 https://coridm.d2d.ai 即可查看完整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的相关函数说明。
杉数求解器COPT简介
COPT 6.5可用于高效、稳定地求解线性规划、混合整数规划、(混合整数)二阶锥规划、半定规划、(混合整数)凸二次规划和(混合整数)凸二次约束规划问题。此外,COPT还提供丰富友好的用户辅助功能,主要包括:
1. 针对不可行问题的分析功能:计算不可行模型的最小冲突集(Irreducible Inconsistent Subsystem,简称IIS),计算可行化松弛(Feasibility Relaxation,简称FeasRelax);
2. 针对MIP问题的高级控制功能:设置MIP初始解、Callback功能;
3. 针对优化参数的自动调优工具:COPT Tuner;
4. COPT Python接口支持矩阵建模方式和广义约束等, 支持通过pip安装和更新coptpy,提供的coptpy-stubs支持type hints。
COPT支持所有主流操作系统,如Windows、MacOS、Linux (包括苹果自研芯片和arm64芯片)。用户可以从多种编程语言及建模工具中使用COPT,包括基于矩阵和向量数据的C语言接口,面向对象的Python、C++、C#、Java接口,以及Julia、AIMMS、AMPL、GAMS、Pyomo、PuLP、CVXPY等第三方建模工具接口。
此外,COPT支持多种部署方式。除了个人电脑、服务器之外,我们还提供浮动授权和计算集群等部署方式,方便学校实验室和公司生产环境等场景的使用。欢迎通过 https://shanshu.ai/copt 申请免费的个人试用版本。如需试用服务器版、浮动授权或计算集群版本,请与我们取得联系coptsales@shanshu.ai。
如果您在安装或使用COPT的过程中遇到任何问题,欢迎扫描下方二维码(或用QQ搜索群:811049651)加入杉数求解器COPT QQ技术交流群提问和交流,群内的技术专家会进行解答,群内也会定期发布COPT的最新动态。

