Comparison of optimization software
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 the 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 while the output can be the power consumption. Other inputs can be business choices with the output being obtained profit. or describing the configuration of a physical system with the output being 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
|
Programming language
|
Latest stable version
|
Academic/noncommercial use is free
|
Can be used in proprietary apps
|
License
|
Notes
|
ALGLIB
|
C++, C#, Python, FreePascal
|
3.19.0 / June 2022
|
Yes
|
Yes
|
Dual (Commercial, GPL)
|
General purpose library, includes optimization package: linear, quadratic, nonlinear programming.
|
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, R
|
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.13 / Nov 2021
|
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.
|
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
|
14.1.0 (July 31, 2024; 3 months ago (2024-07-31)) [±][3]
|
No
|
Yes
|
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
|
|
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
References
External links
|
|