Drake

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 statedynamics (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 PeriodicBoundaryCondition >  periodic_boundary_conditions 
double  convergence_tol = 1e4 
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, InputPortIndex >  input_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 noncontinuous states. More...  

default 
bool assume_non_continuous_states_are_fixed {false} 
(Advanced) Boolean which, if true, allows this algorithm to optimize without considering the dynamics of any noncontinuous states.
This is helpful for optimizing systems that might have some additional bookkeeping 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.
double convergence_tol = 1e4 
Value iteration methods converge when the value function stops changing (typically evaluated with the l∞ norm).
This value sets that threshold.
double discount_factor {1.} 
A value between (0,1] that discounts future rewards.
std::variant<systems::InputPortSelection, InputPortIndex> input_port_index 
For systems with multiple input ports, we must specify which input port is being used in the control design.
std::list<struct PeriodicBoundaryCondition> periodic_boundary_conditions 
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.