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

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

#include <mddOperatorStrategy.h>

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

Public Member Functions

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

Protected Member Functions

bool shouldEleminateVar_ (const DiscreteVariable *v, const FMDP< GUM_ELEMENT > *fmdp)
 Indicates if whether or not given var is to be eliminated. Called by the evalQaction.
const DiscreteVariablelastVar_ (const MultiDimFunctionGraph< GUM_ELEMENT > *function)
 Returns the last var in the var order for given graph function Called by the evalQaction.
void deleteFunctionGraph_ (const MultiDimFunctionGraph< GUM_ELEMENT > *f1, const MultiDimFunctionGraph< GUM_ELEMENT > *f2, Idx del)
void deleteFunctionGraph_ (const MultiDimFunctionGraph< ArgMaxSet< GUM_ELEMENT, Idx >, SetTerminalNodePolicy > *f1, const MultiDimFunctionGraph< ArgMaxSet< GUM_ELEMENT, Idx >, SetTerminalNodePolicy > *f2, Idx del)
Graph Function Operations Methods
MultiDimFunctionGraph< GUM_ELEMENT > * regress (const MultiDimFunctionGraph< GUM_ELEMENT > *Vold, Idx actionId, const FMDP< GUM_ELEMENT > *fmdp, const gum::VariableSet &elVarSeq) override
 Computes Qaction for given actionid.
MultiDimFunctionGraph< GUM_ELEMENT > * maximize (const MultiDimFunctionGraph< GUM_ELEMENT > *f1, const MultiDimFunctionGraph< GUM_ELEMENT > *f2, Idx del=3) override
MultiDimFunctionGraph< GUM_ELEMENT > * minimize (const MultiDimFunctionGraph< GUM_ELEMENT > *f1, const MultiDimFunctionGraph< GUM_ELEMENT > *f2, Idx del=3) override
MultiDimFunctionGraph< GUM_ELEMENT > * multiply (const MultiDimFunctionGraph< GUM_ELEMENT > *f1, const MultiDimFunctionGraph< GUM_ELEMENT > *f2, Idx del=3) override
MultiDimFunctionGraph< ArgMaxSet< GUM_ELEMENT, Idx >, SetTerminalNodePolicy > * argmaximize (const MultiDimFunctionGraph< ArgMaxSet< GUM_ELEMENT, Idx >, SetTerminalNodePolicy > *f1, const MultiDimFunctionGraph< ArgMaxSet< GUM_ELEMENT, Idx >, SetTerminalNodePolicy > *f2, Idx del=3) override
MultiDimFunctionGraph< GUM_ELEMENT > * add (const MultiDimFunctionGraph< GUM_ELEMENT > *f1, const MultiDimFunctionGraph< GUM_ELEMENT > *f2, Idx del=1) override
 Adds reward to given function( whether a qAction or vFunction).
MultiDimFunctionGraph< GUM_ELEMENT > * subtract (const MultiDimFunctionGraph< GUM_ELEMENT > *f1, const MultiDimFunctionGraph< GUM_ELEMENT > *f2, Idx del=0) override
 Subtract current VFunction from old VFunction to see if threshold is reached or not.

Detailed Description

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

<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_ELEMENT>
gum::MDDOperatorStrategy< GUM_ELEMENT >::MDDOperatorStrategy ( )

Default constructor.

Definition at line 88 of file mddOperatorStrategy_tpl.h.

88 {
90 }
<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_ELEMENT>
gum::MDDOperatorStrategy< GUM_ELEMENT >::~MDDOperatorStrategy ( )
override

Default destructor.

Definition at line 96 of file mddOperatorStrategy_tpl.h.

References MDDOperatorStrategy().

Here is the call graph for this function:

Member Function Documentation

◆ add()

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

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_ELEMENT >.

Definition at line 206 of file mddOperatorStrategy_tpl.h.

208 {
210 this->deleteFunctionGraph_(f1, f2, del);
211 return ret;
212 }
void deleteFunctionGraph_(const MultiDimFunctionGraph< GUM_ELEMENT > *f1, const MultiDimFunctionGraph< GUM_ELEMENT > *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_ELEMENT >::deleteFunctionGraph_().

Here is the call graph for this function:

◆ argmaximize()

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

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 184 of file mddOperatorStrategy_tpl.h.

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

Here is the call graph for this function:

◆ deleteFunctionGraph_() [1/2]

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

Definition at line 58 of file IOperatorStrategy_tpl.h.

61 {
62 if (del == 1 || del == 3) delete f1;
63 if (del >= 2) delete f2;
64 }
<agrum/FMDP/SDyna/IOperatorStrategy.h>

◆ deleteFunctionGraph_() [2/2]

◆ getAggregatorInstance()

template<typename GUM_ELEMENT>
MultiDimFunctionGraph< ActionSet, SetTerminalNodePolicy > * gum::MDDOperatorStrategy< GUM_ELEMENT >::getAggregatorInstance ( )
overridevirtual

◆ getArgMaxFunctionInstance()

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

◆ getFunctionInstance()

template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT, ExactTerminalNodePolicy > * gum::MDDOperatorStrategy< GUM_ELEMENT >::getFunctionInstance ( )
overridevirtual

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 246 of file mddOperatorStrategy_tpl.h.

246 {
248 }
static MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy > * getReducedAndOrderedInstance()
Returns a reduced and ordered instance.

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

Here is the call graph for this function:

◆ lastVar_()

template<typename GUM_ELEMENT>
const DiscreteVariable * gum::MDDOperatorStrategy< GUM_ELEMENT >::lastVar_ ( const MultiDimFunctionGraph< GUM_ELEMENT > * function)
protected

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

Definition at line 237 of file mddOperatorStrategy_tpl.h.

238 {
239 return function->variablesSequence().size() == 0
240 ? nullptr
241 : function->variablesSequence().atPos(function->variablesSequence().size() - 1);
242 }

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

Referenced by regress().

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

◆ maximize()

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

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 148 of file mddOperatorStrategy_tpl.h.

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

Here is the call graph for this function:

◆ minimize()

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

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 160 of file mddOperatorStrategy_tpl.h.

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

Here is the call graph for this function:

◆ multiply()

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

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 172 of file mddOperatorStrategy_tpl.h.

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

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

Here is the call graph for this function:

◆ regress()

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

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_ELEMENT >.

Definition at line 117 of file mddOperatorStrategy_tpl.h.

120 {
123 qAction->copy(*Vold);
124
125 const DiscreteVariable* xip = this->lastVar_(qAction);
126
127 while (this->shouldEleminateVar_(xip, fmdp)) {
129 = RECAST(fmdp->transition(actionId, fmdp->mapMainPrime().first(xip)));
131 pxi,
132 &elVarSeq,
133 xip,
134 (GUM_ELEMENT)0);
136 delete qAction;
137 qAction = temp;
138 xip = this->lastVar_(qAction);
139 }
140
141 return qAction;
142 }
const DiscreteVariable * lastVar_(const MultiDimFunctionGraph< GUM_ELEMENT > *function)
Returns the last var in the var order for given graph function Called by the evalQaction.
bool shouldEleminateVar_(const DiscreteVariable *v, const FMDP< GUM_ELEMENT > *fmdp)
Indicates if whether or not given var is to be eliminated. Called by the evalQaction.
#define RECAST(x)
For shorter line and hence more comprehensive code only.

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

Here is the call graph for this function:

◆ shouldEleminateVar_()

template<typename GUM_ELEMENT>
bool gum::MDDOperatorStrategy< GUM_ELEMENT >::shouldEleminateVar_ ( const DiscreteVariable * v,
const FMDP< GUM_ELEMENT > * fmdp )
protected

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

Definition at line 231 of file mddOperatorStrategy_tpl.h.

232 {
233 return v == nullptr ? false : fmdp->mapMainPrime().existsSecond(v);
234 }

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

Referenced by regress().

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

◆ subtract()

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

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_ELEMENT >.

Definition at line 222 of file mddOperatorStrategy_tpl.h.

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

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

Here is the call graph for this function:

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