OR-Tools v9.13 版本发布:优化求解器性能与跨平台支持
OR-Tools 是 Google 开源的一款强大的优化工具集,它为开发者提供了解决复杂优化问题的能力,包括约束规划、线性规划、混合整数规划以及车辆路径规划等多种算法。该工具支持多种编程语言,包括 C++、Python、Java 和 .NET,并能在多种操作系统上运行。
平台支持更新
OR-Tools v9.13 版本对平台支持进行了重要调整。首先,该版本不再支持 Python 3.8 和 .NET 6.0,转而全面支持 .NET 8.0 作为目标框架。对于 Java 平台,团队正在考虑将最低支持版本从 Java 8 升级到 Java 11。此外,新版本增加了对 Fedora 42 操作系统的支持。
这些变化反映了 OR-Tools 团队紧跟技术发展趋势的决心,通过放弃过时的技术栈来减少维护负担,同时确保用户能够使用最新的平台特性。
依赖项升级
在依赖项方面,v9.13 版本进行了多项重要更新:
- 升级到 abseil-cpp 20250512.0 版本
- 采用 Protobuf v31.0
- 集成 HiGHS v1.10.0 线性规划求解器
- 使用 SCIP v922 优化求解器
对于 Python 用户,新版本增加了 typing-extensions 依赖项,这将改善类型提示的支持,使代码更加健壮和易于维护。
CP-SAT 求解器增强
CP-SAT(约束规划-可满足性)求解器在本版本中获得了显著改进:
-
二维无重叠约束优化:在预处理、传播和切割方面都有所增强,能够更高效地处理空间布局类问题。
-
可行性跳跃和违反局部搜索加速:这些改进使得求解器在寻找可行解时更加迅速,特别是对于复杂约束系统。
-
前驱关系检测与利用:求解器现在能够自动检测、存储并利用变量之间的前驱关系(形式为 lb ≤ a * x + b * y ≤ ub),这些信息被用于预处理、传播和切割阶段,显著提升了求解效率。
-
路由切割改进:增强了检测节点间转移和容量约束的能力,这对于车辆路径规划等应用特别有价值。
-
调度切割优化:改进了对调度问题的处理能力。
-
多工作线程间的子句共享:在共享树和组合搜索策略中,工作线程现在能更有效地共享子句信息,提高了并行求解效率。
-
文件解析支持:sat_runner 现在支持解析 .pb 和 .wbo 格式的文件。
-
Python 接口改进:更好地支持浮点数系数和边界条件,使 Python 接口更加灵活和易用。
技术影响与建议
对于现有用户,升级到 v9.13 版本将带来明显的性能提升,特别是在处理复杂约束系统和调度问题时。开发者应注意平台支持的变化,特别是 Python 和 .NET 版本要求的调整。
对于新用户,这个版本提供了更加强大和稳定的求解能力,是开始使用 OR-Tools 的良好时机。CP-SAT 求解器的改进使其成为解决复杂组合优化问题的首选工具。
OR-Tools 团队持续关注求解器核心算法的优化和用户体验的提升,v9.13 版本再次证明了这一点。无论是学术研究还是工业应用,这个版本都值得考虑采用。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0214
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0138
uni-appA cross-platform framework using Vue.jsJavaScript08
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
SwanLab⚡️SwanLab - an open-source, modern-design AI training tracking and visualization tool. Supports Cloud / Self-hosted use. Integrated with PyTorch / Transformers / LLaMA Factory / veRL/ Swift / Ultralytics / MMEngine / Keras etc.Python00
tiny-universe《大模型白盒子构建指南》:一个全手搓的Tiny-UniverseJupyter Notebook03