Metis 2.0.0
High-performance C++20 dual-mode numerical framework
Loading...
Searching...
No Matches
metis::TranscriptionBase< Derived > Class Template Reference

Shared CRTP base for transcription methods. More...

#include <TranscriptionBase.hpp>

Collaboration diagram for metis::TranscriptionBase< Derived >:

Public Member Functions

 TranscriptionBase (Opti &opti)
 Construct with a reference to the optimization environment.
void set_initial_state (const NumericVector &x0)
 Pin all initial states to specified values.
void set_initial_state (int idx, double value)
 Pin a single initial state component.
void set_final_state (const NumericVector &xf)
 Pin all final states to specified values.
void set_final_state (int idx, double value)
 Pin a single final state component.
template<typename Func>
void set_dynamics (Func &&dynamics)
 Register the dynamics function xdot = f(x, u, t).
const SymbolicMatrixstates () const
 Get the state decision variable matrix.
const SymbolicMatrixcontrols () const
 Get the control decision variable matrix.
const NumericVectortime_grid () const
 Get the normalized time grid.
int n_nodes () const
 Get the number of discretization nodes.
int n_states () const
 Get the number of state variables per node.
int n_controls () const
 Get the number of control variables per node.
void add_dynamics_constraints ()
 Add dynamics constraints to the optimization problem.
void add_defect_constraints ()
 Alias for add_dynamics_constraints().
void add_continuity_constraints ()
 Alias for add_dynamics_constraints().

Protected Member Functions

SymbolicScalar get_duration () const
SymbolicScalar get_time_at_node (int k) const
SymbolicVector get_state_at_node (int k) const
SymbolicVector get_control_at_node (int k) const

Protected Attributes

Optiopti_
int n_states_ = 0
int n_controls_ = 0
int n_nodes_ = 0
double t0_ = 0.0
double tf_fixed_ = 1.0
SymbolicScalar tf_symbolic_
bool tf_is_variable_ = false
bool setup_complete_ = false
bool dynamics_set_ = false
bool dynamics_constraints_added_ = false
NumericVector tau_
SymbolicMatrix states_
SymbolicMatrix controls_
std::function< SymbolicVector(const SymbolicVector &, const SymbolicVector &, const SymbolicScalar &)> dynamics_

Detailed Description

template<typename Derived>
class metis::TranscriptionBase< Derived >

Shared CRTP base for transcription methods.

Template Parameters
DerivedCRTP derived class (e.g. DirectCollocation, Pseudospectral)
See also
DirectCollocation for direct collocation transcription
Pseudospectral for pseudospectral transcription
MultipleShooting for multiple shooting transcription
BirkhoffPseudospectral for Birkhoff pseudospectral transcription

Constructor & Destructor Documentation

◆ TranscriptionBase()

template<typename Derived>
metis::TranscriptionBase< Derived >::TranscriptionBase ( Opti & opti)
inlineexplicit

Construct with a reference to the optimization environment.

Parameters
optiOpti instance to add variables and constraints to

Member Function Documentation

◆ add_continuity_constraints()

template<typename Derived>
void metis::TranscriptionBase< Derived >::add_continuity_constraints ( )
inline

◆ add_defect_constraints()

template<typename Derived>
void metis::TranscriptionBase< Derived >::add_defect_constraints ( )
inline

◆ add_dynamics_constraints()

template<typename Derived>
void metis::TranscriptionBase< Derived >::add_dynamics_constraints ( )
inline

Add dynamics constraints to the optimization problem.

◆ controls()

template<typename Derived>
const SymbolicMatrix & metis::TranscriptionBase< Derived >::controls ( ) const
inline

Get the control decision variable matrix.

Returns
matrix of size (n_nodes x n_controls) or (n_intervals x n_controls)

◆ get_control_at_node()

template<typename Derived>
SymbolicVector metis::TranscriptionBase< Derived >::get_control_at_node ( int k) const
inlineprotected

◆ get_duration()

template<typename Derived>
SymbolicScalar metis::TranscriptionBase< Derived >::get_duration ( ) const
inlineprotected

◆ get_state_at_node()

template<typename Derived>
SymbolicVector metis::TranscriptionBase< Derived >::get_state_at_node ( int k) const
inlineprotected

◆ get_time_at_node()

template<typename Derived>
SymbolicScalar metis::TranscriptionBase< Derived >::get_time_at_node ( int k) const
inlineprotected

◆ n_controls()

template<typename Derived>
int metis::TranscriptionBase< Derived >::n_controls ( ) const
inline

Get the number of control variables per node.

Returns
control dimension

◆ n_nodes()

template<typename Derived>
int metis::TranscriptionBase< Derived >::n_nodes ( ) const
inline

Get the number of discretization nodes.

Returns
node count

◆ n_states()

template<typename Derived>
int metis::TranscriptionBase< Derived >::n_states ( ) const
inline

Get the number of state variables per node.

Returns
state dimension

◆ set_dynamics()

template<typename Derived>
template<typename Func>
void metis::TranscriptionBase< Derived >::set_dynamics ( Func && dynamics)
inline

Register the dynamics function xdot = f(x, u, t).

Template Parameters
Funccallable with signature SymbolicVector(const SymbolicVector&, const SymbolicVector&, const SymbolicScalar&)
Parameters
dynamicsdynamics function

◆ set_final_state() [1/2]

template<typename Derived>
void metis::TranscriptionBase< Derived >::set_final_state ( const NumericVector & xf)
inline

Pin all final states to specified values.

Parameters
xfstate vector at the final time

◆ set_final_state() [2/2]

template<typename Derived>
void metis::TranscriptionBase< Derived >::set_final_state ( int idx,
double value )
inline

Pin a single final state component.

Parameters
idxstate index
valuefixed value for that state

◆ set_initial_state() [1/2]

template<typename Derived>
void metis::TranscriptionBase< Derived >::set_initial_state ( const NumericVector & x0)
inline

Pin all initial states to specified values.

Parameters
x0state vector at the initial time

◆ set_initial_state() [2/2]

template<typename Derived>
void metis::TranscriptionBase< Derived >::set_initial_state ( int idx,
double value )
inline

Pin a single initial state component.

Parameters
idxstate index
valuefixed value for that state

◆ states()

template<typename Derived>
const SymbolicMatrix & metis::TranscriptionBase< Derived >::states ( ) const
inline

Get the state decision variable matrix.

Returns
matrix of size (n_nodes x n_states)

◆ time_grid()

template<typename Derived>
const NumericVector & metis::TranscriptionBase< Derived >::time_grid ( ) const
inline

Get the normalized time grid.

Returns
vector of node times in [0, 1]

Member Data Documentation

◆ controls_

template<typename Derived>
SymbolicMatrix metis::TranscriptionBase< Derived >::controls_
protected

◆ dynamics_

template<typename Derived>
std::function<SymbolicVector(const SymbolicVector &, const SymbolicVector &, const SymbolicScalar &)> metis::TranscriptionBase< Derived >::dynamics_
protected

◆ dynamics_constraints_added_

template<typename Derived>
bool metis::TranscriptionBase< Derived >::dynamics_constraints_added_ = false
protected

◆ dynamics_set_

template<typename Derived>
bool metis::TranscriptionBase< Derived >::dynamics_set_ = false
protected

◆ n_controls_

template<typename Derived>
int metis::TranscriptionBase< Derived >::n_controls_ = 0
protected

◆ n_nodes_

template<typename Derived>
int metis::TranscriptionBase< Derived >::n_nodes_ = 0
protected

◆ n_states_

template<typename Derived>
int metis::TranscriptionBase< Derived >::n_states_ = 0
protected

◆ opti_

template<typename Derived>
Opti& metis::TranscriptionBase< Derived >::opti_
protected

◆ setup_complete_

template<typename Derived>
bool metis::TranscriptionBase< Derived >::setup_complete_ = false
protected

◆ states_

template<typename Derived>
SymbolicMatrix metis::TranscriptionBase< Derived >::states_
protected

◆ t0_

template<typename Derived>
double metis::TranscriptionBase< Derived >::t0_ = 0.0
protected

◆ tau_

template<typename Derived>
NumericVector metis::TranscriptionBase< Derived >::tau_
protected

◆ tf_fixed_

template<typename Derived>
double metis::TranscriptionBase< Derived >::tf_fixed_ = 1.0
protected

◆ tf_is_variable_

template<typename Derived>
bool metis::TranscriptionBase< Derived >::tf_is_variable_ = false
protected

◆ tf_symbolic_

template<typename Derived>
SymbolicScalar metis::TranscriptionBase< Derived >::tf_symbolic_
protected

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