List of optimization software
This article does not cite any sources. (August 2013) (Learn how and when to remove this template message)
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 notable optimization software organized according to license and business model type.
Free and open-source software
Name License Description ADMB BSD a nonlinear optimization framework, using automatic differentiation. ASCEND GPL a mathematical modelling chemical process modelling system. CUTEr GPL a testing environment for optimization and linear algebra solvers. GNU_Octave GPL a software package featuring a high-level programming language, primarily intended for numerical computations; well recognized free alternative to MATLAB. Scilab CeCILL a cross-platform numerical computational package and a high-level, numerically oriented programming language with free numerical optimization framework.
- Software libraries
Name License Description ALGLIB GPL dual licensed (GPL/commercial) nonlinear optimization library (unconstrained, box, linearly, nonlinearly-constrained, nonlinear and QP problems), optionally using automatic differentiation. Cross-language: C++, C#. COIN-OR SYMPHONY EPL 1.0 integer programming Dlib Boost Software License Unconstrained/box-constrained nonlinear/QP optimization library written in C++. GLPK GPL GNU Linear Programming Kit, C API. IPOPT CPL a large scale nonlinear optimizer for continuous systems (requires gradient), C++ (formerly Fortran and C). J. D. Powell's
LGPL a set of Fortran 95 algorithms for (derivative-free, DFO) optimization subject to box and linear constraints: BOBYQA – DFO, box; COBYLA – DFO, nonlinearly constrained; LINCOA – DFO, linearly constrained; NEWUOA and UOBYQA – DFO, unconstrained; TOLMIN – linearly constrained. MIDACO Dual (Commercial, BY-NC-ND) a lightweight software tool for single- and multi-objective optimization based on evolutionary computing. Written in C/C++ and Fortran with gateways to Excel, VBA, Java, Python, Matlab, Octave, R, C# and Julia. MINUIT (now MINUIT2) LGPL an unconstrained optimizer internally developed at CERN. OpenMDAO Apache License a 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 a lightweight, embeddable planning engine written in Java. It solves constraint satisfaction problems with construction heuristics and metaheuristic algorithms. SciPy BSD a general numeric package for Python, with some support for optimization.
- AIMMS – optimization modeling system, including GUI building facilities.
- ALGLIB – dual licensed (GPL/commercial) constrained quadratic and nonlinear optimization library with C++ and C# interfaces.
- Altair HyperStudy – design of experiments and multi-disciplinary design optimization.
- AMPL – modelling language for large-scale linear, mixed integer and nonlinear optimization.
- APMonitor – modeling language and optimization suite for large-scale, nonlinear, mixed integer, differential and algebraic equations with interfaces to MATLAB, Python, and Julia.
- Artelys Knitro – large scale nonlinear optimization for continuous and mixed-integer programming.
- ASTOS – AeroSpace Trajectory Optimization Software for launcher, re-entry and generic aerospace problems.
- BARON – optimization of algebraic nonlinear and mixed-integer nonlinear problems.
- COMSOL Multiphysics – a cross-platform finite element analysis, solver and multiphysics simulation software.
- CPLEX – integer, linear and quadratic programming.
- FEATool Multiphysics – an easy to use FEA GUI Toolbox for MATLAB and Octave
- FICO Xpress – integer, linear and quadratic and nonlinear programming.
- FortMP – integer, linear and quadratic programming.
- FortSP – stochastic programming.
- GAMS – General Algebraic Modeling System.
- Gurobi – integer, linear and quadratic programming.
- HEEDS MDO – multidisciplinary design optimization using SHERPA, a hybrid, adaptive optimization algorithm.
- IMSL Numerical Libraries – linear, quadratic, nonlinear, and sparse QP and LP optimization algorithms implemented in standard programming languages C, Java, C# .NET, Fortran, and Python.
- IOSO – (Indirect Optimization on the basis of Self-Organization) a multiobjective, multidimensional nonlinear optimization technology.
- Kimeme – an open platform for multi-objective optimization and multidisciplinary design optimization.
- LINDO - (Linear, Interactive, and Discrete Optimizer) a software package for linear programming, integer programming, nonlinear programming, stochastic programming, and global optimization. The "What's Best!" Excel add-in performs linear, integer, and nonlinear optimization using LINDO.
- LIONsolver – an integrated software for data mining, analytics, modeling Learning and Intelligent OptimizatioN and reactive business intelligence approach.
- modeFRONTIER – an integration platform for multi-objective and multi-disciplinary optimization, which provides a seamless coupling with third party engineering tools, enables the automation of the design simulation process, and facilitates analytic decision making.
- Maple – linear, quadratic, and nonlinear, continuous and integer optimization. Constrained and unconstrained. Global optimization with add-on toolbox.
- MATLAB – linear, integer, quadratic, and nonlinear problems with Optimization Toolbox; multiple maxima, multiple minima, and non-smooth optimization problems; estimation and optimization of model parameters.
- MIDACO a lightweight software tool for single- and multi-objective optimization based on evolutionary computing. Written in C/C++ and Fortran with gateways to Excel, VBA, Java, Python, Matlab, Octave, R, C# and Julia.
- Mathematica – large-scale multivariate constrained and unconstrained, linear and nonlinear, continuous and integer optimization.
- ModelCenter – a graphical environment for integration, automation, and design optimization.
- MOSEK – linear, quadratic, conic and convex nonlinear, continuous and integer optimization.
- NAG – linear, quadratic, nonlinear, sums of squares of linear or nonlinear functions; linear, sparse linear, nonlinear, bounded or no constraints; local and global optimization; continuous or integer problems.
- NMath – linear, quadratic and nonlinear programming.
- IOSO – multidisciplinary design optimization, for computer-aided engineering.
- OptimJ – Java-based modeling language. Premium Edition includes support for Gurobi, Mosek and CPLEX solvers.
- Optimus platform – a process integration and design optimization platform developed by Noesis Solutions.
- optiSLang – software solutions for CAE-based sensitivity analysis, optimization and robustness evaluation.
- OptiY - a design environment providing modern optimization strategies and state of the art probabilistic algorithms for uncertainty, reliability, robustness, sensitivity analysis, data-mining and meta-modeling.
- OptiStruct – award-winning CAE technology for conceptual design synthesis and structural optimization.
- PottersWheel – parameter estimation in ordinary differential equations (MATLAB toolbox, free for academic use).
- pSeven — software platform for automation of engineering simulation and analysis, multidisciplinary optimization and data mining, developed by DATADVANCE.
- SmartDO – multidisciplinary global design optimization, specialized in computer-aided engineering (CAE). using the direct global search approaches.
- SNOPT – large-scale optimization problems.
- The Unscrambler X – product formulation and process optimization software.
- TOMLAB – supports global optimization, integer programming, all types of least squares, linear, quadratic and unconstrained programming for MATLAB. TOMLAB supports solvers like Gurobi, CPLEX, SNOPT, KNITRO and MIDACO.
- VisSim – a visual block diagram language for simulation and optimization of dynamical systems.
- WORHP – a large-scale sparse solver for continuous nonlinear optimization.
Freeware/free for academic use
- APMonitor – free for academic and commercial use alike, with Julia, Python and MATLAB integrations.
- FICO Xpress
- Galahad library
- MIDACO – a software package for numerical optimization based on evolutionary computing.
- MINTO – integer programming solver using branch and bound algorithm; freeware for personal use.
- MOSEK – a large scale optimization software. Solves linear, quadratic, conic and convex nonlinear, continuous and integer optimization.
- OptimJ – Java-based modeling language; the free edition includes support for lp_solve, GLPK and LP or MPS file formats.
- PottersWheel – parameter estimation in ordinary differential equations (free MATLAB toolbox for academic use).
- SCIP – free to members of non-commercial and academic institutions, for research purposes.