OCPbasic
OCPbasic is an optimizer for solving optimal control problems. OCPbasic is using a direct discretization method for state-constrained optimal control problems and an interior-point method for solving the corresponding nonlinear optimazation problem. The optimizer uses structure exploitation in the fully discretized, state constrained optimal control problem for solving the linear equation systems of the interior-point method.
Find the states \(y : [t_0 , t_f] \rightarrow \mathbb{R}^{n_y}\), the parameter vector \(p \in \mathbb{R}^{n_p}\) and the controls \(u : [t_0 , t_f] \rightarrow \mathbb{R}^{n_u}\), such that $$\begin{align*} \varphi(y(t_0), y(t_f), p) \end{align*}$$ is minimal, subject to the nonlinear constraints $$\begin{align*} y'(t) &= F(t, y(t), u(t), p) && \\ \psi_{\min} &\leq \psi(y(t_0), y(t_f), p) \leq \psi_{\max}&& \\ v_{\min} &\leq v(t, y(t), u(t), p) \leq v_{\max} && \end{align*}$$ with \(t \in \left[t_0, t_f\right]\) and the box conditions $$\begin{align*} y_{\min} &\leq y(t) \leq y_{\max}&& t \in \left[t_0, t_f\right]\\ u_{\min} &\leq u(t) \leq u_{\max}&& t \in \left[t_0, t_f\right]\\ p_{\min} &\leq p \leq p_{\max}\text{.}&& \end{align*}$$ Herein, the functions $$\begin{align*} \varphi&: \mathbb{R}^{n_y} \times \mathbb{R}^{n_y} \times \mathbb{R}^{n_p} \rightarrow \mathbb{R} \\ F&: \left[t_0, t_f\right] \times \mathbb{R}^{n_y} \times \mathbb{R}^{n_u} \times \mathbb{R}^{n_p} \rightarrow \mathbb{R}^{n_y} \\ \psi&: \mathbb{R}^{n_y} \times \mathbb{R}^{n_y} \times \mathbb{R}^{n_p} \rightarrow \mathbb{R}^{n_\psi} \\ v&: \left[t_0, t_f\right] \times \mathbb{R}^{n_y} \times \mathbb{R}^{n_u} \times \mathbb{R}^{n_p} \rightarrow \mathbb{R}^{n_v} \text{.} \end{align*}$$ are user-defined functions.
For more information about OCPbasic get the usermanual OCPbasicUserMan.pdf
IPbasic
IPbasic is a basic implementation of an interior-point-method for optimizing nonlinear optimazation problems. It is using a sparse matrix layout defined by the software package lapack_wrapper. IPbasic is the nonlinear optimizer used by OCPbasic. Therefore it is designed for the use of self defined linear solvers.
Find the vector \(x \in \mathbb{R}^n\) to minimize $$\begin{align*} f(x) \end{align*}$$ subject to the nonlinear constraints $$\begin{align*} h(x) &= 0 \\ g(x) &\leq 0 \end{align*}$$ with \(f: \mathbb{R}^n \rightarrow \mathbb{R}\), \(h: \mathbb{R}^n \rightarrow \mathbb{R}^p\) and \(g: \mathbb{R}^n \rightarrow \mathbb{R}^q\).
For more information about IPbasic get the usermanual IPbasicUserMan.pdf
lapack_wrapper
An efficient wrapper for lapack and blas into c++, developed by Enrico Bertolazzi.
Find the original library at https://github.com/ebertolazzi/LapackWrapper.
The library lapack_wrapper used by OCPbasic and IPbasic as an interface to commen linear algebra packages.
Package: | BLAS | LAPACK |
BLAS / LAPACK | ✔ | ✔ |
OpenBLAS | ✔ | ✔ |
Intel Math Kernel Library (MKL) | ✔ | ✔ |
ATLAS | ~ | ~ |
Accelerate - Apple Developer | ~ | ~ |
- ✔: Supported by lapack_wrapper and tested with OCPbasic and IPbasic.
- ~: Supported by lapack_wrapper but not tested with OCPbasic and IPbasic.