Drake
DynamicProgrammingOptions Struct Reference

Detailed Description

Consolidates the many possible options to be passed to the dynamic programming algorithms.

#include <drake/systems/controllers/dynamic_programming.h>

Classes

struct  PeriodicBoundaryCondition
 For algorithms that rely on approximations of the state-dynamics (as in FittedValueIteration), this is a list of state dimensions for which the state space maximum value should be "wrapped around" to ensure that all values are in the range [low, high). More...
 

Public Member Functions

 DynamicProgrammingOptions ()=default
 

Public Attributes

double discount_factor {1.}
 A value between (0,1] that discounts future rewards. More...
 
std::list< struct PeriodicBoundaryConditionperiodic_boundary_conditions
 
double convergence_tol = 1e-4
 Value iteration methods converge when the value function stops changing (typically evaluated with the l∞ norm). More...
 
std::function< void(int iteration, const math::BarycentricMesh< double > &state_mesh, const Eigen::RowVectorXd &cost_to_go, const Eigen::MatrixXd &policy)> visualization_callback {nullptr}
 If callable, this method is invoked during each major iteration of the dynamic programming algorithm, in order to facilitate e.g. More...
 
std::variant< systems::InputPortSelection, InputPortIndexinput_port_index
 For systems with multiple input ports, we must specify which input port is being used in the control design. More...
 
bool assume_non_continuous_states_are_fixed {false}
 (Advanced) Boolean which, if true, allows this algorithm to optimize without considering the dynamics of any non-continuous states. More...
 

Constructor & Destructor Documentation

◆ DynamicProgrammingOptions()

Member Data Documentation

◆ assume_non_continuous_states_are_fixed

bool assume_non_continuous_states_are_fixed {false}

(Advanced) Boolean which, if true, allows this algorithm to optimize without considering the dynamics of any non-continuous states.

This is helpful for optimizing systems that might have some additional book-keeping variables in their state. Only use this if you are sure that the dynamics of the additional state variables cannot impact the dynamics of the continuous states.
Default: false.

◆ convergence_tol

double convergence_tol = 1e-4

Value iteration methods converge when the value function stops changing (typically evaluated with the l∞ norm).

This value sets that threshold.

◆ discount_factor

double discount_factor {1.}

A value between (0,1] that discounts future rewards.

See also
FittedValueIteration.

◆ input_port_index

std::variant<systems::InputPortSelection, InputPortIndex> input_port_index
Initial value:

For systems with multiple input ports, we must specify which input port is being used in the control design.

See also
systems::InputPortSelection.

◆ periodic_boundary_conditions

std::list<struct PeriodicBoundaryCondition> periodic_boundary_conditions

◆ visualization_callback

std::function<void( int iteration, const math::BarycentricMesh<double>& state_mesh, const Eigen::RowVectorXd& cost_to_go, const Eigen::MatrixXd& policy)> visualization_callback {nullptr}

If callable, this method is invoked during each major iteration of the dynamic programming algorithm, in order to facilitate e.g.

graphical inspection/debugging of the results.

Note
The first call happens at iteration 1 (after the value iteration has run once), not zero.

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