mlpack  master
reward_set_visitor.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_METHODS_ANN_VISITOR_REWARD_SET_VISITOR_HPP
14 #define MLPACK_METHODS_ANN_VISITOR_REWARD_SET_VISITOR_HPP
15 
18 
19 #include <boost/variant.hpp>
20 
21 namespace mlpack {
22 namespace ann {
23 
27 class RewardSetVisitor : public boost::static_visitor<void>
28 {
29  public:
31  RewardSetVisitor(const double reward);
32 
34  template<typename LayerType>
35  void operator()(LayerType* layer) const;
36 
37  private:
39  const double reward;
40 
43  template<typename T>
44  typename std::enable_if<
45  HasRewardCheck<T, double&(T::*)()>::value &&
46  HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value, void>::type
47  LayerReward(T* layer) const;
48 
51  template<typename T>
52  typename std::enable_if<
53  !HasRewardCheck<T, double&(T::*)()>::value &&
54  HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value, void>::type
55  LayerReward(T* layer) const;
56 
59  template<typename T>
60  typename std::enable_if<
61  HasRewardCheck<T, double&(T::*)()>::value &&
62  !HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value, void>::type
63  LayerReward(T* layer) const;
64 
67  template<typename T>
68  typename std::enable_if<
69  !HasRewardCheck<T, double&(T::*)()>::value &&
70  !HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value, void>::type
71  LayerReward(T* layer) const;
72 };
73 
74 } // namespace ann
75 } // namespace mlpack
76 
77 // Include implementation.
78 #include "reward_set_visitor_impl.hpp"
79 
80 #endif
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: binarize.hpp:18
RewardSetVisitor(const double reward)
Set the reward parameter given the reward value.
RewardSetVisitor set the reward parameter given the reward value.
const double reward
The reward value.
std::enable_if< HasRewardCheck< T, double &(T::*)()>::value &&HasModelCheck< T, std::vector< LayerTypes > &(T::*)()>::value, void >::type LayerReward(T *layer) const
Set the deterministic parameter if the module implements the Deterministic() and Model() function...
void operator()(LayerType *layer) const
Set the reward parameter.