Public Types | Public Member Functions | Static Public Attributes | Private Attributes | List of all members
ifopt::Component Class Referenceabstract

Interface representing either Variable, Cost or Constraint. More...

#include <composite.h>

Inheritance diagram for ifopt::Component:
Inheritance graph
[legend]

Public Types

using Jacobian = Eigen::SparseMatrix< double, Eigen::RowMajor >
 
using Ptr = std::shared_ptr< Component >
 
using VecBound = std::vector< Bounds >
 
using VectorXd = Eigen::VectorXd
 

Public Member Functions

 Component (int num_rows, const std::string &name)
 Creates a component. More...
 
virtual VecBound GetBounds () const =0
 Returns the "bounds" of this component. More...
 
virtual Jacobian GetJacobian () const =0
 Returns derivatives of each row w.r.t. the variables. More...
 
std::string GetName () const
 Returns the name (id) of this component. More...
 
int GetRows () const
 Returns the number of rows of this component. More...
 
virtual VectorXd GetValues () const =0
 Returns the "values" of whatever this component represents. More...
 
virtual void Print (double tolerance, int &index_start) const
 Prints the relevant information (name, rows, values) of this component. More...
 
void SetRows (int num_rows)
 Sets the number of rows of this component. More...
 
virtual void SetVariables (const VectorXd &x)=0
 Sets the optimization variables from an Eigen vector. More...
 
virtual ~Component ()=default
 

Static Public Attributes

static const int kSpecifyLater = -1
 

Private Attributes

std::string name_
 
int num_rows_ = kSpecifyLater
 

Detailed Description

Interface representing either Variable, Cost or Constraint.

Variables, costs and constraints can all be fit into the same interface (Component). For example, each has a "value", which is either the actual value of the variables, the constraint value g or the cost. This representation provides one common interface ("smallest common denominator") that can be contain either individual variables/costs/constraints or a Composite of these. This pattern takes care of stacking variables, ordering Jacobians and providing bounds for the complete problem without duplicating code. For more information on the composite pattern visit https://sourcemaking.com/design_patterns/composite

Definition at line 63 of file composite.h.

Member Typedef Documentation

◆ Jacobian

using ifopt::Component::Jacobian = Eigen::SparseMatrix<double, Eigen::RowMajor>

Definition at line 67 of file composite.h.

◆ Ptr

using ifopt::Component::Ptr = std::shared_ptr<Component>

Definition at line 65 of file composite.h.

◆ VecBound

using ifopt::Component::VecBound = std::vector<Bounds>

Definition at line 69 of file composite.h.

◆ VectorXd

using ifopt::Component::VectorXd = Eigen::VectorXd

Definition at line 68 of file composite.h.

Constructor & Destructor Documentation

◆ Component()

ifopt::Component::Component ( int  num_rows,
const std::string &  name 
)

Creates a component.

Parameters
num_rowsThe number of rows of this components.
nameThe identifier for this component.

The number of rows num_rows can represent either

  • number of variables in this variables set
  • number of constraints in this constraint set
  • 1 if this component represents a Cost.

Definition at line 64 of file composite.cc.

◆ ~Component()

virtual ifopt::Component::~Component ( )
virtualdefault

Member Function Documentation

◆ GetBounds()

virtual VecBound ifopt::Component::GetBounds ( ) const
pure virtual

Returns the "bounds" of this component.

  • For Variable these are the upper and lower variable bound.
  • For Constraint this represents the constraint bounds.
  • For Cost these done't exists (set to infinity).

Implemented in ifopt::Composite, ifopt::ExConstraint, ifopt::ExVariables, ifopt::CostTerm, and ifopt::ExComponent.

◆ GetJacobian()

virtual Jacobian ifopt::Component::GetJacobian ( ) const
pure virtual

Returns derivatives of each row w.r.t. the variables.

  • For Constraint this is a matrix with one row per constraint.
  • For a Cost this is a row vector (gradient transpose).
  • Not sensible for Variable.

Implemented in ifopt::Composite, ifopt::ConstraintSet, ifopt::VariableSet, and ifopt::ExComponent.

◆ GetName()

std::string ifopt::Component::GetName ( ) const

Returns the name (id) of this component.

Definition at line 80 of file composite.cc.

◆ GetRows()

int ifopt::Component::GetRows ( ) const

Returns the number of rows of this component.

Definition at line 70 of file composite.cc.

◆ GetValues()

virtual VectorXd ifopt::Component::GetValues ( ) const
pure virtual

Returns the "values" of whatever this component represents.

  • For Variable this represents the actual optimization values.
  • For Constraint this represents the constraint value g.
  • For Cost this represents the cost value.

Implemented in ifopt::Composite, ifopt::ExConstraint, ifopt::ExVariables, ifopt::CostTerm, and ifopt::ExComponent.

◆ Print()

void ifopt::Component::Print ( double  tolerance,
int &  index_start 
) const
virtual

Prints the relevant information (name, rows, values) of this component.

Parameters
toleranceWhen to flag constraint/bound violation.
index_startOf this specific variables-, constraint- or cost set.

Reimplemented in ifopt::CostTerm.

Definition at line 85 of file composite.cc.

◆ SetRows()

void ifopt::Component::SetRows ( int  num_rows)

Sets the number of rows of this component.

Attention
This should correctly be done through constructor call, only delay this by using kSpecifyLater if you have good reason.

Definition at line 75 of file composite.cc.

◆ SetVariables()

virtual void ifopt::Component::SetVariables ( const VectorXd x)
pure virtual

Sets the optimization variables from an Eigen vector.

This is only done for Variable, where these are set from the current values of the solvers.

Implemented in ifopt::Composite, ifopt::ExVariables, ifopt::ExComponent, and ifopt::ConstraintSet.

Member Data Documentation

◆ kSpecifyLater

const int ifopt::Component::kSpecifyLater = -1
static

Definition at line 143 of file composite.h.

◆ name_

std::string ifopt::Component::name_
private

Definition at line 147 of file composite.h.

◆ num_rows_

int ifopt::Component::num_rows_ = kSpecifyLater
private

Definition at line 146 of file composite.h.


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


ifopt
Author(s): Alexander W. Winkler
autogenerated on Mon Sep 18 2023 02:14:38