aGrUM  0.16.0
mddOperatorStrategy.h
Go to the documentation of this file.
1 
30 // =========================================================================
31 #ifndef GUM_MDD_OPERATOR_STRATEGY_H
32 #define GUM_MDD_OPERATOR_STRATEGY_H
33 // =========================================================================
35 // =========================================================================
36 
37 namespace gum {
38 
49  template < typename GUM_SCALAR >
50  class MDDOperatorStrategy : public IOperatorStrategy< GUM_SCALAR > {
51  public:
52  // ###################################################################
54  // ###################################################################
56 
61 
66 
68 
69 
70  // ###################################################################
72  // ###################################################################
74 
78  }
81  return MultiDimFunctionGraph<
83  SetTerminalNodePolicy >::getReducedAndOrderedInstance();
84  }
89  }
90 
92 
93  // ###################################################################
95  // ###################################################################
97 
98  protected:
99  // ==========================================================================
103  // ==========================================================================
106  Idx actionId,
107  const FMDP< GUM_SCALAR >* fmdp,
108  const Set< const DiscreteVariable* >& elVarSeq);
109 
110  // ==========================================================================
112  // ==========================================================================
116  Idx del = 3);
117 
118  // ==========================================================================
120  // ==========================================================================
124  Idx del = 3);
125 
126  // ==========================================================================
128  // ==========================================================================
132  Idx del = 3);
133 
134  // ==========================================================================
136  // ==========================================================================
140  SetTerminalNodePolicy >* f1,
142  SetTerminalNodePolicy >* f2,
143  Idx del = 3);
144 
145  // ==========================================================================
147  // ==========================================================================
151  Idx del = 1);
152 
153  // ==========================================================================
155  // ==========================================================================
159  Idx del = 0);
160 
161 
163 
164  protected:
165  // ==========================================================================
168  // ==========================================================================
169  INLINE bool _shouldEleminateVar(const DiscreteVariable* v,
170  const FMDP< GUM_SCALAR >* fmdp) {
171  return v == nullptr ? false : fmdp->mapMainPrime().existsSecond(v);
172  }
173 
174  // ==========================================================================
177  // ==========================================================================
178  INLINE const DiscreteVariable*
180  return function->variablesSequence().size() == 0
181  ? nullptr
182  : function->variablesSequence().atPos(
183  function->variablesSequence().size() - 1);
184  }
185  };
186 } /* namespace gum */
187 
188 
190 
191 #endif // GUM_MDD_OPERATOR_STRATEGY_H
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual MultiDimFunctionGraph< GUM_SCALAR > * subtract(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=0)
Subtract current VFunction from old VFunction to see if threshold is reached or not.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
MultiDimFunctionGraph< GUM_SCALAR > * regress(const MultiDimFunctionGraph< GUM_SCALAR > *Vold, Idx actionId, const FMDP< GUM_SCALAR > *fmdp, const Set< const DiscreteVariable * > &elVarSeq)
Computes Qaction for given actionid.
INLINE bool _shouldEleminateVar(const DiscreteVariable *v, const FMDP< GUM_SCALAR > *fmdp)
Indicates if whether or not given var is to be eliminated. Called by the evalQaction.
<agrum/FMDP/SDyna/IOperatorStrategy.h>
MDDOperatorStrategy()
Default constructor.
INLINE const Bijection< const DiscreteVariable *, const DiscreteVariable *> & mapMainPrime() const
Returns the map binding main variables and prime variables.
Definition: fmdp.h:117
This class is used to implement factored decision process.
Definition: fmdp.h:57
Base class for discrete random variable.
~MDDOperatorStrategy()
Default destructor.
<agrum/FMDP/planning/mddOperatorStrategy.h>
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
MultiDimFunctionGraph< ActionSet, SetTerminalNodePolicy > * getAggregatorInstance()
Class to handle efficiently argMaxSet.
Definition: argMaxSet.h:57
Representation of a setA Set is a structure that contains arbitrary elements.
Definition: set.h:165
virtual MultiDimFunctionGraph< GUM_SCALAR > * multiply(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=3)
virtual MultiDimFunctionGraph< GUM_SCALAR > * maximize(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=3)
MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy > * getFunctionInstance()
INLINE const DiscreteVariable * _lastVar(const MultiDimFunctionGraph< GUM_SCALAR > *function)
Returns the last var in the var order for given graph function Called by the evalQaction.
Implementation of a Terminal Node Policy that maps nodeid to a set of value.
MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * getArgMaxFunctionInstance()
virtual MultiDimFunctionGraph< GUM_SCALAR > * add(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=1)
Adds reward to given function( whether a qAction or vFunction)
virtual MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * argmaximize(const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > *f1, const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > *f2, Idx del=3)
Size Idx
Type for indexes.
Definition: types.h:53
virtual MultiDimFunctionGraph< GUM_SCALAR > * minimize(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=3)
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getReducedAndOrderedInstance()
Returns a reduced and ordered instance.