aligator  0.10.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
aligator::PDALFunction< _Scalar > Struct Template Reference

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)
 

Detailed Description

template<typename _Scalar>
struct aligator::PDALFunction< _Scalar >

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.

Member Typedef Documentation

◆ Scalar

template<typename _Scalar >
using aligator::PDALFunction< _Scalar >::Scalar = _Scalar

Definition at line 48 of file merit-function.hpp.

◆ StageModel

template<typename _Scalar >
using aligator::PDALFunction< _Scalar >::StageModel = StageModelTpl<Scalar>

Definition at line 50 of file merit-function.hpp.

◆ StageData

template<typename _Scalar >
using aligator::PDALFunction< _Scalar >::StageData = StageDataTpl<Scalar>

Definition at line 51 of file merit-function.hpp.

◆ StageFunctionData

template<typename _Scalar >
using aligator::PDALFunction< _Scalar >::StageFunctionData = StageFunctionDataTpl<Scalar>

Definition at line 52 of file merit-function.hpp.

◆ ConstraintStack

template<typename _Scalar >
using aligator::PDALFunction< _Scalar >::ConstraintStack = ConstraintStackTpl<Scalar>

Definition at line 53 of file merit-function.hpp.

◆ Workspace

template<typename _Scalar >
using aligator::PDALFunction< _Scalar >::Workspace = WorkspaceTpl<Scalar>

Definition at line 54 of file merit-function.hpp.

◆ TrajOptProblem

template<typename _Scalar >
using aligator::PDALFunction< _Scalar >::TrajOptProblem = TrajOptProblemTpl<Scalar>

Definition at line 55 of file merit-function.hpp.

◆ TrajOptData

template<typename _Scalar >
using aligator::PDALFunction< _Scalar >::TrajOptData = TrajOptDataTpl<Scalar>

Definition at line 56 of file merit-function.hpp.

Member Function Documentation

◆ ALIGATOR_DYNAMIC_TYPEDEFS()

template<typename _Scalar >
aligator::PDALFunction< _Scalar >::ALIGATOR_DYNAMIC_TYPEDEFS ( Scalar )

◆ evaluate()

template<typename _Scalar >
static Scalar aligator::PDALFunction< _Scalar >::evaluate ( const Scalar mudyn,
const Scalar mucstr,
const TrajOptProblem & problem,
const std::vector< VectorXs > & lams,
const std::vector< VectorXs > & vs,
Workspace & workspace )
static

Compute the merit function at the trial point.

Warning
Evaluate the problem and proximal terms first!

◆ directionalDerivative()

template<typename _Scalar >
static Scalar aligator::PDALFunction< _Scalar >::directionalDerivative ( const Scalar mudyn,
const Scalar mucstr,
const TrajOptProblem & problem,
const std::vector< VectorXs > & lams,
const std::vector< VectorXs > & vs,
Workspace & workspace )
static

The documentation for this struct was generated from the following file: