OR-Tools

Last updated

OR-Tools
Original author(s) Laurent Perron
Developer(s) Google Optimization team [1]
Initial releaseSeptember 15, 2010;13 years ago (2010-09-15)
Stable release
v9.9.3963 [2] / March 7, 2024;11 days ago (2024-03-07)
Repository github.com/google/or-tools
Written in C++
Operating system Linux, macOS, Microsoft Windows
Type Library
License Apache License 2.0
Website developers.google.com/optimization/

Google OR-Tools is a free and open-source software suite developed by Google for solving linear programming (LP), mixed integer programming (MIP), constraint programming (CP), vehicle routing (VRP), and related optimization problems. [3]

Contents

OR-Tools is a set of components written in C++ but provides wrappers for Java, .NET and Python.

It is distributed under the Apache License 2.0. [4]

History

OR-Tools was created by Laurent Perron in 2011. [5]

In 2014, Google's open source linear programming solver, GLOP, was released as part of OR-Tools. [1]

The CP-SAT solver [6] bundled with OR-Tools won a total of eleven gold medals between 2018 and 2020 in the MiniZinc Challenge, [7] an international constraint programming competition.

Features

The OR-Tools supports a variety of programming languages, including:

OR-Tools supports a wide range of problem types, [12] [3] among them:

It supports the FlatZinc modeling language. [16]

See also

Related Research Articles

In artificial intelligence and operations research, constraint satisfaction is the process of finding a solution through a set of constraints that impose conditions that the variables must satisfy. A solution is therefore an assignment of values to the variables that satisfies all constraints—that is, a point in the feasible region.

The GNU Linear Programming Kit (GLPK) is a software package intended for solving large-scale linear programming (LP), mixed integer programming (MIP), and other related problems. It is a set of routines written in ANSI C and organized in the form of a callable library. The package is part of the GNU Project and is released under the GNU General Public License.

IBM ILOG CPLEX Optimization Studio is an optimization software package.

ECLiPSe is a software system for the development and deployment of constraint logic programming applications, e.g., in the areas of optimization, planning, scheduling, resource allocation, timetabling, transport, etc. It is also suited for teaching most aspects of combinatorial problem solving, e.g., problem modeling, constraint programming, mathematical programming, and search techniques. It contains constraint solver libraries, a high-level modeling and control language, interfaces to third-party solvers, an integrated development environment and interfaces for embedding into host environments.

<span class="mw-page-title-main">COIN-OR</span>

Computational Infrastructure for Operations Research (COIN-OR), is a project that aims to "create for mathematical software what the open literature is for mathematical theory." The open literature provides the operations research (OR) community with a peer-review process and an archive. Papers in operations research journals on mathematical theory often contain supporting numerical results from computational studies. The software implementations, models, and data used to produce the numerical results are typically not published. The status quo impeded researchers needing to reproduce computational results, make fair comparisons, and extend the state of the art.

Algebraic modeling languages (AML) are high-level computer programming languages for describing and solving high complexity problems for large scale mathematical computation. One particular advantage of some algebraic modeling languages like AIMMS, AMPL, GAMS, Gekko, MathProg, Mosel, and OPL is the similarity of their syntax to the mathematical notation of optimization problems. This allows for a very concise and readable definition of problems in the domain of optimization, which is supported by certain language elements like sets, indices, algebraic expressions, powerful sparse index and data handling variables, constraints with arbitrary names. The algebraic formulation of a model does not contain any hints how to process it.

OptimJ is an extension for Java with language support for writing optimization models and abstractions for bulk data processing. The extensions and the proprietary product implementing the extensions were developed by Ateji which went out of business in September 2011. OptimJ aims at providing a clear and concise algebraic notation for optimization modeling, removing compatibility barriers between optimization modeling and application programming tools, and bringing software engineering techniques such as object-orientation and modern IDE support to optimization experts.

<span class="mw-page-title-main">Zuse Institute Berlin</span> Research institute for applied mathematics and computer science in Berlin, Germany

The Zuse Institute Berlin is a research institute for applied mathematics and computer science on the campus of Freie Universität Berlin in Dahlem, Berlin, Germany.

MOSEK is a software package for the solution of linear, mixed-integer linear, quadratic, mixed-integer quadratic, quadratically constrained, conic and convex nonlinear mathematical optimization problems. The applicability of the solver varies widely and is commonly used for solving problems in areas such as engineering, finance and computer science.

APOPT is a software package for solving large-scale optimization problems of any of these forms:

LINDO is a software package for linear programming, integer programming, nonlinear programming, stochastic programming and global optimization.

<span class="mw-page-title-main">Pyomo</span>

Pyomo is a collection of Python software packages for formulating optimization models.

Convex Over and Under ENvelopes for Nonlinear Estimation (Couenne) is an open-source library for solving global optimization problems, also termed mixed integer nonlinear optimization problems. A global optimization problem requires to minimize a function, called objective function, subject to a set of constraints. Both the objective function and the constraints might be nonlinear and nonconvex. For solving these problems, Couenne uses a reformulation procedure and provides a linear programming approximation of any nonconvex optimization problem.

<span class="mw-page-title-main">JuMP</span> Programming language

JuMP is an algebraic modeling language and a collection of supporting packages for mathematical optimization embedded in the Julia programming language. JuMP is used by companies, government agencies, academic institutions, software projects, and individuals to formulate and submit optimization problems to third‑party solvers. JuMP has been specifically applied to problems in the field of operations research.

Artelys Knitro is a commercial software package for solving large scale nonlinear mathematical optimization problems.

The GEKKO Python package solves large-scale mixed-integer and differential algebraic equations with nonlinear programming solvers. Modes of operation include machine learning, data reconciliation, real-time optimization, dynamic simulation, and nonlinear model predictive control. In addition, the package solves Linear programming (LP), Quadratic programming (QP), Quadratically constrained quadratic program (QCQP), Nonlinear programming (NLP), Mixed integer programming (MIP), and Mixed integer linear programming (MILP). GEKKO is available in Python and installed with pip from PyPI of the Python Software Foundation.

<span class="mw-page-title-main">HiGHS optimization solver</span> Numerical software

HiGHS is open-source software to solve linear programming (LP), mixed-integer programming (MIP), and convex quadratic programming (QP) models.

References

  1. 1 2 "Sudoku, Linear Optimization, and the Ten Cent Diet". ai.googleblog.com.
  2. "Release v9.9". github.com.
  3. 1 2 "Google OR-Tools a guide". medium.com. February 24, 2019.
  4. "LICENSE-2.0.txt". github.com.
  5. Perron, Laurent (July 1, 2011). "Operations Research and Constraint Programming at Google". Lee J. (Eds) Principles and Practice of Constraint Programming – CP 2011. Lecture Notes in Computer Science. 6876: 2. doi: 10.1007/978-3-642-23786-7_2 . ISBN   978-3-642-23786-7. S2CID   38166333.
  6. 1 2 "How the CP-SAT solver works". xiang.dev. April 25, 2020.
  7. "The MiniZinc Challenge". minizinc.org.
  8. "Homebrew package". formulae.brew.sh.
  9. "com.google.ortools:ortools-java". mvnrepository.com.
  10. "Google.OrTools". nuget.org.
  11. "ortools". pypi.org.
  12. "OR-Tools introduction". Google Developers.
  13. 1 2 "Application of Google OR-Tools". kaggle.com.
  14. Louat, Christophe (2009). Etude et mise en œuvre de stratégies de coupes efficaces pour des problèmes entiers mixtes 0-1 (PhD). Vol. 1. Université de Versailles Saint-Quentin-en-Yvelines. p. 144.
  15. "Routing use case". activimetrics.com.
  16. "Software with FlatZinc implementations". minizinc.org.

Bibliography