I have found so many tools that can solve optimization problems (wikipedia also has one page "List of optimization software"), I want to know which workflow is the best or $\color{blue}{\text{the most practical}}$? Any preference?
Minor
- Qaekwy is a powerful and flexible constraint-based modelling and optimization framework designed to tackle complex problem-solving scenarios.
Miscelleous
- Wolfram Mathematica built-in close-source functions. See this guide.
- MiniZinc IDE Try it online. model file name example: model.mzn
- Google OR-Tools
- LINGO
- Bonmin (free, open-source) and Knitro (commercial) are the best suited solvers to solve problems with black box functions with derivatives and integer (and possibly continuous) variables.
Abbreviations
Abbreviations |
---|
Linear programming (LP) |
Quadratic programming (QP) |
Second-order cone programming (SOCP) |
Semidefinite programming (SDP) |
Geometric programming (GP) |
Nonlinear programming (NLP) |
Nonlinear SDP (NLSDP) |
Exponential cone programming (ECP) |
Mixed-integer LP (MIQP) |
Mixed-integer QP (MIQP) |
Mixed-integer SOCP (MISOCP) |
DSL(Domain Specific Language)
Programming Language
- Python
- MATLAB
- Wolfram Language
- Julia
- Java
- C++
- ...
model file in different format
AMPL syntax (example). File Format: AMPL model files typically use .mod for model definitions and .dat for data files. The solution or command files often use the .run extension.
GAMS syntax (example). File Format: GAMS uses .gms for its model files.
MOSEL syntax (example). File Format: MOSEL models are usually saved with the .mos file extension.
MPS syntax (example). File Format: MPS (Mathematical Programming System) is a file format for representing linear programming (LP) and mixed-integer programming (MIP) models. The standard file extension for MPS files is .mps.
NL File Format: The NL file format is used by the AMPL solver library. It represents nonlinear program structures. The file extension for NL files is .nl. The NL file format is a binary format used by the AMPL solver library to represent nonlinear programming problems. If you need to work with NL files directly, you would typically use a specialized tool or library capable of reading and writing this format, such as the AMPL Solver Library (ASL)
OSIL syntax (example). File Format: OSIL (Optimization Services Instance Language) is an XML-based file format for representing optimization problems. The file extension for OSIL files is .osil.
ZIMPL syntax (example). File Format: ZIMPL (Zuse Institute Mathematical Programming Language) is a modeling language used to generate LP and MIP models that can be read by a variety of solvers. ZIMPL models typically use the .zpl extension.
SDPA syntax (example). File Format: SDPA (Semidefinite Program Algorithm) files are used for semidefinite programming. They typically have the .dat-s extension for data files, with corresponding .sdpa for problem description files.
Glue?
Python-based
cvxpy
gurobipy
Pyomo is a Python-based open-source software package that supports a diverse set of optimization capabilities for formulating, solving, and analyzing optimization models.
PuLp is a free open source software written in Python. It is used to describe optimisation problems as mathematical models.
PyVRP is an open-source, state-of-the-art vehicle routing problem (VRP) solver.
GEKKO is a Python package for machine learning and optimization of mixed-integer and differential algebraic equations.
MATLAB-based
- 👍 YALMIP, a tool that can use different optimization solver with MATLAB DSL
- CVX: a Matlab-based convex modeling framework
- SDPT3 is a Matlab package for solving convex optimization problems involving linear equations and inequalities, second-order cone constraints, and semidefinite constraints (linear matrix inequalities).
Julia-based
- JuMP is a domain-specific modeling language for mathematical optimization embedded in Julia.
Cpp-based
- The GLPK (GNU Linear Programming Kit) package is intended for solving large-scale linear programming (LP), mixed integer programming (MIP), and other related problems. It is a set of routines written in ANSI C and organized in the form of a callable library.
$\cdots$
Solver
- Gurobi Optimizer
- SeDuMi, a great piece of software for optimization over symmetric cones.
- IBM CPLEX
- XPRESS
- SCIP, is currently one of the fastest non-commercial solvers for mixed integer programming (MIP) and mixed integer nonlinear programming (MINLP).
- CBC
- FMINCON
- FICO-Xpress
- mosek
- BMIBNB, support Global nonconvex programming, YALMIP built-in solver
- Timefold is the open source AI solver to optimize operations and scheduling in Java, Python or Kotlin.
- ...
Nonlinear optimization specific?
SAT solver (specific)?
- the Kissat SAT solver is a condensed and improved reimplementation of CaDiCaL in C.
- The goal of CaDiCaL is to provide a clean and efficient state-of-the-art CDCL solver, which is also easy to understand and change.
Cloud Platform
- NEOS Solvers, a free internet-based service for solving numerical optimization problems.