Google Optimization Tools

This site provides an introduction to or-tools, Google's software suite for combinatorial optimization. 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.
  • Bin packing and knapsack algorithms
  • Graph algorithms (shortest paths, min cost flow, max flow, linear sum assignment)
Google created or-tools in C++, but you can also use it with Python, C#, or Java.

For a complete list of or-tools downloads for Linux, Windows, and Mac OS X, see the or-tools Downloads page.

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:

On this site you'll find:

  • A general introduction to combinatorial optimization.
  • Installation instructions for 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.

Send feedback about...