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

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

#include <treeOperatorStrategy.h>

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

Public Member Functions

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

Protected Member Functions

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

Detailed Description

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

<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_SCALAR>
INLINE gum::TreeOperatorStrategy< GUM_SCALAR >::TreeOperatorStrategy ( )

Default constructor.

Definition at line 85 of file treeOperatorStrategy_tpl.h.

85 {
87 }
<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_SCALAR>
INLINE gum::TreeOperatorStrategy< GUM_SCALAR >::~TreeOperatorStrategy ( )

Default destructor.

Definition at line 93 of file treeOperatorStrategy_tpl.h.

References TreeOperatorStrategy().

Here is the call graph for this function:

Member Function Documentation

◆ add()

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

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

Definition at line 205 of file treeOperatorStrategy_tpl.h.

207 {
210 this->deleteFunctionGraph_(f1, f2, del);
211 return ret;
212 }
INLINE void deleteFunctionGraph_(const MultiDimFunctionGraph< GUM_SCALAR > *f1, const MultiDimFunctionGraph< GUM_SCALAR > *f2, Idx del)

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

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

Definition at line 185 of file treeOperatorStrategy_tpl.h.

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

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 106 of file treeOperatorStrategy.h.

106 {
108 }
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.

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

Here is the call graph for this function:

◆ getArgMaxFunctionInstance()

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

◆ getFunctionInstance()

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

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 96 of file treeOperatorStrategy.h.

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

Here is the call graph for this function:

◆ maximize()

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

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 143 of file treeOperatorStrategy_tpl.h.

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

Here is the call graph for this function:

◆ minimize()

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

Implements gum::IOperatorStrategy< GUM_SCALAR >.

Definition at line 157 of file treeOperatorStrategy_tpl.h.

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

Here is the call graph for this function:

◆ multiply()

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

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

Here is the call graph for this function:

◆ regress()

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

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

Definition at line 115 of file treeOperatorStrategy_tpl.h.

118 {
119 // ******************************************************************************
120 // Initialisation :
121 // Creating a copy of last Vfunction to deduce from the new Qaction
122 // And finding the first var to eleminate (the one at the end)
125 = Vold->variablesSequence().beginSafe();
126 varIter != Vold->variablesSequence().endSafe();
127 ++varIter) {
128 pxi.insert(*varIter,
129 RECAST(fmdp->transition(actionId, fmdp->mapMainPrime().first(*varIter))));
130 }
131
133 Vold,
134 pxi); //, Vold->variablesSequence(), (GUM_SCALAR) 0.0 );
135 return tr.compute();
136 }
#define RECAST(x)
Definition fmdp_tpl.h:57

References gum::TreeRegress< GUM_SCALAR, 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_SCALAR >::mapMainPrime(), RECAST, gum::FMDP< GUM_SCALAR >::transition(), and gum::MultiDimImplementation< GUM_SCALAR >::variablesSequence().

Here is the call graph for this function:

◆ subtract()

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

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

Definition at line 222 of file treeOperatorStrategy_tpl.h.

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

Here is the call graph for this function:

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