Public Types | Public Member Functions | Protected Attributes | Friends | List of all members
corbo::BaseMixedEdge Class Referenceabstract

#include <edge_interface.h>

Inheritance diagram for corbo::BaseMixedEdge:
Inheritance graph
[legend]

Public Types

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

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 computeEqualityValues (Eigen::Ref< Eigen::VectorXd > eq_values)=0
 
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 computeInequalityValues (Eigen::Ref< Eigen::VectorXd > ineq_values)=0
 
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 void computeObjectiveValues (Eigen::Ref< Eigen::VectorXd > obj_values)=0
 
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 int getEqualityDimension () const =0
 
virtual int getInequalityDimension () const =0
 
virtual int getObjectiveDimension () const =0
 
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...
 
virtual void precompute ()=0
 
Caching of edge values and block jacobians
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 int getNumVertices () const =0
 Return number of attached vertices. More...
 
virtual const VertexInterfacegetVertex (int idx) const =0
 
virtual VertexInterfacegetVertexRaw (int idx)=0
 Get access to vertex with index idx (0 <= idx < numVertices) More...
 
virtual int verticesDimension () const =0
 Return the combined dimension of all attached vertices (excluding fixed vertex components) More...
 
virtual ~EdgeInterface ()
 Virtual destructor. More...
 

Protected Attributes

int _edge_idx_eq = 0
 
int _edge_idx_ineq = 0
 
int _edge_idx_obj = 0
 
EdgeCache _equality_cache
 
EdgeCache _inequality_cache
 
EdgeCache _objective_cache
 

Friends

class EdgeSetInterface
 

Detailed Description

Definition at line 217 of file edge_interface.h.

Member Typedef Documentation

◆ Ptr

using corbo::BaseMixedEdge::Ptr = std::shared_ptr<BaseMixedEdge>

Definition at line 222 of file edge_interface.h.

◆ UPtr

using corbo::BaseMixedEdge::UPtr = std::unique_ptr<BaseMixedEdge>

Definition at line 223 of file edge_interface.h.

Member Function Documentation

◆ computeConstraintHessians()

void corbo::BaseMixedEdge::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

Definition at line 781 of file edge_interface.cpp.

◆ computeConstraintHessiansInc()

void corbo::BaseMixedEdge::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

Definition at line 1105 of file edge_interface.cpp.

◆ computeConstraintJacobians()

void corbo::BaseMixedEdge::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

Definition at line 466 of file edge_interface.cpp.

◆ computeEqualityHessian()

void corbo::BaseMixedEdge::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

Definition at line 580 of file edge_interface.cpp.

◆ computeEqualityHessianInc()

void corbo::BaseMixedEdge::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

Definition at line 913 of file edge_interface.cpp.

◆ computeEqualityJacobian()

void corbo::BaseMixedEdge::computeEqualityJacobian ( int  vtx_idx,
Eigen::Ref< Eigen::MatrixXd >  block_jacobian,
const double *  multipliers = nullptr 
)
virtual

Definition at line 305 of file edge_interface.cpp.

◆ computeEqualityValues()

virtual void corbo::BaseMixedEdge::computeEqualityValues ( Eigen::Ref< Eigen::VectorXd >  eq_values)
pure virtual

◆ computeEqualityValuesCached()

void corbo::BaseMixedEdge::computeEqualityValuesCached ( )
inline

Call computeEqualityValues() and store result to the internal cache.

Definition at line 332 of file edge_interface.h.

◆ computeHessians()

void corbo::BaseMixedEdge::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

Definition at line 690 of file edge_interface.cpp.

◆ computeHessiansInc()

void corbo::BaseMixedEdge::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

Definition at line 1019 of file edge_interface.cpp.

◆ computeInequalityHessian()

void corbo::BaseMixedEdge::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

Definition at line 635 of file edge_interface.cpp.

◆ computeInequalityHessianInc()

void corbo::BaseMixedEdge::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

Definition at line 966 of file edge_interface.cpp.

◆ computeInequalityJacobian()

void corbo::BaseMixedEdge::computeInequalityJacobian ( int  vtx_idx,
Eigen::Ref< Eigen::MatrixXd >  block_jacobian,
const double *  multipliers = nullptr 
)
virtual

Definition at line 349 of file edge_interface.cpp.

◆ computeInequalityValues()

virtual void corbo::BaseMixedEdge::computeInequalityValues ( Eigen::Ref< Eigen::VectorXd >  ineq_values)
pure virtual

◆ computeInequalityValuesCached()

void corbo::BaseMixedEdge::computeInequalityValuesCached ( )
inline

Call computeInequalityValues() and store result to the internal cache.

Definition at line 334 of file edge_interface.h.

◆ computeJacobians()

void corbo::BaseMixedEdge::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

Definition at line 394 of file edge_interface.cpp.

◆ computeObjectiveHessian()

void corbo::BaseMixedEdge::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

Definition at line 525 of file edge_interface.cpp.

◆ computeObjectiveHessianInc()

void corbo::BaseMixedEdge::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

Definition at line 860 of file edge_interface.cpp.

◆ computeObjectiveJacobian()

void corbo::BaseMixedEdge::computeObjectiveJacobian ( int  vtx_idx,
Eigen::Ref< Eigen::MatrixXd >  block_jacobian,
const double *  multipliers = nullptr 
)
virtual

Definition at line 261 of file edge_interface.cpp.

◆ computeObjectiveValues()

virtual void corbo::BaseMixedEdge::computeObjectiveValues ( Eigen::Ref< Eigen::VectorXd >  obj_values)
pure virtual

◆ computeObjectiveValuesCached()

void corbo::BaseMixedEdge::computeObjectiveValuesCached ( )
inline

Call computeObjectiveValues() and store result to the internal cache.

Definition at line 328 of file edge_interface.h.

◆ computeSquaredNormOfObjectiveValues()

virtual double corbo::BaseMixedEdge::computeSquaredNormOfObjectiveValues ( )
inlinevirtual

Definition at line 258 of file edge_interface.h.

◆ computeSquaredNormOfObjectiveValuesCached()

void corbo::BaseMixedEdge::computeSquaredNormOfObjectiveValuesCached ( )
inline

compute the specialied squared-norm method for computing the values (note only the first element in the values cache is used)

Definition at line 330 of file edge_interface.h.

◆ computeSumOfObjectiveValues()

virtual double corbo::BaseMixedEdge::computeSumOfObjectiveValues ( )
inlinevirtual

Definition at line 251 of file edge_interface.h.

◆ computeValues()

void corbo::BaseMixedEdge::computeValues ( Eigen::Ref< Eigen::VectorXd >  values)
inlinefinalvirtual

Compute function values.

Here, the actual cost/constraint function values are computed:

  • objective in non-least-squares form: e(x) (hereby, the actual cost is f(x) = e(x)^T e(x))
  • objective in least-squares form: f(x)
  • equality constraints: ceq(x) (in case constraints are satisfied: ceq(x) = 0)
  • inequality constraints: c(x) (in case constraints are satisfied: c(x) < 0)
    Parameters
    [in]valuesvalues should be stored here according to getDimension().

Implements corbo::EdgeInterface.

Definition at line 243 of file edge_interface.h.

◆ getDimension()

int corbo::BaseMixedEdge::getDimension ( ) const
inlineoverridevirtual

Get dimension of the edge (dimension of the cost-function/constraint value vector)

Implements corbo::EdgeInterface.

Definition at line 225 of file edge_interface.h.

◆ getEdgeEqualityIdx()

int corbo::BaseMixedEdge::getEdgeEqualityIdx ( ) const
inline

Definition at line 349 of file edge_interface.h.

◆ getEdgeInequalityIdx()

int corbo::BaseMixedEdge::getEdgeInequalityIdx ( ) const
inline

Definition at line 350 of file edge_interface.h.

◆ getEdgeObjectiveIdx()

int corbo::BaseMixedEdge::getEdgeObjectiveIdx ( ) const
inline

Retrieve current edge index (warning, this value is determined within the related HyperGraph)

Definition at line 348 of file edge_interface.h.

◆ getEqualityCache() [1/2]

EdgeCache& corbo::BaseMixedEdge::getEqualityCache ( )
inline

Definition at line 339 of file edge_interface.h.

◆ getEqualityCache() [2/2]

const EdgeCache& corbo::BaseMixedEdge::getEqualityCache ( ) const
inline

Definition at line 340 of file edge_interface.h.

◆ getEqualityDimension()

virtual int corbo::BaseMixedEdge::getEqualityDimension ( ) const
pure virtual

◆ getInequalityCache() [1/2]

EdgeCache& corbo::BaseMixedEdge::getInequalityCache ( )
inline

Definition at line 342 of file edge_interface.h.

◆ getInequalityCache() [2/2]

const EdgeCache& corbo::BaseMixedEdge::getInequalityCache ( ) const
inline

Definition at line 343 of file edge_interface.h.

◆ getInequalityDimension()

virtual int corbo::BaseMixedEdge::getInequalityDimension ( ) const
pure virtual

◆ getObjectiveCache() [1/2]

EdgeCache& corbo::BaseMixedEdge::getObjectiveCache ( )
inline

Definition at line 336 of file edge_interface.h.

◆ getObjectiveCache() [2/2]

const EdgeCache& corbo::BaseMixedEdge::getObjectiveCache ( ) const
inline

Definition at line 337 of file edge_interface.h.

◆ getObjectiveDimension()

virtual int corbo::BaseMixedEdge::getObjectiveDimension ( ) const
pure virtual

◆ isEqualityLinear()

virtual bool corbo::BaseMixedEdge::isEqualityLinear ( ) const
inlinevirtual

◆ isInequalityLinear()

virtual bool corbo::BaseMixedEdge::isInequalityLinear ( ) const
inlinevirtual

◆ isObjectiveLeastSquaresForm()

virtual bool corbo::BaseMixedEdge::isObjectiveLeastSquaresForm ( ) const
pure virtual

◆ isObjectiveLinear()

virtual bool corbo::BaseMixedEdge::isObjectiveLinear ( ) const
inlinevirtual

◆ precompute()

virtual void corbo::BaseMixedEdge::precompute ( )
pure virtual

◆ reserveCacheMemory()

void corbo::BaseMixedEdge::reserveCacheMemory ( int  num_value_vectors,
int  num_jacobians 
)
inline

Definition at line 309 of file edge_interface.h.

◆ reserveJacobiansCacheMemory()

void corbo::BaseMixedEdge::reserveJacobiansCacheMemory ( int  num_obj_jacobians,
int  num_eq_jacobians,
int  num_ineq_jacobians 
)
inline

Definition at line 320 of file edge_interface.h.

◆ reserveValuesCacheMemory()

void corbo::BaseMixedEdge::reserveValuesCacheMemory ( int  num_obj_values,
int  num_eq_values,
int  num_ineq_values 
)
inline

Definition at line 314 of file edge_interface.h.

Friends And Related Function Documentation

◆ EdgeSetInterface

friend class EdgeSetInterface
friend

Definition at line 219 of file edge_interface.h.

Member Data Documentation

◆ _edge_idx_eq

int corbo::BaseMixedEdge::_edge_idx_eq = 0
protected

Definition at line 354 of file edge_interface.h.

◆ _edge_idx_ineq

int corbo::BaseMixedEdge::_edge_idx_ineq = 0
protected

Definition at line 355 of file edge_interface.h.

◆ _edge_idx_obj

int corbo::BaseMixedEdge::_edge_idx_obj = 0
protected

Definition at line 353 of file edge_interface.h.

◆ _equality_cache

EdgeCache corbo::BaseMixedEdge::_equality_cache
protected

Definition at line 358 of file edge_interface.h.

◆ _inequality_cache

EdgeCache corbo::BaseMixedEdge::_inequality_cache
protected

Definition at line 359 of file edge_interface.h.

◆ _objective_cache

EdgeCache corbo::BaseMixedEdge::_objective_cache
protected

Definition at line 357 of file edge_interface.h.


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


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