This class computes the numerical differentiation of a cost model. More...
#include <cost.hpp>
Public Types | |
typedef CostModelAbstractTpl< Scalar > | Base |
typedef CostDataAbstractTpl< Scalar > | CostDataAbstract |
typedef CostDataNumDiffTpl< Scalar > | Data |
typedef DataCollectorAbstractTpl< Scalar > | DataCollectorAbstract |
typedef MathBaseTpl< Scalar > | MathBase |
typedef MathBaseTpl< Scalar >::MatrixXs | MatrixXs |
typedef boost::function< void(const VectorXs &, const VectorXs &)> | ReevaluationFunction |
typedef MathBaseTpl< Scalar >::VectorXs | VectorXs |
Public Types inherited from CostModelAbstractTpl< _Scalar > | |
typedef ActivationModelAbstractTpl< Scalar > | ActivationModelAbstract |
typedef ActivationModelQuadTpl< Scalar > | ActivationModelQuad |
typedef CostDataAbstractTpl< Scalar > | CostDataAbstract |
typedef DataCollectorAbstractTpl< Scalar > | DataCollectorAbstract |
typedef MathBaseTpl< Scalar > | MathBase |
typedef MathBase::MatrixXs | MatrixXs |
typedef ResidualModelAbstractTpl< Scalar > | ResidualModelAbstract |
typedef StateAbstractTpl< Scalar > | StateAbstract |
typedef MathBase::VectorXs | VectorXs |
Public Member Functions | |
CostModelNumDiffTpl (const boost::shared_ptr< Base > &model) | |
Initialize the numdiff cost model. More... | |
virtual | ~CostModelNumDiffTpl () |
Initialize the numdiff cost model. | |
virtual void | calc (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
virtual void | calc (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
Compute the cost value and its residual vector. More... | |
virtual void | calcDiff (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
virtual void | calcDiff (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
Compute the Jacobian and Hessian of cost and its residual vector. More... | |
virtual boost::shared_ptr< CostDataAbstract > | createData (DataCollectorAbstract *const data) |
Create a numdiff cost data. More... | |
const Scalar | get_disturbance () const |
Return the disturbance constant used by the numerical differentiation routine. | |
const boost::shared_ptr< Base > & | get_model () const |
Return the original cost model. | |
bool | get_with_gauss_approx () |
Identify if the Gauss approximation is going to be used or not. More... | |
void | set_disturbance (const Scalar disturbance) |
Modify the disturbance constant used by the numerical differentiation routine. | |
void | set_reevals (const std::vector< ReevaluationFunction > &reevals) |
Register functions that updates the shared data computed for a system rollout The updated data is used to evaluate of the gradient and Hessian. More... | |
Public Member Functions inherited from CostModelAbstractTpl< _Scalar > | |
CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, boost::shared_ptr< ActivationModelAbstract > activation) | |
Initialize the cost model. More... | |
CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, boost::shared_ptr< ActivationModelAbstract > activation, boost::shared_ptr< ResidualModelAbstract > residual) | |
Initialize the cost model. More... | |
CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, boost::shared_ptr< ActivationModelAbstract > activation, const std::size_t nu) | |
Initialize the cost model. More... | |
CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, boost::shared_ptr< ResidualModelAbstract > residual) | |
Initialize the cost model. More... | |
CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nr) | |
Initialize the cost model. More... | |
CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nr, const std::size_t nu) | |
Initialize the cost model. More... | |
const boost::shared_ptr< ActivationModelAbstract > & | get_activation () const |
Return the activation model. | |
std::size_t | get_nu () const |
Return the dimension of the control input. | |
template<class ReferenceType > | |
ReferenceType | get_reference () |
Return the cost reference. | |
const boost::shared_ptr< ResidualModelAbstract > & | get_residual () const |
Return the residual model. | |
const boost::shared_ptr< StateAbstract > & | get_state () const |
Return the state. | |
virtual void | print (std::ostream &os) const |
Print relevant information of the cost model. More... | |
template<class ReferenceType > | |
void | set_reference (ReferenceType ref) |
Modify the cost reference. | |
Public Attributes | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
Public Attributes inherited from CostModelAbstractTpl< _Scalar > | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
Protected Attributes | |
boost::shared_ptr< ActivationModelAbstract > | activation_ |
Activation model. | |
std::size_t | nu_ |
Control dimension. | |
boost::shared_ptr< StateAbstract > | state_ |
State description. | |
VectorXs | unone_ |
No control vector. | |
Protected Attributes inherited from CostModelAbstractTpl< _Scalar > | |
boost::shared_ptr< ActivationModelAbstract > | activation_ |
Activation model. | |
std::size_t | nu_ |
Control dimension. | |
boost::shared_ptr< ResidualModelAbstract > | residual_ |
Residual model. | |
boost::shared_ptr< StateAbstract > | state_ |
State description. | |
VectorXs | unone_ |
No control vector. | |
Additional Inherited Members | |
Protected Member Functions inherited from CostModelAbstractTpl< _Scalar > | |
virtual void | get_referenceImpl (const std::type_info &, void *) |
Return the cost reference. | |
virtual void | set_referenceImpl (const std::type_info &, const void *) |
Modify the cost reference. | |
This class computes the numerical differentiation of a cost model.
It computes the Jacobian and Hessian of the cost model via numerical differentiation, i.e., \(\mathbf{\ell_x}\), \(\mathbf{\ell_u}\), \(\mathbf{\ell_{xx}}\), \(\mathbf{\ell_{uu}}\), and \(\mathbf{\ell_{xu}}\) which denote the Jacobians and Hessians of the cost function, respectively.
CostModelAbstractTpl()
, calcDiff()
|
explicit |
Initialize the numdiff cost model.
model | Cost model that we want to apply the numerical differentiation |
|
virtual |
Compute the cost value and its residual vector.
[in] | data | Cost data |
[in] | x | State point \(\mathbf{x}\in\mathbb{R}^{ndx}\) |
[in] | u | Control input \(\mathbf{u}\in\mathbb{R}^{nu}\) |
Implements CostModelAbstractTpl< _Scalar >.
|
virtual |
It updates the total cost based on the state only. This function is used in the terminal nodes of an optimal control problem.
[in] | data | Cost data |
[in] | x | State point \(\mathbf{x}\in\mathbb{R}^{ndx}\) |
Reimplemented from CostModelAbstractTpl< _Scalar >.
|
virtual |
Compute the Jacobian and Hessian of cost and its residual vector.
It computes the Jacobian and Hessian of the cost function. It assumes that calc()
has been run first.
[in] | data | Cost data |
[in] | x | State point \(\mathbf{x}\in\mathbb{R}^{ndx}\) |
[in] | u | Control input \(\mathbf{u}\in\mathbb{R}^{nu}\) |
Implements CostModelAbstractTpl< _Scalar >.
|
virtual |
It updates the Jacobian and Hessian of the cost function based on the state only. This function is used in the terminal nodes of an optimal control problem.
[in] | data | Cost data |
[in] | x | State point \(\mathbf{x}\in\mathbb{R}^{ndx}\) |
Reimplemented from CostModelAbstractTpl< _Scalar >.
|
virtual |
Create a numdiff cost data.
data | Data collector used by the original model |
Reimplemented from CostModelAbstractTpl< _Scalar >.
bool get_with_gauss_approx | ( | ) |
Identify if the Gauss approximation is going to be used or not.
void set_reevals | ( | const std::vector< ReevaluationFunction > & | reevals | ) |
Register functions that updates the shared data computed for a system rollout The updated data is used to evaluate of the gradient and Hessian.
reevals | are the registered functions. |