Public Types | Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
corbo::MixedEdge< Vertices > Class Template Referenceabstract

#include <edge.h>

Inheritance diagram for corbo::MixedEdge< Vertices >:
Inheritance graph
[legend]

Public Types

using ConstPtr = std::shared_ptr< const MixedEdge >
 
using Ptr = std::shared_ptr< MixedEdge >
 
using UPtr = std::unique_ptr< MixedEdge >
 
using VertexContainer = std::array< VertexInterface *, numVerticesCompileTime >
 Typedef to represent the vertex container. More...
 
- Public Types inherited from corbo::BaseMixedEdge
using Ptr = std::shared_ptr< BaseMixedEdge >
 
using UPtr = std::unique_ptr< BaseMixedEdge >
 
- Public Types inherited from corbo::EdgeInterface
using Ptr = std::shared_ptr< EdgeInterface >
 
using UPtr = std::unique_ptr< EdgeInterface >
 

Public Member Functions

void computeEqualityValues (Eigen::Ref< Eigen::VectorXd > eq_values) override=0
 
void computeInequalityValues (Eigen::Ref< Eigen::VectorXd > ineq_values) override=0
 
void computeObjectiveValues (Eigen::Ref< Eigen::VectorXd > obj_values) override=0
 
int getEqualityDimension () const override=0
 
int getInequalityDimension () const override=0
 
int getNumVertices () const override
 Return number of attached vertices. More...
 
int getObjectiveDimension () const override=0
 
const VertexInterfacegetVertex (int idx) const override
 
VertexInterfacegetVertexRaw (int idx) override
 Get access to vertex with index idx (0 <= idx < numVertices) More...
 
 MixedEdge ()=delete
 
template<class... VerticesT>
 MixedEdge (VerticesT &... args)
 Construct edge by providing connected vertices. More...
 
void precompute () override=0
 
int verticesDimension () const override
 Return the combined dimension of all attached vertices (excluding fixed vertex components) More...
 
- Public Member Functions inherited from corbo::BaseMixedEdge
virtual void computeConstraintHessians (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &eq_jacobian_i, const Eigen::Ref< const Eigen::MatrixXd > &ineq_jacobian_i, Eigen::Ref< Eigen::MatrixXd > eq_hessian_ij, Eigen::Ref< Eigen::MatrixXd > ineq_hessian_ij, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr)
 
virtual void computeConstraintHessiansInc (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &eq_jacobian_i, const Eigen::Ref< const Eigen::MatrixXd > &ineq_jacobian_i, Eigen::Ref< Eigen::MatrixXd > eq_hessian_ij, Eigen::Ref< Eigen::MatrixXd > ineq_hessian_ij, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr)
 
virtual void computeConstraintJacobians (int vtx_idx, Eigen::Ref< Eigen::MatrixXd > eq_jacobian, Eigen::Ref< Eigen::MatrixXd > ineq_jacobian, const double *eq_multipliers=nullptr, const double *ineq_multipliers=nullptr)
 
virtual void computeEqualityHessian (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &block_jacobian_i, Eigen::Ref< Eigen::MatrixXd > block_hessian_ij, const double *multipliers=nullptr, double weight=1.0)
 
virtual void computeEqualityHessianInc (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &block_jacobian_i, Eigen::Ref< Eigen::MatrixXd > block_hessian_ij, const double *multipliers=nullptr, double weight=1.0)
 
virtual void computeEqualityJacobian (int vtx_idx, Eigen::Ref< Eigen::MatrixXd > block_jacobian, const double *multipliers=nullptr)
 
virtual void computeHessians (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &obj_jacobian_i, const Eigen::Ref< const Eigen::MatrixXd > &eq_jacobian_i, const Eigen::Ref< const Eigen::MatrixXd > &ineq_jacobian_i, Eigen::Ref< Eigen::MatrixXd > obj_hessian_ij, Eigen::Ref< Eigen::MatrixXd > eq_hessian_ij, Eigen::Ref< Eigen::MatrixXd > ineq_hessian_ij, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr, double weight_obj=1.0)
 
virtual void computeHessiansInc (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &obj_jacobian_i, const Eigen::Ref< const Eigen::MatrixXd > &eq_jacobian_i, const Eigen::Ref< const Eigen::MatrixXd > &ineq_jacobian_i, Eigen::Ref< Eigen::MatrixXd > obj_hessian_ij, Eigen::Ref< Eigen::MatrixXd > eq_hessian_ij, Eigen::Ref< Eigen::MatrixXd > ineq_hessian_ij, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr, double weight_obj=1.0)
 
virtual void computeInequalityHessian (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &block_jacobian_i, Eigen::Ref< Eigen::MatrixXd > block_hessian_ij, const double *multipliers=nullptr, double weight=1.0)
 
virtual void computeInequalityHessianInc (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &block_jacobian_i, Eigen::Ref< Eigen::MatrixXd > block_hessian_ij, const double *multipliers=nullptr, double weight=1.0)
 
virtual void computeInequalityJacobian (int vtx_idx, Eigen::Ref< Eigen::MatrixXd > block_jacobian, const double *multipliers=nullptr)
 
virtual void computeJacobians (int vtx_idx, Eigen::Ref< Eigen::MatrixXd > obj_jacobian, Eigen::Ref< Eigen::MatrixXd > eq_jacobian, Eigen::Ref< Eigen::MatrixXd > ineq_jacobian, const double *obj_multipliers=nullptr, const double *eq_multipliers=nullptr, const double *ineq_multipliers=nullptr)
 
virtual void computeObjectiveHessian (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &block_jacobian_i, Eigen::Ref< Eigen::MatrixXd > block_hessian_ij, const double *multipliers=nullptr, double weight=1.0)
 
virtual void computeObjectiveHessianInc (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &block_jacobian_i, Eigen::Ref< Eigen::MatrixXd > block_hessian_ij, const double *multipliers=nullptr, double weight=1.0)
 
virtual void computeObjectiveJacobian (int vtx_idx, Eigen::Ref< Eigen::MatrixXd > block_jacobian, const double *multipliers=nullptr)
 
virtual double computeSquaredNormOfObjectiveValues ()
 
virtual double computeSumOfObjectiveValues ()
 
void computeValues (Eigen::Ref< Eigen::VectorXd > values) final
 Compute function values. More...
 
int getDimension () const override
 Get dimension of the edge (dimension of the cost-function/constraint value vector) More...
 
int getEdgeEqualityIdx () const
 
int getEdgeInequalityIdx () const
 
int getEdgeObjectiveIdx () const
 Retrieve current edge index (warning, this value is determined within the related HyperGraph) More...
 
virtual bool isEqualityLinear () const
 
virtual bool isInequalityLinear () const
 
virtual bool isObjectiveLeastSquaresForm () const =0
 
virtual bool isObjectiveLinear () const
 Return true if the edge is linear (and hence its Hessian is always zero) More...
 
void reserveCacheMemory (int num_value_vectors, int num_jacobians)
 
void reserveValuesCacheMemory (int num_obj_values, int num_eq_values, int num_ineq_values)
 
void reserveJacobiansCacheMemory (int num_obj_jacobians, int num_eq_jacobians, int num_ineq_jacobians)
 
void computeObjectiveValuesCached ()
 Call computeObjectiveValues() and store result to the internal cache. More...
 
void computeSquaredNormOfObjectiveValuesCached ()
 compute the specialied squared-norm method for computing the values (note only the first element in the values cache is used) More...
 
void computeEqualityValuesCached ()
 Call computeEqualityValues() and store result to the internal cache. More...
 
void computeInequalityValuesCached ()
 Call computeInequalityValues() and store result to the internal cache. More...
 
EdgeCachegetObjectiveCache ()
 
const EdgeCachegetObjectiveCache () const
 
EdgeCachegetEqualityCache ()
 
const EdgeCachegetEqualityCache () const
 
EdgeCachegetInequalityCache ()
 
const EdgeCachegetInequalityCache () const
 
- Public Member Functions inherited from corbo::EdgeInterface
virtual double computeSquaredNormOfValues ()
 
virtual double computeSumOfValues ()
 
int getNumFiniteVerticesLowerBounds () const
 
int getNumFiniteVerticesUpperBounds () const
 
virtual ~EdgeInterface ()
 Virtual destructor. More...
 

Static Public Attributes

static constexpr const int numVerticesCompileTime = sizeof...(Vertices)
 Return number of vertices at compile-time. More...
 

Protected Attributes

const VertexContainer _vertices
 Vertex container. More...
 
- Protected Attributes inherited from corbo::BaseMixedEdge
int _edge_idx_eq = 0
 
int _edge_idx_ineq = 0
 
int _edge_idx_obj = 0
 
EdgeCache _equality_cache
 
EdgeCache _inequality_cache
 
EdgeCache _objective_cache
 

Detailed Description

template<class... Vertices>
class corbo::MixedEdge< Vertices >

Definition at line 288 of file edge.h.

Member Typedef Documentation

◆ ConstPtr

template<class... Vertices>
using corbo::MixedEdge< Vertices >::ConstPtr = std::shared_ptr<const MixedEdge>

Definition at line 292 of file edge.h.

◆ Ptr

template<class... Vertices>
using corbo::MixedEdge< Vertices >::Ptr = std::shared_ptr<MixedEdge>

Definition at line 291 of file edge.h.

◆ UPtr

template<class... Vertices>
using corbo::MixedEdge< Vertices >::UPtr = std::unique_ptr<MixedEdge>

Definition at line 293 of file edge.h.

◆ VertexContainer

template<class... Vertices>
using corbo::MixedEdge< Vertices >::VertexContainer = std::array<VertexInterface*, numVerticesCompileTime>

Typedef to represent the vertex container.

Definition at line 299 of file edge.h.

Constructor & Destructor Documentation

◆ MixedEdge() [1/2]

template<class... Vertices>
corbo::MixedEdge< Vertices >::MixedEdge ( )
delete

◆ MixedEdge() [2/2]

template<class... Vertices>
template<class... VerticesT>
corbo::MixedEdge< Vertices >::MixedEdge ( VerticesT &...  args)
inlineexplicit

Construct edge by providing connected vertices.

The order must match the order of template arguments provided to the class.

Warning
Vertices must remain valid as long as the Edge is in use!Construct edge by passing all vertices references.

Definition at line 311 of file edge.h.

Member Function Documentation

◆ computeEqualityValues()

template<class... Vertices>
void corbo::MixedEdge< Vertices >::computeEqualityValues ( Eigen::Ref< Eigen::VectorXd >  eq_values)
overridepure virtual

◆ computeInequalityValues()

template<class... Vertices>
void corbo::MixedEdge< Vertices >::computeInequalityValues ( Eigen::Ref< Eigen::VectorXd >  ineq_values)
overridepure virtual

◆ computeObjectiveValues()

template<class... Vertices>
void corbo::MixedEdge< Vertices >::computeObjectiveValues ( Eigen::Ref< Eigen::VectorXd >  obj_values)
overridepure virtual

◆ getEqualityDimension()

template<class... Vertices>
int corbo::MixedEdge< Vertices >::getEqualityDimension ( ) const
overridepure virtual

◆ getInequalityDimension()

template<class... Vertices>
int corbo::MixedEdge< Vertices >::getInequalityDimension ( ) const
overridepure virtual

◆ getNumVertices()

template<class... Vertices>
int corbo::MixedEdge< Vertices >::getNumVertices ( ) const
inlineoverridevirtual

Return number of attached vertices.

Implements corbo::EdgeInterface.

Definition at line 325 of file edge.h.

◆ getObjectiveDimension()

template<class... Vertices>
int corbo::MixedEdge< Vertices >::getObjectiveDimension ( ) const
overridepure virtual

◆ getVertex()

template<class... Vertices>
const VertexInterface* corbo::MixedEdge< Vertices >::getVertex ( int  idx) const
inlineoverridevirtual

Implements corbo::EdgeInterface.

Definition at line 354 of file edge.h.

◆ getVertexRaw()

template<class... Vertices>
VertexInterface* corbo::MixedEdge< Vertices >::getVertexRaw ( int  idx)
inlineoverridevirtual

Get access to vertex with index idx (0 <= idx < numVertices)

Implements corbo::EdgeInterface.

Definition at line 347 of file edge.h.

◆ precompute()

template<class... Vertices>
void corbo::MixedEdge< Vertices >::precompute ( )
overridepure virtual

◆ verticesDimension()

template<class... Vertices>
int corbo::MixedEdge< Vertices >::verticesDimension ( ) const
inlineoverridevirtual

Return the combined dimension of all attached vertices (excluding fixed vertex components)

Implements corbo::EdgeInterface.

Definition at line 328 of file edge.h.

Member Data Documentation

◆ _vertices

template<class... Vertices>
const VertexContainer corbo::MixedEdge< Vertices >::_vertices
protected

Vertex container.

Definition at line 361 of file edge.h.

◆ numVerticesCompileTime

template<class... Vertices>
constexpr const int corbo::MixedEdge< Vertices >::numVerticesCompileTime = sizeof...(Vertices)
static

Return number of vertices at compile-time.

Definition at line 296 of file edge.h.


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


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Mon Feb 28 2022 22:08:03