aGrUM  0.14.2
IOperatorStrategy.h
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005 by Christophe GONZALES and Pierre-Henri WUILLEMIN *
3  * {prenom.nom}_at_lip6.fr *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19  ***************************************************************************/
28 // =========================================================================
29 #ifndef GUM_SDYNA_OPERATOR_STRATEGY_H
30 #define GUM_SDYNA_OPERATOR_STRATEGY_H
31 // =========================================================================
32 #include <agrum/core/types.h>
33 // =========================================================================
35 // =========================================================================
37 // =========================================================================
38 
39 namespace gum {
40 
48  template < typename GUM_SCALAR >
50  // ###################################################################
52  // ###################################################################
54  public:
55  // ==========================================================================
57  // ==========================================================================
58  virtual ~IOperatorStrategy() {}
59 
61 
62 
63  // ###################################################################
65  // ###################################################################
67 
69  getFunctionInstance() = 0;
75 
77 
78 
79  // ###################################################################
81  // ###################################################################
83 
84  public:
85  // ==========================================================================
89  // ==========================================================================
92  Idx actionId,
93  const FMDP< GUM_SCALAR >* fmdp,
94  const Set< const DiscreteVariable* >& elVarSeq) = 0;
95 
96  // ==========================================================================
98  // ==========================================================================
102  Idx del = 3) = 0;
103 
104  // ==========================================================================
106  // ==========================================================================
110  Idx del = 3) = 0;
111 
112  // ==========================================================================
114  // ==========================================================================
118  Idx del = 3) = 0;
119 
120  // ==========================================================================
122  // ==========================================================================
126  SetTerminalNodePolicy >* f1,
128  SetTerminalNodePolicy >* f2,
129  Idx del = 3) = 0;
130 
131  // ==========================================================================
133  // ==========================================================================
137  Idx del = 1) = 0;
138 
139  // ==========================================================================
141  // ==========================================================================
145  Idx del = 0) = 0;
146 
147 
149 
150  protected:
153  Idx del) {
154  if (del == 1 || del == 3) delete f1;
155  if (del >= 2) delete f2;
156  }
157 
158  INLINE void _deleteFunctionGraph(
160  SetTerminalNodePolicy >* f1,
162  SetTerminalNodePolicy >* f2,
163  Idx del) {
164  if (del == 1 || del == 3) delete f1;
165  if (del >= 2) delete f2;
166  }
167  };
168 } // namespace gum
169 #endif // GUM_SDYNA_OPERATOR_STRATEGY_H
Provides basic types used in aGrUM.
Base class for discrete random variable.
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:54
virtual MultiDimFunctionGraph< GUM_SCALAR > * minimize(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=3)=0
gum is the global namespace for all aGrUM entities
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:55
Headers of the MDDOperatorStrategy planer class.
Representation of a setA Set is a structure that contains arbitrary elements.
Definition: set.h:162
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:50
virtual MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy > * getFunctionInstance()=0
virtual MultiDimFunctionGraph< ActionSet, SetTerminalNodePolicy > * getAggregatorInstance()=0