:github_url: https://github.com/mpopt/mpopt/blob/docs/docs/source/introduction.rst .. title::Introduction .. _introduction: ################# Introduction ################# MPOPT package implements libraries to solve multi-stage or single-stage optimal control problems of the Bolza form given below, .. math:: \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} 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>`_