Scheduler
policy.h
Go to the documentation of this file.
1 
10 #ifndef POLICY_H
11 #define POLICY_H
12 
13 #include <ostream>
14 #include <memory>
15 #include <string>
16 #include <vector>
17 
18 #include "action_impl.h"
19 #include "state.h"
20 
21 namespace Utils{class RandomGenerator;}
22 
23 namespace Mdp
24 {
25 
26 class Policy
27 {
28 public:
29  Policy(int nbOfStates, int nbOfActions, std::shared_ptr<Utils::RandomGenerator> gen);
30  void update(state_t state, const std::vector<double> &vector);
31  action_t getAction(state_t state);
32  void initializeUniformly();
33  void initializeRandomly(std::shared_ptr<Utils::RandomGenerator> gen);
34  void initializeFromFile(std::string filename);
35  void saveToFile(std::string filename);
36  void print(std::ostream& stream);
37  size_t getNbOfStates();
38  size_t getNbOfActions();
39 protected:
40  std::vector<double> *getActionVector(state_t state);//this is a ptr for performance reasons
41  std::vector<std::vector<double>> policy; //policies are stochastic
42  size_t nbOfStates;
43  size_t nbOfActions;
44  std::shared_ptr<Utils::RandomGenerator> randomGenerator;
45  void handleErrorInGettingAction(std::vector<double> *vector, state_t state, double d);
46 };
47 
48 
49 
50 
51 }
52 
53 
54 
55 
56 #endif
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
std::vector< std::vector< double > > policy
Definition: policy.h:41
std::shared_ptr< Utils::RandomGenerator > randomGenerator
Definition: policy.h:44
string filename
Definition: aging.py:5
size_t nbOfActions
Definition: policy.h:43
size_t action_t
Definition: action_impl.h:18
Definition: action.h:18
size_t nbOfStates
Definition: policy.h:42
size_t state_t
Definition: state.h:19
Definition: context.h:16