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

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

#include <treeOperatorStrategy.h>

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

Public Member Functions

Constructor & destructor.
 TreeOperatorStrategy ()
 Default constructor.
 ~TreeOperatorStrategy () 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

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
 ArgMaximizes between f2 and f1.
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 f2 or f1).
MultiDimFunctionGraph< GUM_ELEMENT > * subtract (const MultiDimFunctionGraph< GUM_ELEMENT > *f1, const MultiDimFunctionGraph< GUM_ELEMENT > *f2, Idx del=0) override
 Subtract current f1 from old f1 to see if threshold is reached or not.

Detailed Description

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

<agrum/FMDP/planning/treeOperatorStrategy.h>

A class to find optimal policy for a given FMDP.

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

Definition at line 70 of file treeOperatorStrategy.h.

Constructor & Destructor Documentation

◆ TreeOperatorStrategy()

template<typename GUM_ELEMENT>
gum::TreeOperatorStrategy< GUM_ELEMENT >::TreeOperatorStrategy ( )

Default constructor.

Definition at line 86 of file treeOperatorStrategy_tpl.h.

86 {
88 }
<agrum/FMDP/planning/treeOperatorStrategy.h>
TreeOperatorStrategy()
Default constructor.

References TreeOperatorStrategy().

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

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

◆ ~TreeOperatorStrategy()

template<typename GUM_ELEMENT>
gum::TreeOperatorStrategy< GUM_ELEMENT >::~TreeOperatorStrategy ( )
override

Default destructor.

Definition at line 94 of file treeOperatorStrategy_tpl.h.

References TreeOperatorStrategy().

Here is the call graph for this function:

Member Function Documentation

◆ add()

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

Adds reward to given function( whether a f2 or f1).

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 treeOperatorStrategy_tpl.h.

208 {
211 this->deleteFunctionGraph_(f1, f2, del);
212 return ret;
213 }
void deleteFunctionGraph_(const MultiDimFunctionGraph< GUM_ELEMENT > *f1, const MultiDimFunctionGraph< GUM_ELEMENT > *f2, Idx del)

References gum::TreeOperator< GUM_ELEMENT, COMBINEOPERATOR, TerminalNodePolicy >::compute(), 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::TreeOperatorStrategy< GUM_ELEMENT >::argmaximize ( const MultiDimFunctionGraph< ArgMaxSet< GUM_ELEMENT, Idx >, SetTerminalNodePolicy > * f1,
const MultiDimFunctionGraph< ArgMaxSet< GUM_ELEMENT, Idx >, SetTerminalNodePolicy > * f2,
Idx del = 3 )
overrideprotectedvirtual

ArgMaximizes between f2 and f1.

Warning
given vFunction and qAction are deleted, returns the new one
given f1 and f2 are deleted, returns the new one

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 186 of file treeOperatorStrategy_tpl.h.

References gum::TreeOperator< GUM_ELEMENT, COMBINEOPERATOR, 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::TreeOperatorStrategy< GUM_ELEMENT >::getAggregatorInstance ( )
overridevirtual

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 247 of file treeOperatorStrategy_tpl.h.

247 {
249 }
static MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.

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

Here is the call graph for this function:

◆ getArgMaxFunctionInstance()

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

◆ getFunctionInstance()

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

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 234 of file treeOperatorStrategy_tpl.h.

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

Here is the call graph for this function:

◆ maximize()

template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * gum::TreeOperatorStrategy< 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
given f1 and f2 are deleted, returns the new one

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 144 of file treeOperatorStrategy_tpl.h.

References gum::TreeOperator< GUM_ELEMENT, COMBINEOPERATOR, TerminalNodePolicy >::compute(), and gum::IOperatorStrategy< GUM_ELEMENT >::deleteFunctionGraph_().

Here is the call graph for this function:

◆ minimize()

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

Implements gum::IOperatorStrategy< GUM_ELEMENT >.

Definition at line 158 of file treeOperatorStrategy_tpl.h.

References gum::TreeOperator< GUM_ELEMENT, COMBINEOPERATOR, TerminalNodePolicy >::compute(), and gum::IOperatorStrategy< GUM_ELEMENT >::deleteFunctionGraph_().

Here is the call graph for this function:

◆ multiply()

template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * gum::TreeOperatorStrategy< 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 171 of file treeOperatorStrategy_tpl.h.

References gum::TreeOperator< GUM_ELEMENT, COMBINEOPERATOR, TerminalNodePolicy >::compute(), and gum::IOperatorStrategy< GUM_ELEMENT >::deleteFunctionGraph_().

Here is the call graph for this function:

◆ regress()

template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * gum::TreeOperatorStrategy< 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.

Returns
qAction : the computed Q(s,a)
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 116 of file treeOperatorStrategy_tpl.h.

119 {
120 // ******************************************************************************
121 // Initialisation :
122 // Creating a copy of last Vfunction to deduce from the new Qaction
123 // And finding the first var to eleminate (the one at the end)
126 = Vold->variablesSequence().beginSafe();
127 varIter != Vold->variablesSequence().endSafe();
128 ++varIter) {
129 pxi.insert(*varIter,
130 RECAST(fmdp->transition(actionId, fmdp->mapMainPrime().first(*varIter))));
131 }
132
134 Vold,
135 pxi); //, Vold->variablesSequence(), (GUM_ELEMENT) 0.0 );
136 return tr.compute();
137 }
#define RECAST(x)
For shorter line and hence more comprehensive code only.

References gum::TreeRegress< GUM_ELEMENT, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::compute(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::first(), gum::BijectionImplementation< T1, T2, Gen >::insert(), gum::FMDP< GUM_ELEMENT >::mapMainPrime(), RECAST, gum::FMDP< GUM_ELEMENT >::transition(), and gum::MultiDimImplementation< GUM_ELEMENT >::variablesSequence().

Here is the call graph for this function:

◆ subtract()

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

Subtract current f1 from old f1 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 223 of file treeOperatorStrategy_tpl.h.

References gum::TreeOperator< GUM_ELEMENT, COMBINEOPERATOR, TerminalNodePolicy >::compute(), and gum::IOperatorStrategy< GUM_ELEMENT >::deleteFunctionGraph_().

Here is the call graph for this function:

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