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

The cartesian product of two or more manifolds. More...

#include <proxsuite-nlp/modelling/spaces/cartesian-product.hpp>

Inheritance diagram for proxsuite::nlp::CartesianProductTpl< _Scalar >:
[legend]
Collaboration diagram for proxsuite::nlp::CartesianProductTpl< _Scalar >:
[legend]

Public Types

using Scalar = _Scalar
 
using Base = ManifoldAbstractTpl<Scalar>
 
- Public Types inherited from proxsuite::nlp::ManifoldAbstractTpl< _Scalar >
using Scalar
 
using TangentSpaceType
 Typedef for the tangent space, as a manifold.
 

Public Member Functions

const BasegetComponent (std::size_t i) const
 
std::size_t numComponents () const
 
template<class Concrete >
void addComponent (const Concrete &c)
 
void addComponent (const CartesianProductTpl &other)
 
 CartesianProductTpl ()=default
 
 CartesianProductTpl (const CartesianProductTpl &)=default
 
CartesianProductTploperator= (const CartesianProductTpl &)=default
 
 CartesianProductTpl (CartesianProductTpl &&)=default
 
CartesianProductTploperator= (CartesianProductTpl &&)=default
 
 CartesianProductTpl (const std::vector< polymorphic< Base > > &components)
 
 CartesianProductTpl (std::initializer_list< polymorphic< Base > > components)
 
 CartesianProductTpl (const polymorphic< Base > &left, const polymorphic< Base > &right)
 
int nx () const
 Get manifold representation dimension.
 
int ndx () const
 Get manifold tangent space dimension.
 
VectorXs neutral () const
 Get the neutral element \(e \in M\) from the manifold (if this makes sense).
 
VectorXs rand () const
 Sample a random point \(x \in M\) on the manifold.
 
bool isNormalized (const ConstVectorRef &x) const
 Check if the input vector x is a viable element of the manifold.
 
std::vector< VectorRef > split (VectorRef x) const
 
std::vector< ConstVectorRef > split (const ConstVectorRef &x) const
 
std::vector< VectorRef > split_vector (VectorRef v) const
 
std::vector< ConstVectorRef > split_vector (const ConstVectorRef &v) const
 
VectorXs merge (const std::vector< VectorXs > &xs) const
 
VectorXs merge_vector (const std::vector< VectorXs > &vs) const
 
void integrate_impl (const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
 Perform the manifold integration operation.
 
void difference_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
 Implementation of the manifold retraction operation.
 
void Jintegrate_impl (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
 
void JintegrateTransport (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
 Perform the parallel transport operation.
 
void Jdifference_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
 
- Public Member Functions inherited from proxsuite::nlp::ManifoldAbstractTpl< _Scalar >
virtual ~ManifoldAbstractTpl ()=default
 
const TangentSpaceType tangentSpace () const
 Return an object representing the tangent space as a manifold.
 
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.
 
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
 
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
 
- Public Attributes inherited from proxsuite::nlp::ManifoldAbstractTpl< _Scalar >
 Scalar
 

Additional Inherited Members

- Static Public Attributes inherited from proxsuite::nlp::ManifoldAbstractTpl< _Scalar >
static constexpr int Options
 Scalar type.
 
- Protected Member Functions inherited from proxsuite::nlp::ManifoldAbstractTpl< _Scalar >
virtual void interpolate_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
 Interpolation operation.
 

Detailed Description

template<typename _Scalar>
struct proxsuite::nlp::CartesianProductTpl< _Scalar >

The cartesian product of two or more manifolds.

Definition at line 14 of file cartesian-product.hpp.

Member Typedef Documentation

◆ Scalar

template<typename _Scalar >
using proxsuite::nlp::CartesianProductTpl< _Scalar >::Scalar = _Scalar

Definition at line 15 of file cartesian-product.hpp.

◆ Base

template<typename _Scalar >
using proxsuite::nlp::CartesianProductTpl< _Scalar >::Base = ManifoldAbstractTpl<Scalar>

Definition at line 17 of file cartesian-product.hpp.

Constructor & Destructor Documentation

◆ CartesianProductTpl() [1/6]

template<typename _Scalar >
proxsuite::nlp::CartesianProductTpl< _Scalar >::CartesianProductTpl ( )
default

◆ CartesianProductTpl() [2/6]

template<typename _Scalar >
proxsuite::nlp::CartesianProductTpl< _Scalar >::CartesianProductTpl ( const CartesianProductTpl< _Scalar > & )
default

◆ CartesianProductTpl() [3/6]

template<typename _Scalar >
proxsuite::nlp::CartesianProductTpl< _Scalar >::CartesianProductTpl ( CartesianProductTpl< _Scalar > && )
default

◆ CartesianProductTpl() [4/6]

template<typename _Scalar >
proxsuite::nlp::CartesianProductTpl< _Scalar >::CartesianProductTpl ( const std::vector< polymorphic< Base > > & components)
inline

Definition at line 49 of file cartesian-product.hpp.

◆ CartesianProductTpl() [5/6]

template<typename _Scalar >
proxsuite::nlp::CartesianProductTpl< _Scalar >::CartesianProductTpl ( std::initializer_list< polymorphic< Base > > components)
inline

Definition at line 52 of file cartesian-product.hpp.

◆ CartesianProductTpl() [6/6]

template<typename _Scalar >
proxsuite::nlp::CartesianProductTpl< _Scalar >::CartesianProductTpl ( const polymorphic< Base > & left,
const polymorphic< Base > & right )
inline

Definition at line 55 of file cartesian-product.hpp.

Member Function Documentation

◆ getComponent()

template<typename _Scalar >
const Base & proxsuite::nlp::CartesianProductTpl< _Scalar >::getComponent ( std::size_t i) const
inline

Definition at line 24 of file cartesian-product.hpp.

◆ numComponents()

template<typename _Scalar >
std::size_t proxsuite::nlp::CartesianProductTpl< _Scalar >::numComponents ( ) const
inline

Definition at line 26 of file cartesian-product.hpp.

◆ addComponent() [1/2]

template<typename _Scalar >
template<class Concrete >
void proxsuite::nlp::CartesianProductTpl< _Scalar >::addComponent ( const Concrete & c)
inline

Definition at line 28 of file cartesian-product.hpp.

◆ addComponent() [2/2]

template<typename _Scalar >
void proxsuite::nlp::CartesianProductTpl< _Scalar >::addComponent ( const CartesianProductTpl< _Scalar > & other)
inline

Definition at line 37 of file cartesian-product.hpp.

◆ operator=() [1/2]

template<typename _Scalar >
CartesianProductTpl & proxsuite::nlp::CartesianProductTpl< _Scalar >::operator= ( const CartesianProductTpl< _Scalar > & )
default

◆ operator=() [2/2]

template<typename _Scalar >
CartesianProductTpl & proxsuite::nlp::CartesianProductTpl< _Scalar >::operator= ( CartesianProductTpl< _Scalar > && )
default

◆ nx()

template<typename _Scalar >
int proxsuite::nlp::CartesianProductTpl< _Scalar >::nx ( ) const
inlinevirtual

Get manifold representation dimension.

Implements proxsuite::nlp::ManifoldAbstractTpl< _Scalar >.

Definition at line 61 of file cartesian-product.hpp.

◆ ndx()

template<typename _Scalar >
int proxsuite::nlp::CartesianProductTpl< _Scalar >::ndx ( ) const
inlinevirtual

Get manifold tangent space dimension.

Implements proxsuite::nlp::ManifoldAbstractTpl< _Scalar >.

Definition at line 69 of file cartesian-product.hpp.

◆ neutral()

template<typename _Scalar >
VectorXs proxsuite::nlp::CartesianProductTpl< _Scalar >::neutral ( ) const
virtual

Get the neutral element \(e \in M\) from the manifold (if this makes sense).

Reimplemented from proxsuite::nlp::ManifoldAbstractTpl< _Scalar >.

◆ rand()

template<typename _Scalar >
VectorXs proxsuite::nlp::CartesianProductTpl< _Scalar >::rand ( ) const
virtual

Sample a random point \(x \in M\) on the manifold.

Reimplemented from proxsuite::nlp::ManifoldAbstractTpl< _Scalar >.

◆ isNormalized()

template<typename _Scalar >
bool proxsuite::nlp::CartesianProductTpl< _Scalar >::isNormalized ( const ConstVectorRef & ) const
virtual

Check if the input vector x is a viable element of the manifold.

Reimplemented from proxsuite::nlp::ManifoldAbstractTpl< _Scalar >.

◆ split() [1/2]

template<typename _Scalar >
std::vector< VectorRef > proxsuite::nlp::CartesianProductTpl< _Scalar >::split ( VectorRef x) const
inline

Definition at line 89 of file cartesian-product.hpp.

◆ split() [2/2]

template<typename _Scalar >
std::vector< ConstVectorRef > proxsuite::nlp::CartesianProductTpl< _Scalar >::split ( const ConstVectorRef & x) const
inline

Definition at line 93 of file cartesian-product.hpp.

◆ split_vector() [1/2]

template<typename _Scalar >
std::vector< VectorRef > proxsuite::nlp::CartesianProductTpl< _Scalar >::split_vector ( VectorRef v) const
inline

Definition at line 97 of file cartesian-product.hpp.

◆ split_vector() [2/2]

template<typename _Scalar >
std::vector< ConstVectorRef > proxsuite::nlp::CartesianProductTpl< _Scalar >::split_vector ( const ConstVectorRef & v) const
inline

Definition at line 101 of file cartesian-product.hpp.

◆ merge()

template<typename _Scalar >
VectorXs proxsuite::nlp::CartesianProductTpl< _Scalar >::merge ( const std::vector< VectorXs > & xs) const

◆ merge_vector()

template<typename _Scalar >
VectorXs proxsuite::nlp::CartesianProductTpl< _Scalar >::merge_vector ( const std::vector< VectorXs > & vs) const

◆ integrate_impl()

template<typename _Scalar >
void proxsuite::nlp::CartesianProductTpl< _Scalar >::integrate_impl ( const ConstVectorRef & x,
const ConstVectorRef & v,
VectorRef out ) const
virtual

Perform the manifold integration operation.

Implements proxsuite::nlp::ManifoldAbstractTpl< _Scalar >.

◆ difference_impl()

template<typename _Scalar >
void proxsuite::nlp::CartesianProductTpl< _Scalar >::difference_impl ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
VectorRef out ) const
virtual

Implementation of the manifold retraction operation.

Implements proxsuite::nlp::ManifoldAbstractTpl< _Scalar >.

◆ Jintegrate_impl()

template<typename _Scalar >
void proxsuite::nlp::CartesianProductTpl< _Scalar >::Jintegrate_impl ( const ConstVectorRef & x,
const ConstVectorRef & v,
MatrixRef Jout,
int arg ) const
virtual

◆ JintegrateTransport()

template<typename _Scalar >
void proxsuite::nlp::CartesianProductTpl< _Scalar >::JintegrateTransport ( const ConstVectorRef & x,
const ConstVectorRef & v,
MatrixRef Jout,
int arg ) const
virtual

Perform the parallel transport operation.

Implements proxsuite::nlp::ManifoldAbstractTpl< _Scalar >.

◆ Jdifference_impl()

template<typename _Scalar >
void proxsuite::nlp::CartesianProductTpl< _Scalar >::Jdifference_impl ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
MatrixRef Jout,
int arg ) const
virtual

Member Data Documentation

◆ Scalar

template<typename _Scalar >
proxsuite::nlp::CartesianProductTpl< _Scalar >::Scalar

Definition at line 18 of file cartesian-product.hpp.


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