OR-Tools v9.12 版本深度解析:优化求解引擎的重大升级

OR-Tools v9.12 版本深度解析:优化求解引擎的重大升级

or-tools Google's Operations Research tools: or-tools 项目地址: https://gitcode.com/gh_mirrors/or/or-tools

项目简介

OR-Tools 是 Google 开发的开源优化工具套件,为组合优化问题提供高效的求解方案。它包含了约束规划、线性规划、混合整数规划以及图算法等多种求解器,广泛应用于物流调度、排产排程、路径规划等场景。该项目支持多种编程语言接口,包括 C++、Python、Java 和 .NET 等。

平台支持更新

本次 v9.12 版本在平台支持方面做出了重要调整:

  1. Python 支持:新增了对 Python 3.13 的支持,同时宣布这将是最后一个支持 Python 3.8 的版本。开发者需要提前规划升级路径,确保未来版本的兼容性。

  2. Java 支持:这将是最后一个支持 Java 1.8 的版本,标志着 OR-Tools 将逐步转向支持更高版本的 Java 平台。

  3. 新增 musl Linux 平台支持:增加了 musl Linux 的 wheel 包,为 Alpine Linux 等使用 musl libc 的轻量级 Linux 发行版提供了更好的支持。

构建系统改进

v9.12 版本在构建系统方面进行了重大重构:

  1. 依赖库分离:现在 protobuf、abseil、re2 和 highs 等依赖库都作为独立的共享库存在,提高了模块化程度。

  2. Windows DLL 支持:Windows 平台的库现在采用 DLL 格式,这有助于减少最终应用程序的体积,并提高运行时内存效率。

图算法优化

本次版本对图算法部分进行了显著重构:

  • 移除了旧的图类实现(EbertGraph、StarGraph 等),推荐使用 ReverseArcListGraph 和 ListGraph 替代。新实现不仅保持了 API 的兼容性,还提供了更好的性能表现。

CP-SAT 求解器增强

约束规划与布尔可满足性求解器(CP-SAT)在本版本中获得了多项改进:

  1. 二维无重叠约束优化:对 no_overlap_2d 层进行了全面改进,包括传播算法、预处理和切割平面等方面。

  2. 搜索启发式:新增了 RandomHalfBranching 搜索启发式策略,有助于在复杂问题中找到更好的解。

  3. 调度优化

    • 改进了累积约束的传播和切割
    • 新增了调度示例代码
    • 重写了预处理阶段的提示转换逻辑,确保可行和完整的提示在预处理后得以保留
  4. 表达式优化

    • 重写并优化了 Python 层的线性表达式处理
    • 在 Automaton 和 Element 约束中支持单变量仿射表达式
  5. 并行计算改进

    • 优化了共享树工作线程
    • 实现了工作线程与任务的亲和性调度
  6. 局部搜索加速:显著提升了大规模邻域搜索(LNS)的性能。

线性求解器更新

线性求解器部分新增了重要功能:

  • 在 Java、Python 和 .NET 的 MPSolver 中增加了 WriteModelToMpsFile 方法,方便用户将模型导出为标准的 MPS 文件格式,便于与其他优化工具交互。

MathOpt 模块扩展

数学优化模块迎来了重要更新:

  • 新增了对 Xpress 求解器的支持,为用户提供了更多商业求解器选择。

模型构建器改进

模型构建器部分也有显著提升:

  • 优化了 Python 表达式的处理速度
  • 新增了对 HiGHS 求解器的支持

SCIP 求解器过渡

关于 SCIP 求解器的构建方式:

  • 这可能是最后一个包含 glop 的 SCIP 构建版本
  • 未来将转向使用 SOPLEX 构建的 SCIP 版本
  • Bazel 构建系统已经完成了这一过渡

技术影响分析

OR-Tools v9.12 的发布在多个方面对优化计算领域产生了积极影响:

  1. 性能提升:通过算法优化和并行计算改进,特别是 CP-SAT 求解器的多项增强,使得处理大规模复杂优化问题的效率显著提高。

  2. 生态扩展:新增的 Xpress 和 HiGHS 支持为用户提供了更多选择,特别是需要商业级求解器的企业用户。

  3. 开发者体验:Python 表达式的优化和更完善的调度示例降低了使用门槛,帮助开发者更快上手。

  4. 部署灵活性:依赖库的分离和 Windows DLL 支持使得集成到现有系统更加灵活,特别是在资源受限的环境中。

升级建议

对于现有用户,升级到 v9.12 版本时需要注意:

  1. 如果使用旧的图类 API,需要迁移到新的 ReverseArcListGraph 或 ListGraph。

  2. Python 3.8 和 Java 1.8 用户应开始规划升级路径,以保持未来版本的兼容性。

  3. SCIP 用户需要注意未来版本将切换到 SOPLEX 构建,可能需要调整相关配置。

  4. 新加入的调度示例代码值得研究,可以帮助更好地利用 CP-SAT 求解器的增强功能。

总结

OR-Tools v9.12 版本通过多项核心优化和功能扩展,进一步巩固了其作为开源优化工具领导者的地位。从算法到底层架构的多方面改进,使得这一版本在处理复杂优化问题时更加高效和灵活。特别是 CP-SAT 求解器的持续增强,使其在工业级应用场景中的表现更加出色。对于任何涉及组合优化或数学规划的项目,OR-Tools v9.12 都值得认真考虑作为技术解决方案的一部分。

or-tools Google's Operations Research tools: or-tools 项目地址: https://gitcode.com/gh_mirrors/or/or-tools

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宫蔚祺Sabrina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值