Comparison of optimization software

Short description: None

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.0.0 (January 9, 2024; 23 months ago (2024-01-09)) [±][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

* List of optimization software

## References

1. ↑ "The Nature of Mathematical Programming," Mathematical Programming Glossary, INFORMS Computing Society.
2. ↑ Battiti, Roberto; Mauro Brunato; Franco Mascia (2008). Reactive Search and Intelligent Optimization. Springer Verlag. ISBN 978-0-387-09623-0.
3. ↑ "The Story Continues: Announcing Version 14 of Wolfram Language and Mathematica". https://writings.stephenwolfram.com/2024/01/the-story-continues-announcing-version-14-of-wolfram-language-and-mathematica/.

## External links

* OR/MS Today: 2013 Linear Programming Software Survey
* OR/MS Today: 1998 Nonlinear Programming Software Survey

* v
* t
* e

Mathematical optimization software

Data formats|

* Mathematica
* MPS
* nl
* sol

Modeling tools|

* AIMMS
* AMPL
* APMonitor
* ECLiPSe-CLP
* GEKKO
* GAMS
* GNU MathProg
* JuMP
* LINDO
* OPL
* Mathematica
* OptimJ
* PuLP
* Pyomo
* TOMLAB
* Xpress-Mosel
* ZIMPL

LP, MILP∗ solvers|

* APOPT∗
* Artelys Knitro∗
* BCP∗
* CLP
* CBC∗
* CPLEX∗
* FortMP∗
* GCG∗
* GLPK/GLPSOL∗
* Gurobi∗
* LINDO∗
* Lp_solve
* LOQO
* Mathematica
* MINOS
* MINTO∗
* MOSEK∗
* SCIP∗
* SoPlex
* SYMPHONY∗
* Xpress-Optimizer∗

QP, MIQP∗ solvers|

* APOPT∗
* Artelys Knitro∗
* CBC∗
* CLP
* CPLEX∗
* FortMP∗
* Gurobi∗
* IPOPT
* LINDO∗
* Mathematica
* MINOS
* MOSEK∗
* SCIP∗
* Xpress-Optimizer∗

QCP, MIQCP∗ solvers|

* APOPT∗
* Artelys Knitro∗
* CPLEX∗
* Gurobi∗
* IPOPT
* LINDO∗
* Mathematica
* MINOS
* MOSEK∗
* SCIP∗
* Xpress-Optimizer∗
* Xpress-SLP∗

SOCP, MISOCP∗ solvers|

* Artelys Knitro∗
* CPLEX∗
* Gurobi∗
* LINDO∗
* LOQO
* Mathematica
* MOSEK∗
* SCIP∗
* Xpress-Optimizer∗

SDP, MISDP∗ solvers|

* Mathematica
* MOSEK

NLP, MINLP∗ solvers|

* AOA∗
* APOPT∗
* Artelys Knitro∗
* BARON∗
* Couenne∗
* Galahad library
* IPOPT
* LINDO∗
* LOQO
* MIDACO∗
* MINOS
* NLPQLP
* NPSOL
* SCIP∗
* SNOPT∗
* WORHP
* Xpress-SLP∗

GO solvers|

* BARON
* Couenne∗
* Mathematica
* LINDO
* SCIP

CP solvers|

* Comet
* CPLEX CP Optimizer
* Gecode
* Mathematica
* JaCoP

Metaheuristic solvers|

* OptaPlanner

* List of optimization software
* Comparison of optimization software

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Comparison of optimization software. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Comparison_of_optimization_software&oldid=777743"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template