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

This class is used to implement factored decision process. More...

#include <fmdp.h>

+ Collaboration diagram for gum::FMDP< GUM_SCALAR >:

Public Member Functions

Constructors, Destructors.
 FMDP (bool onDestructionDeleteVar=false)
 Default constructor. More...
 
 ~FMDP ()
 Default destructor. More...
 
Variable Handling Methods.
void addVariable (const DiscreteVariable *var)
 Adds a variable to FMDP description. More...
 
SequenceIteratorSafe< const DiscreteVariable *> beginVariables () const
 Returns an iterator reference to he beginning of the list of variables. More...
 
SequenceIteratorSafe< const DiscreteVariable *> endVariables () const
 Returns an iterator reference to the end of the list of variables. More...
 
const DiscreteVariablemain2prime (const DiscreteVariable *mainVar) const
 Returns the primed variable associate to the given main variable. More...
 
INLINE const Bijection< const DiscreteVariable *, const DiscreteVariable *> & mapMainPrime () const
 Returns the map binding main variables and prime variables. More...
 
Action Handling Methods.
void addAction (Idx actionId, const std::string &action)
 Adds an action to FMDP description. More...
 
SequenceIteratorSafe< IdxbeginActions () const
 Returns an iterator reference to he beginning of the list of actions. More...
 
SequenceIteratorSafe< IdxendActions () const
 Returns an iterator reference to the end of the list of actions. More...
 
Transition methods.
void addTransitionForAction (Idx actionId, const DiscreteVariable *var, const MultiDimImplementation< GUM_SCALAR > *transition)
 Adds a variable transition table to specified action. More...
 
void addTransition (const DiscreteVariable *var, const MultiDimImplementation< GUM_SCALAR > *transition)
 Adds a default variable transition. More...
 
const MultiDimImplementation< GUM_SCALAR > * transition (Idx actionId, const DiscreteVariable *v) const
 Returns transition associated to given in parameter variable and the given action. More...
 
Cost methods.
void addCostForAction (Idx actionId, const MultiDimImplementation< GUM_SCALAR > *cost)
 Adds a cost table to specified action. More...
 
void addCost (const MultiDimImplementation< GUM_SCALAR > *cost)
 Adds a default variable cost. More...
 
const MultiDimImplementation< GUM_SCALAR > * cost (Idx actionId=0) const
 Returns the reward table of mdp. More...
 
Reward methods.
void addRewardForAction (Idx actionId, const MultiDimImplementation< GUM_SCALAR > *reward)
 Adds a default variable reward. More...
 
void addReward (const MultiDimImplementation< GUM_SCALAR > *reward)
 Adds a default variable reward. More...
 
const MultiDimImplementation< GUM_SCALAR > * reward (Idx actionId=0) const
 Returns the reward table of mdp. More...
 
FMPD miscelleanous methods.
const std::string & actionName (Idx actionId) const
 Returns name of action given in parameter. More...
 
Idx actionId (const std::string &) const
 Returns action id. More...
 
std::string toString () const
 Displays the FMDP in a Dot format. More...
 
Size size () const
 Returns the map binding main variables and prime variables. More...
 

Detailed Description

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

This class is used to implement factored decision process.

This class supports a mechanism which allows user to give, for each variable ivolved in the process, a default transition probability table and to describe for specific actions a different table.

Definition at line 57 of file fmdp.h.

Member Typedef Documentation

◆ VarTransitionTable

template<typename GUM_SCALAR>
template<typename GUM_SCALAR_O >
using gum::FMDP< GUM_SCALAR >::VarTransitionTable = HashTable< const DiscreteVariable*, const MultiDimImplementation< GUM_SCALAR_O >* >
private

Definition at line 60 of file fmdp.h.

Constructor & Destructor Documentation

◆ FMDP()

template<typename GUM_SCALAR >
INLINE gum::FMDP< GUM_SCALAR >::FMDP ( bool  onDestructionDeleteVar = false)

Default constructor.

Definition at line 53 of file fmdp_tpl.h.

53  {
54  GUM_CONSTRUCTOR(FMDP);
55  _onDestructionDeleteVars_ = onDestructionDeleteVar;
56 
57  // Default Action initialisation
58  _actionMap_.insert(0, new std::string("DEFAULT"));
59  _actionTransitionTable_.insert(0, new VarTransitionTable< GUM_SCALAR >());
60  _actionCostTable_.insert(0, nullptr);
61  _actionRewardTable_.insert(0, nullptr);
62  }
void insert(const T1 &first, const T2 &second)
Inserts a new association in the gum::Bijection.
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionCostTable_
Table which give for each action cost table.
Definition: fmdp.h:276
FMDP(bool onDestructionDeleteVar=false)
Default constructor.
Definition: fmdp_tpl.h:53
bool _onDestructionDeleteVars_
Boolean indicates whether or not main variables should be deleted on destruction of this instance Usu...
Definition: fmdp.h:284
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionRewardTable_
Table which give for each action reward table.
Definition: fmdp.h:279
HashTable< Idx, VarTransitionTable< GUM_SCALAR > *> _actionTransitionTable_
Table which give for each action a table containing variables transition cpt.
Definition: fmdp.h:273
Bijection< Idx, const std::string *> _actionMap_
Bijection mapping an action name to its id.
Definition: fmdp.h:269

◆ ~FMDP()

template<typename GUM_SCALAR >
gum::FMDP< GUM_SCALAR >::~FMDP ( )

Default destructor.

Definition at line 68 of file fmdp_tpl.h.

68  {
69  // Action Transition Graph deletion
70  for (auto iterA = _actionTransitionTable_.beginSafe();
71  iterA != _actionTransitionTable_.endSafe();
72  ++iterA) {
73  if (iterA.val()) {
74  for (auto iterH = (iterA.val())->beginSafe(); iterH != (iterA.val())->endSafe(); ++iterH)
75  if (iterH.val()) delete iterH.val();
76  delete iterA.val();
77  }
78  }
79 
80  // Action cost graph deletion
81  for (auto iterA = _actionCostTable_.beginSafe(); iterA != _actionCostTable_.endSafe(); ++iterA)
82  if (iterA.val()) delete iterA.val();
83 
84  // Action reward graph deletion
85  for (auto iterA = _actionRewardTable_.beginSafe(); iterA != _actionRewardTable_.endSafe();
86  ++iterA)
87  if (iterA.val()) delete iterA.val();
88 
89  // Action Name deletion
90  for (auto iterId = _actionMap_.beginSafe(); iterId != _actionMap_.endSafe(); ++iterId)
91  delete iterId.second();
92 
93  // Primed Variables deletion
94  for (auto varIter = _main2primed_.beginSafe(); varIter != _main2primed_.endSafe(); ++varIter) {
95  delete varIter.second();
96  if (_onDestructionDeleteVars_) delete varIter.first();
97  }
98 
99  GUM_DESTRUCTOR(FMDP);
100  }
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionCostTable_
Table which give for each action cost table.
Definition: fmdp.h:276
FMDP(bool onDestructionDeleteVar=false)
Default constructor.
Definition: fmdp_tpl.h:53
iterator_safe beginSafe() const
Returns the safe iterator at the beginning of the gum::Bijection.
bool _onDestructionDeleteVars_
Boolean indicates whether or not main variables should be deleted on destruction of this instance Usu...
Definition: fmdp.h:284
Bijection< const DiscreteVariable *, const DiscreteVariable *> _main2primed_
Mapping from a main variable to its associated primed version.
Definition: fmdp.h:266
const iterator_safe & endSafe() const noexcept
Returns the safe iterator at the end of the gum::Bijection.
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionRewardTable_
Table which give for each action reward table.
Definition: fmdp.h:279
HashTable< Idx, VarTransitionTable< GUM_SCALAR > *> _actionTransitionTable_
Table which give for each action a table containing variables transition cpt.
Definition: fmdp.h:273
Bijection< Idx, const std::string *> _actionMap_
Bijection mapping an action name to its id.
Definition: fmdp.h:269

Member Function Documentation

◆ actionId()

template<typename GUM_SCALAR >
INLINE Idx gum::FMDP< GUM_SCALAR >::actionId ( const std::string &  action) const

Returns action id.

Definition at line 325 of file fmdp_tpl.h.

325  {
326  for (BijectionIterator< Idx, const std::string* > actIter = _actionMap_.begin();
327  actIter != _actionMap_.end();
328  ++actIter)
329  if (*(actIter.second()) == action) { return actIter.first(); }
330 
331  GUM_ERROR(NotFound, " Action " << action << " has not been declared before.")
332  }
iterator begin() const
Returns the unsafe iterator at the beginning of the gum::Bijection.
const iterator & end() const noexcept
Returns the unsafe iterator at the end of the gum::Bijection.
Bijection< Idx, const std::string *> _actionMap_
Bijection mapping an action name to its id.
Definition: fmdp.h:269
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51

◆ actionName()

template<typename GUM_SCALAR >
INLINE const std::string & gum::FMDP< GUM_SCALAR >::actionName ( Idx  actionId) const

Returns name of action given in parameter.

Definition at line 314 of file fmdp_tpl.h.

314  {
315  if (!_actionMap_.existsFirst(actionId))
316  GUM_ERROR(NotFound, "No action with " << actionId << " as identifiant.")
317 
318  return *(_actionMap_.second(actionId));
319  }
const T2 & second(const T1 &first) const
Returns the second value of a pair given its first value.
bool existsFirst(const T1 &first) const
Returns true if first is the first element in a pair in the gum::Bijection.
Bijection< Idx, const std::string *> _actionMap_
Bijection mapping an action name to its id.
Definition: fmdp.h:269
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51

◆ addAction()

template<typename GUM_SCALAR >
INLINE void gum::FMDP< GUM_SCALAR >::addAction ( Idx  actionId,
const std::string &  action 
)

Adds an action to FMDP description.

Exceptions
DuplicateElementif an action with same name already exists

Definition at line 144 of file fmdp_tpl.h.

Referenced by gum::FMDP< double >::mapMainPrime().

144  {
145  if (actionId == 0) GUM_ERROR(DuplicateElement, " Action Id 0 is reserved.")
146 
147  for (BijectionIteratorSafe< Idx, const std::string* > actIter = _actionMap_.beginSafe();
148  actIter != _actionMap_.endSafe();
149  ++actIter)
150  if (*(actIter.second()) == action)
151  GUM_ERROR(DuplicateElement,
152  " Action " << action << " has already been inserted in FMDP with this name.");
153 
154  if (_actionMap_.existsFirst(actionId))
155  GUM_ERROR(DuplicateElement,
156  " An action with same id (" << actionId << ") has already been inserted.");
157 
158  _actionMap_.insert(actionId, new std::string(action));
159 
160  _actionTransitionTable_.insert(actionId, new VarTransitionTable< GUM_SCALAR >());
161  _actionCostTable_.insert(actionId, nullptr);
162  _actionRewardTable_.insert(actionId, nullptr);
163 
164  _actionSeq_.insert(actionId);
165  }
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionCostTable_
Table which give for each action cost table.
Definition: fmdp.h:276
STL namespace.
Sequence< Idx > _actionSeq_
Definition: fmdp.h:263
FMDP(bool onDestructionDeleteVar=false)
Default constructor.
Definition: fmdp_tpl.h:53
HashTable< const DiscreteVariable *, const MultiDimImplementation< GUM_SCALAR_O > *> VarTransitionTable
Definition: fmdp.h:60
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionRewardTable_
Table which give for each action reward table.
Definition: fmdp.h:279
HashTable< Idx, VarTransitionTable< GUM_SCALAR > *> _actionTransitionTable_
Table which give for each action a table containing variables transition cpt.
Definition: fmdp.h:273
Bijection< Idx, const std::string *> _actionMap_
Bijection mapping an action name to its id.
Definition: fmdp.h:269
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51
+ Here is the caller graph for this function:

◆ addCost()

template<typename GUM_SCALAR>
void gum::FMDP< GUM_SCALAR >::addCost ( const MultiDimImplementation< GUM_SCALAR > *  cost)
inline

Adds a default variable cost.

Exceptions
DuplicateElementif a default cost exists already

Definition at line 194 of file fmdp.h.

194  {
195  this->addCostForAction(0, cost);
196  }
void addCostForAction(Idx actionId, const MultiDimImplementation< GUM_SCALAR > *cost)
Adds a cost table to specified action.
Definition: fmdp_tpl.h:234
const MultiDimImplementation< GUM_SCALAR > * cost(Idx actionId=0) const
Returns the reward table of mdp.
Definition: fmdp_tpl.h:251

◆ addCostForAction()

template<typename GUM_SCALAR>
INLINE void gum::FMDP< GUM_SCALAR >::addCostForAction ( Idx  actionId,
const MultiDimImplementation< GUM_SCALAR > *  cost 
)

Adds a cost table to specified action.

Exceptions
NotFoundif action does not exists

Definition at line 234 of file fmdp_tpl.h.

235  {
236  if (!_actionCostTable_.exists(actionId))
237  GUM_ERROR(NotFound, " Action " << actionName(actionId) << " has not been declared before.");
238 
239  if (_actionCostTable_[actionId] != nullptr)
240  GUM_ERROR(DuplicateElement, " Action " << actionName(actionId) << " already has a cost table")
241 
242  _actionCostTable_[actionId] = cost;
243  }
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionCostTable_
Table which give for each action cost table.
Definition: fmdp.h:276
const std::string & actionName(Idx actionId) const
Returns name of action given in parameter.
Definition: fmdp_tpl.h:314
const MultiDimImplementation< GUM_SCALAR > * cost(Idx actionId=0) const
Returns the reward table of mdp.
Definition: fmdp_tpl.h:251
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51

◆ addReward()

template<typename GUM_SCALAR>
void gum::FMDP< GUM_SCALAR >::addReward ( const MultiDimImplementation< GUM_SCALAR > *  reward)
inline

Adds a default variable reward.

Exceptions
DuplicateElementif a default reward exists already

Definition at line 220 of file fmdp.h.

220  {
221  this->addRewardForAction(0, reward);
222  }
const MultiDimImplementation< GUM_SCALAR > * reward(Idx actionId=0) const
Returns the reward table of mdp.
Definition: fmdp_tpl.h:293
void addRewardForAction(Idx actionId, const MultiDimImplementation< GUM_SCALAR > *reward)
Adds a default variable reward.
Definition: fmdp_tpl.h:274

◆ addRewardForAction()

template<typename GUM_SCALAR>
INLINE void gum::FMDP< GUM_SCALAR >::addRewardForAction ( Idx  actionId,
const MultiDimImplementation< GUM_SCALAR > *  reward 
)

Adds a default variable reward.

Exceptions
DuplicateElementif a default reward exists already

Definition at line 274 of file fmdp_tpl.h.

275  {
276  if (!_actionRewardTable_.exists(actionId))
277  GUM_ERROR(NotFound, " Action " << actionName(actionId) << " has not been declared before.");
278 
279  if (_actionRewardTable_[actionId] != nullptr)
280  GUM_ERROR(DuplicateElement,
281  " Action " << actionName(actionId) << " already has a reward table");
282 
284  }
Idx actionId(const std::string &) const
Returns action id.
Definition: fmdp_tpl.h:325
const std::string & actionName(Idx actionId) const
Returns name of action given in parameter.
Definition: fmdp_tpl.h:314
const MultiDimImplementation< GUM_SCALAR > * reward(Idx actionId=0) const
Returns the reward table of mdp.
Definition: fmdp_tpl.h:293
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionRewardTable_
Table which give for each action reward table.
Definition: fmdp.h:279
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51

◆ addTransition()

template<typename GUM_SCALAR>
void gum::FMDP< GUM_SCALAR >::addTransition ( const DiscreteVariable var,
const MultiDimImplementation< GUM_SCALAR > *  transition 
)
inline

Adds a default variable transition.

Exceptions
NotFoundif var does not exists
DuplicateElementif variable already has a default transition

Definition at line 165 of file fmdp.h.

166  {
167  this->addTransitionForAction(0, var, transition);
168  }
void addTransitionForAction(Idx actionId, const DiscreteVariable *var, const MultiDimImplementation< GUM_SCALAR > *transition)
Adds a variable transition table to specified action.
Definition: fmdp_tpl.h:183
const MultiDimImplementation< GUM_SCALAR > * transition(Idx actionId, const DiscreteVariable *v) const
Returns transition associated to given in parameter variable and the given action.
Definition: fmdp_tpl.h:208

◆ addTransitionForAction()

template<typename GUM_SCALAR>
INLINE void gum::FMDP< GUM_SCALAR >::addTransitionForAction ( Idx  actionId,
const DiscreteVariable var,
const MultiDimImplementation< GUM_SCALAR > *  transition 
)

Adds a variable transition table to specified action.

Exceptions
NotFoundif action or var does not exists
DuplicateElementif variable already has a transition for this action

Definition at line 183 of file fmdp_tpl.h.

186  {
187  if (!_varSeq_.exists(var))
188  GUM_ERROR(NotFound, " Variable " << var->name() << " has not been declared before.")
189 
190  if (!_actionTransitionTable_.exists(actionId))
191  GUM_ERROR(NotFound, " Action " << actionName(actionId) << " has not been declared before.");
192 
193  if (_actionTransitionTable_[actionId]->exists(var))
194  GUM_ERROR(DuplicateElement,
195  " Variable " << var->name() << " already has a transition table in " << actionId
196  << " table.");
197 
199  }
Sequence< const DiscreteVariable *> _varSeq_
Sequence de variables and its iterator.
Definition: fmdp.h:261
Idx actionId(const std::string &) const
Returns action id.
Definition: fmdp_tpl.h:325
const std::string & actionName(Idx actionId) const
Returns name of action given in parameter.
Definition: fmdp_tpl.h:314
const MultiDimImplementation< GUM_SCALAR > * transition(Idx actionId, const DiscreteVariable *v) const
Returns transition associated to given in parameter variable and the given action.
Definition: fmdp_tpl.h:208
HashTable< Idx, VarTransitionTable< GUM_SCALAR > *> _actionTransitionTable_
Table which give for each action a table containing variables transition cpt.
Definition: fmdp.h:273
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51

◆ addVariable()

template<typename GUM_SCALAR >
INLINE void gum::FMDP< GUM_SCALAR >::addVariable ( const DiscreteVariable var)

Adds a variable to FMDP description.

Exceptions
DuplicateElementif a similar variable already exists

Definition at line 116 of file fmdp_tpl.h.

116  {
117  if (_varSeq_.exists(var))
118  GUM_ERROR(DuplicateElement,
119  " Variable " << var->name() << " has already been inserted in FMDP.");
120 
121 
122  _varSeq_.insert(var);
123 
124  // Prime version creation
125  DiscreteVariable* primeVar = var->clone();
126  primeVar->setName(var->name() + "'");
127  _main2primed_.insert(var, primeVar);
128  }
Sequence< const DiscreteVariable *> _varSeq_
Sequence de variables and its iterator.
Definition: fmdp.h:261
Bijection< const DiscreteVariable *, const DiscreteVariable *> _main2primed_
Mapping from a main variable to its associated primed version.
Definition: fmdp.h:266
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51

◆ beginActions()

template<typename GUM_SCALAR>
SequenceIteratorSafe< Idx > gum::FMDP< GUM_SCALAR >::beginActions ( ) const
inline

Returns an iterator reference to he beginning of the list of actions.

Definition at line 136 of file fmdp.h.

136 { return _actionSeq_.beginSafe(); }
Sequence< Idx > _actionSeq_
Definition: fmdp.h:263
iterator_safe beginSafe() const
Returns a safe begin iterator.
Definition: sequence_tpl.h:603

◆ beginVariables()

template<typename GUM_SCALAR>
SequenceIteratorSafe< const DiscreteVariable* > gum::FMDP< GUM_SCALAR >::beginVariables ( ) const
inline

Returns an iterator reference to he beginning of the list of variables.

Definition at line 94 of file fmdp.h.

94  {
95  return _varSeq_.beginSafe();
96  }
Sequence< const DiscreteVariable *> _varSeq_
Sequence de variables and its iterator.
Definition: fmdp.h:261

◆ cost()

template<typename GUM_SCALAR >
INLINE const MultiDimImplementation< GUM_SCALAR > * gum::FMDP< GUM_SCALAR >::cost ( Idx  actionId = 0) const

Returns the reward table of mdp.

Definition at line 251 of file fmdp_tpl.h.

251  {
252  if (!_actionCostTable_.exists(actionId))
253  GUM_ERROR(NotFound, " Action " << actionName(actionId) << " has not been declared before.");
254 
255  if (_actionCostTable_[actionId]) return _actionCostTable_[actionId];
256  return _actionCostTable_[0];
257  }
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionCostTable_
Table which give for each action cost table.
Definition: fmdp.h:276
Idx actionId(const std::string &) const
Returns action id.
Definition: fmdp_tpl.h:325
const std::string & actionName(Idx actionId) const
Returns name of action given in parameter.
Definition: fmdp_tpl.h:314
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51

◆ endActions()

template<typename GUM_SCALAR>
SequenceIteratorSafe< Idx > gum::FMDP< GUM_SCALAR >::endActions ( ) const
inline

Returns an iterator reference to the end of the list of actions.

Definition at line 141 of file fmdp.h.

141 { return _actionSeq_.endSafe(); }
const iterator_safe & endSafe() const noexcept
Returns the safe end iterator.
Definition: sequence_tpl.h:610
Sequence< Idx > _actionSeq_
Definition: fmdp.h:263

◆ endVariables()

template<typename GUM_SCALAR>
SequenceIteratorSafe< const DiscreteVariable* > gum::FMDP< GUM_SCALAR >::endVariables ( ) const
inline

Returns an iterator reference to the end of the list of variables.

Definition at line 101 of file fmdp.h.

101  {
102  return _varSeq_.endSafe();
103  }
Sequence< const DiscreteVariable *> _varSeq_
Sequence de variables and its iterator.
Definition: fmdp.h:261

◆ main2prime()

template<typename GUM_SCALAR>
const DiscreteVariable* gum::FMDP< GUM_SCALAR >::main2prime ( const DiscreteVariable mainVar) const
inline

Returns the primed variable associate to the given main variable.

Definition at line 108 of file fmdp.h.

108  {
109  return _main2primed_.second(mainVar);
110  }
Bijection< const DiscreteVariable *, const DiscreteVariable *> _main2primed_
Mapping from a main variable to its associated primed version.
Definition: fmdp.h:266

◆ mapMainPrime()

template<typename GUM_SCALAR>
INLINE const Bijection< const DiscreteVariable*, const DiscreteVariable* >& gum::FMDP< GUM_SCALAR >::mapMainPrime ( ) const
inline

Returns the map binding main variables and prime variables.

Definition at line 116 of file fmdp.h.

116  {
117  return _main2primed_;
118  }
Bijection< const DiscreteVariable *, const DiscreteVariable *> _main2primed_
Mapping from a main variable to its associated primed version.
Definition: fmdp.h:266

◆ reward()

template<typename GUM_SCALAR >
INLINE const MultiDimImplementation< GUM_SCALAR > * gum::FMDP< GUM_SCALAR >::reward ( Idx  actionId = 0) const

Returns the reward table of mdp.

Definition at line 293 of file fmdp_tpl.h.

293  {
294  if (!_actionRewardTable_.exists(actionId))
295  GUM_ERROR(NotFound, " Action " << actionName(actionId) << " has not been declared before.");
296 
297  if (_actionRewardTable_[actionId]) return _actionRewardTable_[actionId];
298  return _actionRewardTable_[0];
299  }
Idx actionId(const std::string &) const
Returns action id.
Definition: fmdp_tpl.h:325
const std::string & actionName(Idx actionId) const
Returns name of action given in parameter.
Definition: fmdp_tpl.h:314
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR > *> _actionRewardTable_
Table which give for each action reward table.
Definition: fmdp.h:279
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51

◆ size()

template<typename GUM_SCALAR >
INLINE Size gum::FMDP< GUM_SCALAR >::size ( ) const

Returns the map binding main variables and prime variables.

Definition at line 356 of file fmdp_tpl.h.

356  {
357  Size s = 0;
358  for (auto actionIter = beginActions(); actionIter != endActions(); ++actionIter) {
359  for (auto varIter = beginVariables(); varIter != endVariables(); ++varIter)
360  if (this->transition(*actionIter, *varIter))
361  s += this->transition(*actionIter, *varIter)->realSize();
362  if (this->reward(*actionIter)) s += this->reward(*actionIter)->realSize();
363  }
364 
365  for (auto varIter = beginVariables(); varIter != endVariables(); ++varIter)
366  if (this->transition(0, *varIter)) s += this->transition(0, *varIter)->realSize();
367  if (this->reward()) s += this->reward()->realSize();
368  return s;
369  }
SequenceIteratorSafe< Idx > beginActions() const
Returns an iterator reference to he beginning of the list of actions.
Definition: fmdp.h:136
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:94
const MultiDimImplementation< GUM_SCALAR > * transition(Idx actionId, const DiscreteVariable *v) const
Returns transition associated to given in parameter variable and the given action.
Definition: fmdp_tpl.h:208
const MultiDimImplementation< GUM_SCALAR > * reward(Idx actionId=0) const
Returns the reward table of mdp.
Definition: fmdp_tpl.h:293
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
Definition: fmdp.h:141
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:101
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:47

◆ toString()

template<typename GUM_SCALAR >
INLINE std::string gum::FMDP< GUM_SCALAR >::toString ( ) const

Displays the FMDP in a Dot format.

Definition at line 336 of file fmdp_tpl.h.

336  {
337  std::stringstream fmdpCore;
338 
339  for (auto actionIter = beginActions(); actionIter != endActions(); ++actionIter) {
340  for (auto varIter = beginVariables(); varIter != endVariables(); ++varIter)
341  if (this->transition(*actionIter, *varIter))
342  fmdpCore << RECAST(this->transition(*actionIter, *varIter))->toDot() << std::endl;
343  if (this->reward(*actionIter))
344  fmdpCore << RECAST(this->reward(*actionIter))->toDot() << std::endl;
345  }
346 
347  for (auto varIter = beginVariables(); varIter != endVariables(); ++varIter)
348  if (this->transition(0, *varIter))
349  fmdpCore << RECAST(this->transition(0, *varIter))->toDot() << std::endl;
350  if (this->reward()) fmdpCore << RECAST(this->reward())->toDot() << std::endl;
351  return fmdpCore.str();
352  }
SequenceIteratorSafe< Idx > beginActions() const
Returns an iterator reference to he beginning of the list of actions.
Definition: fmdp.h:136
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Definition: fmdp.h:94
const MultiDimImplementation< GUM_SCALAR > * transition(Idx actionId, const DiscreteVariable *v) const
Returns transition associated to given in parameter variable and the given action.
Definition: fmdp_tpl.h:208
const MultiDimImplementation< GUM_SCALAR > * reward(Idx actionId=0) const
Returns the reward table of mdp.
Definition: fmdp_tpl.h:293
#define RECAST(x)
Definition: fmdp_tpl.h:36
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
Definition: fmdp.h:141
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Definition: fmdp.h:101

◆ transition()

template<typename GUM_SCALAR >
INLINE const MultiDimImplementation< GUM_SCALAR > * gum::FMDP< GUM_SCALAR >::transition ( Idx  actionId,
const DiscreteVariable v 
) const

Returns transition associated to given in parameter variable and the given action.

Definition at line 208 of file fmdp_tpl.h.

208  {
209  if (!_actionTransitionTable_.exists(actionId))
210  GUM_ERROR(NotFound, " Action " << actionName(actionId) << " has not been declared before.");
211 
212  if (_actionTransitionTable_[actionId]->exists(v))
213  return (*_actionTransitionTable_[actionId])[v];
214  else
215  return (*_actionTransitionTable_[0]).exists(v) ? (*_actionTransitionTable_[0])[v] : nullptr;
216  }
const std::string & actionName(Idx actionId) const
Returns name of action given in parameter.
Definition: fmdp_tpl.h:314
HashTable< Idx, VarTransitionTable< GUM_SCALAR > *> _actionTransitionTable_
Table which give for each action a table containing variables transition cpt.
Definition: fmdp.h:273
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51

Member Data Documentation

◆ _actionCostTable_

template<typename GUM_SCALAR>
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR >* > gum::FMDP< GUM_SCALAR >::_actionCostTable_
private

Table which give for each action cost table.

Definition at line 276 of file fmdp.h.

◆ _actionMap_

template<typename GUM_SCALAR>
Bijection< Idx, const std::string* > gum::FMDP< GUM_SCALAR >::_actionMap_
private

Bijection mapping an action name to its id.

Definition at line 269 of file fmdp.h.

◆ _actionRewardTable_

template<typename GUM_SCALAR>
HashTable< Idx, const MultiDimImplementation< GUM_SCALAR >* > gum::FMDP< GUM_SCALAR >::_actionRewardTable_
private

Table which give for each action reward table.

Definition at line 279 of file fmdp.h.

◆ _actionSeq_

template<typename GUM_SCALAR>
Sequence< Idx > gum::FMDP< GUM_SCALAR >::_actionSeq_
private

Definition at line 263 of file fmdp.h.

◆ _actionTransitionTable_

template<typename GUM_SCALAR>
HashTable< Idx, VarTransitionTable< GUM_SCALAR >* > gum::FMDP< GUM_SCALAR >::_actionTransitionTable_
private

Table which give for each action a table containing variables transition cpt.

Definition at line 273 of file fmdp.h.

◆ _main2primed_

template<typename GUM_SCALAR>
Bijection< const DiscreteVariable*, const DiscreteVariable* > gum::FMDP< GUM_SCALAR >::_main2primed_
private

Mapping from a main variable to its associated primed version.

Definition at line 266 of file fmdp.h.

◆ _onDestructionDeleteVars_

template<typename GUM_SCALAR>
bool gum::FMDP< GUM_SCALAR >::_onDestructionDeleteVars_
private

Boolean indicates whether or not main variables should be deleted on destruction of this instance Usually the case when fmdp has been initialized with the factory.

Definition at line 284 of file fmdp.h.

◆ _varSeq_

template<typename GUM_SCALAR>
Sequence< const DiscreteVariable* > gum::FMDP< GUM_SCALAR >::_varSeq_
private

Sequence de variables and its iterator.

Definition at line 261 of file fmdp.h.


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