OR-Tools v9.12 版本深度解析:优化求解引擎的重大升级
or-tools Google's Operations Research tools: 项目地址: https://gitcode.com/gh_mirrors/or/or-tools
项目简介
OR-Tools 是 Google 开发的开源优化工具套件,为组合优化问题提供高效的求解方案。它包含了约束规划、线性规划、混合整数规划以及图算法等多种求解器,广泛应用于物流调度、排产排程、路径规划等场景。该项目支持多种编程语言接口,包括 C++、Python、Java 和 .NET 等。
平台支持更新
本次 v9.12 版本在平台支持方面做出了重要调整:
-
Python 支持:新增了对 Python 3.13 的支持,同时宣布这将是最后一个支持 Python 3.8 的版本。开发者需要提前规划升级路径,确保未来版本的兼容性。
-
Java 支持:这将是最后一个支持 Java 1.8 的版本,标志着 OR-Tools 将逐步转向支持更高版本的 Java 平台。
-
新增 musl Linux 平台支持:增加了 musl Linux 的 wheel 包,为 Alpine Linux 等使用 musl libc 的轻量级 Linux 发行版提供了更好的支持。
构建系统改进
v9.12 版本在构建系统方面进行了重大重构:
-
依赖库分离:现在 protobuf、abseil、re2 和 highs 等依赖库都作为独立的共享库存在,提高了模块化程度。
-
Windows DLL 支持:Windows 平台的库现在采用 DLL 格式,这有助于减少最终应用程序的体积,并提高运行时内存效率。
图算法优化
本次版本对图算法部分进行了显著重构:
- 移除了旧的图类实现(EbertGraph、StarGraph 等),推荐使用 ReverseArcListGraph 和 ListGraph 替代。新实现不仅保持了 API 的兼容性,还提供了更好的性能表现。
CP-SAT 求解器增强
约束规划与布尔可满足性求解器(CP-SAT)在本版本中获得了多项改进:
-
二维无重叠约束优化:对 no_overlap_2d 层进行了全面改进,包括传播算法、预处理和切割平面等方面。
-
搜索启发式:新增了 RandomHalfBranching 搜索启发式策略,有助于在复杂问题中找到更好的解。
-
调度优化:
- 改进了累积约束的传播和切割
- 新增了调度示例代码
- 重写了预处理阶段的提示转换逻辑,确保可行和完整的提示在预处理后得以保留
-
表达式优化:
- 重写并优化了 Python 层的线性表达式处理
- 在 Automaton 和 Element 约束中支持单变量仿射表达式
-
并行计算改进:
- 优化了共享树工作线程
- 实现了工作线程与任务的亲和性调度
-
局部搜索加速:显著提升了大规模邻域搜索(LNS)的性能。
线性求解器更新
线性求解器部分新增了重要功能:
- 在 Java、Python 和 .NET 的 MPSolver 中增加了 WriteModelToMpsFile 方法,方便用户将模型导出为标准的 MPS 文件格式,便于与其他优化工具交互。
MathOpt 模块扩展
数学优化模块迎来了重要更新:
- 新增了对 Xpress 求解器的支持,为用户提供了更多商业求解器选择。
模型构建器改进
模型构建器部分也有显著提升:
- 优化了 Python 表达式的处理速度
- 新增了对 HiGHS 求解器的支持
SCIP 求解器过渡
关于 SCIP 求解器的构建方式:
- 这可能是最后一个包含 glop 的 SCIP 构建版本
- 未来将转向使用 SOPLEX 构建的 SCIP 版本
- Bazel 构建系统已经完成了这一过渡
技术影响分析
OR-Tools v9.12 的发布在多个方面对优化计算领域产生了积极影响:
-
性能提升:通过算法优化和并行计算改进,特别是 CP-SAT 求解器的多项增强,使得处理大规模复杂优化问题的效率显著提高。
-
生态扩展:新增的 Xpress 和 HiGHS 支持为用户提供了更多选择,特别是需要商业级求解器的企业用户。
-
开发者体验:Python 表达式的优化和更完善的调度示例降低了使用门槛,帮助开发者更快上手。
-
部署灵活性:依赖库的分离和 Windows DLL 支持使得集成到现有系统更加灵活,特别是在资源受限的环境中。
升级建议
对于现有用户,升级到 v9.12 版本时需要注意:
-
如果使用旧的图类 API,需要迁移到新的 ReverseArcListGraph 或 ListGraph。
-
Python 3.8 和 Java 1.8 用户应开始规划升级路径,以保持未来版本的兼容性。
-
SCIP 用户需要注意未来版本将切换到 SOPLEX 构建,可能需要调整相关配置。
-
新加入的调度示例代码值得研究,可以帮助更好地利用 CP-SAT 求解器的增强功能。
总结
OR-Tools v9.12 版本通过多项核心优化和功能扩展,进一步巩固了其作为开源优化工具领导者的地位。从算法到底层架构的多方面改进,使得这一版本在处理复杂优化问题时更加高效和灵活。特别是 CP-SAT 求解器的持续增强,使其在工业级应用场景中的表现更加出色。对于任何涉及组合优化或数学规划的项目,OR-Tools v9.12 都值得认真考虑作为技术解决方案的一部分。
or-tools Google's Operations Research tools: 项目地址: https://gitcode.com/gh_mirrors/or/or-tools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考