73#define RECASTED(x) reinterpret_cast< const MultiDimFunctionGraph< double >* >(x)
89 double discountFactor,
125 for (
auto actionIter =
fmdp->beginActions(); actionIter !=
fmdp->endActions(); ++actionIter) {
157 for (
auto actionIter =
fmdp_->beginActions(); actionIter !=
fmdp_->endActions(); ++actionIter)
172 std::vector< MultiDimFunctionGraph< double >* > qActionsSet;
173 for (
auto actionIter =
fmdp_->beginActions(); actionIter !=
fmdp_->endActions(); ++actionIter) {
185 qActionsSet.push_back(qAction);
218 for (
auto actionIter =
fmdp_->beginActions(); actionIter !=
fmdp_->endActions(); ++actionIter) {
221 qAction = this->
addReward_(qAction, *actionIter);
228 argMaxQActionsSet.push_back(
makeArgMax_(qAction, *actionIter));
251 for (
auto actionIter = this->
fmdp()->beginActions(); actionIter != this->
fmdp()->
endActions();
253 std::vector< MultiDimFunctionGraph< double >* > rmaxs;
254 std::vector< MultiDimFunctionGraph< double >* > boolQs;
266 std::pair< NodeId, NodeId > rooty
275 rmaxs.push_back(varRMax);
276 boolQs.push_back(varBoolQ);
312 std::pair< NodeId, NodeId >
317 std::pair< NodeId, NodeId > rep;
326 auto rmaxsons =
static_cast< NodeId*
>(
328 auto bqsons =
static_cast< NodeId*
>(
331 for (
Idx moda = 0; moda < visited->
nodeVar(currentNodeId)->domainSize(); ++moda) {
332 std::pair< NodeId, NodeId > sonp
334 rmaxsons[moda] = sonp.first;
335 bqsons[moda] = sonp.second;
347 for (
auto actionIter = this->
fmdp()->beginActions(); actionIter != this->
fmdp()->
endActions();
#define RECASTED(x)
For shorter line and hence more comprehensive code purposes only.
Headers of the RMax planer class.
Safe Iterators for hashtables.
HashTable< Idx, bool > _initializedTable_
const ILearningStrategy * _fmdpLearner_
HashTable< Idx, MultiDimFunctionGraph< double > * > _actionsBoolTable_
HashTable< Idx, StatesCounter * > _counterTable_
void _makeRMaxFunctionGraphs_()
void evalPolicy_() override
Perform the required tasks to extract an optimal policy.
void makePlanning(Idx nbStep=1000000) override
Performs a value iteration.
void initVFunction_() override
Performs a single step of value iteration.
void initialize(const FMDP< double > *fmdp) override
Initializes data structure needed for making the planning.
AdaptiveRMaxPlaner(IOperatorStrategy< double > *opi, double discountFactor, double epsilon, const ILearningStrategy *learner, bool verbose)
Default constructor.
MultiDimFunctionGraph< double > * valueIteration_() override
Performs a single step of value iteration.
~AdaptiveRMaxPlaner() override
Default destructor.
HashTable< Idx, MultiDimFunctionGraph< double > * > _actionsRMaxTable_
std::pair< NodeId, NodeId > _visitLearner_(const IVisitableGraphLearner *, NodeId currentNodeId, MultiDimFunctionGraph< double > *, MultiDimFunctionGraph< double > *)
virtual Size domainSize() const =0
SequenceIteratorSafe< Idx > endActions() const
Returns an iterator reference to the end of the list of actions.
SequenceIteratorSafe< const DiscreteVariable * > endVariables() const
Returns an iterator reference to the end of the list of variables.
<agrum/FMDP/SDyna/IDecisionStrategy.h>
virtual void initialize(const FMDP< double > *fmdp)
Initializes the learner.
<agrum/FMDP/SDyna/ILearningStrategy.h>
<agrum/FMDP/SDyna/IVisitableGraphLearner.h>
virtual const DiscreteVariable * nodeVar(NodeId ni) const =0
virtual NodeId root() const =0
virtual bool isTerminal(NodeId ni) const =0
virtual void insertSetOfVars(MultiDimFunctionGraph< double > *) const =0
virtual NodeId nodeSon(NodeId ni, Idx modality) const =0
virtual Idx nodeNbObservation(NodeId ni) const =0
NodeId addInternalNode(const DiscreteVariable *var)
Inserts a new non terminal node in graph.
void clean()
Removes var without nodes in the diagram.
virtual void reduce()=0
Ensures that every isomorphic subgraphs are merged together.
void setRootNode(const NodeId &root)
Sets root node of decision diagram.
NodeId addTerminalNode(const GUM_ELEMENT &value)
Adds a value to the MultiDimFunctionGraph.
void copyAndReassign(const MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy > &src, const Bijection< const DiscreteVariable *, const DiscreteVariable * > &reassign)
Copies src diagrams structure into this diagrams.
MultiDimFunctionGraphManager< GUM_ELEMENT, TerminalNodePolicy > * manager()
Returns a const reference to the manager of this diagram.
Implementation of a Terminal Node Policy that maps nodeid to a set of value.
<agrum/FMDP/simulation/statesCounter.h>
virtual MultiDimFunctionGraph< ArgMaxSet< double, Idx >, SetTerminalNodePolicy > * argmaximiseQactions_(std::vector< MultiDimFunctionGraph< ArgMaxSet< double, Idx >, SetTerminalNodePolicy > * > &)
const FMDP< double > * fmdp()
void initialize(const FMDP< GUM_ELEMENT > *fmdp) override
Initializes data structure needed for making the planning.
IOperatorStrategy< double > * operator_
void extractOptimalPolicy_(const MultiDimFunctionGraph< ArgMaxSet< double, Idx >, SetTerminalNodePolicy > *optimalValueFunction)
void makePlanning(Idx nbStep=1000000) override
Performs a value iteration.
virtual MultiDimFunctionGraph< double > * addReward_(MultiDimFunctionGraph< double > *function, Idx actionId=0)
MultiDimFunctionGraph< ArgMaxSet< double, Idx >, SetTerminalNodePolicy > * makeArgMax_(const MultiDimFunctionGraph< double > *Qaction, Idx actionId)
const FMDP< double > * fmdp_
virtual MultiDimFunctionGraph< double > * minimiseFunctions_(std::vector< MultiDimFunctionGraph< double > * > &)
StructuredPlaner(IOperatorStrategy< double > *opi, double discountFactor, double epsilon, bool verbose)
MultiDimFunctionGraph< double > * vFunction_
virtual MultiDimFunctionGraph< double > * evalQaction_(const MultiDimFunctionGraph< double > *, Idx)
virtual MultiDimFunctionGraph< double > * maximiseQactions_(std::vector< MultiDimFunctionGraph< double > * > &)
This files contains several function objects that are not (yet) defined in the STL.
Size Idx
Type for indexes.
Size NodeId
Type for node ids.
Header files of gum::Instantiation.
Headers of MultiDimFunctionGraph.
gum is the global namespace for all aGrUM entities
Headers of gum::SmallObjectAllocator.
Header of the Tensor class.