aGrUM  0.16.0
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 49 of file statesChecker.h.

Constructor & Destructor Documentation

◆ StatesChecker()

gum::StatesChecker::StatesChecker ( )

Default constructor.

Definition at line 28 of file statesChecker.cpp.

28  :
32  GUM_CONSTRUCTOR(StatesChecker);
33  }
StatesChecker()
Default constructor.
static MultiDimFunctionGraph< bool, ExactTerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:88

◆ ~StatesChecker()

gum::StatesChecker::~StatesChecker ( )

Default destructor.

Definition at line 35 of file statesChecker.cpp.

References __checker.

35  {
36  delete __checker;
37  GUM_DESTRUCTOR(StatesChecker);
38  }
StatesChecker()
Default constructor.
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:88

Member Function Documentation

◆ __insertState()

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

Definition at line 67 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().

69  {
70  Idx varIter = 0;
71  if (parentId)
72  varIter =
73  state.variablesSequence().pos(__checker->node(parentId)->nodeVar()) + 1;
74 
75 
76  for (; varIter < state.variablesSequence().size(); ++varIter) {
77  const DiscreteVariable* curVar = state.variablesSequence().atPos(varIter);
78  NodeId varId = __checker->manager()->addInternalNode(curVar);
79  if (parentId)
80  __checker->manager()->setSon(parentId, parentModa, varId);
81  else
82  __checker->manager()->setRootNode(varId);
83  for (Idx moda = 0; moda < curVar->domainSize(); ++moda) {
84  if (moda == state.valFromPtr(curVar))
85  parentModa = moda;
86  else
87  __checker->manager()->setSon(varId, moda, __checkerFalseId);
88  }
89  parentId = varId;
90  }
91  __checker->manager()->setSon(parentId, parentModa, __checkerTrueId);
92  }
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:98
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:88
+ 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 55 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().

55  {
57 
58  NodeId parId = __checker->root();
59  Idx parModa = state.valFromPtr(__checker->node(parId)->nodeVar());
60  while (__checker->node(parId)->son(parModa) != __checkerFalseId) {
61  parId = __checker->node(parId)->son(parModa);
62  parModa = state.valFromPtr(__checker->node(parId)->nodeVar());
63  }
64  __insertState(state, parId, parModa);
65  }
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:98
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:88
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 73 of file statesChecker.h.

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

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

73 { return __checker->get(state); }
virtual GUM_SCALAR get(const Instantiation &i) const
Returns the value pointed by i.
MultiDimFunctionGraph< bool > * __checker
Definition: statesChecker.h:88
+ 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 77 of file statesChecker.h.

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

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

77 { 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 40 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().

40  {
41  __checker->clear();
42  for (SequenceIteratorSafe< const DiscreteVariable* > varIter =
43  initialState.variablesSequence().beginSafe();
44  varIter != initialState.variablesSequence().endSafe();
45  ++varIter)
46  __checker->add(**varIter);
47 
51 
52  __insertState(initialState, 0, 0);
53  }
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:88
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 88 of file statesChecker.h.

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

◆ __checkerFalseId

NodeId gum::StatesChecker::__checkerFalseId
private

Definition at line 89 of file statesChecker.h.

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

◆ __checkerTrueId

NodeId gum::StatesChecker::__checkerTrueId
private

Definition at line 89 of file statesChecker.h.

Referenced by __insertState(), and reset().

◆ __nbVisitedStates

Idx gum::StatesChecker::__nbVisitedStates
private

Definition at line 86 of file statesChecker.h.

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

◆ __visitedStates

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

Definition at line 91 of file statesChecker.h.


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