29 #ifndef GUM_FACTORED_MARKOV_DECISION_PROCESS_H 30 #define GUM_FACTORED_MARKOV_DECISION_PROCESS_H 35 #include <agrum/tools/core/bijection.h> 36 #include <agrum/tools/core/hashTable.h> 37 #include <agrum/tools/core/set.h> 39 #include <agrum/tools/multidim/implementations/multiDimFunctionGraph.h> 40 #include <agrum/tools/multidim/implementations/multiDimImplementation.h> 41 #include <agrum/tools/variables/discreteVariable.h> 56 template <
typename GUM_SCALAR >
71 FMDP(
bool onDestructionDeleteVar =
false);
95 return _varSeq_.beginSafe();
102 return _varSeq_.endSafe();
109 return _main2primed_.second(mainVar);
157 const DiscreteVariable* var,
158 const MultiDimImplementation< GUM_SCALAR >* transition);
166 const MultiDimImplementation< GUM_SCALAR >* transition) {
167 this->addTransitionForAction(0, var, transition);
188 void addCostForAction(Idx actionId,
const MultiDimImplementation< GUM_SCALAR >* cost);
194 void addCost(
const MultiDimImplementation< GUM_SCALAR >* cost) {
195 this->addCostForAction(0, cost);
214 void addRewardForAction(Idx actionId,
const MultiDimImplementation< GUM_SCALAR >* reward);
220 void addReward(
const MultiDimImplementation< GUM_SCALAR >* reward) {
221 this->addRewardForAction(0, reward);
239 const std::string&
actionName(Idx actionId)
const;
288 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 289 extern template class FMDP<
double >;
296 #include <agrum/FMDP/fmdp_tpl.h> ~FMDP()
Default destructor.
Sequence< const DiscreteVariable *> _varSeq_
Sequence de variables and its iterator.
void addTransition(const DiscreteVariable *var, const MultiDimImplementation< GUM_SCALAR > *transition)
Adds a default variable transition.
SequenceIteratorSafe< Idx > beginActions() const
Returns an iterator reference to he beginning of the list of actions.
Idx actionId(const std::string &) const
Returns action id.
INLINE void emplace(Args &&... args)
void addReward(const MultiDimImplementation< GUM_SCALAR > *reward)
Adds a default variable reward.
const std::string & actionName(Idx actionId) const
Returns name of action given in parameter.
SequenceIteratorSafe< const DiscreteVariable *> beginVariables() const
Returns an iterator reference to he beginning of the list of variables.
Sequence< Idx > _actionSeq_
void addCostForAction(Idx actionId, const MultiDimImplementation< GUM_SCALAR > *cost)
Adds a cost table to specified action.
void addCost(const MultiDimImplementation< GUM_SCALAR > *cost)
Adds a default variable cost.
void addVariable(const DiscreteVariable *var)
Adds a variable to FMDP description.
void addTransitionForAction(Idx actionId, const DiscreteVariable *var, const MultiDimImplementation< GUM_SCALAR > *transition)
Adds a variable transition table to specified action.
const MultiDimImplementation< GUM_SCALAR > * transition(Idx actionId, const DiscreteVariable *v) const
Returns transition associated to given in parameter variable and the given action.
FMDP(bool onDestructionDeleteVar=false)
Default constructor.
Size size() const
Returns the map binding main variables and prime variables.
const MultiDimImplementation< GUM_SCALAR > * reward(Idx actionId=0) const
Returns the reward table of mdp.
void addRewardForAction(Idx actionId, const MultiDimImplementation< GUM_SCALAR > *reward)
Adds a default variable reward.
const DiscreteVariable * main2prime(const DiscreteVariable *mainVar) const
Returns the primed variable associate to the given main variable.
const MultiDimImplementation< GUM_SCALAR > * cost(Idx actionId=0) const
Returns the reward table of mdp.
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
bool _onDestructionDeleteVars_
Boolean indicates whether or not main variables should be deleted on destruction of this instance Usu...
Bijection< const DiscreteVariable *, const DiscreteVariable *> _main2primed_
Mapping from a main variable to its associated primed version.
SequenceIteratorSafe< const DiscreteVariable *> endVariables() const
Returns an iterator reference to the end of the list of variables.
Bijection< Idx, const std::string *> _actionMap_
Bijection mapping an action name to its id.
void addAction(Idx actionId, const std::string &action)
Adds an action to FMDP description.
std::string toString() const
Displays the FMDP in a Dot format.