aligator
0.10.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
|
Primal-dual augmented Lagrangian merit function. More...
#include <aligator/solvers/proxddp/merit-function.hpp>
Public Types | |
using | Scalar = _Scalar |
using | StageModel = StageModelTpl<Scalar> |
using | StageData = StageDataTpl<Scalar> |
using | StageFunctionData = StageFunctionDataTpl<Scalar> |
using | ConstraintStack = ConstraintStackTpl<Scalar> |
using | Workspace = WorkspaceTpl<Scalar> |
using | TrajOptProblem = TrajOptProblemTpl<Scalar> |
using | TrajOptData = TrajOptDataTpl<Scalar> |
Public Member Functions | |
ALIGATOR_DYNAMIC_TYPEDEFS (Scalar) | |
Static Public Member Functions | |
static Scalar | evaluate (const Scalar mudyn, const Scalar mucstr, const TrajOptProblem &problem, const std::vector< VectorXs > &lams, const std::vector< VectorXs > &vs, Workspace &workspace) |
Compute the merit function at the trial point. | |
static Scalar | directionalDerivative (const Scalar mudyn, const Scalar mucstr, const TrajOptProblem &problem, const std::vector< VectorXs > &lams, const std::vector< VectorXs > &vs, Workspace &workspace) |
Primal-dual augmented Lagrangian merit function.
The standard Powell-Hestenes-Rockafellar (PHR) augmented Lagrangian evaluates as:
\[ \calL_{\mu_k}(\bfx, \bfu, \bmlam^k) = J(\bfx, \bfu) + \mathscr{P}(\bfx,\bfu,\bmlam^k; \mu_k), \\ \mathscr{P} = \sum_{i=0}^{N-1} \frac{1}{2\mu_k} \left\| \Bigg[\begin{array}{c} \phi(x_i, u_i, x_{i+1}) + \mu p^k_i \\ \Pi_{N_\calC}(h(x_i, u_i) + \mu \nu^k_i) \end{array}\Bigg] \right\|^2 \]
where \(\lambda_i^k = (p_i^k, \nu_i^k)\) are the multipliers at time node \(i\), \(J\) is the trajectory cost functional, and \(\mathscr{P}\) is the penalty functional. The Gill-Robinson primal-dual variant
\[ \calM_{\mu_k}(\bfx, \bfu, \bmlam; \bmlam^k) = \calL_{\mu_k}(\bfx, \bfu, \bmlam^k) + \mathscr{P}_2 \]
also adds another penalty term
\[ \mathscr{P}_2 = \sum_{i=0}^{N-1} \frac{1}{2\mu_k}\left\| \Bigg[ (*) - \lambda_i \Bigg] \right\|^2 \]
where \((*)\) is the expression within the norm in \(\mathscr{P}\) above.
Some of the parameters of this function are obtained from the linked SolverProxDDPTpl<Scalar> instance.
Definition at line 47 of file merit-function.hpp.
using aligator::PDALFunction< _Scalar >::Scalar = _Scalar |
Definition at line 48 of file merit-function.hpp.
using aligator::PDALFunction< _Scalar >::StageModel = StageModelTpl<Scalar> |
Definition at line 50 of file merit-function.hpp.
using aligator::PDALFunction< _Scalar >::StageData = StageDataTpl<Scalar> |
Definition at line 51 of file merit-function.hpp.
using aligator::PDALFunction< _Scalar >::StageFunctionData = StageFunctionDataTpl<Scalar> |
Definition at line 52 of file merit-function.hpp.
using aligator::PDALFunction< _Scalar >::ConstraintStack = ConstraintStackTpl<Scalar> |
Definition at line 53 of file merit-function.hpp.
using aligator::PDALFunction< _Scalar >::Workspace = WorkspaceTpl<Scalar> |
Definition at line 54 of file merit-function.hpp.
using aligator::PDALFunction< _Scalar >::TrajOptProblem = TrajOptProblemTpl<Scalar> |
Definition at line 55 of file merit-function.hpp.
using aligator::PDALFunction< _Scalar >::TrajOptData = TrajOptDataTpl<Scalar> |
Definition at line 56 of file merit-function.hpp.
aligator::PDALFunction< _Scalar >::ALIGATOR_DYNAMIC_TYPEDEFS | ( | Scalar | ) |
|
static |
Compute the merit function at the trial point.
|
static |