OR-Tools is a combinatorial optimization solver suite that provides constraint programming, linear programming, and specialized algorithms for routing and graph problems.
The suite addresses the challenge of solving computationally hard optimization problems across diverse domains. It offers two constraint programming solvers (CP and CP-SAT), two linear programming solvers (Glop and PDLP), wrappers for commercial and open-source solvers including mixed-integer solvers, and specialized algorithms for bin packing, knapsack problems, traveling salesman problems, and vehicle routing. The tool also includes graph algorithms for shortest paths, minimum cost flow, maximum flow, and linear sum assignment. The core implementation is written in C++ for performance and portability, with language bindings for Python, C#, and Java.
Adoption suits teams working on logistics, scheduling, resource allocation, or any combinatorial optimization problem where exact or near-optimal solutions matter. The breadth of solvers means you can often find an appropriate algorithm without integrating multiple libraries. The multiple build system support (Make, CMake, and Bazel) accommodates different project infrastructures. The extensive example collection across C++, Python, Java, C#, and FlatZinc demonstrates how to apply the solvers to concrete problems.
Development activity shows consistent investment in solver capabilities and language support. The codebase maintains careful organization with dedicated modules for each solver type and algorithm family, each accompanied by sample implementations. The project provides comprehensive documentation within component directories and maintains examples across multiple programming languages and formats including Jupyter notebooks. Build system infrastructure receives active attention with separate configuration files and CI documentation for each supported build method.