Google Optimization Tools (OR-Tools) is a fast and portable software suite for solving combinatorial optimization problems. The suite contains:
- A constraint programming solver.
- A simple and unified interface to several linear programming and mixed integer programming solvers, including CBC, CLP, GLOP, GLPK, Gurobi, CPLEX, and SCIP.
- Graph algorithms (shortest paths, min cost flow, max flow, linear sum assignment).
- Algorithms for the Traveling Salesman Problem and Vehicle Routing Problem.
- Bin packing and knapsack algorithms.
Google created OR-Tools in C++, but you can also use it with Python, C#, or Java.
For instructions on installing OR-Tools for Python, see Installing OR-Tools.
To install OR-Tools for C++, Java, or C#, you'll need to download one of the installation packages shown below.
OR-Tools Downloads for C++, Java, or C#
For a complete list of OR-Tools downloads for Linux, Windows, and Mac OS X, see the OR-Tools Downloads page.
For instructions on installing OR-Tools, see Installing OR-Tools.
The OR-Tools suite is:
- Open source and free. Examples and source code are freely available for download under Apache License 2.0.
- Actively maintained. We release improvements several times per month.
- Documented. In addition to this site, there are many examples available in C++, Python, Java, and C#.
- Portable. The code conforms strictly to Google C++ coding style. Everything is coded in C++ and available through SWIG for Python, Java, and .NET (using Mono on non-Windows platforms). You can compile OR-Tools on Linux, Mac OS X, and Windows (with Visual Studio).
- Efficient. We use it internally at Google, where speed and memory consumption are critical.
- User-friendly. We try to make our code as easy to use as possible (especially in Python and C#).
- Well tested. We use it in mission-critical applications at Google, as do many external developers.
If all you need is mixed integer linear optimization, you have a couple of options other than downloading OR-Tools:
- Use our mixed integer linear optimizer via Google Sheets.
- Use our mixed integer linear optimizer via Google Apps Script.
On this site you'll find:
- A general introduction to combinatorial optimization.
- Instructions for installing OR-Tools, either from a binary distribution or from the source code.
- Getting Started with OR-Tools.
- Code examples in the navigation bar for particular problems you might want to solve.
If you just want to play Sudoku, fire up Google Sheets and install our Sudoku add-on.