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 |
ALGENCAN | GPL | Fortran code for general nonlinear programming. Interfaces with AMPL, C/C++, CUTEr, Matlab, Python, Octave and R. |
APMonitor | BSD | MATLAB Toolbox and Python APIs to Mixed Integer Nonlinear Programming Solvers |
ASCEND | GPL | mathematical modelling system |
BOBYQA | LGPL | An 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. Source code is available at CCPForge or here. |
CMA-ES | BSD | Covariance Matrix Adaptation Evolution Strategy. Source code available at |
COBYLA | LGPL | An 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. Source code is available at CCPForge or here. |
CONDOR | GPL | Non-linear Continuous Objective Function for small dimension (n<20) with linear and non-linear constraints. Only the value of the objective function is used. Stand-Alone C++ code. |
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 |
EvA2 | GPL | Evolutionary algorithms framework written in Java |
GLPK | GPL | GNU Linear Programming Kit |
IPOPT | CPL | large scale nonlinear optimization for continuous system (requires gradient) |
JOptimizer | Apache License | Java library for convex optimization |
JuliaOpt | MIT, BSD and MPL 2.0 | A collection of optimization libraries and environment written in Julia |
L-BFGS | BSD | limited-memory quasi-Newton method optimization; for large scale optimization |
Liger | LGPL | Liger is an open source integrated optimization environment for single and multi-objective nonconvex problems |
LINCOA | LGPL | An 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. Source code is available at CCPForge or here. |
MIDACO | BY-NC-ND | Global optimization software, Limited Version, MINLP, Parallelization (Excel, Matlab, Octave, Python, C/C++, R and Fortran) |
MINUIT/MINUIT2 | (L)GPL | multivariate function minimizer for real-valued functions with analytic or numerical gradients |
MLPACK | BSD | mixed convex L1/L2 LARS/Lasso optimization, clustering, PCA, ridge regression (C++) |
NEWUOA | LGPL | An algorithm that solves unconstrained optimization problems without using derivatives. By Professor Michael J. D. Powell. Source code is available at CCPForge or here. |
NLopt | LGPL, MIT | many algos, many language bindings, global and local optimizers, derivative-free and gradient-driven |
NOMAD | LGPL | generic black-box (no gradients required) optimization package |
OpenMDAO | ASL | 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. |
OpenOpt | BSD | free numerical optimization framework in Python language for solving NLP, LP, MIP, QP, etc. with automatic differentiation features. |
Opt4J | MIT | Java-based framework for evolutionary computation. |
OptaPlanner | ASL | 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. |
PPL | GPLv3 | integer programming problems, polyhedra |
Scilab | CeCILL | cross-platform numerical computational package and a high-level, numerically oriented programming language with free numerical optimization framework. |
TAO | BSD | large-scale optimization, focus on parallel algos. |
TOLMIN | LGPL | An algorithm that minimizes a general differentiable nonlinear function subject to linear constraints. By Professor Michael J. D. Powell.Source code is available at CCPForge or here. |
UOBYQA | LGPL | An algorithm that solves unconstrained optimization problems without using derivatives (for general usage, NEWUOA is recommended to replace UOBYQA). By Professor Michael J. D. Powell. Source code is available at CCPForge or here. |
Proprietary software
- AIMMS — optimization modeling system, including GUI building facilities
- Altair HyperStudy — Multi-Disciplinary Design of Experiments, Optimization and Stochastic study software
- AMPL — modelling language for large-scale linear, mixed integer and nonlinear optimization
- APMonitor — for large-scale, nonlinear, differential and algebraic optimization
- 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 — for global optimization of algebraic nonlinear and mixed-integer nonlinear problems
- CPLEX — integer, linear and quadratic programming
- EASY-FIT — data fitting in nonlinear equations, ODEs, DAEs, PDEs (1D), PDAEs (1D), with integrated user interface, modelling language, statistical analysis, etc. (MS-Windows, demo version, free for academic use)
- FortMP — integer, linear and quadratic programming
- FortSP — stochastic programming
- General Algebraic Modeling System
- Gurobi — integer, linear and quadratic programming
- HillStormer — Nelder–Mead nonlinear optimization with linear constraints
- 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) is a multiobjective, multidimensional nonlinear optimization technology
- Kimeme — an open platform for multi-objective optimization and multidisciplinary design optimization
- Lingo — Linear, integer, nonlinear and stochastic programming. Global optimization
- LIONsolver — an integrated software for data mining, modeling, Learning and Intelligent OptimizatioN and reactive business intelligence
- modeFRONTIER — modeFRONTIER® is an integration platform for multi-objective and multi-disciplinary optimization. It provides a seamless coupling with third party engineering tools, enables the automation of the design simulation process, and facilitates analytic decision making.
- Maple (software) — Linear, quadratic, and nonlinear, continuous and integer optimization. Constrained and unconstrained. Global optimization with add-on toolbox.
- MATLAB — Linear, quadratic, and nonlinear problems with Optimization Toolbox; multiple maxima, multiple minima, and non-smooth optimization problems; estimation and optimization of model parameters.
- Mathematica — large-scale multivariate constrained and unconstrained, linear and nonlinear, continuous and integer optimization.
- MIDACO Global optimization software based on evolutionary computing, MINLP, Parallelization (Excel, Matlab, Octave, Python, C/C++, R and Fortran)
- MISQP — SQP-type method for nonlinear mixed-integer programming, relaxable and non-relaxable variables, tuned to minimize number of function evaluations (free for academic use)
- 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.
- Nexus — multi-disciplinary and multi-objective optimization and design process integration. Nexus provides direct integration to many third party CAD/CAE and engineering software tools for design process integration and automation.
- NLPQLP — SQP method for nonlinear programming with parallel and non-monotone line search, among other features (free for academic use)
- 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. Powered by MACROS algorithmic core.
- SAS/OR — A suite of solvers for Linear, Integer, Nonlinear, Derivative-Free, Network, Combinatorial and Constraint Optimization; the Algebraic modeling language OPTMODEL; and a variety of vertical solutions aimed at specific problems/markets, all of which are fully integrated with the SAS System.
- SmartDO — multidisciplinary global design optimization, specialized in computer-aided engineering (CAE). using the direct global search approaches.
- SNOPT — large-scale optimization problems.
- Unscrambler Optimizer product formulation and process optimization software
- TOMLAB — 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 and KNITRO.
- VisSim — a visual block diagram language for simulation and optimization of dynamical systems.
- WORHP — a large-scale sparse solver for continuous nonlinear optimization.
- XPRESS — integer, linear and quadratic and nonlinear programming
- XTREME — multidisciplinary global optimization based on genetic algorithms accelerated by neural networks, multi-objectives (pareto front), continuous and integer design variables and graphical user interface (Excel, C++ and Python API also available).
Freeware \ Free for academic use
- AIMMS — free for academic use.
- AMPL — free student license.
- APMonitor — free for academic or commercial use with interfaces to Python and MATLAB.
- ASTOS — free for academic use.
- CPLEX — free for academic use.
- Galahad library — free for academic use.
- GUROBI — free for academic use.
- LIONsolver — free license for academic use.
- MIDACO Global optimization software based on evolutionary computing, MINLP, Parallelization (Excel, Matlab, Octave, Python, C/C++, R and Fortran)
- MINTO — integer programming solver using branch and bound algorithm. Freeware for personal use.
- MOSEK — free for academic use.
- OptimJ — Java based modeling language. 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 only for research purpose as a member of a non-commercial and academic institution.
- WORHP — free of charge for academic use.
- XPRESS — free for academic use.
See also
|