Comparison of optimization software

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

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.
CPLEX C, C++, Java, C#, Python 20.1 / Dec 2020 Yes Yes Commercial, academic, trial IBM CPLEX Optimization Studio is a suite of optimization engines (CPLEX for Mathematical Programming, and CP Optimizer for Constraint programming), a modeling language (OPL), and an Integrated Development Environment.
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.3 (May 20, 2021; 20 days ago (2021-05-20)) [±][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[edit]


  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-05-20.

External links[edit]