Comparison of optimization software

Given a system transforming a set of inputs to output values, described by a mathematical function f, optimization refers to the generation and selection of a best solution from some set of available alternatives,[1] by systematically choosing input values from within an allowed set, computing the value of the function, and recording the best value found during the process. Many real-world and theoretical problems may be modeled in this general framework. For example, the inputs can be design parameters of a motor, the output can be the power consumption, or the inputs can be business choices and the output can be the obtained profit, or the inputs can describe the configuration of a physical system and the output can be its energy.

An optimization problem can be represented in the following way

Given: a function f : A R from some set A to the real numbers
Search for: an element x0 in A such that f(x0) ≤ f(x) for all x in A ("minimization").

Typically, A is some subset of the Euclidean space Rn, often specified by a set of constraints, equalities or inequalities that the members of A have to satisfy. Maximization can be reduced to minimization by multiplying the function by minus one.

The use of optimization software requires that the function f is defined in a suitable programming language and linked to the optimization software. The optimization software will deliver input values in A, the software module realizing f will deliver the computed value f(x). In this manner, a clear separation of concerns is obtained: different optimization software modules can be easily tested on the same function f, or a given optimization software can be used for different functions f.

The following tables provide a comparison of notable optimization software libraries, either specialized or general purpose libraries with significant optimization coverage.

Name Language Latest stable version Academic/noncommercial
use is free
Can be used in
proprietary apps
License Notes
ALGLIB C++, C#, FreePascal, VBA 3.8.0 / August 2013 Yes Yes Dual (Commercial, GPL) General purpose library, includes optimization package.
AMPL C, C++, C#, Python, Java, Matlab, R October 2018 Yes Yes Dual (Commercial, academic) A popular algebraic modeling language for linear, mixed-integer and nonlinear optimization. Student and AMPL for courses versions are available for free.
APMonitor Fortran, C++, Python, Matlab, Julia 0.6.2 / March 2016 Yes Yes Dual (Commercial, academic) A differential and algebraic modeling language for mixed-integer and nonlinear optimization. Freely available interfaces for Matlab, Python, and Julia.
Artelys Knitro C, C++, C#, Python, Java, Julia, Matlab, R 11.1 / November 2018 No Yes Commercial, Academic, Trial General purpose library, specialized in nonlinear optimization. Handles mixed-integer problems (MINLP) and mathematical programs with equilibrium constraints (MPEC). Specialized algorithms for nonlinear least squares problems.
FICO Xpress Mosel, BCL, C, C++, Java, R Python, Matlab, .Net, VB6 8.5 / Aug 2018 Yes Yes Commercial, academic, community, trial Suite of Optimization Technologies and Solutions. Includes: Solver technologies including (LP (Simplex & Barrier), MIP, MIQP, MIQCQP, MISOCP, MINLP QP, QCQP, SOCP, NLP (SLP & Interior Point); An algebraic modelling and procedural programming language; an Integrated Development Environment; Supports for a range of execution services; Support for packaging of optimization models and services as software solutions
GEKKO Python 0.2.8 / August 2020 Yes Yes Dual (Commercial, academic) GEKKO is a Python package for machine learning and optimization of mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP). Modes of operation include parameter regression, data reconciliation, real-time optimization, dynamic simulation, and nonlinear predictive control.
GNU Linear Programming Kit C 4.52 / July 2013 Yes No GPL Free library for linear programming (LP) and mixed integer programming (MIP).
GNU Scientific Library C 1.16 / July 2013 Yes No GPL Free library provided by GNU project.
Gurobi C, C++, C#, Java, .Net, Matlab, Python, R 9.0 / Nov 2019 Yes Yes Commercial, academic, trial Optimization library. Handles mixed-integer linear problems, convex quadratic constraints and objective, multi-objective optimization and SOS constraints
IMSL Numerical Libraries C, Java, C#, Fortran, Python many components No Yes Proprietary
LIONsolver C++, Java 2.0.198 / October 2011 Yes Yes Proprietary Support for interactive and learning optimization,

according to RSO principles .[2]

Math Kernel Library (MKL) C++, Fortran 11.1 / October 2013 No Yes Proprietary Numerical library from Intel. MKL is specialized on linear algebra,
but contains some optimization-related functionality.
Wolfram_Mathematica C++, Wolfram Language 12.2 (December 16, 2020 (2020-12-16)) [±][3] No No Proprietary Constrained nonlinear optimization, interior point methods, convex optimization and integer programming-as well as original symbolic methods integrated with general computational capabilities.
MIDACO C++, C#, Python, Matlab, Octave, Fortran, R, Java, Excel, VBA, Julia 6.0 / Mar 2018 Yes Yes Dual (Commercial, academic) Lightweight software tool for single- and multi-objective optimization. Supporting MINLP and parallelization.
NAG Numerical Libraries C, Fortran Mark 26 / October 2017 No Yes Proprietary
NLopt C, C++, Fortran, Octave, Matlab, Python, Haskell, Guile v2.6.2 / April 2020 Yes No LGPL NLopt is a free/open-source library for nonlinear optimization, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. Its features include: Callable from C, C++, Fortran, Matlab or GNU Octave, Python, GNU Guile, Julia, GNU R, Lua, OCaml and Rust. A common interface for many different algorithms—try a different algorithm just by changing one parameter. Support for large-scale optimization (some algorithms scalable to millions of parameters and thousands of constraints). Both global and local optimization algorithms. Algorithms using function values only (derivative-free) and also algorithms exploiting user-supplied gradients. Algorithms for unconstrained optimization, bound-constrained optimization, and general nonlinear inequality/equality constraints. Free/open-source software under the GNU LGPL (and looser licenses for some portions of NLopt).
NMath C# 5.3 / May 2013 No Yes Proprietary C# numerical library built on top of MKL.
Octeract Engine C++/Python 0.11.29 / November 2019 No Yes Commercial Supercomputing deterministic global optimization solver for general MINLP problems. Octeract Engine uses MPI for distributed calculations.
OptaPlanner Java 8.0.0.Final / November 2020 Yes Yes ASL (open source) Lightweight optimization solver in Java, with optional integration modules for JPA-Hibernate, Quarkus, Spring, Jackson, JAXB, etc. Works on Kotlin and Scala too.
SciPy Python 0.13.1 / November 2013 Yes Yes BSD General purpose numerical and scientific computing library for Python.

See also

References

  1. "The Nature of Mathematical Programming," Mathematical Programming Glossary, INFORMS Computing Society.
  2. Battiti, Roberto; Mauro Brunato; Franco Mascia (2008). Reactive Search and Intelligent Optimization. Springer Verlag. ISBN 978-0-387-09623-0.
  3. "Mathematica Quick Revision History". Retrieved 2020-12-16.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.