aGrUM  0.20.3
a C++ library for (probabilistic) graphical models
gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection > Class Template Reference

#include <agrum/FMDP/learning/fmdpLearner.h>

+ Inheritance diagram for gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >:
+ Collaboration diagram for gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >:

Public Member Functions

Constructor & destructor.
 FMDPLearner (double learningThreshold, bool actionReward, double similarityThreshold=0.05)
 Default constructor. More...
 
 ~FMDPLearner ()
 Default destructor. More...
 
Initialization
void initialize (FMDP< double > *fmdp)
 Initializes the learner. More...
 
MultiDimFunctionGraph< double > * _instantiateFunctionGraph_ ()
 Initializes the learner. More...
 
MultiDimFunctionGraph< double > * _instantiateFunctionGraph_ (Int2Type< IMDDILEARNER >)
 Initializes the learner. More...
 
MultiDimFunctionGraph< double > * _instantiateFunctionGraph_ (Int2Type< ITILEARNER >)
 Initializes the learner. More...
 
VariableLearnerType_instantiateVarLearner_ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar)
 Initializes the learner. More...
 
VariableLearnerType_instantiateVarLearner_ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar, Int2Type< IMDDILEARNER >)
 Initializes the learner. More...
 
VariableLearnerType_instantiateVarLearner_ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar, Int2Type< ITILEARNER >)
 Initializes the learner. More...
 
RewardLearnerType_instantiateRewardLearner_ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables)
 Initializes the learner. More...
 
RewardLearnerType_instantiateRewardLearner_ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, Int2Type< IMDDILEARNER >)
 Initializes the learner. More...
 
RewardLearnerType_instantiateRewardLearner_ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, Int2Type< ITILEARNER >)
 Initializes the learner. More...
 
Incremental methods
bool addObservation (Idx actionId, const Observation *obs)
 Gives to the learner a new transition. More...
 
void updateFMDP ()
 Starts an update of datastructure in the associated FMDP. More...
 

Miscelleanous methods

double _rmax_
 learnerSize More...
 
double _modaMax_
 learnerSize More...
 
Size size ()
 learnerSize More...
 
const IVisitableGraphLearnervarLearner (Idx actionId, const DiscreteVariable *var) const
 extractCount More...
 
virtual double rMax () const
 learnerSize More...
 
virtual double modaMax () const
 learnerSize More...
 

Detailed Description

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
class gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >

Definition at line 59 of file fmdpLearner.h.

Member Typedef Documentation

◆ RewardLearnerType

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
typedef LearnerSelect< LearnerSelection, IMDDI< RewardAttributeSelection, true >, ITI< RewardAttributeSelection, true > >::type gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::RewardLearnerType
private

Definition at line 67 of file fmdpLearner.h.

◆ VariableLearnerType

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
typedef LearnerSelect< LearnerSelection, IMDDI< VariableAttributeSelection, false >, ITI< VariableAttributeSelection, false > >::type gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::VariableLearnerType
private

Definition at line 63 of file fmdpLearner.h.

◆ VarLearnerTable

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
typedef HashTable< const DiscreteVariable*, VariableLearnerType* > gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::VarLearnerTable
private

Definition at line 69 of file fmdpLearner.h.

Constructor & Destructor Documentation

◆ FMDPLearner()

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::FMDPLearner ( double  learningThreshold,
bool  actionReward,
double  similarityThreshold = 0.05 
)

Default constructor.

Definition at line 46 of file fmdpLearner_tpl.h.

46  :
47  _actionReward_(actionReward),
49  GUM_CONSTRUCTOR(FMDPLearner);
50  _rewardLearner_ = nullptr;
51  }
FMDPLearner(double learningThreshold, bool actionReward, double similarityThreshold=0.05)
Default constructor.
const double _similarityThreshold_
Definition: fmdpLearner.h:245
const double _learningThreshold_
Definition: fmdpLearner.h:244
RewardLearnerType * _rewardLearner_
Definition: fmdpLearner.h:242

◆ ~FMDPLearner()

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::~FMDPLearner ( )

Default destructor.

Definition at line 61 of file fmdpLearner_tpl.h.

References gum::Set< Key, Alloc >::emplace().

61  {
62  for (auto actionIter = _actionLearners_.beginSafe(); actionIter != _actionLearners_.endSafe();
63  ++actionIter) {
64  for (auto learnerIter = actionIter.val()->beginSafe();
65  learnerIter != actionIter.val()->endSafe();
66  ++learnerIter)
67  delete learnerIter.val();
68  delete actionIter.val();
69  if (_actionRewardLearners_.exists(actionIter.key()))
70  delete _actionRewardLearners_[actionIter.key()];
71  }
72 
73  if (_rewardLearner_) delete _rewardLearner_;
74 
75  GUM_DESTRUCTOR(FMDPLearner);
76  }
HashTable< Idx, VarLearnerTable *> _actionLearners_
Definition: fmdpLearner.h:238
FMDPLearner(double learningThreshold, bool actionReward, double similarityThreshold=0.05)
Default constructor.
HashTable< Idx, RewardLearnerType *> _actionRewardLearners_
Definition: fmdpLearner.h:241
RewardLearnerType * _rewardLearner_
Definition: fmdpLearner.h:242
+ Here is the call graph for this function:

Member Function Documentation

◆ _instantiateFunctionGraph_() [1/3]

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
MultiDimFunctionGraph< double >* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_instantiateFunctionGraph_ ( )
inline

Initializes the learner.

Definition at line 102 of file fmdpLearner.h.

102  {
103  return _instantiateFunctionGraph_(Int2Type< LearnerSelection >());
104  }
MultiDimFunctionGraph< double > * _instantiateFunctionGraph_()
Initializes the learner.
Definition: fmdpLearner.h:102

◆ _instantiateFunctionGraph_() [2/3]

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
MultiDimFunctionGraph< double >* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_instantiateFunctionGraph_ ( Int2Type< IMDDILEARNER )
inline

Initializes the learner.

Definition at line 106 of file fmdpLearner.h.

106  {
107  return MultiDimFunctionGraph< double,
108  ExactTerminalNodePolicy >::getReducedAndOrderedInstance();
109  }

◆ _instantiateFunctionGraph_() [3/3]

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
MultiDimFunctionGraph< double >* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_instantiateFunctionGraph_ ( Int2Type< ITILEARNER )
inline

Initializes the learner.

Definition at line 111 of file fmdpLearner.h.

111  {
113  }
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.

◆ _instantiateRewardLearner_() [1/3]

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
RewardLearnerType* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_instantiateRewardLearner_ ( MultiDimFunctionGraph< double > *  target,
Set< const DiscreteVariable * > &  mainVariables 
)
inline

Initializes the learner.

Definition at line 150 of file fmdpLearner.h.

151  {
152  return _instantiateRewardLearner_(target, mainVariables, Int2Type< LearnerSelection >());
153  }
RewardLearnerType * _instantiateRewardLearner_(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables)
Initializes the learner.
Definition: fmdpLearner.h:150

◆ _instantiateRewardLearner_() [2/3]

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
RewardLearnerType* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_instantiateRewardLearner_ ( MultiDimFunctionGraph< double > *  target,
Set< const DiscreteVariable * > &  mainVariables,
Int2Type< IMDDILEARNER  
)
inline

Initializes the learner.

Definition at line 155 of file fmdpLearner.h.

157  {
158  return new RewardLearnerType(target,
161  mainVariables);
162  }
const double _similarityThreshold_
Definition: fmdpLearner.h:245
LearnerSelect< LearnerSelection, IMDDI< RewardAttributeSelection, true >, ITI< RewardAttributeSelection, true > >::type RewardLearnerType
Definition: fmdpLearner.h:67
const double _learningThreshold_
Definition: fmdpLearner.h:244

◆ _instantiateRewardLearner_() [3/3]

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
RewardLearnerType* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_instantiateRewardLearner_ ( MultiDimFunctionGraph< double > *  target,
Set< const DiscreteVariable * > &  mainVariables,
Int2Type< ITILEARNER  
)
inline

Initializes the learner.

Definition at line 164 of file fmdpLearner.h.

166  {
167  return new RewardLearnerType(target, _learningThreshold_, mainVariables);
168  }
LearnerSelect< LearnerSelection, IMDDI< RewardAttributeSelection, true >, ITI< RewardAttributeSelection, true > >::type RewardLearnerType
Definition: fmdpLearner.h:67
const double _learningThreshold_
Definition: fmdpLearner.h:244

◆ _instantiateVarLearner_() [1/3]

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
VariableLearnerType* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_instantiateVarLearner_ ( MultiDimFunctionGraph< double > *  target,
Set< const DiscreteVariable * > &  mainVariables,
const DiscreteVariable learnedVar 
)
inline

Initializes the learner.

Definition at line 119 of file fmdpLearner.h.

121  {
122  return _instantiateVarLearner_(target,
123  mainVariables,
124  learnedVar,
125  Int2Type< LearnerSelection >());
126  }
VariableLearnerType * _instantiateVarLearner_(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar)
Initializes the learner.
Definition: fmdpLearner.h:119

◆ _instantiateVarLearner_() [2/3]

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
VariableLearnerType* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_instantiateVarLearner_ ( MultiDimFunctionGraph< double > *  target,
Set< const DiscreteVariable * > &  mainVariables,
const DiscreteVariable learnedVar,
Int2Type< IMDDILEARNER  
)
inline

Initializes the learner.

Definition at line 128 of file fmdpLearner.h.

131  {
132  return new VariableLearnerType(target,
135  mainVariables,
136  learnedVar);
137  }
LearnerSelect< LearnerSelection, IMDDI< VariableAttributeSelection, false >, ITI< VariableAttributeSelection, false > >::type VariableLearnerType
Definition: fmdpLearner.h:63
const double _similarityThreshold_
Definition: fmdpLearner.h:245
const double _learningThreshold_
Definition: fmdpLearner.h:244

◆ _instantiateVarLearner_() [3/3]

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
VariableLearnerType* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_instantiateVarLearner_ ( MultiDimFunctionGraph< double > *  target,
Set< const DiscreteVariable * > &  mainVariables,
const DiscreteVariable learnedVar,
Int2Type< ITILEARNER  
)
inline

Initializes the learner.

Definition at line 139 of file fmdpLearner.h.

142  {
143  return new VariableLearnerType(target, _learningThreshold_, mainVariables, learnedVar);
144  }
LearnerSelect< LearnerSelection, IMDDI< VariableAttributeSelection, false >, ITI< VariableAttributeSelection, false > >::type VariableLearnerType
Definition: fmdpLearner.h:63
const double _learningThreshold_
Definition: fmdpLearner.h:244

◆ addObservation()

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
bool gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::addObservation ( Idx  actionId,
const Observation obs 
)
virtual

Gives to the learner a new transition.

Parameters
actionId: the action on which the transition was made
obs: the observed transition
Returns
true if learning this transition implies structural changes (can trigger a new planning)

Implements gum::ILearningStrategy.

Definition at line 142 of file fmdpLearner_tpl.h.

References gum::Set< Key, Alloc >::emplace().

142  {
143  for (SequenceIteratorSafe< const DiscreteVariable* > varIter = _fmdp_->beginVariables();
144  varIter != _fmdp_->endVariables();
145  ++varIter) {
146  _actionLearners_[actionId]->getWithDefault(*varIter, nullptr)->addObservation(newObs);
147  _actionLearners_[actionId]->getWithDefault(*varIter, nullptr)->updateGraph();
148  }
149 
150  if (_actionReward_) {
151  _actionRewardLearners_[actionId]->addObservation(newObs);
152  _actionRewardLearners_[actionId]->updateGraph();
153  } else {
154  _rewardLearner_->addObservation(newObs);
155  _rewardLearner_->updateGraph();
156  }
157 
158  _rmax_ = _rmax_ < std::abs(newObs->reward()) ? std::abs(newObs->reward()) : _rmax_;
159 
160  return false;
161  }
Potential< GUM_SCALAR > abs(const Potential< GUM_SCALAR > &arg)
Definition: potential.h:595
HashTable< Idx, VarLearnerTable *> _actionLearners_
Definition: fmdpLearner.h:238
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:94
double _rmax_
learnerSize
Definition: fmdpLearner.h:223
FMDP< double > * _fmdp_
The FMDP to store the learned model.
Definition: fmdpLearner.h:236
HashTable< Idx, RewardLearnerType *> _actionRewardLearners_
Definition: fmdpLearner.h:241
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:101
RewardLearnerType * _rewardLearner_
Definition: fmdpLearner.h:242
+ Here is the call graph for this function:

◆ initialize()

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
void gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::initialize ( FMDP< double > *  fmdp)
virtual

Initializes the learner.

Implements gum::ILearningStrategy.

Definition at line 90 of file fmdpLearner_tpl.h.

References gum::Set< Key, Alloc >::emplace().

90  {
91  _fmdp_ = fmdp;
92 
93  _modaMax_ = 0;
94  _rmax_ = 0.0;
95 
96  Set< const DiscreteVariable* > mainVariables;
97  for (auto varIter = _fmdp_->beginVariables(); varIter != _fmdp_->endVariables(); ++varIter) {
98  mainVariables.insert(*varIter);
99  _modaMax_ = _modaMax_ < (*varIter)->domainSize() ? (*varIter)->domainSize() : _modaMax_;
100  }
101 
102  for (auto actionIter = _fmdp_->beginActions(); actionIter != _fmdp_->endActions();
103  ++actionIter) {
104  // Adding a Hashtable for the action
105  _actionLearners_.insert(*actionIter, new VarLearnerTable());
106 
107  // Adding a learner for each variable
108  for (auto varIter = _fmdp_->beginVariables(); varIter != _fmdp_->endVariables(); ++varIter) {
110  varTrans->setTableName("ACTION : " + _fmdp_->actionName(*actionIter)
111  + " - VARIABLE : " + (*varIter)->name());
112  _fmdp_->addTransitionForAction(*actionIter, *varIter, varTrans);
113  _actionLearners_[*actionIter]->insert(
114  (*varIter),
115  _instantiateVarLearner_(varTrans, mainVariables, _fmdp_->main2prime(*varIter)));
116  }
117 
118  if (_actionReward_) {
120  reward->setTableName("REWARD - ACTION : " + _fmdp_->actionName(*actionIter));
121  _fmdp_->addRewardForAction(*actionIter, reward);
122  _actionRewardLearners_.insert(*actionIter,
123  _instantiateRewardLearner_(reward, mainVariables));
124  }
125  }
126 
127  if (!_actionReward_) {
129  reward->setTableName("REWARD");
130  _fmdp_->addReward(reward);
131  _rewardLearner_ = _instantiateRewardLearner_(reward, mainVariables);
132  }
133  }
HashTable< Idx, VarLearnerTable *> _actionLearners_
Definition: fmdpLearner.h:238
SequenceIteratorSafe< Idx > beginActions() const
Returns an iterator reference to he beginning of the list of actions.
Definition: fmdp.h:136
void addReward(const MultiDimImplementation< GUM_SCALAR > *reward)
Adds a default variable reward.
Definition: fmdp.h:220
const std::string & actionName(Idx actionId) const
Returns name of action given in parameter.
Definition: fmdp_tpl.h:314
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:94
double _rmax_
learnerSize
Definition: fmdpLearner.h:223
FMDP< double > * _fmdp_
The FMDP to store the learned model.
Definition: fmdpLearner.h:236
VariableLearnerType * _instantiateVarLearner_(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar)
Initializes the learner.
Definition: fmdpLearner.h:119
double _modaMax_
learnerSize
Definition: fmdpLearner.h:229
RewardLearnerType * _instantiateRewardLearner_(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables)
Initializes the learner.
Definition: fmdpLearner.h:150
HashTable< const DiscreteVariable *, VariableLearnerType *> VarLearnerTable
Definition: fmdpLearner.h:69
void addTransitionForAction(Idx actionId, const DiscreteVariable *var, const MultiDimImplementation< GUM_SCALAR > *transition)
Adds a variable transition table to specified action.
Definition: fmdp_tpl.h:183
void addRewardForAction(Idx actionId, const MultiDimImplementation< GUM_SCALAR > *reward)
Adds a default variable reward.
Definition: fmdp_tpl.h:274
HashTable< Idx, RewardLearnerType *> _actionRewardLearners_
Definition: fmdpLearner.h:241
const DiscreteVariable * main2prime(const DiscreteVariable *mainVar) const
Returns the primed variable associate to the given main variable.
Definition: fmdp.h:108
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
Definition: fmdp.h:141
MultiDimFunctionGraph< double > * _instantiateFunctionGraph_()
Initializes the learner.
Definition: fmdpLearner.h:102
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:101
void setTableName(const std::string &name)
Sets the name of the table represented by this structure.
RewardLearnerType * _rewardLearner_
Definition: fmdpLearner.h:242
+ Here is the call graph for this function:

◆ modaMax()

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
virtual double gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::modaMax ( ) const
inlinevirtual

learnerSize

Returns

Implements gum::ILearningStrategy.

Definition at line 226 of file fmdpLearner.h.

References gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_modaMax_.

226 { return _modaMax_; }
double _modaMax_
learnerSize
Definition: fmdpLearner.h:229

◆ rMax()

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
virtual double gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::rMax ( ) const
inlinevirtual

learnerSize

Returns

Implements gum::ILearningStrategy.

Definition at line 220 of file fmdpLearner.h.

References gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_rmax_.

220 { return _rmax_; }
double _rmax_
learnerSize
Definition: fmdpLearner.h:223

◆ size()

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
Size gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::size ( )
virtual

learnerSize

Returns

Implements gum::ILearningStrategy.

Definition at line 170 of file fmdpLearner_tpl.h.

References gum::Set< Key, Alloc >::emplace().

170  {
171  Size s = 0;
172  for (SequenceIteratorSafe< Idx > actionIter = _fmdp_->beginActions();
173  actionIter != _fmdp_->endActions();
174  ++actionIter) {
175  for (SequenceIteratorSafe< const DiscreteVariable* > varIter = _fmdp_->beginVariables();
176  varIter != _fmdp_->endVariables();
177  ++varIter)
178  s += _actionLearners_[*actionIter]->getWithDefault(*varIter, nullptr)->size();
179  if (_actionReward_) s += _actionRewardLearners_[*actionIter]->size();
180  }
181 
182  if (!_actionReward_) s += _rewardLearner_->size();
183 
184  return s;
185  }
HashTable< Idx, VarLearnerTable *> _actionLearners_
Definition: fmdpLearner.h:238
SequenceIteratorSafe< Idx > beginActions() const
Returns an iterator reference to he beginning of the list of actions.
Definition: fmdp.h:136
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:94
FMDP< double > * _fmdp_
The FMDP to store the learned model.
Definition: fmdpLearner.h:236
HashTable< Idx, RewardLearnerType *> _actionRewardLearners_
Definition: fmdpLearner.h:241
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
Definition: fmdp.h:141
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:101
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:47
RewardLearnerType * _rewardLearner_
Definition: fmdpLearner.h:242
+ Here is the call graph for this function:

◆ updateFMDP()

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
void gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::updateFMDP ( )
virtual

Starts an update of datastructure in the associated FMDP.

Implements gum::ILearningStrategy.

Definition at line 195 of file fmdpLearner_tpl.h.

References gum::Set< Key, Alloc >::emplace().

195  {
196  for (SequenceIteratorSafe< Idx > actionIter = _fmdp_->beginActions();
197  actionIter != _fmdp_->endActions();
198  ++actionIter) {
199  for (SequenceIteratorSafe< const DiscreteVariable* > varIter = _fmdp_->beginVariables();
200  varIter != _fmdp_->endVariables();
201  ++varIter)
202  _actionLearners_[*actionIter]->getWithDefault(*varIter, nullptr)->updateFunctionGraph();
203  if (_actionReward_) _actionRewardLearners_[*actionIter]->updateFunctionGraph();
204  }
205 
206  if (!_actionReward_) _rewardLearner_->updateFunctionGraph();
207  }
HashTable< Idx, VarLearnerTable *> _actionLearners_
Definition: fmdpLearner.h:238
SequenceIteratorSafe< Idx > beginActions() const
Returns an iterator reference to he beginning of the list of actions.
Definition: fmdp.h:136
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:94
FMDP< double > * _fmdp_
The FMDP to store the learned model.
Definition: fmdpLearner.h:236
HashTable< Idx, RewardLearnerType *> _actionRewardLearners_
Definition: fmdpLearner.h:241
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
Definition: fmdp.h:141
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:101
RewardLearnerType * _rewardLearner_
Definition: fmdpLearner.h:242
+ Here is the call graph for this function:

◆ varLearner()

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
const IVisitableGraphLearner* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::varLearner ( Idx  actionId,
const DiscreteVariable var 
) const
inlinevirtual

extractCount

Implements gum::ILearningStrategy.

Definition at line 216 of file fmdpLearner.h.

216  {
217  return _actionLearners_[actionId]->getWithDefault(var, nullptr);
218  }
HashTable< Idx, VarLearnerTable *> _actionLearners_
Definition: fmdpLearner.h:238

Member Data Documentation

◆ _actionLearners_

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
HashTable< Idx, VarLearnerTable* > gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_actionLearners_
private

Definition at line 238 of file fmdpLearner.h.

◆ _actionReward_

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
bool gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_actionReward_
private

Definition at line 240 of file fmdpLearner.h.

◆ _actionRewardLearners_

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
HashTable< Idx, RewardLearnerType* > gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_actionRewardLearners_
private

Definition at line 241 of file fmdpLearner.h.

◆ _fmdp_

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
FMDP< double >* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_fmdp_
private

The FMDP to store the learned model.

Definition at line 236 of file fmdpLearner.h.

◆ _learningThreshold_

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
const double gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_learningThreshold_
private

Definition at line 244 of file fmdpLearner.h.

◆ _modaMax_

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
double gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_modaMax_
private

◆ _rewardLearner_

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
RewardLearnerType* gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_rewardLearner_
private

Definition at line 242 of file fmdpLearner.h.

◆ _rmax_

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
double gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_rmax_
private

◆ _similarityThreshold_

template<TESTNAME VariableAttributeSelection, TESTNAME RewardAttributeSelection, LEARNERNAME LearnerSelection>
const double gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::_similarityThreshold_
private

Definition at line 245 of file fmdpLearner.h.


The documentation for this class was generated from the following files: