proxsuite-nlp  0.10.0
A primal-dual augmented Lagrangian-type solver for nonlinear programming on manifolds.
Loading...
Searching...
No Matches
proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options > Struct Template Referenceabstract

#include <proxsuite-nlp/manifold-base.hpp>

Inheritance diagram for proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >:
[legend]

Public Types

using Scalar = _Scalar
 
using TangentSpaceType = VectorSpaceTpl<Scalar, Eigen::Dynamic, Options>
 Typedef for the tangent space, as a manifold.
 

Public Member Functions

virtual ~ManifoldAbstractTpl ()=default
 
virtual int nx () const =0
 Get manifold representation dimension.
 
virtual int ndx () const =0
 Get manifold tangent space dimension.
 
virtual VectorXs neutral () const
 Get the neutral element \(e \in M\) from the manifold (if this makes sense).
 
virtual VectorXs rand () const
 Sample a random point \(x \in M\) on the manifold.
 
virtual bool isNormalized (const ConstVectorRef &) const
 Check if the input vector x is a viable element of the manifold.
 
const TangentSpaceType tangentSpace () const
 Return an object representing the tangent space as a manifold.
 
Operations
void integrate (const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
 Manifold integration operation \(x \oplus v\).
 
void Jintegrate (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
 Jacobian of the integation operation.
 
virtual void JintegrateTransport (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const =0
 Perform the parallel transport operation.
 
void difference (const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
 Manifold difference/retraction operation \(x_1 \ominus x_0\).
 
void Jdifference (const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
 Jacobian of the retraction operation.
 
void interpolate (const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
 
Allocated overloads.
VectorXs integrate (const ConstVectorRef &x, const ConstVectorRef &v) const
 Manifold integration operation \(x \oplus v\).
 
VectorXs difference (const ConstVectorRef &x0, const ConstVectorRef &x1) const
 Manifold difference/retraction operation \(x_1 \ominus x_0\).
 
VectorXs interpolate (const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u) const
 Interpolation operation.
 

Public Attributes

 Scalar
 

Static Public Attributes

static constexpr int Options = _Options
 Scalar type.
 

Protected Member Functions

virtual void integrate_impl (const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const =0
 Perform the manifold integration operation.
 
virtual void Jintegrate_impl (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const =0
 
virtual void difference_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const =0
 Implementation of the manifold retraction operation.
 
virtual void Jdifference_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const =0
 
virtual void interpolate_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
 Interpolation operation.
 

Detailed Description

template<typename _Scalar, int _Options>
struct proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >

Base class for manifolds, to use in cost funcs, solvers...

Definition at line 13 of file manifold-base.hpp.

Member Typedef Documentation

◆ Scalar

template<typename _Scalar , int _Options>
using proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::Scalar = _Scalar

Definition at line 15 of file manifold-base.hpp.

◆ TangentSpaceType

template<typename _Scalar , int _Options>
using proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::TangentSpaceType = VectorSpaceTpl<Scalar, Eigen::Dynamic, Options>

Typedef for the tangent space, as a manifold.

Definition at line 37 of file manifold-base.hpp.

Constructor & Destructor Documentation

◆ ~ManifoldAbstractTpl()

template<typename _Scalar , int _Options>
virtual proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::~ManifoldAbstractTpl ( )
virtualdefault

Member Function Documentation

◆ nx()

◆ ndx()

◆ neutral()

◆ rand()

◆ isNormalized()

◆ tangentSpace()

template<typename _Scalar , int _Options>
const TangentSpaceType proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::tangentSpace ( ) const
inline

Return an object representing the tangent space as a manifold.

Definition at line 40 of file manifold-base.hpp.

◆ integrate() [1/2]

template<typename _Scalar , int _Options>
void proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::integrate ( const ConstVectorRef & x,
const ConstVectorRef & v,
VectorRef out ) const

Manifold integration operation \(x \oplus v\).

◆ Jintegrate()

template<typename _Scalar , int _Options>
void proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::Jintegrate ( const ConstVectorRef & x,
const ConstVectorRef & v,
MatrixRef Jout,
int arg ) const

Jacobian of the integation operation.

◆ JintegrateTransport()

◆ difference() [1/2]

template<typename _Scalar , int _Options>
void proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::difference ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
VectorRef out ) const

Manifold difference/retraction operation \(x_1 \ominus x_0\).

◆ Jdifference()

template<typename _Scalar , int _Options>
void proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::Jdifference ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
MatrixRef Jout,
int arg ) const

Jacobian of the retraction operation.

◆ interpolate() [1/2]

template<typename _Scalar , int _Options>
void proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::interpolate ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
const Scalar & u,
VectorRef out ) const

◆ integrate() [2/2]

template<typename _Scalar , int _Options>
VectorXs proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::integrate ( const ConstVectorRef & x,
const ConstVectorRef & v ) const
inline

Manifold integration operation \(x \oplus v\).

Out-of-place variant of integration operator.

Definition at line 77 of file manifold-base.hpp.

◆ difference() [2/2]

template<typename _Scalar , int _Options>
VectorXs proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::difference ( const ConstVectorRef & x0,
const ConstVectorRef & x1 ) const
inline

Manifold difference/retraction operation \(x_1 \ominus x_0\).

Out-of-place version of diff operator.

Definition at line 86 of file manifold-base.hpp.

◆ interpolate() [2/2]

template<typename _Scalar , int _Options>
VectorXs proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::interpolate ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
const Scalar & u ) const
inline

Interpolation operation.

Definition at line 94 of file manifold-base.hpp.

◆ integrate_impl()

◆ Jintegrate_impl()

◆ difference_impl()

◆ Jdifference_impl()

◆ interpolate_impl()

template<typename _Scalar , int _Options>
virtual void proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::interpolate_impl ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
const Scalar & u,
VectorRef out ) const
inlineprotectedvirtual

Member Data Documentation

◆ Options

template<typename _Scalar , int _Options>
int proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::Options = _Options
staticconstexpr

Scalar type.

Definition at line 16 of file manifold-base.hpp.

◆ Scalar

template<typename _Scalar , int _Options>
proxsuite::nlp::ManifoldAbstractTpl< _Scalar, _Options >::Scalar

Definition at line 18 of file manifold-base.hpp.


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