Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
corbo::FiniteDifferencesVariableGrid Class Reference

#include <finite_differences_variable_grid.h>

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

Public Types

enum  GridAdaptStrategy { GridAdaptStrategy::NoGridAdapt, GridAdaptStrategy::TimeBasedSingleStep, GridAdaptStrategy::TimeBasedAggressiveEstimate, GridAdaptStrategy::SimpleShrinkingHorizon }
 
using Ptr = std::shared_ptr< FiniteDifferencesVariableGrid >
 
using UPtr = std::unique_ptr< FiniteDifferencesVariableGrid >
 
- Public Types inherited from corbo::FiniteDifferencesGrid
using Ptr = std::shared_ptr< FiniteDifferencesGrid >
 
using UPtr = std::unique_ptr< FiniteDifferencesGrid >
 
- Public Types inherited from corbo::FullDiscretizationGridBase
enum  CostIntegrationRule { CostIntegrationRule::LeftSum, CostIntegrationRule::TrapezoidalRule }
 
using Ptr = std::shared_ptr< FullDiscretizationGridBase >
 
using UPtr = std::unique_ptr< FullDiscretizationGridBase >
 
- Public Types inherited from corbo::DiscretizationGridInterface
using Ptr = std::shared_ptr< DiscretizationGridInterface >
 
using UPtr = std::unique_ptr< DiscretizationGridInterface >
 
- Public Types inherited from corbo::VertexSetInterface
using Ptr = std::shared_ptr< VertexSetInterface >
 

Public Member Functions

void disableGridAdaptation ()
 
 FiniteDifferencesVariableGrid ()=default
 
DiscretizationGridInterface::Ptr getInstance () const override
 Return a newly created shared instance of the implemented class. More...
 
void setDtBounds (double dt_lb, double dt_ub)
 
void setGridAdaptSimpleShrinkingHorizon (bool adapt_first_iter=false)
 
void setGridAdaptTimeBasedAggressiveEstimate (int n_max, double dt_hyst_ratio=0.1, bool adapt_first_iter=false)
 
void setGridAdaptTimeBasedSingleStep (int n_max, double dt_hyst_ratio=0.1, bool adapt_first_iter=false)
 
void setNmin (int n_min)
 
virtual ~FiniteDifferencesVariableGrid ()=default
 
- Public Member Functions inherited from corbo::FiniteDifferencesGrid
 FiniteDifferencesGrid ()=default
 
virtual ~FiniteDifferencesGrid ()=default
 
- Public Member Functions inherited from corbo::FullDiscretizationGridBase
void clear () override
 
 FullDiscretizationGridBase ()=default
 
std::vector< VertexInterface * > & getActiveVertices () override
 
double getDt () const
 
double getDtRef () const
 
double getFinalTime () const override
 
bool getFirstControlInput (Eigen::VectorXd &u0) override
 
double getFirstDt () const override
 
double getInitialDt () const override
 
int getInitialN () const override
 
int getN () const override
 
int getNRef () const
 
const Eigen::VectorXd & getState (int k) const
 
void getStateAndControlTimeSeries (TimeSeries::Ptr x_sequence, TimeSeries::Ptr u_sequence, double t_max=CORBO_INF_DBL) const override
 Return state and control trajectory as time series object (shared instance) More...
 
void getVertices (std::vector< VertexInterface *> &vertices) override
 
bool hasConstantControls () const override
 
bool hasSingleDt () const override
 
bool isEmpty () const override
 
bool isTimeVariableGrid () const override
 
bool isUniformGrid () const override
 
virtual bool isValid () const
 
bool providesStateTrajectory () const override
 
void setCostIntegrationRule (CostIntegrationRule integration)
 
void setDtRef (double dt)
 
void setFiniteDifferencesCollocationMethod (FiniteDifferencesCollocationInterface::Ptr fd_eval)
 
void setInitialDt (double dt) override
 
void setN (int n, bool try_resample=true) override
 Return dimension of the control input dimension in the grid. More...
 
void setNRef (int n)
 
void setWarmStart (bool active)
 
void setXfFixed (const Eigen::Matrix< bool, -1, 1 > &xf_fixed)
 
GridUpdateResult update (const Eigen::VectorXd &x0, ReferenceTrajectoryInterface &xref, ReferenceTrajectoryInterface &uref, NlpFunctions &nlp_fun, OptimizationEdgeSet &edges, SystemDynamicsInterface::Ptr dynamics, bool new_run, const Time &t, ReferenceTrajectoryInterface *sref=nullptr, const Eigen::VectorXd *prev_u=nullptr, double prev_u_dt=0, ReferenceTrajectoryInterface *xinit=nullptr, ReferenceTrajectoryInterface *uinit=nullptr) override
 
virtual ~FullDiscretizationGridBase ()=default
 
- Public Member Functions inherited from corbo::DiscretizationGridInterface
 DiscretizationGridInterface ()=default
 
 DiscretizationGridInterface (int state_dim, int control_dim)
 
virtual ~DiscretizationGridInterface ()=default
 Virtual destructor. More...
 
- Public Member Functions inherited from corbo::VertexSetInterface
void applyIncrementNonFixed (const Eigen::Ref< const Eigen::VectorXd > &increment)
 Active vertices related methods. More...
 
void applyIncrementNonFixed (int idx, double increment)
 
void backupParametersActiveVertices ()
 
void clearConnectedEdges ()
 
void computeVertexIndices ()
 Precompute vertex indices in the hyper-graph (e.g. for the Jacobian or Hessian structure) More...
 
void discardBackupParametersActiveVertices (bool all=false)
 
void getBounds (Eigen::Ref< Eigen::VectorXd > lb, Eigen::Ref< Eigen::VectorXd > ub)
 
double getLowerBound (int idx)
 
int getParameterDimension ()
 
double getParameterValue (int idx)
 
void getParameterVector (Eigen::Ref< Eigen::VectorXd > x)
 
double getUpperBound (int idx)
 
bool isModified () const
 
void restoreBackupParametersActiveVertices (bool keep_backup)
 
void setBounds (const Eigen::Ref< const Eigen::VectorXd > &lb, const Eigen::Ref< const Eigen::VectorXd > &ub)
 
void setLowerBound (int idx, double lb)
 
void setModified (bool modified)
 
void setParameterValue (int idx, double x)
 
void setParameterVector (const Eigen::Ref< const Eigen::VectorXd > &x)
 
void setUpperBound (int idx, double ub)
 
 VertexSetInterface ()
 
virtual ~VertexSetInterface ()
 Virtual destructor. More...
 

Static Public Member Functions

static Factory< DiscretizationGridInterface > & getFactory ()
 Get access to the associated factory. More...
 
- Static Public Member Functions inherited from corbo::FiniteDifferencesGrid
static Factory< DiscretizationGridInterface > & getFactory ()
 Get access to the associated factory. More...
 
- Static Public Member Functions inherited from corbo::DiscretizationGridInterface
static Factory< DiscretizationGridInterface > & getFactory ()
 Get access to the accociated factory. More...
 

Protected Member Functions

bool adaptGrid (bool new_run, NlpFunctions &nlp_fun) override
 
bool adaptGridSimpleShrinkingHorizon (NlpFunctions &nlp_fun)
 
bool adaptGridTimeBasedAggressiveEstimate (NlpFunctions &nlp_fun)
 
bool adaptGridTimeBasedSingleStep (NlpFunctions &nlp_fun)
 
bool isDtFixedIntended () const override
 
bool isGridAdaptActive () const override
 
bool isMovingHorizonWarmStartActive () const override
 
- Protected Member Functions inherited from corbo::FiniteDifferencesGrid
void createEdges (NlpFunctions &nlp_fun, OptimizationEdgeSet &edges, SystemDynamicsInterface::Ptr dynamics) override
 
- Protected Member Functions inherited from corbo::FullDiscretizationGridBase
bool checkAndInitializeXfFixedFlags (int dim_x)
 
void computeActiveVertices () override
 
int findNearestState (const Eigen::VectorXd &x0)
 
virtual void initializeSequences (const Eigen::VectorXd &x0, const Eigen::VectorXd &xf, ReferenceTrajectoryInterface &uref, NlpFunctions &nlp_fun)
 
virtual void initializeSequences (const Eigen::VectorXd &x0, const Eigen::VectorXd &xf, ReferenceTrajectoryInterface &xref, ReferenceTrajectoryInterface &uref, NlpFunctions &nlp_fun)
 
virtual void resampleTrajectory (int n_new)
 
void updateBounds (const NlpFunctions &nlp_fun)
 
virtual void warmStartShifting (const Eigen::VectorXd &x0)
 
- Protected Member Functions inherited from corbo::DiscretizationGridInterface
void setLastControlRef (const Eigen::VectorXd &last_u_ref)
 
void setPreviousControl (const Eigen::VectorXd &prev_u, double prev_u_dt)
 
- Protected Member Functions inherited from corbo::VertexSetInterface
void setVertexIdx (VertexInterface &vertex, int idx)
 

Protected Attributes

bool _adapt_first_iter = false
 
double _dt_hyst_ratio = 0.1
 
GridAdaptStrategy _grid_adapt = GridAdaptStrategy::NoGridAdapt
 
int _n_max = 1000
 
int _n_min = 2
 
- Protected Attributes inherited from corbo::FullDiscretizationGridBase
std::vector< VertexInterface * > _active_vertices
 
CostIntegrationRule _cost_integration
 
ScalarVertex _dt
 
double _dt_lb = 0
 
double _dt_ref = 0.1
 
double _dt_ub = CORBO_INF_DBL
 
FiniteDifferencesCollocationInterface::Ptr _fd_eval = std::make_shared<CrankNicolsonDiffCollocation>()
 
bool _first_run = true
 
int _n_adapt = 0
 
int _n_ref = 11
 
const NlpFunctions_nlp_fun = nullptr
 
std::vector< VectorVertex_u_seq
 
bool _warm_start = false
 
std::vector< VectorVertex_x_seq
 
PartiallyFixedVectorVertex _xf
 
Eigen::Matrix< bool, -1, 1 > _xf_fixed
 
- Protected Attributes inherited from corbo::DiscretizationGridInterface
VectorVertex _u_prev
 
ScalarVertex _u_prev_dt
 
VectorVertex _u_ref
 
- Protected Attributes inherited from corbo::VertexSetInterface
bool _modified = true
 

Detailed Description

Definition at line 34 of file finite_differences_variable_grid.h.

Member Typedef Documentation

◆ Ptr

Definition at line 37 of file finite_differences_variable_grid.h.

◆ UPtr

Definition at line 38 of file finite_differences_variable_grid.h.

Member Enumeration Documentation

◆ GridAdaptStrategy

Enumerator
NoGridAdapt 
TimeBasedSingleStep 
TimeBasedAggressiveEstimate 
SimpleShrinkingHorizon 

Definition at line 40 of file finite_differences_variable_grid.h.

Constructor & Destructor Documentation

◆ FiniteDifferencesVariableGrid()

corbo::FiniteDifferencesVariableGrid::FiniteDifferencesVariableGrid ( )
default

◆ ~FiniteDifferencesVariableGrid()

virtual corbo::FiniteDifferencesVariableGrid::~FiniteDifferencesVariableGrid ( )
virtualdefault

Member Function Documentation

◆ adaptGrid()

bool corbo::FiniteDifferencesVariableGrid::adaptGrid ( bool  new_run,
NlpFunctions nlp_fun 
)
overrideprotectedvirtual

Reimplemented from corbo::FullDiscretizationGridBase.

Definition at line 66 of file finite_differences_variable_grid.cpp.

◆ adaptGridSimpleShrinkingHorizon()

bool corbo::FiniteDifferencesVariableGrid::adaptGridSimpleShrinkingHorizon ( NlpFunctions nlp_fun)
protected

Definition at line 154 of file finite_differences_variable_grid.cpp.

◆ adaptGridTimeBasedAggressiveEstimate()

bool corbo::FiniteDifferencesVariableGrid::adaptGridTimeBasedAggressiveEstimate ( NlpFunctions nlp_fun)
protected

Definition at line 125 of file finite_differences_variable_grid.cpp.

◆ adaptGridTimeBasedSingleStep()

bool corbo::FiniteDifferencesVariableGrid::adaptGridTimeBasedSingleStep ( NlpFunctions nlp_fun)
protected

Definition at line 101 of file finite_differences_variable_grid.cpp.

◆ disableGridAdaptation()

void corbo::FiniteDifferencesVariableGrid::disableGridAdaptation ( )
inline

Definition at line 53 of file finite_differences_variable_grid.h.

◆ getFactory()

static Factory<DiscretizationGridInterface>& corbo::FiniteDifferencesVariableGrid::getFactory ( )
inlinestatic

Get access to the associated factory.

Definition at line 49 of file finite_differences_variable_grid.h.

◆ getInstance()

DiscretizationGridInterface::Ptr corbo::FiniteDifferencesVariableGrid::getInstance ( ) const
inlineoverridevirtual

Return a newly created shared instance of the implemented class.

Reimplemented from corbo::FiniteDifferencesGrid.

Definition at line 46 of file finite_differences_variable_grid.h.

◆ isDtFixedIntended()

bool corbo::FiniteDifferencesVariableGrid::isDtFixedIntended ( ) const
inlineoverrideprotectedvirtual

Reimplemented from corbo::FiniteDifferencesGrid.

Definition at line 70 of file finite_differences_variable_grid.h.

◆ isGridAdaptActive()

bool corbo::FiniteDifferencesVariableGrid::isGridAdaptActive ( ) const
inlineoverrideprotectedvirtual

Reimplemented from corbo::FullDiscretizationGridBase.

Definition at line 78 of file finite_differences_variable_grid.h.

◆ isMovingHorizonWarmStartActive()

bool corbo::FiniteDifferencesVariableGrid::isMovingHorizonWarmStartActive ( ) const
inlineoverrideprotectedvirtual

Reimplemented from corbo::FullDiscretizationGridBase.

Definition at line 77 of file finite_differences_variable_grid.h.

◆ setDtBounds()

void corbo::FiniteDifferencesVariableGrid::setDtBounds ( double  dt_lb,
double  dt_ub 
)

Definition at line 38 of file finite_differences_variable_grid.cpp.

◆ setGridAdaptSimpleShrinkingHorizon()

void corbo::FiniteDifferencesVariableGrid::setGridAdaptSimpleShrinkingHorizon ( bool  adapt_first_iter = false)

Definition at line 60 of file finite_differences_variable_grid.cpp.

◆ setGridAdaptTimeBasedAggressiveEstimate()

void corbo::FiniteDifferencesVariableGrid::setGridAdaptTimeBasedAggressiveEstimate ( int  n_max,
double  dt_hyst_ratio = 0.1,
bool  adapt_first_iter = false 
)

Definition at line 52 of file finite_differences_variable_grid.cpp.

◆ setGridAdaptTimeBasedSingleStep()

void corbo::FiniteDifferencesVariableGrid::setGridAdaptTimeBasedSingleStep ( int  n_max,
double  dt_hyst_ratio = 0.1,
bool  adapt_first_iter = false 
)

Definition at line 44 of file finite_differences_variable_grid.cpp.

◆ setNmin()

void corbo::FiniteDifferencesVariableGrid::setNmin ( int  n_min)
inline

Definition at line 52 of file finite_differences_variable_grid.h.

Member Data Documentation

◆ _adapt_first_iter

bool corbo::FiniteDifferencesVariableGrid::_adapt_first_iter = false
protected

Definition at line 85 of file finite_differences_variable_grid.h.

◆ _dt_hyst_ratio

double corbo::FiniteDifferencesVariableGrid::_dt_hyst_ratio = 0.1
protected

Definition at line 83 of file finite_differences_variable_grid.h.

◆ _grid_adapt

GridAdaptStrategy corbo::FiniteDifferencesVariableGrid::_grid_adapt = GridAdaptStrategy::NoGridAdapt
protected

Definition at line 81 of file finite_differences_variable_grid.h.

◆ _n_max

int corbo::FiniteDifferencesVariableGrid::_n_max = 1000
protected

Definition at line 82 of file finite_differences_variable_grid.h.

◆ _n_min

int corbo::FiniteDifferencesVariableGrid::_n_min = 2
protected

Definition at line 84 of file finite_differences_variable_grid.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