aGrUM  0.14.2
gum::StatesChecker Class Reference

<agrum/FMDP/simulation/statesChecker.h> More...

#include <statesChecker.h>

+ Collaboration diagram for gum::StatesChecker:

Public Member Functions

Constructor & destructor.
 StatesChecker ()
 Default constructor. More...
 
 ~StatesChecker ()
 Default destructor. More...
 
Miscelleanous methods
bool checkState (const Instantiation &state)
 
void addState (const Instantiation &)
 
Idx nbVisitedStates ()
 
void reset (const Instantiation &)
 

Detailed Description

<agrum/FMDP/simulation/statesChecker.h>

Provides the necessary to check whether or not states have been already visited.

Definition at line 46 of file statesChecker.h.

Constructor & Destructor Documentation

◆ StatesChecker()

gum::StatesChecker::StatesChecker ( )

Default constructor.

Definition at line 26 of file statesChecker.cpp.

26  :
30  GUM_CONSTRUCTOR(StatesChecker);
31  }
StatesChecker()
Default constructor.
static MultiDimFunctionGraph< bool, ExactTerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:85

◆ ~StatesChecker()

gum::StatesChecker::~StatesChecker ( )

Default destructor.

Definition at line 33 of file statesChecker.cpp.

References __checker.

33  {
34  delete __checker;
35  GUM_DESTRUCTOR(StatesChecker);
36  }
StatesChecker()
Default constructor.
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:85

Member Function Documentation

◆ __insertState()

void gum::StatesChecker::__insertState ( const Instantiation state,
NodeId  parentId,
Idx  parentModa 
)
private

Definition at line 65 of file statesChecker.cpp.

References __checker, __checkerFalseId, __checkerTrueId, gum::MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy >::addInternalNode(), gum::DiscreteVariable::domainSize(), gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::manager(), gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::node(), gum::InternalNode::nodeVar(), gum::MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy >::setRootNode(), gum::MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy >::setSon(), gum::Instantiation::valFromPtr(), and gum::Instantiation::variablesSequence().

Referenced by addState(), nbVisitedStates(), and reset().

67  {
68  Idx varIter = 0;
69  if (parentId)
70  varIter =
71  state.variablesSequence().pos(__checker->node(parentId)->nodeVar()) + 1;
72 
73 
74  for (; varIter < state.variablesSequence().size(); ++varIter) {
75  const DiscreteVariable* curVar = state.variablesSequence().atPos(varIter);
76  NodeId varId = __checker->manager()->addInternalNode(curVar);
77  if (parentId)
78  __checker->manager()->setSon(parentId, parentModa, varId);
79  else
80  __checker->manager()->setRootNode(varId);
81  for (Idx moda = 0; moda < curVar->domainSize(); ++moda) {
82  if (moda == state.valFromPtr(curVar))
83  parentModa = moda;
84  else
85  __checker->manager()->setSon(varId, moda, __checkerFalseId);
86  }
87  parentId = varId;
88  }
89  __checker->manager()->setSon(parentId, parentModa, __checkerTrueId);
90  }
void setSon(const NodeId &node, const Idx &modality, const NodeId &sonNode)
Sets nodes son for given modality to designated son node.
void setRootNode(const NodeId &root)
Sets root node of decision diagram.
const InternalNode * node(NodeId n) const
Returns internalNode structure associated to that nodeId.
const DiscreteVariable * nodeVar() const
Returns the node variable.
NodeId addInternalNode(const DiscreteVariable *var)
Inserts a new non terminal node in graph.
MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy > * manager()
Returns a const reference to the manager of this diagram.
Size NodeId
Type for node ids.
Definition: graphElements.h:97
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:85
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addState()

void gum::StatesChecker::addState ( const Instantiation state)

Definition at line 53 of file statesChecker.cpp.

References __checker, __checkerFalseId, __insertState(), __nbVisitedStates, gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::node(), gum::InternalNode::nodeVar(), gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::root(), gum::InternalNode::son(), and gum::Instantiation::valFromPtr().

Referenced by checkState(), and gum::E_GreedyDecider::checkState().

53  {
55 
56  NodeId parId = __checker->root();
57  Idx parModa = state.valFromPtr(__checker->node(parId)->nodeVar());
58  while (__checker->node(parId)->son(parModa) != __checkerFalseId) {
59  parId = __checker->node(parId)->son(parModa);
60  parModa = state.valFromPtr(__checker->node(parId)->nodeVar());
61  }
62  __insertState(state, parId, parModa);
63  }
const InternalNode * node(NodeId n) const
Returns internalNode structure associated to that nodeId.
const DiscreteVariable * nodeVar() const
Returns the node variable.
NodeId son(Idx modality) const
Returns the son at a given index.
const NodeId & root() const
Returns the id of the root node from the diagram.
Size NodeId
Type for node ids.
Definition: graphElements.h:97
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:85
void __insertState(const Instantiation &, NodeId, Idx)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkState()

bool gum::StatesChecker::checkState ( const Instantiation state)
inline

Definition at line 70 of file statesChecker.h.

References __checker, addState(), and gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::get().

Referenced by gum::E_GreedyDecider::checkState().

70 { return __checker->get(state); }
virtual GUM_SCALAR get(const Instantiation &i) const
Returns the value pointed by i.
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:85
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ nbVisitedStates()

Idx gum::StatesChecker::nbVisitedStates ( )
inline

Definition at line 74 of file statesChecker.h.

References __insertState(), __nbVisitedStates, and reset().

Referenced by gum::E_GreedyDecider::checkState(), and gum::E_GreedyDecider::stateOptimalPolicy().

74 { return __nbVisitedStates; }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ reset()

void gum::StatesChecker::reset ( const Instantiation initialState)

Definition at line 38 of file statesChecker.cpp.

References __checker, __checkerFalseId, __checkerTrueId, __insertState(), __nbVisitedStates, gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::add(), gum::MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy >::addTerminalNode(), gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::clear(), gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::manager(), and gum::Instantiation::variablesSequence().

Referenced by gum::E_GreedyDecider::checkState(), and nbVisitedStates().

38  {
39  __checker->clear();
40  for (SequenceIteratorSafe< const DiscreteVariable* > varIter =
41  initialState.variablesSequence().beginSafe();
42  varIter != initialState.variablesSequence().endSafe();
43  ++varIter)
44  __checker->add(**varIter);
45 
49 
50  __insertState(initialState, 0, 0);
51  }
virtual void add(const DiscreteVariable &v)
Adds a new var to the variables of the multidimensional matrix.
NodeId addTerminalNode(const GUM_SCALAR &value)
Adds a value to the MultiDimFunctionGraph.
MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy > * manager()
Returns a const reference to the manager of this diagram.
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:85
void clear()
Clears the function graph.
void __insertState(const Instantiation &, NodeId, Idx)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ __checker

MultiDimFunctionGraph< bool >* gum::StatesChecker::__checker
private

Definition at line 85 of file statesChecker.h.

Referenced by __insertState(), addState(), checkState(), reset(), and ~StatesChecker().

◆ __checkerFalseId

NodeId gum::StatesChecker::__checkerFalseId
private

Definition at line 86 of file statesChecker.h.

Referenced by __insertState(), addState(), and reset().

◆ __checkerTrueId

NodeId gum::StatesChecker::__checkerTrueId
private

Definition at line 86 of file statesChecker.h.

Referenced by __insertState(), and reset().

◆ __nbVisitedStates

Idx gum::StatesChecker::__nbVisitedStates
private

Definition at line 83 of file statesChecker.h.

Referenced by addState(), nbVisitedStates(), and reset().

◆ __visitedStates

Set< Instantiation* > gum::StatesChecker::__visitedStates
private

Definition at line 88 of file statesChecker.h.


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