aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
gum::NodeDatabase< AttributeSelection, isScalar > Class Template Reference

<agrum/FMDP/learning/datastructure/nodeDatabase.h> More...

#include <nodeDatabase.h>

Collaboration diagram for gum::NodeDatabase< AttributeSelection, isScalar >:

Public Member Functions

Idx effectif (Idx moda) const
Idx valueDomain () const
Constructor & destructor.
 NodeDatabase (const gum::VariableSet *, const DiscreteVariable *=nullptr)
 Default constructor.
 ~NodeDatabase ()
 Default destructor.
void * operator new (size_t s)
 Allocators and Deallocators redefinition.
void operator delete (void *p)
 Default constructor.
Variable Test Methods
INLINE bool isTestRelevant (const DiscreteVariable *var) const
 Indicates wether or not, node has sufficient observation so that any statistic is relevant.
INLINE double testValue (const DiscreteVariable *var) const
 Returns the performance of given variables according to selection criterion.
INLINE double testOtherCriterion (const DiscreteVariable *var) const
 Returns the performance of given variables according to selection secondary criterion (to break ties).
Aggregation Methods
NodeDatabase< AttributeSelection, isScalar > & operator+= (const NodeDatabase< AttributeSelection, isScalar > &src)
 Merges given NodeDatabase informations into current nDB.
const TestPolicy< ValueType > * testPolicy (const DiscreteVariable *var) const
 Returns a reference to nDB test policy for given variable (so that test policy information can be merged too).
const HashTableConstIteratorSafe< ValueType, IdxcbeginValues () const
 Iterators on value count to recopy correctly its content.
const HashTableConstIteratorSafe< ValueType, IdxcendValues () const
 Merges given NodeDatabase informations into current nDB.

Private Types

using ValueType = typename ValueSelect< isScalar, double, Idx >::type
template<typename GUM_SCALAR>
using TestPolicy

Private Member Functions

Idx _valueDomain_ (Int2Type< true >) const
Idx _valueDomain_ (Int2Type< false >) const
std::string toString () const

Private Attributes

HashTable< const DiscreteVariable *, TestPolicy< ValueType > * > _attrTable_
 Table giving for every variables its instantiation.
const DiscreteVariable_value_
 So does this reference on the value observed.
Idx _nbObservation_
HashTable< ValueType, Idx_valueCount_

Observation handling methods

void addObservation (const Observation *)
 Nb observation taken into account by this instance.
INLINE Idx nbObservation () const
 Nb observation taken into account by this instance.
void _addObservation_ (const Observation *, Int2Type< true >)
 Updates database with new observation.
void _addObservation_ (const Observation *, Int2Type< false >)
 depending on if we're learning reward function or transition probability

Detailed Description

template<TESTNAME AttributeSelection, bool isScalar>
class gum::NodeDatabase< AttributeSelection, isScalar >

<agrum/FMDP/learning/datastructure/nodeDatabase.h>

Definition at line 75 of file nodeDatabase.h.

Member Typedef Documentation

◆ TestPolicy

template<TESTNAME AttributeSelection, bool isScalar>
template<typename GUM_SCALAR>
using gum::NodeDatabase< AttributeSelection, isScalar >::TestPolicy
private
Initial value:
typename TestSelect< AttributeSelection,
<agrum/base/multidim/core/testPolicy/Chi2TestPolicy.h>
<agrum/base/multidim/core/testPolicies/GTestPolicy.h>
Definition GTestPolicy.h:74
<agrum/base/multidim/core/testPolicy/leastSquareTestPolicy.h>

Definition at line 79 of file nodeDatabase.h.

◆ ValueType

template<TESTNAME AttributeSelection, bool isScalar>
using gum::NodeDatabase< AttributeSelection, isScalar >::ValueType = typename ValueSelect< isScalar, double, Idx >::type
private

Definition at line 76 of file nodeDatabase.h.

Constructor & Destructor Documentation

◆ NodeDatabase()

template<TESTNAME AttributeSelection, bool isScalar>
gum::NodeDatabase< AttributeSelection, isScalar >::NodeDatabase ( const gum::VariableSet * attrSet,
const DiscreteVariable * value = nullptr )

Default constructor.

Definition at line 64 of file nodeDatabase_tpl.h.

65 :
66 _value_(value) {
68
70 varIter != attrSet->cendSafe();
71 ++varIter)
73
75 }
<agrum/FMDP/learning/datastructure/nodeDatabase.h>
NodeDatabase(const gum::VariableSet *, const DiscreteVariable *=nullptr)
Default constructor.
const DiscreteVariable * _value_
So does this reference on the value observed.
typename TestSelect< AttributeSelection, GTestPolicy< GUM_SCALAR >, Chi2TestPolicy< GUM_SCALAR >, LeastSquareTestPolicy< GUM_SCALAR > >::type TestPolicy
HashTable< const DiscreteVariable *, TestPolicy< ValueType > * > _attrTable_
Table giving for every variables its instantiation.

References NodeDatabase(), _attrTable_, _nbObservation_, _value_, gum::Set< Key >::cbeginSafe(), and gum::Set< Key >::cendSafe().

Referenced by NodeDatabase(), ~NodeDatabase(), operator delete(), and operator+=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~NodeDatabase()

template<TESTNAME AttributeSelection, bool isScalar>
gum::NodeDatabase< AttributeSelection, isScalar >::~NodeDatabase ( )

Default destructor.

Definition at line 81 of file nodeDatabase_tpl.h.

81 {
82 for (auto varIter = _attrTable_.beginSafe(); varIter != _attrTable_.endSafe(); ++varIter)
83 delete varIter.val();
84
86 }

References NodeDatabase(), and _attrTable_.

Here is the call graph for this function:

Member Function Documentation

◆ _addObservation_() [1/2]

template<TESTNAME AttributeSelection, bool isScalar>
void gum::NodeDatabase< AttributeSelection, isScalar >::_addObservation_ ( const Observation * newObs,
Int2Type< false >  )
private

depending on if we're learning reward function or transition probability

Definition at line 117 of file nodeDatabase_tpl.h.

118 {
119 for (auto varIter = _attrTable_.cbeginSafe(); varIter != _attrTable_.cendSafe(); ++varIter)
120 varIter.val()->addObservation(newObs->modality(varIter.key()), newObs->modality(_value_));
121
122 if (_valueCount_.exists(newObs->modality(_value_))) _valueCount_[newObs->modality(_value_)]++;
123 else _valueCount_.insert(newObs->modality(_value_), 1);
124 }
HashTable< ValueType, Idx > _valueCount_
void addObservation(const Observation *)
Nb observation taken into account by this instance.

References _attrTable_, _value_, _valueCount_, and gum::Observation::modality().

Here is the call graph for this function:

◆ _addObservation_() [2/2]

template<TESTNAME AttributeSelection, bool isScalar>
void gum::NodeDatabase< AttributeSelection, isScalar >::_addObservation_ ( const Observation * newObs,
Int2Type< true >  )
private

Updates database with new observation.

Calls either or

Definition at line 107 of file nodeDatabase_tpl.h.

108 {
109 for (auto varIter = _attrTable_.cbeginSafe(); varIter != _attrTable_.cendSafe(); ++varIter)
110 varIter.val()->addObservation(newObs->rModality(varIter.key()), newObs->reward());
111
112 if (_valueCount_.exists(newObs->reward())) _valueCount_[newObs->reward()]++;
113 else _valueCount_.insert(newObs->reward(), 1);
114 }

References _attrTable_, _valueCount_, gum::Observation::reward(), and gum::Observation::rModality().

Referenced by addObservation().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _valueDomain_() [1/2]

template<TESTNAME AttributeSelection, bool isScalar>
Idx gum::NodeDatabase< AttributeSelection, isScalar >::_valueDomain_ ( Int2Type< false > ) const
inlineprivate

Definition at line 212 of file nodeDatabase.h.

212{ return _value_->domainSize(); }

References _value_.

◆ _valueDomain_() [2/2]

template<TESTNAME AttributeSelection, bool isScalar>
Idx gum::NodeDatabase< AttributeSelection, isScalar >::_valueDomain_ ( Int2Type< true > ) const
inlineprivate

Definition at line 210 of file nodeDatabase.h.

210{ return _valueCount_.size(); }

References _valueCount_.

Referenced by valueDomain().

Here is the caller graph for this function:

◆ addObservation()

template<TESTNAME AttributeSelection, bool isScalar>
void gum::NodeDatabase< AttributeSelection, isScalar >::addObservation ( const Observation * newObs)

Nb observation taken into account by this instance.

Definition at line 101 of file nodeDatabase_tpl.h.

101 {
104 }
void _addObservation_(const Observation *, Int2Type< true >)
Updates database with new observation.

References _addObservation_(), and _nbObservation_.

Referenced by gum::IncrementalGraphLearner< AttributeSelection, false >::insertLeafNode_().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cbeginValues()

template<TESTNAME AttributeSelection, bool isScalar>
const HashTableConstIteratorSafe< ValueType, Idx > gum::NodeDatabase< AttributeSelection, isScalar >::cbeginValues ( ) const
inline

Iterators on value count to recopy correctly its content.

Definition at line 189 of file nodeDatabase.h.

189 {
190 return _valueCount_.cbeginSafe();
191 }

References _valueCount_.

Referenced by operator+=().

Here is the caller graph for this function:

◆ cendValues()

template<TESTNAME AttributeSelection, bool isScalar>
const HashTableConstIteratorSafe< ValueType, Idx > gum::NodeDatabase< AttributeSelection, isScalar >::cendValues ( ) const
inline

Merges given NodeDatabase informations into current nDB.

Definition at line 193 of file nodeDatabase.h.

193 {
194 return _valueCount_.cendSafe();
195 }

References _valueCount_.

Referenced by operator+=().

Here is the caller graph for this function:

◆ effectif()

template<TESTNAME AttributeSelection, bool isScalar>
Idx gum::NodeDatabase< AttributeSelection, isScalar >::effectif ( Idx moda) const
inline

Definition at line 203 of file nodeDatabase.h.

203 {
204 return _valueCount_.exists(ValueType(moda)) ? _valueCount_[ValueType(moda)] : 0;
205 }
typename ValueSelect< isScalar, double, Idx >::type ValueType

References _valueCount_.

◆ isTestRelevant()

template<TESTNAME AttributeSelection, bool isScalar>
INLINE bool gum::NodeDatabase< AttributeSelection, isScalar >::isTestRelevant ( const DiscreteVariable * var) const
inline

Indicates wether or not, node has sufficient observation so that any statistic is relevant.

Definition at line 147 of file nodeDatabase.h.

147 {
148 return _attrTable_[var]->isTestRelevant();
149 }

References _attrTable_.

◆ nbObservation()

template<TESTNAME AttributeSelection, bool isScalar>
INLINE Idx gum::NodeDatabase< AttributeSelection, isScalar >::nbObservation ( ) const
inline

Nb observation taken into account by this instance.

Definition at line 134 of file nodeDatabase.h.

134{ return _nbObservation_; }

References _nbObservation_.

Referenced by operator+=(), and toString().

Here is the caller graph for this function:

◆ operator delete()

template<TESTNAME AttributeSelection, bool isScalar>
void gum::NodeDatabase< AttributeSelection, isScalar >::operator delete ( void * p)
inline

Default constructor.

Definition at line 105 of file nodeDatabase.h.

105 {
107 }
static SmallObjectAllocator & instance()
void deallocate(void *pDeallocatedObject, const size_t &objectSize)
Deallocates an object.

References NodeDatabase(), gum::SmallObjectAllocator::deallocate(), and gum::SmallObjectAllocator::instance().

Here is the call graph for this function:

◆ operator new()

template<TESTNAME AttributeSelection, bool isScalar>
void * gum::NodeDatabase< AttributeSelection, isScalar >::operator new ( size_t s)
inline

Allocators and Deallocators redefinition.

Definition at line 103 of file nodeDatabase.h.

void * allocate(const size_t &objectSize)
Allocates a block.

References gum::SmallObjectAllocator::allocate(), and gum::SmallObjectAllocator::instance().

Here is the call graph for this function:

◆ operator+=()

template<TESTNAME AttributeSelection, bool isScalar>
NodeDatabase< AttributeSelection, isScalar > & gum::NodeDatabase< AttributeSelection, isScalar >::operator+= ( const NodeDatabase< AttributeSelection, isScalar > & src)

Merges given NodeDatabase informations into current nDB.

Definition at line 136 of file nodeDatabase_tpl.h.

137 {
139
140 for (auto varIter = _attrTable_.beginSafe(); varIter != _attrTable_.endSafe(); ++varIter)
141 varIter.val()->add(*(src.testPolicy(varIter.key())));
142
143 for (auto valIter = src.cbeginValues(); valIter != src.cendValues(); ++valIter)
144 if (_valueCount_.exists(valIter.key())) _valueCount_[valIter.key()] += valIter.val();
145 else _valueCount_.insert(valIter.key(), valIter.val());
146
147 return *this;
148 }
const TestPolicy< ValueType > * testPolicy(const DiscreteVariable *var) const
Returns a reference to nDB test policy for given variable (so that test policy information can be mer...
INLINE Idx nbObservation() const
Nb observation taken into account by this instance.
const HashTableConstIteratorSafe< ValueType, Idx > cendValues() const
Merges given NodeDatabase informations into current nDB.
const HashTableConstIteratorSafe< ValueType, Idx > cbeginValues() const
Iterators on value count to recopy correctly its content.

References NodeDatabase(), _attrTable_, _nbObservation_, _valueCount_, cbeginValues(), cendValues(), nbObservation(), and testPolicy().

Here is the call graph for this function:

◆ testOtherCriterion()

template<TESTNAME AttributeSelection, bool isScalar>
INLINE double gum::NodeDatabase< AttributeSelection, isScalar >::testOtherCriterion ( const DiscreteVariable * var) const
inline

Returns the performance of given variables according to selection secondary criterion (to break ties).

Definition at line 161 of file nodeDatabase.h.

161 {
162 return _attrTable_[var]->secondaryscore();
163 }

References _attrTable_.

◆ testPolicy()

template<TESTNAME AttributeSelection, bool isScalar>
const TestPolicy< ValueType > * gum::NodeDatabase< AttributeSelection, isScalar >::testPolicy ( const DiscreteVariable * var) const
inline

Returns a reference to nDB test policy for given variable (so that test policy information can be merged too).

Definition at line 182 of file nodeDatabase.h.

182 {
183 return _attrTable_[var];
184 }

References _attrTable_.

Referenced by operator+=().

Here is the caller graph for this function:

◆ testValue()

template<TESTNAME AttributeSelection, bool isScalar>
INLINE double gum::NodeDatabase< AttributeSelection, isScalar >::testValue ( const DiscreteVariable * var) const
inline

Returns the performance of given variables according to selection criterion.

Definition at line 155 of file nodeDatabase.h.

155{ return _attrTable_[var]->score(); }

References _attrTable_.

◆ toString()

template<TESTNAME AttributeSelection, bool isScalar>
std::string gum::NodeDatabase< AttributeSelection, isScalar >::toString ( ) const
private

Definition at line 151 of file nodeDatabase_tpl.h.

151 {
153
154 ss << "NbObservation : " << this->nbObservation() << std::endl;
155 for (auto varIter = _attrTable_.beginSafe(); varIter != _attrTable_.endSafe(); ++varIter)
156 ss << "\t\tVariable : " << varIter.key()->name()
157 << " - Associated Test : " << _attrTable_[varIter.key()]->toString() << std::endl;
158
159 return ss.str();
160 }

References _attrTable_, and nbObservation().

Here is the call graph for this function:

◆ valueDomain()

template<TESTNAME AttributeSelection, bool isScalar>
Idx gum::NodeDatabase< AttributeSelection, isScalar >::valueDomain ( ) const
inline

Definition at line 207 of file nodeDatabase.h.

Idx _valueDomain_(Int2Type< true >) const

References _valueDomain_().

Here is the call graph for this function:

Member Data Documentation

◆ _attrTable_

template<TESTNAME AttributeSelection, bool isScalar>
HashTable< const DiscreteVariable*, TestPolicy< ValueType >* > gum::NodeDatabase< AttributeSelection, isScalar >::_attrTable_
private

Table giving for every variables its instantiation.

Definition at line 218 of file nodeDatabase.h.

Referenced by NodeDatabase(), ~NodeDatabase(), _addObservation_(), _addObservation_(), isTestRelevant(), operator+=(), testOtherCriterion(), testPolicy(), testValue(), and toString().

◆ _nbObservation_

template<TESTNAME AttributeSelection, bool isScalar>
Idx gum::NodeDatabase< AttributeSelection, isScalar >::_nbObservation_
private

Definition at line 224 of file nodeDatabase.h.

Referenced by NodeDatabase(), addObservation(), nbObservation(), and operator+=().

◆ _value_

template<TESTNAME AttributeSelection, bool isScalar>
const DiscreteVariable* gum::NodeDatabase< AttributeSelection, isScalar >::_value_
private

So does this reference on the value observed.

Definition at line 221 of file nodeDatabase.h.

Referenced by NodeDatabase(), _addObservation_(), and _valueDomain_().

◆ _valueCount_

template<TESTNAME AttributeSelection, bool isScalar>
HashTable< ValueType, Idx > gum::NodeDatabase< AttributeSelection, isScalar >::_valueCount_
private

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