virtual std::list<action*>::const_iterator get_action_iteration_begin() const;
virtual void action_iteration_increment(std::list<action*>::const_iterator & target) const;
virtual bool get_action_iteration_terminated(const std::list<action*>::const_iterator & i) const;
It is inherited by the class optimizer. Whenever the get_optimal_action iterates over the actions it uses these three functions. In your own programs you are free to override them providing a new (possibly random) order of the action iteration. And you can base these new orders (permutations of actions) on the knowledge stored in the stack of trackers!