1. Introduction#

MPOPT package implements libraries to solve multi-stage or single-stage optimal control problems of the Bolza form given below,

\[\begin{split}\begin{aligned} &\min_{x, u, t_0, t_f, s} & \qquad & J = M(x_0, t_0, x_f, t_f, s) + \int_{0}^{t_f}L(x, u, t, s)dt\\ &\text{subject to} & & \dot{x} = f(x, u, t, s) \\ & & & g(x, u, t, s) \leq 0 \\ & & & h(x_0, t_0, x_f, t_f, s) = 0 \end{aligned}\end{split}\]

The package uses collocation methods to construct a Nonlinear programming problem (NLP) representation of OCP. The resulting NLP is then solved by algorithmic differentiation based CasADi nlpsolver ( NLP solver supports multiple solver plugins including IPOPT, SNOPT, sqpmethod, scpgen).

Main features of the package are :

  • Customizable collocation approximation, compatible with Legendre-Gauss-Radau (LGR), Legendre-Gauss-Lobatto (LGL), Chebyshev-Gauss-Lobatto (CGL) roots.

  • Intuitive definition of single/multi-phase OCP.

  • Supports Differential-Algebraic Equations (DAEs).

  • Customized adaptive grid refinement schemes (Extendable)

  • Gaussian quadrature and differentiation matrices are evaluated using algorithmic differentiation, thus, supporting arbitrarily high number of collocation points limited only by the computational resources.

  • Intuitive post-processing module to retrieve and visualize the solution

  • Good test coverage of the overall package

  • Active development

Access quick introduction presentation PDF.

Quick start demo Jupyter-notebook.

Similar solver packages: GPOPS II, ICLOCS2, PSOPT, DIRCOL, DIDO, SOS, ACADO, OPTY

Next steps: :doc:`./installation`_, :doc:`./getting_started>`_