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.

Table 3 Library dependencies for mimir; a summary.

Name

Purpose

License

Conan recipe

Recipe Platforms 1

Requires

CasADi [4]

Computer algebra system

LGPL-3.0

conan-casadi

Linux, Window

sqpmethod

NLP solver

LGPL-3.0

with casadi recipe

Linux, Windows

A QO solver (e.g. qrqp)

blockSQP [19]

NLP solver

zlib

with casadi recipe

Linux, Windows

qpOASES

Ipopt [30]

NLP solver

EPL-2.0

conan-ipopt

Linux

MUMPS/HSL or other solver

qpOASES [9]

QP solver

LGPL-2.1

with casadi recipe

Linux, Windows

LAPACK, BLAS

qrqp

QP solver

LGPL-3.0

with casadi recipe

Linux, Windows

MUMPS [2, 3]

Linear solver

CeCILL-C

conan-coinmumps

Linux

LAPACK, BLAS, (METIS)

HSL [18]

Linear solvers

Various

conan-coinhsl

Linux

LAPACK, BLAS, (METIS)

METIS [20, 21]

Matrix ordering

Custom

conan-coinmetis

Linux, Windows

OpenBLAS [24, 31]

BLAS, LAPACK

BSD 3-Clause

conan center, conan-openblas

Linux, Windows

SUNDIALS [17]

Numerical integrators

BSD 3-Clause

with casadi recipe

Linux, Windows

1

Platform support only reflects what the referenced recipes can build.