30 #ifndef GUM_FMDP_LEARNER_H 31 #define GUM_FMDP_LEARNER_H 33 #include <agrum/tools/core/hashTable.h> 35 #include <agrum/FMDP/SDyna/Strategies/ILearningStrategy.h> 36 #include <agrum/FMDP/fmdp.h> 37 #include <agrum/FMDP/learning/datastructure/imddi.h> 38 #include <agrum/FMDP/learning/datastructure/iti.h> 39 #include <agrum/FMDP/learning/observation.h> 41 #include <agrum/tools/variables/discreteVariable.h> 56 template < TESTNAME VariableAttributeSelection,
57 TESTNAME RewardAttributeSelection,
58 LEARNERNAME LearnerSelection >
80 FMDPLearner(
double learningThreshold,
bool actionReward,
double similarityThreshold = 0.05);
103 return _instantiateFunctionGraph_(Int2Type< LearnerSelection >());
107 return MultiDimFunctionGraph<
double,
108 ExactTerminalNodePolicy >::getReducedAndOrderedInstance();
112 return MultiDimFunctionGraph<
double, ExactTerminalNodePolicy >::getTreeInstance();
122 return _instantiateVarLearner_(target,
125 Int2Type< LearnerSelection >());
132 return new VariableLearnerType(target,
134 _similarityThreshold_,
143 return new VariableLearnerType(target, _learningThreshold_, mainVariables, learnedVar);
152 return _instantiateRewardLearner_(target, mainVariables, Int2Type< LearnerSelection >());
158 return new RewardLearnerType(target,
160 _similarityThreshold_,
167 return new RewardLearnerType(target, _learningThreshold_, mainVariables);
217 return _actionLearners_[actionId]->getWithDefault(var,
nullptr);
251 #include <agrum/FMDP/learning/fmdpLearner_tpl.h> MultiDimFunctionGraph< double > * _instantiateFunctionGraph_(Int2Type< ITILEARNER >)
Initializes the learner.
HashTable< Idx, VarLearnerTable *> _actionLearners_
void initialize(FMDP< double > *fmdp)
Initializes the learner.
INLINE void emplace(Args &&... args)
const IVisitableGraphLearner * varLearner(Idx actionId, const DiscreteVariable *var) const
extractCount
FMDP< double > * _fmdp_
The FMDP to store the learned model.
FMDPLearner(double learningThreshold, bool actionReward, double similarityThreshold=0.05)
Default constructor.
VariableLearnerType * _instantiateVarLearner_(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar, Int2Type< ITILEARNER >)
Initializes the learner.
RewardLearnerType * _instantiateRewardLearner_(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, Int2Type< ITILEARNER >)
Initializes the learner.
~FMDPLearner()
Default destructor.
VariableLearnerType * _instantiateVarLearner_(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar)
Initializes the learner.
double _modaMax_
learnerSize
bool addObservation(Idx actionId, const Observation *obs)
Gives to the learner a new transition.
virtual double modaMax() const
learnerSize
RewardLearnerType * _instantiateRewardLearner_(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables)
Initializes the learner.
const double _similarityThreshold_
HashTable< const DiscreteVariable *, VariableLearnerType *> VarLearnerTable
HashTable< Idx, RewardLearnerType *> _actionRewardLearners_
LearnerSelect< LearnerSelection, IMDDI< RewardAttributeSelection, true >, ITI< RewardAttributeSelection, true > >::type RewardLearnerType
void updateFMDP()
Starts an update of datastructure in the associated FMDP.
virtual double rMax() const
learnerSize
MultiDimFunctionGraph< double > * _instantiateFunctionGraph_()
Initializes the learner.
const double _learningThreshold_
RewardLearnerType * _rewardLearner_