google/or-tools
GitHub: google/or-tools
Google 开源的组合优化软件套件,提供约束规划、线性规划、车辆路径、图算法等多种求解器,用于高效解决物流调度、排班排产、资源分配等复杂优化问题。
Stars: 13587 | Forks: 2406
# OR-Tools - Google 优化工具
[](https://pypi.org/project/ortools/)
[](https://pypi.org/project/ortools/#files)
\
[](https://www.nuget.org/packages/Google.OrTools)
[](https://www.nuget.org/packages/Google.OrTools)
\
[](https://mvnrepository.com/artifact/com.google.ortools/ortools-java)
\
[](https://discord.gg/ENkQrdf)
Google 的组合优化软件套件。
## 目录
* [关于 OR-Tools](#about)
* [代码地图](#codemap)
* [安装说明](#installation)
* [快速入门](#quick-start)
* [文档](#documentation)
* [贡献](#contributing)
* [开源许可证](#license)
## 关于 OR-Tools
Google 优化工具(又称 OR-Tools)是一个开源、快速且可移植的软件套件,用于解决组合优化问题。
该套件包含:
* 两个约束规划求解器(CP* 和 CP-SAT);
* 两个线性规划求解器(Glop 和 PDLP);
* 针对商业及其他开源求解器的封装,包括混合整数求解器;
* 装箱和背包算法;
* 旅行商问题和车辆路径问题的算法;
* 图算法(最短路径、最小费用流、最大流、线性求和分配)。
我们使用 C++ 编写 OR-Tools,但也提供了 Python、C# 和 Java 的封装。
## 代码地图
本软件套件由以下组件构成:
* [Makefile](Makefile) 基于
[GNU Make](https://www.gnu.org/software/make/manual/make.html) 构建的顶级文件。
* [makefiles](makefiles) 辅助 Make 文件、CI 和构建系统文档。
* [CMakeLists.txt](CMakeLists.txt) 基于
[CMake](https://cmake.org/cmake/help/latest/) 构建的顶级文件。
* [cmake](cmake) 辅助 CMake 文件、CI 和构建系统文档。
* [WORKSPACE](WORKSPACE) 基于
[Bazel](https://bazel.build/start/bazel-intro) 构建的顶级文件。
* [bazel](bazel) 辅助 Bazel 文件、CI 和构建系统文档。
* [ortools](ortools) 源代码根目录。
* [base](ortools/base) 基础工具。
* [algorithms](ortools/algorithms) 基础算法。
* [samples](ortools/algorithms/samples) 精心制作的示例。
* [graph](ortools/graph) 图算法。
* [samples](ortools/graph/samples) 精心制作的示例。
* [linear_solver](ortools/linear_solver) 线性求解器封装。
* [samples](ortools/linear_solver/samples) 精心制作的示例。
* [glop](ortools/glop) 基于单纯形法的线性规划求解器。
* [samples](ortools/glop/samples) 精心制作的示例。
* [pdlp](ortools/pdlp) 一阶线性规划求解器。
* [samples](ortools/pdlp/samples) 精心制作的示例。
* [lp_data](ortools/lp_data) 线性模型的数据结构。
* [constraint_solver](ortools/constraint_solver) 约束和路径规划
求解器。
* [docs](ortools/constraint_solver/docs) 组件文档。
* [samples](ortools/constraint_solver/samples) 精心制作的示例。
* [sat](ortools/sat) SAT 求解器。
* [docs](ortools/sat/docs) 组件文档。
* [samples](ortools/sat/samples) 精心制作的示例。
* [bop](ortools/bop) 基于 SAT 的布尔求解器。
* [util](ortools/util) 约束求解器所需的工具
* [examples](examples) 所有示例的根目录。
* [contrib](examples/contrib) 社区提供的示例。
* [cpp](examples/cpp) C++ 示例。
* [dotnet](examples/dotnet) .Net 示例。
* [java](examples/java) Java 示例。
* [python](examples/python) Python 示例。
* [notebook](examples/notebook) Jupyter/IPython 笔记本。
* [flatzinc](examples/flatzinc) FlatZinc 示例。
* [tools](tools) 交付工具(例如 Windows GNU 二进制文件、脚本、发布用 Docker)
## 安装说明
本软件套件已在以下环境中测试:
* Ubuntu 18.04 LTS 及更高版本(64 位);
* 搭载 Xcode 9.x 的 Apple macOS Mojave(64 位);
* 搭配 Visual Studio 2022 的 Microsoft Windows(64 位)。
OR-Tools 目前使用 Makefile 构建,但也提供 Bazel 和 CMake 支持。
有关安装说明(源代码和二进制文件),请访问
https://developers.google.com/optimization/introduction/installing。
### 使用 Make 从源代码构建(旧版)
我们提供基于 Make 的构建。
请查阅 [Make 构建说明](makefiles/README.md)。 ### 使用 CMake 从源代码构建 我们提供基于 CMake 的构建。
请查阅 [CMake 构建说明](cmake/README.md)。 ### 使用 Bazel 从源代码构建 我们提供基于 Bazel 的构建。
请查阅 [Bazel 构建说明](bazel/README.md)。 ## 快速入门 学习如何使用 OR-Tools 的最佳方式是遵循我们开发者指南中的教程: https://developers.google.com/optimization/introduction/get_started 如果您想通过代码示例学习,请查看 [examples](examples) 目录中的示例。 ## 文档 OR-Tools 的完整文档可在以下网址找到: https://developers.google.com/optimization/ ## 贡献 [CONTRIBUTING.md](CONTRIBUTING.md) 文件包含了在发送任何 Pull Request (PR) 之前如何提交贡献者许可协议的说明。 当然,如果您是该项目的新手,通常最好在发送第一个 PR 之前先讨论任何提议并达成共识。 ## 开源许可证 OR-Tools 软件套件根据 Apache License 2.0 的条款授权。
有关更多信息,请参阅 [LICENSE](LICENSE)。
请查阅 [Make 构建说明](makefiles/README.md)。 ### 使用 CMake 从源代码构建 我们提供基于 CMake 的构建。
请查阅 [CMake 构建说明](cmake/README.md)。 ### 使用 Bazel 从源代码构建 我们提供基于 Bazel 的构建。
请查阅 [Bazel 构建说明](bazel/README.md)。 ## 快速入门 学习如何使用 OR-Tools 的最佳方式是遵循我们开发者指南中的教程: https://developers.google.com/optimization/introduction/get_started 如果您想通过代码示例学习,请查看 [examples](examples) 目录中的示例。 ## 文档 OR-Tools 的完整文档可在以下网址找到: https://developers.google.com/optimization/ ## 贡献 [CONTRIBUTING.md](CONTRIBUTING.md) 文件包含了在发送任何 Pull Request (PR) 之前如何提交贡献者许可协议的说明。 当然,如果您是该项目的新手,通常最好在发送第一个 PR 之前先讨论任何提议并达成共识。 ## 开源许可证 OR-Tools 软件套件根据 Apache License 2.0 的条款授权。
有关更多信息,请参阅 [LICENSE](LICENSE)。
标签:Bash脚本, C++, CP-SAT, Glop, JS文件枚举, PDLP, Python, TSP, VRP, 优化工具, 图算法, 开源库, 搜索引擎爬虫, 数据擦除, 整数规划, 旅行商问题, 无后门, 最大流, 最小费用流, 最短路径, 约束规划, 线性规划, 组合优化, 背包问题, 装箱算法, 谷歌, 车辆路径问题, 运筹学, 逆向工具