This article needs additional citations for
verification. (August 2013) |
Given a transformation between input and output values, described by a mathematical function, optimization deals with generating and selecting the best solution from some set of available alternatives, by systematically choosing input values from within an allowed set, computing the output of the function and recording the best output values found during the process. Many real-world problems can be modeled in this way. For example, the inputs could be design parameters for a motor, the output could be the power consumption. For another optimization, the inputs could be business choices and the output could be the profit obtained.
An optimization problem, (in this case a minimisation problem), can be represented in the following way:
In continuous optimization, 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. In combinatorial optimization, A is some subset of a discrete space, like binary strings, permutations, or sets of integers.
The use of optimisation software requires that the function f is defined in a suitable programming language and connected at compilation or run time to the optimisation software. The optimisation software will deliver input values in A, the software module realizing f will deliver the computed value f(x) and, in some cases, additional information about the function like derivatives.
In this manner, a clear separation of concerns is obtained: different optimisation software modules can be easily tested on the same function f, or a given optimisation software can be used for different functions f.
The following tables provide a list of notable optimisation software organised according to license and business model type.
This article contains content that is written like
an advertisement. (May 2021) |
Name | License | Description |
---|---|---|
ADMB | BSD | nonlinear optimization framework using automatic differentiation. |
ASCEND | GPL | mathematical modelling chemical process modelling system. |
CUTEr | GPL | testing environment for optimization and linear algebra solvers. |
GNU Octave | GPL | software package featuring a high-level programming language, primarily intended for numerical computations; well-recognized free alternative to MATLAB. |
Octeract Engine Community | Octeract EULA | parallel deterministic global MINLP solver. Octeract Engine Community is a full version of the solver that is free to use for any purpose. |
Scilab | CeCILL | cross-platform numerical computational package and a high-level, numerically oriented programming language with free numerical optimization framework. |
Name | License | Description |
---|---|---|
ALGLIB | GPL | dual licensed (GPL/commercial) optimization library (LP, QP and nonlinear programming problems), optionally using automatic differentiation. Cross-language: C++, C#. |
COIN-OR | EPL 1.0 | integer programming, linear programming, nonlinear programming. |
Dlib | BSL‑1.0 | unconstrained/box-constrained nonlinear/QP optimization library written in C++. |
GEKKO | MIT | machine learning and optimization of mixed-integer and differential algebraic equations in Python. |
GLPK | GPL | GNU Linear Programming Kit with C API. |
HiGHS | MIT | linear programming (LP), mixed integer programming (MIP), and convex quadratic programming (QP). [1] |
IPOPT | EPL (was CPL) | large scale nonlinear optimizer for continuous systems (requires gradient), C++ (formerly Fortran and C). It became a part of COIN-OR. [2] |
MINUIT (now MINUIT2) | LGPL | unconstrained optimizer internally developed at CERN. |
OpenMDAO | Apache License | Multidisciplinary Design, Analysis, and Optimization (MDAO) framework, written in Python. The development is led out of the NASA Glenn Research Center, with support from the NASA Langley Research Center. |
OptaPlanner | Apache License | Java constraint solver with construction heuristics and metaheuristics. Integrates with Spring Boot and Quarkus. Runs on Kotlin and Scala too. |
SCIP | Apache License | solver for mixed integer programming (MIP) and mixed integer nonlinear programming (MINLP). |
SciPy | BSD | general numeric package for Python, with some support for optimization. |
This article needs additional citations for
verification. (August 2013) |
Given a transformation between input and output values, described by a mathematical function, optimization deals with generating and selecting the best solution from some set of available alternatives, by systematically choosing input values from within an allowed set, computing the output of the function and recording the best output values found during the process. Many real-world problems can be modeled in this way. For example, the inputs could be design parameters for a motor, the output could be the power consumption. For another optimization, the inputs could be business choices and the output could be the profit obtained.
An optimization problem, (in this case a minimisation problem), can be represented in the following way:
In continuous optimization, 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. In combinatorial optimization, A is some subset of a discrete space, like binary strings, permutations, or sets of integers.
The use of optimisation software requires that the function f is defined in a suitable programming language and connected at compilation or run time to the optimisation software. The optimisation software will deliver input values in A, the software module realizing f will deliver the computed value f(x) and, in some cases, additional information about the function like derivatives.
In this manner, a clear separation of concerns is obtained: different optimisation software modules can be easily tested on the same function f, or a given optimisation software can be used for different functions f.
The following tables provide a list of notable optimisation software organised according to license and business model type.
This article contains content that is written like
an advertisement. (May 2021) |
Name | License | Description |
---|---|---|
ADMB | BSD | nonlinear optimization framework using automatic differentiation. |
ASCEND | GPL | mathematical modelling chemical process modelling system. |
CUTEr | GPL | testing environment for optimization and linear algebra solvers. |
GNU Octave | GPL | software package featuring a high-level programming language, primarily intended for numerical computations; well-recognized free alternative to MATLAB. |
Octeract Engine Community | Octeract EULA | parallel deterministic global MINLP solver. Octeract Engine Community is a full version of the solver that is free to use for any purpose. |
Scilab | CeCILL | cross-platform numerical computational package and a high-level, numerically oriented programming language with free numerical optimization framework. |
Name | License | Description |
---|---|---|
ALGLIB | GPL | dual licensed (GPL/commercial) optimization library (LP, QP and nonlinear programming problems), optionally using automatic differentiation. Cross-language: C++, C#. |
COIN-OR | EPL 1.0 | integer programming, linear programming, nonlinear programming. |
Dlib | BSL‑1.0 | unconstrained/box-constrained nonlinear/QP optimization library written in C++. |
GEKKO | MIT | machine learning and optimization of mixed-integer and differential algebraic equations in Python. |
GLPK | GPL | GNU Linear Programming Kit with C API. |
HiGHS | MIT | linear programming (LP), mixed integer programming (MIP), and convex quadratic programming (QP). [1] |
IPOPT | EPL (was CPL) | large scale nonlinear optimizer for continuous systems (requires gradient), C++ (formerly Fortran and C). It became a part of COIN-OR. [2] |
MINUIT (now MINUIT2) | LGPL | unconstrained optimizer internally developed at CERN. |
OpenMDAO | Apache License | Multidisciplinary Design, Analysis, and Optimization (MDAO) framework, written in Python. The development is led out of the NASA Glenn Research Center, with support from the NASA Langley Research Center. |
OptaPlanner | Apache License | Java constraint solver with construction heuristics and metaheuristics. Integrates with Spring Boot and Quarkus. Runs on Kotlin and Scala too. |
SCIP | Apache License | solver for mixed integer programming (MIP) and mixed integer nonlinear programming (MINLP). |
SciPy | BSD | general numeric package for Python, with some support for optimization. |