Software: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, the output can be the power consumption, or the inputs can be business choices and the output can be the obtained profit, or the inputs can describe the configuration of a physical system and the output can be its energy.
An optimization problem can be represented in the following way
- Given: a function f : A [math]\displaystyle{ \to }[/math] R from some set A to the real numbers
- Search for: an element x_{0} in A such that f(x_{0}) ≤ f(x) for all x in A ("minimization").
Typically, A is some subset of the Euclidean space R^{n}, 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 | 13.2.1 (February 10, 2023[±]^{[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
- ↑ "The Nature of Mathematical Programming," Mathematical Programming Glossary, INFORMS Computing Society.
- ↑ Battiti, Roberto; Mauro Brunato; Franco Mascia (2008). Reactive Search and Intelligent Optimization. Springer Verlag. ISBN 978-0-387-09623-0.
- ↑ "Mathematica Quick Revision History". https://www.wolfram.com/mathematica/quick-revision-history/.
External links
- OR/MS Today: 2013 Linear Programming Software Survey
- OR/MS Today: 1998 Nonlinear Programming Software Survey
Original source: https://en.wikipedia.org/wiki/Comparison of optimization software.
Read more |