A note on library dependencies¶
The nonlinear programming (NLP) formulations in mimir uses Casadi’s nlpsol
interface. Casadi implements interfaces to various third-party solvers, but several of
them require a commercial license to use. Casadi also provides textbook or experimental
solvers to solve such problems, but it is generally recommended to use a third-party
solver for best performance and reliability, see [4] for general
recommendations. Solvers usually depend on low level routines such as LAPACK/BLAS or
METIS. In Table 3 we provide an overview of various libraries with
their license and availability on Linux and Windows. There are alternatives to these
libraries, but these are the options mimir can support without extra effort.
The choice of solver can have large impact on solve time of an optimization problem, especially for large problems and by exploiting knowledge of problem structure. There are also other factors that can improve the solution times, including solver settings, using OpenMP, multi-threading, c-code generation, and discretization approach. We have not exhausted the performance improvement potential in our implementation efforts, so there is very likely performance gains available.
Name |
Purpose |
License |
Conan recipe |
Recipe Platforms 1 |
Requires |
---|---|---|---|---|---|
Computer algebra system |
LGPL-3.0 |
Linux, Window |
|||
sqpmethod |
NLP solver |
LGPL-3.0 |
with casadi recipe |
Linux, Windows |
A QO solver (e.g. qrqp) |
NLP solver |
zlib |
with casadi recipe |
Linux, Windows |
qpOASES |
|
NLP solver |
EPL-2.0 |
Linux |
MUMPS/HSL or other solver |
||
QP solver |
LGPL-2.1 |
with casadi recipe |
Linux, Windows |
LAPACK, BLAS |
|
qrqp |
QP solver |
LGPL-3.0 |
with casadi recipe |
Linux, Windows |
|
Linear solver |
CeCILL-C |
Linux |
LAPACK, BLAS, (METIS) |
||
Linear solvers |
Linux |
LAPACK, BLAS, (METIS) |
|||
Matrix ordering |
Linux, Windows |
||||
BLAS, LAPACK |
BSD 3-Clause |
Linux, Windows |
|||
Numerical integrators |
BSD 3-Clause |
with casadi recipe |
Linux, Windows |
- 1
Platform support only reflects what the referenced recipes can build.