1 #ifndef AI_TOOLBOX_MDP_TYPE_TRAITS_HEADER_FILE
2 #define AI_TOOLBOX_MDP_TYPE_TRAITS_HEADER_FILE
28 HasIntegralStateSpace<M> &&
29 HasIntegralActionSpace<M> &&
30 HasFixedActionSpace<M>;
47 concept
IsModel = IsGenerativeModel<M> && requires (
const M m,
size_t s,
size_t a) {
48 { m.getTransitionProbability(s, a, s) } -> std::convertible_to<double>;
49 { m.getExpectedReward(s, a, s) } -> std::convertible_to<double>;
69 concept
IsModelEigen = IsModel<M> && requires (
const M m,
size_t a) {
70 m.getTransitionFunction(a);
71 requires
IsDerivedFromEigen<std::remove_cvref_t<decltype((m.getTransitionFunction(a)))>>;
73 m.getRewardFunction();
93 { e.getVisits(s, a, s) } -> std::convertible_to<long unsigned>;
94 { e.getVisitsSum(s, a) } -> std::convertible_to<long unsigned>;
95 { e.getReward(s, a) } -> std::convertible_to<double>;
96 { e.getM2(s, a) } -> std::convertible_to<double>;
117 template <
typename E>
119 e.getVisitsSumTable();