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 getNumVertices () const override
 Return number of attached vertices. More...
 
const VertexInterfacegetVertex (int idx) const override
 
VertexInterfacegetVertexRaw (int idx) override
 Get access to vertex with index idx (0 <= idx < numVertices) More...
 
 MixedEdge ()=delete
 
 MixedEdge (VerticesT &... args)
 Construct edge by providing connected vertices. More...
 
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...
 
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...
 

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_eq = 0
 
int _edge_idx_ineq = 0
 
int _edge_idx_obj = 0
 
EdgeCache _equality_cache
 
EdgeCache _inequality_cache
 
EdgeCache _objective_cache
 

Detailed Description

Definition at line 305 of file multiple_shooting_edges.h.

Member Typedef Documentation

◆ Ptr

Definition at line 308 of file multiple_shooting_edges.h.

◆ UPtr

Definition at line 309 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 311 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 401 of file multiple_shooting_edges.h.

◆ getEqualityDimension()

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

◆ getInequalityDimension()

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

◆ getObjectiveDimension()

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

◆ isEqualityLinear()

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

Reimplemented from corbo::BaseMixedEdge.

Definition at line 353 of file multiple_shooting_edges.h.

◆ isInequalityLinear()

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

Reimplemented from corbo::BaseMixedEdge.

Definition at line 354 of file multiple_shooting_edges.h.

◆ isObjectiveLeastSquaresForm()

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

Implements corbo::BaseMixedEdge.

Definition at line 359 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 352 of file multiple_shooting_edges.h.

◆ precompute()

void corbo::MultipleShootingEdgeSingleControlTimeScaling::precompute ( )
inlineoverridevirtual

◆ setIntegrator()

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

Definition at line 398 of file multiple_shooting_edges.h.

Member Data Documentation

◆ _current

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

Definition at line 446 of file multiple_shooting_edges.h.

◆ _dt

double corbo::MultipleShootingEdgeSingleControlTimeScaling::_dt = 0.1
private

Definition at line 458 of file multiple_shooting_edges.h.

◆ _dyn_dim

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_dyn_dim = 0
private

Definition at line 441 of file multiple_shooting_edges.h.

◆ _dynamics

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

Definition at line 455 of file multiple_shooting_edges.h.

◆ _ineq_dim

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_ineq_dim = 0
private

Definition at line 444 of file multiple_shooting_edges.h.

◆ _integrand

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

Definition at line 449 of file multiple_shooting_edges.h.

◆ _integrator

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

Definition at line 456 of file multiple_shooting_edges.h.

◆ _k

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_k = 0
private

Definition at line 460 of file multiple_shooting_edges.h.

◆ _obj_dim

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_obj_dim = 0
private

Definition at line 442 of file multiple_shooting_edges.h.

◆ _other_eq_dim

int corbo::MultipleShootingEdgeSingleControlTimeScaling::_other_eq_dim = 0
private

Definition at line 443 of file multiple_shooting_edges.h.

◆ _stage_cost

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

Definition at line 451 of file multiple_shooting_edges.h.

◆ _stage_eq

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

Definition at line 452 of file multiple_shooting_edges.h.

◆ _stage_ineq

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

Definition at line 453 of file multiple_shooting_edges.h.

◆ _timevert

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

Definition at line 438 of file multiple_shooting_edges.h.

◆ _ukvert

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

Definition at line 437 of file multiple_shooting_edges.h.

◆ _values

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

Definition at line 447 of file multiple_shooting_edges.h.

◆ _xkvert

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

Definition at line 436 of file multiple_shooting_edges.h.

◆ _xnextvert

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

Definition at line 439 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 Mon Feb 28 2022 22:08:03