List of optimization software

Given a transformation between input and output values, described by a mathematical function f, optimization deals with generating and selecting a 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 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.

An optimization problem, in this case a minimization 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.

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 optimization software requires that the function f is defined in a suitable programming language and connected at compile or run time 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) and, in some cases, additional information about the function like derivatives.

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 list of optimization software organized according to license and business model type.

Free and open source software

Name License Brief info
ADMB BSD nonlinear optimization framework, using automatic differentiation
ALGLIB GPL nonlinear analysis library, optionally using automatic differentiation. Cross-language: C++, C#, Pascal, VBA.
APOPT GPLMixed Integer Nonlinear Programming (MINLP) solver for AMPL, Julia, MATLAB, Pyomo, and Python
ASCEND GPL mathematical modelling system
BOBYQA LGPLAn algorithm that seeks the least value of a nonlinear function subject to bound constraints, without using derivatives of the objective function. By Professor Michael J. D. Powell.
CMA-ES BSDCovariance Matrix Adaptation Evolution Strategy.
COBYLA LGPLAn algorithm that seeks the least value of a nonlinear function subject to nonlinear inequality constraints, without using derivatives of the objective function or the constraints. By Professor Michael J. D. Powell.
COIN-OR SYMPHONY Eclipse v.1 integer programming
CUTEr GPL testing environment for optimization and linear algebra solvers
dlib Boost A stand-alone C++ library with a variety of linear and non-linear solvers for small and large scale problems
GLPK GPL GNU Linear Programming Kit
IPOPTCPL large scale nonlinear optimization for continuous system (requires gradient)
LINCOA LGPLAn algorithm that seeks the least value of a nonlinear function subject to linear inequality constraints, without using derivatives of the objective function. By Professor Michael J. D. Powell.
MIDACO BY-NC-ND Global optimization software based on evolutionary computing, MINLP, parallelization, limited version ( Matlab, Python, C/C++, Fortran, Java, C#, R, Java, VBA, Excel ).
MINUIT/MINUIT2 (L)GPL multivariate function minimizer for real-valued functions with analytic or numerical gradients
NEWUOA LGPLAn algorithm that solves unconstrained optimization problems without using derivatives. By Professor Michael J. D. Powell.
OpenMDAOASL Multidisciplinary Design, Analysis, and Optimization (MDAO) framework, written in the Python programming language. Developed by NASA Glenn Research Center, with support from the NASA Langley Research Center.
OptaPlannerASL OptaPlanner is a lightweight, embeddable planning engine written in Java™. It helps normal Java™ programmers solve constraint satisfaction problems efficiently. Under the hood, it combines optimization heuristics and metaheuristics with very efficient score calculation.
ScilabCeCILL cross-platform numerical computational package and a high-level, numerically oriented programming language with free numerical optimization framework.
TOLMIN LGPLAn algorithm that minimizes a general differentiable nonlinear function subject to linear constraints. By Professor Michael J. D. Powell.
UOBYQA LGPLAn algorithm that solves unconstrained optimization problems without using derivatives (for general usage, NEWUOA is recommended to replace UOBYQA). By Professor Michael J. D. Powell.

Proprietary software

Freeware/Free for academic use

See also

This article is issued from Wikipedia - version of the 12/4/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.