laOPT
laOPT is a native C++ toolbox for high-performance nonlinear optimization and optimal control. It combines an Eigen-based modeling interface, automatic differentiation (AD), sparse derivative assembly, direct optimal-control transcription, and interfaces to established numerical solvers.
laOPT models nonlinear programs of the form
\[\begin{aligned} \min_{\xi} \quad & \phi(\xi) \\ \text{s.t.} \quad & c(\xi) = 0, \\ & \xi_{\mathrm{lb}} \leq \xi \leq \xi_{\mathrm{ub}}, \\ & h_{\mathrm{lb}} \leq h(\xi) \leq h_{\mathrm{ub}}, \end{aligned}\]where \(\xi\) is the decision vector, \(\phi\) is the scalar objective, \(c\) contains equality constraints, and \(h\) contains bounded inequality constraints. Derivatives and sparse matrix structures are generated from the user-defined model.
For optimal control applications, laOPT provides a continuous-time problem interface together with multiple shooting and Legendre-Gauss-Radau collocation.
Features
- Header-only C++17 core built on Eigen.
- Vector-valued objectives, dynamics, bounds, and constraints.
- Automatic gradients, Jacobians, and Hessians using Eigen, with optional CasADi support.
- Precomputed sparsity patterns and evaluation tapes for repeated sparse evaluations.
- Native SQP with interchangeable QP solvers, plus an IPOPT interface.
- Multiple shooting and Radau collocation transcriptions.
- BSD 2-Clause license.
Where to start
- New users should begin with Installation and First Optimal Control Problem.
- For trajectory optimization, continue with Optimal control problems.
- To select a numerical backend, see Solvers.