aGrUM  0.20.2
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...
 
VariableLearnerTypeinstantiateVarLearner__ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar)
 Initializes the learner. More...
 
VariableLearnerTypeinstantiateVarLearner__ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar, Int2Type< IMDDILEARNER >)
 Initializes the learner. More...
 
VariableLearnerTypeinstantiateVarLearner__ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar, Int2Type< ITILEARNER >)
 Initializes the learner. More...
 
RewardLearnerTypeinstantiateRewardLearner__ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables)
 Initializes the learner. More...
 
RewardLearnerTypeinstantiateRewardLearner__ (MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, Int2Type< IMDDILEARNER >)
 Initializes the learner. More...
 
RewardLearnerTypeinstantiateRewardLearner__ (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 69 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 64 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 72 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 47 of file fmdpLearner_tpl.h.

49  :
50  actionReward__(actionReward),
52  GUM_CONSTRUCTOR(FMDPLearner);
53  rewardLearner__ = nullptr;
54  }
RewardLearnerType * rewardLearner__
Definition: fmdpLearner.h:262
FMDPLearner(double learningThreshold, bool actionReward, double similarityThreshold=0.05)
Default constructor.
const double similarityThreshold__
Definition: fmdpLearner.h:265
const double learningThreshold__
Definition: fmdpLearner.h:264

◆ ~FMDPLearner()

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

Default destructor.

Definition at line 65 of file fmdpLearner_tpl.h.

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

65  {
66  for (auto actionIter = actionLearners__.beginSafe();
67  actionIter != actionLearners__.endSafe();
68  ++actionIter) {
69  for (auto learnerIter = actionIter.val()->beginSafe();
70  learnerIter != actionIter.val()->endSafe();
71  ++learnerIter)
72  delete learnerIter.val();
73  delete actionIter.val();
74  if (actionRewardLearners__.exists(actionIter.key()))
75  delete actionRewardLearners__[actionIter.key()];
76  }
77 
78  if (rewardLearner__) delete rewardLearner__;
79 
80  GUM_DESTRUCTOR(FMDPLearner);
81  }
RewardLearnerType * rewardLearner__
Definition: fmdpLearner.h:262
HashTable< Idx, VarLearnerTable *> actionLearners__
Definition: fmdpLearner.h:258
FMDPLearner(double learningThreshold, bool actionReward, double similarityThreshold=0.05)
Default constructor.
HashTable< Idx, RewardLearnerType *> actionRewardLearners__
Definition: fmdpLearner.h:261
+ Here is the call graph for this function:

Member Function Documentation

◆ 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 159 of file fmdpLearner_tpl.h.

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

160  {
161  for (SequenceIteratorSafe< const DiscreteVariable* > varIter
162  = fmdp__->beginVariables();
163  varIter != fmdp__->endVariables();
164  ++varIter) {
165  actionLearners__[actionId]
166  ->getWithDefault(*varIter, nullptr)
167  ->addObservation(newObs);
168  actionLearners__[actionId]->getWithDefault(*varIter, nullptr)->updateGraph();
169  }
170 
171  if (actionReward__) {
172  actionRewardLearners__[actionId]->addObservation(newObs);
173  actionRewardLearners__[actionId]->updateGraph();
174  } else {
175  rewardLearner__->addObservation(newObs);
176  rewardLearner__->updateGraph();
177  }
178 
179  rmax__
180  = rmax__ < std::abs(newObs->reward()) ? std::abs(newObs->reward()) : rmax__;
181 
182  return false;
183  }
RewardLearnerType * rewardLearner__
Definition: fmdpLearner.h:262
Potential< GUM_SCALAR > abs(const Potential< GUM_SCALAR > &arg)
Definition: potential.h:617
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:95
HashTable< Idx, VarLearnerTable *> actionLearners__
Definition: fmdpLearner.h:258
double rmax__
learnerSize
Definition: fmdpLearner.h:243
FMDP< double > * fmdp__
The FMDP to store the learned model.
Definition: fmdpLearner.h:256
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:102
HashTable< Idx, RewardLearnerType *> actionRewardLearners__
Definition: fmdpLearner.h:261
+ 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 96 of file fmdpLearner_tpl.h.

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

96  {
97  fmdp__ = fmdp;
98 
99  modaMax__ = 0;
100  rmax__ = 0.0;
101 
102  Set< const DiscreteVariable* > mainVariables;
103  for (auto varIter = fmdp__->beginVariables();
104  varIter != fmdp__->endVariables();
105  ++varIter) {
106  mainVariables.insert(*varIter);
107  modaMax__ = modaMax__ < (*varIter)->domainSize() ? (*varIter)->domainSize()
108  : modaMax__;
109  }
110 
111  for (auto actionIter = fmdp__->beginActions();
112  actionIter != fmdp__->endActions();
113  ++actionIter) {
114  // Adding a Hashtable for the action
115  actionLearners__.insert(*actionIter, new VarLearnerTable());
116 
117  // Adding a learner for each variable
118  for (auto varIter = fmdp__->beginVariables();
119  varIter != fmdp__->endVariables();
120  ++varIter) {
122  varTrans->setTableName("ACTION : " + fmdp__->actionName(*actionIter)
123  + " - VARIABLE : " + (*varIter)->name());
124  fmdp__->addTransitionForAction(*actionIter, *varIter, varTrans);
125  actionLearners__[*actionIter]->insert(
126  (*varIter),
127  instantiateVarLearner__(varTrans,
128  mainVariables,
129  fmdp__->main2prime(*varIter)));
130  }
131 
132  if (actionReward__) {
134  reward->setTableName("REWARD - ACTION : "
135  + fmdp__->actionName(*actionIter));
136  fmdp__->addRewardForAction(*actionIter, reward);
137  actionRewardLearners__.insert(
138  *actionIter,
139  instantiateRewardLearner__(reward, mainVariables));
140  }
141  }
142 
143  if (!actionReward__) {
145  reward->setTableName("REWARD");
146  fmdp__->addReward(reward);
147  rewardLearner__ = instantiateRewardLearner__(reward, mainVariables);
148  }
149  }
RewardLearnerType * rewardLearner__
Definition: fmdpLearner.h:262
SequenceIteratorSafe< Idx > beginActions() const
Returns an iterator reference to he beginning of the list of actions.
Definition: fmdp.h:137
void addReward(const MultiDimImplementation< GUM_SCALAR > *reward)
Adds a default variable reward.
Definition: fmdp.h:228
const std::string & actionName(Idx actionId) const
Returns name of action given in parameter.
Definition: fmdp_tpl.h:349
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:95
VariableLearnerType * instantiateVarLearner__(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar)
Initializes the learner.
Definition: fmdpLearner.h:128
HashTable< Idx, VarLearnerTable *> actionLearners__
Definition: fmdpLearner.h:258
double modaMax__
learnerSize
Definition: fmdpLearner.h:249
HashTable< const DiscreteVariable *, VariableLearnerType *> VarLearnerTable
Definition: fmdpLearner.h:72
void addTransitionForAction(Idx actionId, const DiscreteVariable *var, const MultiDimImplementation< GUM_SCALAR > *transition)
Adds a variable transition table to specified action.
Definition: fmdp_tpl.h:198
void addRewardForAction(Idx actionId, const MultiDimImplementation< GUM_SCALAR > *reward)
Adds a default variable reward.
Definition: fmdp_tpl.h:303
const DiscreteVariable * main2prime(const DiscreteVariable *mainVar) const
Returns the primed variable associate to the given main variable.
Definition: fmdp.h:109
MultiDimFunctionGraph< double > * instantiateFunctionGraph__()
Initializes the learner.
Definition: fmdpLearner.h:107
RewardLearnerType * instantiateRewardLearner__(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables)
Initializes the learner.
Definition: fmdpLearner.h:165
double rmax__
learnerSize
Definition: fmdpLearner.h:243
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
Definition: fmdp.h:144
FMDP< double > * fmdp__
The FMDP to store the learned model.
Definition: fmdpLearner.h:256
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:102
void setTableName(const std::string &name)
Sets the name of the table represented by this structure.
HashTable< Idx, RewardLearnerType *> actionRewardLearners__
Definition: fmdpLearner.h:261
+ Here is the call graph for this function:

◆ 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 107 of file fmdpLearner.h.

107  {
108  return instantiateFunctionGraph__(Int2Type< LearnerSelection >());
109  }
MultiDimFunctionGraph< double > * instantiateFunctionGraph__()
Initializes the learner.
Definition: fmdpLearner.h:107

◆ 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 112 of file fmdpLearner.h.

112  {
115  }
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getReducedAndOrderedInstance()
Returns a reduced and ordered instance.

◆ 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 118 of file fmdpLearner.h.

118  {
119  return MultiDimFunctionGraph< double,
120  ExactTerminalNodePolicy >::getTreeInstance();
121  }

◆ 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 165 of file fmdpLearner.h.

166  {
167  return instantiateRewardLearner__(target,
168  mainVariables,
169  Int2Type< LearnerSelection >());
170  }
RewardLearnerType * instantiateRewardLearner__(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables)
Initializes the learner.
Definition: fmdpLearner.h:165

◆ 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 173 of file fmdpLearner.h.

175  {
176  return new RewardLearnerType(target,
179  mainVariables);
180  }
LearnerSelect< LearnerSelection, IMDDI< RewardAttributeSelection, true >, ITI< RewardAttributeSelection, true > >::type RewardLearnerType
Definition: fmdpLearner.h:69
const double similarityThreshold__
Definition: fmdpLearner.h:265
const double learningThreshold__
Definition: fmdpLearner.h:264

◆ 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 183 of file fmdpLearner.h.

185  {
186  return new RewardLearnerType(target, learningThreshold__, mainVariables);
187  }
LearnerSelect< LearnerSelection, IMDDI< RewardAttributeSelection, true >, ITI< RewardAttributeSelection, true > >::type RewardLearnerType
Definition: fmdpLearner.h:69
const double learningThreshold__
Definition: fmdpLearner.h:264

◆ 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 128 of file fmdpLearner.h.

130  {
131  return instantiateVarLearner__(target,
132  mainVariables,
133  learnedVar,
134  Int2Type< LearnerSelection >());
135  }
VariableLearnerType * instantiateVarLearner__(MultiDimFunctionGraph< double > *target, Set< const DiscreteVariable * > &mainVariables, const DiscreteVariable *learnedVar)
Initializes the learner.
Definition: fmdpLearner.h:128

◆ 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 138 of file fmdpLearner.h.

141  {
142  return new VariableLearnerType(target,
145  mainVariables,
146  learnedVar);
147  }
LearnerSelect< LearnerSelection, IMDDI< VariableAttributeSelection, false >, ITI< VariableAttributeSelection, false > >::type VariableLearnerType
Definition: fmdpLearner.h:64
const double similarityThreshold__
Definition: fmdpLearner.h:265
const double learningThreshold__
Definition: fmdpLearner.h:264

◆ 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 150 of file fmdpLearner.h.

153  {
154  return new VariableLearnerType(target,
156  mainVariables,
157  learnedVar);
158  }
LearnerSelect< LearnerSelection, IMDDI< VariableAttributeSelection, false >, ITI< VariableAttributeSelection, false > >::type VariableLearnerType
Definition: fmdpLearner.h:64
const double learningThreshold__
Definition: fmdpLearner.h:264

◆ 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 246 of file fmdpLearner.h.

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

246 { return modaMax__; }
double modaMax__
learnerSize
Definition: fmdpLearner.h:249

◆ 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 240 of file fmdpLearner.h.

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

240 { return rmax__; }
double rmax__
learnerSize
Definition: fmdpLearner.h:243

◆ size()

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

learnerSize

Returns

Implements gum::ILearningStrategy.

Definition at line 193 of file fmdpLearner_tpl.h.

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

193  {
194  Size s = 0;
195  for (SequenceIteratorSafe< Idx > actionIter = fmdp__->beginActions();
196  actionIter != fmdp__->endActions();
197  ++actionIter) {
198  for (SequenceIteratorSafe< const DiscreteVariable* > varIter
199  = fmdp__->beginVariables();
200  varIter != fmdp__->endVariables();
201  ++varIter)
202  s += actionLearners__[*actionIter]
203  ->getWithDefault(*varIter, nullptr)
204  ->size();
205  if (actionReward__) s += actionRewardLearners__[*actionIter]->size();
206  }
207 
208  if (!actionReward__) s += rewardLearner__->size();
209 
210  return s;
211  }
RewardLearnerType * rewardLearner__
Definition: fmdpLearner.h:262
SequenceIteratorSafe< Idx > beginActions() const
Returns an iterator reference to he beginning of the list of actions.
Definition: fmdp.h:137
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:95
HashTable< Idx, VarLearnerTable *> actionLearners__
Definition: fmdpLearner.h:258
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
Definition: fmdp.h:144
FMDP< double > * fmdp__
The FMDP to store the learned model.
Definition: fmdpLearner.h:256
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:102
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:47
HashTable< Idx, RewardLearnerType *> actionRewardLearners__
Definition: fmdpLearner.h:261
+ 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 222 of file fmdpLearner_tpl.h.

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

222  {
223  for (SequenceIteratorSafe< Idx > actionIter = fmdp__->beginActions();
224  actionIter != fmdp__->endActions();
225  ++actionIter) {
226  for (SequenceIteratorSafe< const DiscreteVariable* > varIter
227  = fmdp__->beginVariables();
228  varIter != fmdp__->endVariables();
229  ++varIter)
230  actionLearners__[*actionIter]
231  ->getWithDefault(*varIter, nullptr)
232  ->updateFunctionGraph();
233  if (actionReward__)
234  actionRewardLearners__[*actionIter]->updateFunctionGraph();
235  }
236 
237  if (!actionReward__) rewardLearner__->updateFunctionGraph();
238  }
RewardLearnerType * rewardLearner__
Definition: fmdpLearner.h:262
SequenceIteratorSafe< Idx > beginActions() const
Returns an iterator reference to he beginning of the list of actions.
Definition: fmdp.h:137
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:95
HashTable< Idx, VarLearnerTable *> actionLearners__
Definition: fmdpLearner.h:258
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
Definition: fmdp.h:144
FMDP< double > * fmdp__
The FMDP to store the learned model.
Definition: fmdpLearner.h:256
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:102
HashTable< Idx, RewardLearnerType *> actionRewardLearners__
Definition: fmdpLearner.h:261
+ 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 235 of file fmdpLearner.h.

236  {
237  return actionLearners__[actionId]->getWithDefault(var, nullptr);
238  }
HashTable< Idx, VarLearnerTable *> actionLearners__
Definition: fmdpLearner.h:258

Member Data Documentation

◆ actionLearners__

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

Definition at line 258 of file fmdpLearner.h.

◆ actionReward__

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

Definition at line 260 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 261 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 256 of file fmdpLearner.h.

◆ learningThreshold__

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

Definition at line 264 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 262 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 265 of file fmdpLearner.h.


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