Public Types | Public Member Functions | Protected Member Functions | Private Attributes | List of all members
corbo::MultipleShootingEdgeSingleControlTimeScaling Class Reference

#include <multiple_shooting_edges.h>

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

Public Types

using Ptr = std::shared_ptr< MultipleShootingEdgeSingleControlTimeScaling >
 
using UPtr = std::unique_ptr< MultipleShootingEdgeSingleControlTimeScaling >
 
- Public Types inherited from corbo::MixedEdge< VectorVertex, VectorVertex, ScalarVertex, VectorVertex >
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
 
void computeInequalityValues (Eigen::Ref< Eigen::VectorXd > ineq_values) override
 
void computeObjectiveValues (Eigen::Ref< Eigen::VectorXd > obj_values) override
 
int getEqualityDimension () const override
 
int getInequalityDimension () const override
 
int getObjectiveDimension () const override
 
bool isEqualityLinear () const override
 
bool isInequalityLinear () const override
 
bool isObjectiveLeastSquaresForm () const override
 
bool isObjectiveLinear () const override
 Return true if the edge is linear (and hence its Hessian is always zero) More...
 
 MultipleShootingEdgeSingleControlTimeScaling (SystemDynamicsInterface::Ptr dynamics, StageCost::ConstPtr stage_cost, StageEqualityConstraint::ConstPtr stage_eq, StageInequalityConstraint::ConstPtr stage_ineq, int k, VectorVertex &x_k, VectorVertex &u_k, ScalarVertex &time, VectorVertex &x_kp1, double dt)
 
void precompute () override
 
void setIntegrator (NumericalIntegratorExplicitInterface::Ptr integrator)
 
- Public Member Functions inherited from corbo::MixedEdge< VectorVertex, VectorVertex, ScalarVertex, VectorVertex >
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
 
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...
 
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
 
int getEdgeObjectiveIdx () const
 Retrieve current edge index (warning, this value is determined within the related HyperGraph) More...
 
int getEdgeEqualityIdx () const
 
int getEdgeInequalityIdx () 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 int verticesDimension () const =0
 Return the combined dimension of all attached vertices (excluding fixed vertex components) More...
 
virtual ~EdgeInterface ()
 Virtual destructor. More...
 

Protected Member Functions

void configureIntegrand ()
 

Private Attributes

Eigen::VectorXd _current
 
double _dt = 0.1
 
int _dyn_dim = 0
 
SystemDynamicsInterface::Ptr _dynamics
 
int _ineq_dim = 0
 
std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)> _integrand
 
NumericalIntegratorExplicitInterface::Ptr _integrator
 
int _k = 0
 
int _obj_dim = 0
 
int _other_eq_dim = 0
 
StageCost::ConstPtr _stage_cost
 
StageEqualityConstraint::ConstPtr _stage_eq
 
StageInequalityConstraint::ConstPtr _stage_ineq
 
const ScalarVertex_timevert = nullptr
 
const VectorVertex_ukvert = nullptr
 
Eigen::VectorXd _values
 
const VectorVertex_xkvert = nullptr
 
const VectorVertex_xnextvert = nullptr
 

Additional Inherited Members

- Static Public Attributes inherited from corbo::MixedEdge< VectorVertex, VectorVertex, ScalarVertex, VectorVertex >
static constexpr const int numVerticesCompileTime
 Return number of vertices at compile-time. More...
 
- Protected Attributes inherited from corbo::MixedEdge< VectorVertex, VectorVertex, ScalarVertex, VectorVertex >
const VertexContainer _vertices
 Vertex container. More...
 
- Protected Attributes inherited from corbo::BaseMixedEdge
int _edge_idx_obj = 0
 
int _edge_idx_eq = 0
 
int _edge_idx_ineq = 0
 
EdgeCache _objective_cache
 
EdgeCache _equality_cache
 
EdgeCache _inequality_cache
 

Detailed Description

Definition at line 327 of file multiple_shooting_edges.h.

Member Typedef Documentation

◆ Ptr

Definition at line 330 of file multiple_shooting_edges.h.

◆ UPtr

Definition at line 331 of file multiple_shooting_edges.h.

Constructor & Destructor Documentation

◆ MultipleShootingEdgeSingleControlTimeScaling()

corbo::MultipleShootingEdgeSingleControlTimeScaling::MultipleShootingEdgeSingleControlTimeScaling ( SystemDynamicsInterface::Ptr  dynamics,
StageCost::ConstPtr  stage_cost,
StageEqualityConstraint::ConstPtr  stage_eq,
StageInequalityConstraint::ConstPtr  stage_ineq,
int  k,
VectorVertex x_k,
VectorVertex u_k,
ScalarVertex time,
VectorVertex x_kp1,
double  dt 
)
inlineexplicit

Definition at line 333 of file multiple_shooting_edges.h.

Member Function Documentation

◆ computeEqualityValues()

void corbo::MultipleShootingEdgeSingleControlTimeScaling::computeEqualityValues ( Eigen::Ref< Eigen::VectorXd >  eq_values)
inlineoverridevirtual

◆ computeInequalityValues()

void corbo::MultipleShootingEdgeSingleControlTimeScaling::computeInequalityValues ( Eigen::Ref< Eigen::VectorXd >  ineq_values)
inlineoverridevirtual

◆ computeObjectiveValues()

void corbo::MultipleShootingEdgeSingleControlTimeScaling::computeObjectiveValues ( Eigen::Ref< Eigen::VectorXd >  obj_values)
inlineoverridevirtual

◆ configureIntegrand()

void corbo::MultipleShootingEdgeSingleControlTimeScaling::configureIntegrand ( )
inlineprotected

Definition at line 423 of file multiple_shooting_edges.h.

◆ getEqualityDimension()

int corbo::MultipleShootingEdgeSingleControlTimeScaling::getEqualityDimension ( ) const
inlineoverridevirtual

Implements corbo::BaseMixedEdge.

Definition at line 368 of file multiple_shooting_edges.h.

◆ getInequalityDimension()

int corbo::MultipleShootingEdgeSingleControlTimeScaling::getInequalityDimension ( ) const
inlineoverridevirtual

Implements corbo::BaseMixedEdge.

Definition at line 370 of file multiple_shooting_edges.h.

◆ getObjectiveDimension()

int corbo::MultipleShootingEdgeSingleControlTimeScaling::getObjectiveDimension ( ) const
inlineoverridevirtual

Implements corbo::BaseMixedEdge.

Definition at line 366 of file multiple_shooting_edges.h.

◆ isEqualityLinear()

bool corbo::MultipleShootingEdgeSingleControlTimeScaling::isEqualityLinear ( ) const
inlineoverridevirtual

Reimplemented from corbo::BaseMixedEdge.

Definition at line 375 of file multiple_shooting_edges.h.

◆ isInequalityLinear()

bool corbo::MultipleShootingEdgeSingleControlTimeScaling::isInequalityLinear ( ) const
inlineoverridevirtual

Reimplemented from corbo::BaseMixedEdge.

Definition at line 376 of file multiple_shooting_edges.h.

◆ isObjectiveLeastSquaresForm()

bool corbo::MultipleShootingEdgeSingleControlTimeScaling::isObjectiveLeastSquaresForm ( ) const
inlineoverridevirtual

Implements corbo::BaseMixedEdge.

Definition at line 381 of file multiple_shooting_edges.h.

◆ isObjectiveLinear()

bool corbo::MultipleShootingEdgeSingleControlTimeScaling::isObjectiveLinear ( ) const
inlineoverridevirtual

Return true if the edge is linear (and hence its Hessian is always zero)

Reimplemented from corbo::BaseMixedEdge.

Definition at line 374 of file multiple_shooting_edges.h.

◆ precompute()

void corbo::MultipleShootingEdgeSingleControlTimeScaling::precompute ( )
inlineoverridevirtual

◆ setIntegrator()

void corbo::MultipleShootingEdgeSingleControlTimeScaling::setIntegrator ( NumericalIntegratorExplicitInterface::Ptr  integrator)
inline

Definition at line 420 of file multiple_shooting_edges.h.

Member Data Documentation

◆ _current

Eigen::VectorXd corbo::MultipleShootingEdgeSingleControlTimeScaling::_current
private

Definition at line 468 of file multiple_shooting_edges.h.

◆ _dt

double corbo::MultipleShootingEdgeSingleControlTimeScaling::_dt = 0.1
private

Definition at line 480 of file multiple_shooting_edges.h.

◆ _dyn_dim

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_dyn_dim = 0
private

Definition at line 463 of file multiple_shooting_edges.h.

◆ _dynamics

SystemDynamicsInterface::Ptr corbo::MultipleShootingEdgeSingleControlTimeScaling::_dynamics
private

Definition at line 477 of file multiple_shooting_edges.h.

◆ _ineq_dim

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_ineq_dim = 0
private

Definition at line 466 of file multiple_shooting_edges.h.

◆ _integrand

std::function<void(const Eigen::VectorXd&, Eigen::Ref<Eigen::VectorXd>)> corbo::MultipleShootingEdgeSingleControlTimeScaling::_integrand
private

Definition at line 471 of file multiple_shooting_edges.h.

◆ _integrator

NumericalIntegratorExplicitInterface::Ptr corbo::MultipleShootingEdgeSingleControlTimeScaling::_integrator
private

Definition at line 478 of file multiple_shooting_edges.h.

◆ _k

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_k = 0
private

Definition at line 482 of file multiple_shooting_edges.h.

◆ _obj_dim

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_obj_dim = 0
private

Definition at line 464 of file multiple_shooting_edges.h.

◆ _other_eq_dim

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_other_eq_dim = 0
private

Definition at line 465 of file multiple_shooting_edges.h.

◆ _stage_cost

StageCost::ConstPtr corbo::MultipleShootingEdgeSingleControlTimeScaling::_stage_cost
private

Definition at line 473 of file multiple_shooting_edges.h.

◆ _stage_eq

StageEqualityConstraint::ConstPtr corbo::MultipleShootingEdgeSingleControlTimeScaling::_stage_eq
private

Definition at line 474 of file multiple_shooting_edges.h.

◆ _stage_ineq

StageInequalityConstraint::ConstPtr corbo::MultipleShootingEdgeSingleControlTimeScaling::_stage_ineq
private

Definition at line 475 of file multiple_shooting_edges.h.

◆ _timevert

const ScalarVertex* corbo::MultipleShootingEdgeSingleControlTimeScaling::_timevert = nullptr
private

Definition at line 460 of file multiple_shooting_edges.h.

◆ _ukvert

const VectorVertex* corbo::MultipleShootingEdgeSingleControlTimeScaling::_ukvert = nullptr
private

Definition at line 459 of file multiple_shooting_edges.h.

◆ _values

Eigen::VectorXd corbo::MultipleShootingEdgeSingleControlTimeScaling::_values
private

Definition at line 469 of file multiple_shooting_edges.h.

◆ _xkvert

const VectorVertex* corbo::MultipleShootingEdgeSingleControlTimeScaling::_xkvert = nullptr
private

Definition at line 458 of file multiple_shooting_edges.h.

◆ _xnextvert

const VectorVertex* corbo::MultipleShootingEdgeSingleControlTimeScaling::_xnextvert = nullptr
private

Definition at line 461 of file multiple_shooting_edges.h.


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


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:07:21