aGrUM  0.16.0
IOperatorStrategy.h
Go to the documentation of this file.
1 
31 // =========================================================================
32 #ifndef GUM_SDYNA_OPERATOR_STRATEGY_H
33 #define GUM_SDYNA_OPERATOR_STRATEGY_H
34 // =========================================================================
35 #include <agrum/core/types.h>
36 // =========================================================================
38 // =========================================================================
40 // =========================================================================
41 
42 namespace gum {
43 
51  template < typename GUM_SCALAR >
53  // ###################################################################
55  // ###################################################################
57  public:
58  // ==========================================================================
60  // ==========================================================================
61  virtual ~IOperatorStrategy() {}
62 
64 
65 
66  // ###################################################################
68  // ###################################################################
70 
72  getFunctionInstance() = 0;
78 
80 
81 
82  // ###################################################################
84  // ###################################################################
86 
87  public:
88  // ==========================================================================
92  // ==========================================================================
95  Idx actionId,
96  const FMDP< GUM_SCALAR >* fmdp,
97  const Set< const DiscreteVariable* >& elVarSeq) = 0;
98 
99  // ==========================================================================
101  // ==========================================================================
105  Idx del = 3) = 0;
106 
107  // ==========================================================================
109  // ==========================================================================
113  Idx del = 3) = 0;
114 
115  // ==========================================================================
117  // ==========================================================================
121  Idx del = 3) = 0;
122 
123  // ==========================================================================
125  // ==========================================================================
129  SetTerminalNodePolicy >* f1,
131  SetTerminalNodePolicy >* f2,
132  Idx del = 3) = 0;
133 
134  // ==========================================================================
136  // ==========================================================================
140  Idx del = 1) = 0;
141 
142  // ==========================================================================
144  // ==========================================================================
148  Idx del = 0) = 0;
149 
150 
152 
153  protected:
156  Idx del) {
157  if (del == 1 || del == 3) delete f1;
158  if (del >= 2) delete f2;
159  }
160 
161  INLINE void _deleteFunctionGraph(
163  SetTerminalNodePolicy >* f1,
165  SetTerminalNodePolicy >* f2,
166  Idx del) {
167  if (del == 1 || del == 3) delete f1;
168  if (del >= 2) delete f2;
169  }
170  };
171 } // namespace gum
172 #endif // GUM_SDYNA_OPERATOR_STRATEGY_H
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * getArgMaxFunctionInstance()=0
<agrum/FMDP/SDyna/IOperatorStrategy.h>
virtual MultiDimFunctionGraph< GUM_SCALAR > * maximize(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=3)=0
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)=0
This class is used to implement factored decision process.
Definition: fmdp.h:57
virtual MultiDimFunctionGraph< GUM_SCALAR > * minimize(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=3)=0
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
virtual MultiDimFunctionGraph< GUM_SCALAR > * add(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=1)=0
Class to handle efficiently argMaxSet.
Definition: argMaxSet.h:57
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
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)=0
virtual MultiDimFunctionGraph< GUM_SCALAR > * regress(const MultiDimFunctionGraph< GUM_SCALAR > *Vold, Idx actionId, const FMDP< GUM_SCALAR > *fmdp, const Set< const DiscreteVariable * > &elVarSeq)=0
Performs a multiplication/projection on given qAction.
virtual MultiDimFunctionGraph< GUM_SCALAR > * subtract(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=0)=0
Implementation of a Terminal Node Policy that maps nodeid to a set of value.
INLINE void _deleteFunctionGraph(const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > *f1, const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > *f2, Idx del)
virtual ~IOperatorStrategy()
Destructor (virtual and empty since it&#39;s an interface)
INLINE void _deleteFunctionGraph(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del)
Size Idx
Type for indexes.
Definition: types.h:53
virtual MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy > * getFunctionInstance()=0
virtual MultiDimFunctionGraph< ActionSet, SetTerminalNodePolicy > * getAggregatorInstance()=0