aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
gum::MDDOperatorStrategy< GUM_SCALAR > Class Template Reference

<agrum/FMDP/planning/mddOperatorStrategy.h> More...

#include <mddOperatorStrategy.h>

Inheritance diagram for gum::MDDOperatorStrategy< GUM_SCALAR >:
Collaboration diagram for gum::MDDOperatorStrategy< GUM_SCALAR >:

Public Member Functions

Constructor & destructor.
 MDDOperatorStrategy ()
 Default constructor.
 ~MDDOperatorStrategy ()
 Default destructor.
MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy > * getFunctionInstance ()
MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * getArgMaxFunctionInstance ()
MultiDimFunctionGraph< ActionSet, SetTerminalNodePolicy > * getAggregatorInstance ()

Protected Member Functions

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.
INLINE const DiscreteVariablelastVar_ (const MultiDimFunctionGraph< GUM_SCALAR > *function)
 Returns the last var in the var order for given graph function Called by the evalQaction.
INLINE void deleteFunctionGraph_ (const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del)
INLINE void deleteFunctionGraph_ (const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > *f1, const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > *f2, Idx del)
Graph Function Operations Methods
MultiDimFunctionGraph< GUM_SCALAR > * regress (const MultiDimFunctionGraph< GUM_SCALAR > *Vold, Idx actionId, const FMDP< GUM_SCALAR > *fmdp, const gum::VariableSet &elVarSeq)
 Computes Qaction for given actionid.
virtual MultiDimFunctionGraph< GUM_SCALAR > * maximize (const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=3)
virtual MultiDimFunctionGraph< GUM_SCALAR > * minimize (const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=3)
virtual MultiDimFunctionGraph< GUM_SCALAR > * multiply (const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del=3)
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)
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< 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.

Detailed Description

template<typename GUM_SCALAR>
class gum::MDDOperatorStrategy< GUM_SCALAR >

<agrum/FMDP/planning/mddOperatorStrategy.h>

A class to find optimal policy for a given FMDP.

Perform a SPUDD planning on given in parameter factored markov decision process

Definition at line 71 of file mddOperatorStrategy.h.

Constructor & Destructor Documentation

◆ MDDOperatorStrategy()

template<typename GUM_SCALAR>
INLINE gum::MDDOperatorStrategy< GUM_SCALAR >::MDDOperatorStrategy ( )

Default constructor.

Definition at line 87 of file mddOperatorStrategy_tpl.h.

87 {
89 }
<agrum/FMDP/planning/mddOperatorStrategy.h>
MDDOperatorStrategy()
Default constructor.

References MDDOperatorStrategy().

Referenced by MDDOperatorStrategy(), and ~MDDOperatorStrategy().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~MDDOperatorStrategy()

template<typename GUM_SCALAR>
INLINE gum::MDDOperatorStrategy< GUM_SCALAR >::~MDDOperatorStrategy ( )

Default destructor.

Definition at line 95 of file mddOperatorStrategy_tpl.h.

References MDDOperatorStrategy().

Here is the call graph for this function:

Member Function Documentation

◆ add()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< GUM_SCALAR > * gum::MDDOperatorStrategy< GUM_SCALAR >::add ( const MultiDimFunctionGraph< GUM_SCALAR > * f1,
const MultiDimFunctionGraph< GUM_SCALAR > * f2,
Idx del = 1 )
protectedvirtual

Adds reward to given function( whether a qAction or vFunction).

Warning
given function is deleted, returns the new one
Parameters
reward: R(s) or R(s,a)
function: either V(s) or Q(s,a)
Warning
given function is deleted, returns the new one

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 205 of file mddOperatorStrategy_tpl.h.

207 {
209 this->deleteFunctionGraph_(f1, f2, del);
210 return ret;
211 }
INLINE void deleteFunctionGraph_(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del)
MultiDimFunctionGraph< T > * add2MultiDimFunctionGraphs(const MultiDimFunctionGraph< T > *t1, const MultiDimFunctionGraph< T > *t2)
a specialized function for summing two multiDimArrays

References gum::add2MultiDimFunctionGraphs(), and gum::IOperatorStrategy< GUM_SCALAR >::deleteFunctionGraph_().

Here is the call graph for this function:

◆ argmaximize()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * gum::MDDOperatorStrategy< GUM_SCALAR >::argmaximize ( const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * f1,
const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * f2,
Idx del = 3 )
protectedvirtual
Warning
given vFunction and qAction are deleted, returns the new one

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 183 of file mddOperatorStrategy_tpl.h.

References gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::compute(), and gum::IOperatorStrategy< GUM_SCALAR >::deleteFunctionGraph_().

Here is the call graph for this function:

◆ deleteFunctionGraph_() [1/2]

template<typename GUM_SCALAR>
INLINE void gum::IOperatorStrategy< GUM_SCALAR >::deleteFunctionGraph_ ( const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * f1,
const MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * f2,
Idx del )
inlineprotectedinherited

Definition at line 183 of file IOperatorStrategy.h.

186 {
187 if (del == 1 || del == 3) delete f1;
188 if (del >= 2) delete f2;
189 }
<agrum/FMDP/SDyna/IOperatorStrategy.h>

◆ deleteFunctionGraph_() [2/2]

◆ getAggregatorInstance()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< ActionSet, SetTerminalNodePolicy > * gum::MDDOperatorStrategy< GUM_SCALAR >::getAggregatorInstance ( )
inlinevirtual

◆ getArgMaxFunctionInstance()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< ArgMaxSet< GUM_SCALAR, Idx >, SetTerminalNodePolicy > * gum::MDDOperatorStrategy< GUM_SCALAR >::getArgMaxFunctionInstance ( )
inlinevirtual

◆ getFunctionInstance()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy > * gum::MDDOperatorStrategy< GUM_SCALAR >::getFunctionInstance ( )
inlinevirtual

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 96 of file mddOperatorStrategy.h.

96 {
98 }
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getReducedAndOrderedInstance()
Returns a reduced and ordered instance.

References gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::getReducedAndOrderedInstance().

Here is the call graph for this function:

◆ lastVar_()

template<typename GUM_SCALAR>
INLINE const DiscreteVariable * gum::MDDOperatorStrategy< GUM_SCALAR >::lastVar_ ( const MultiDimFunctionGraph< GUM_SCALAR > * function)
inlineprotected

Returns the last var in the var order for given graph function Called by the evalQaction.

Definition at line 193 of file mddOperatorStrategy.h.

193 {
194 return function->variablesSequence().size() == 0
195 ? nullptr
196 : function->variablesSequence().atPos(function->variablesSequence().size() - 1);
197 }

References gum::MultiDimImplementation< GUM_SCALAR >::variablesSequence().

Referenced by regress().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ maximize()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< GUM_SCALAR > * gum::MDDOperatorStrategy< GUM_SCALAR >::maximize ( const MultiDimFunctionGraph< GUM_SCALAR > * f1,
const MultiDimFunctionGraph< GUM_SCALAR > * f2,
Idx del = 3 )
protectedvirtual
Warning
given vFunction and qAction are deleted, returns the new one

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 147 of file mddOperatorStrategy_tpl.h.

References gum::IOperatorStrategy< GUM_SCALAR >::deleteFunctionGraph_().

Here is the call graph for this function:

◆ minimize()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< GUM_SCALAR > * gum::MDDOperatorStrategy< GUM_SCALAR >::minimize ( const MultiDimFunctionGraph< GUM_SCALAR > * f1,
const MultiDimFunctionGraph< GUM_SCALAR > * f2,
Idx del = 3 )
protectedvirtual
Warning
Minimze the two given functions

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 159 of file mddOperatorStrategy_tpl.h.

References gum::IOperatorStrategy< GUM_SCALAR >::deleteFunctionGraph_().

Here is the call graph for this function:

◆ multiply()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< GUM_SCALAR > * gum::MDDOperatorStrategy< GUM_SCALAR >::multiply ( const MultiDimFunctionGraph< GUM_SCALAR > * f1,
const MultiDimFunctionGraph< GUM_SCALAR > * f2,
Idx del = 3 )
protectedvirtual
Warning
given f1 and f2 are deleted, returns the new one

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 171 of file mddOperatorStrategy_tpl.h.

173 {
175 this->deleteFunctionGraph_(f1, f2, del);
176 return ret;
177 }
MultiDimFunctionGraph< T > * multiply2MultiDimFunctionGraphs(const MultiDimFunctionGraph< T > *t1, const MultiDimFunctionGraph< T > *t2)
a specialized function for multiplying two multiDimArrays

References gum::IOperatorStrategy< GUM_SCALAR >::deleteFunctionGraph_(), and gum::multiply2MultiDimFunctionGraphs().

Here is the call graph for this function:

◆ regress()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< GUM_SCALAR > * gum::MDDOperatorStrategy< GUM_SCALAR >::regress ( const MultiDimFunctionGraph< GUM_SCALAR > * Vold,
Idx actionId,
const FMDP< GUM_SCALAR > * fmdp,
const gum::VariableSet & elVarSeq )
protectedvirtual

Computes Qaction for given actionid.

Performs a multiplication/projection on given qAction.

Parameters
qAction: the computed Q(s,a)
pxip: the transition probabilities for the xip variable
xip: the variable we eliminate on the projection
Warning
given qAction is deleted, return the new one

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 116 of file mddOperatorStrategy_tpl.h.

119 {
122 qAction->copy(*Vold);
123
124 const DiscreteVariable* xip = this->lastVar_(qAction);
125
126 while (this->shouldEleminateVar_(xip, fmdp)) {
128 = RECAST(fmdp->transition(actionId, fmdp->mapMainPrime().first(xip)));
130 pxi,
131 &elVarSeq,
132 xip,
133 (GUM_SCALAR)0);
135 delete qAction;
136 qAction = temp;
137 xip = this->lastVar_(qAction);
138 }
139
140 return qAction;
141 }
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.
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.
#define RECAST(x)
Definition fmdp_tpl.h:57

References gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::compute(), gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::copy(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::first(), gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::getReducedAndOrderedInstance(), lastVar_(), gum::FMDP< GUM_SCALAR >::mapMainPrime(), RECAST, shouldEleminateVar_(), and gum::FMDP< GUM_SCALAR >::transition().

Here is the call graph for this function:

◆ shouldEleminateVar_()

template<typename GUM_SCALAR>
INLINE bool gum::MDDOperatorStrategy< GUM_SCALAR >::shouldEleminateVar_ ( const DiscreteVariable * v,
const FMDP< GUM_SCALAR > * fmdp )
inlineprotected

Indicates if whether or not given var is to be eliminated. Called by the evalQaction.

Definition at line 185 of file mddOperatorStrategy.h.

185 {
186 return v == nullptr ? false : fmdp->mapMainPrime().existsSecond(v);
187 }

References gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::existsSecond(), and gum::FMDP< GUM_SCALAR >::mapMainPrime().

Referenced by regress().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ subtract()

template<typename GUM_SCALAR>
MultiDimFunctionGraph< GUM_SCALAR > * gum::MDDOperatorStrategy< GUM_SCALAR >::subtract ( const MultiDimFunctionGraph< GUM_SCALAR > * f1,
const MultiDimFunctionGraph< GUM_SCALAR > * f2,
Idx del = 0 )
protectedvirtual

Subtract current VFunction from old VFunction to see if threshold is reached or not.

Warning
this time, nothing is deleted
Parameters
oldand new VFuntion
Warning
this time, nothing is deleted

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 221 of file mddOperatorStrategy_tpl.h.

223 {
225 this->deleteFunctionGraph_(f1, f2, del);
226 return ret;
227 }
MultiDimFunctionGraph< T > * subtract2MultiDimFunctionGraphs(const MultiDimFunctionGraph< T > *t1, const MultiDimFunctionGraph< T > *t2)
a specialized function for subtracting two multiDimArrays

References gum::IOperatorStrategy< GUM_SCALAR >::deleteFunctionGraph_(), and gum::subtract2MultiDimFunctionGraphs().

Here is the call graph for this function:

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