aGrUM 3.1.1
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_ELEMENT>
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_ELEMENT>
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 65 of file nodeDatabase_tpl.h.

66 :
67 _value_(value) {
69
71 varIter != attrSet->cendSafe();
72 ++varIter)
74
76 }
<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_ELEMENT >, Chi2TestPolicy< GUM_ELEMENT >, LeastSquareTestPolicy< GUM_ELEMENT > >::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(), operator new(), 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 82 of file nodeDatabase_tpl.h.

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

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

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

References _attrTable_, _value_, 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 108 of file nodeDatabase_tpl.h.

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

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

Here is the call graph for this function:

◆ _valueDomain_() [1/2]

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

Definition at line 244 of file nodeDatabase_tpl.h.

244 {
245 return _value_->domainSize();
246 }

References _value_.

◆ _valueDomain_() [2/2]

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

Definition at line 239 of file nodeDatabase_tpl.h.

239 {
240 return _valueCount_.size();
241 }

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 102 of file nodeDatabase_tpl.h.

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

◆ cbeginValues()

template<TESTNAME AttributeSelection, bool isScalar>
auto gum::NodeDatabase< AttributeSelection, isScalar >::cbeginValues ( ) const

Iterators on value count to recopy correctly its content.

Definition at line 217 of file nodeDatabase_tpl.h.

218 {
219 return _valueCount_.cbeginSafe();
220 }

References _valueCount_.

Referenced by operator+=().

Here is the caller graph for this function:

◆ cendValues()

template<TESTNAME AttributeSelection, bool isScalar>
auto gum::NodeDatabase< AttributeSelection, isScalar >::cendValues ( ) const

Merges given NodeDatabase informations into current nDB.

Definition at line 223 of file nodeDatabase_tpl.h.

224 {
225 return _valueCount_.cendSafe();
226 }

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

Definition at line 229 of file nodeDatabase_tpl.h.

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

References _valueCount_.

◆ isTestRelevant()

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

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

Definition at line 189 of file nodeDatabase_tpl.h.

190 {
191 return _attrTable_[var]->isTestRelevant();
192 }

◆ nbObservation()

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

Nb observation taken into account by this instance.

Definition at line 180 of file nodeDatabase_tpl.h.

180 {
181 return _nbObservation_;
182 }

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)

Default constructor.

Definition at line 171 of file nodeDatabase_tpl.h.

171 {
173 }
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)

Allocators and Deallocators redefinition.

Definition at line 166 of file nodeDatabase_tpl.h.

166 {
168 }
void * allocate(const size_t &objectSize)
Allocates a block.

References NodeDatabase(), 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 137 of file nodeDatabase_tpl.h.

138 {
140
141 for (auto varIter = _attrTable_.beginSafe(); varIter != _attrTable_.endSafe(); ++varIter)
142 varIter.val()->add(*(src.testPolicy(varIter.key())));
143
144 for (auto valIter = src.cbeginValues(); valIter != src.cendValues(); ++valIter)
145 if (_valueCount_.exists(valIter.key())) _valueCount_[valIter.key()] += valIter.val();
146 else _valueCount_.insert(valIter.key(), valIter.val());
147
148 return *this;
149 }
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_, cbeginValues(), cendValues(), nbObservation(), and testPolicy().

Here is the call graph for this function:

◆ testOtherCriterion()

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

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

Definition at line 201 of file nodeDatabase_tpl.h.

202 {
203 return _attrTable_[var]->secondaryscore();
204 }

References _attrTable_.

◆ testPolicy()

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

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

Definition at line 211 of file nodeDatabase_tpl.h.

212 {
213 return _attrTable_[var];
214 }

References _attrTable_.

Referenced by operator+=().

Here is the caller graph for this function:

◆ testValue()

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

Returns the performance of given variables according to selection criterion.

Definition at line 196 of file nodeDatabase_tpl.h.

196 {
197 return _attrTable_[var]->score();
198 }

◆ toString()

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

Definition at line 152 of file nodeDatabase_tpl.h.

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

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

Definition at line 234 of file nodeDatabase_tpl.h.

234 {
236 }
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 204 of file nodeDatabase.h.

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

◆ _nbObservation_

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

Definition at line 210 of file nodeDatabase.h.

Referenced by NodeDatabase(), 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 207 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

Definition at line 213 of file nodeDatabase.h.

Referenced by _addObservation_(), _valueDomain_(), cbeginValues(), cendValues(), and effectif().


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