Scheduler
mdpConfiguration.cpp
Go to the documentation of this file.
1 
10 #include "mdpConfiguration.h"
11 
12 #include <stdexcept>
13 
14 #include "context.h"
15 #include "horizon.h"
18 #include "learning/noLearning.h"
20 #include "stateSpaceDimension.h"
21 #include "learning/twoPhases.h"
22 
23 
24 using namespace Mdp;
25 
26 
28 {
29  std::string value = getStringValue("mdp", "learningStrategy");
30  if (!value.compare(MatrixLearning::configKey))
31  return (new MatrixLearning(context));
32  if (!value.compare(NoLearning::configKey))
33  return (new NoLearning(context));
34  if (!value.compare(ReinforcedLearning::configKey))
35  return (new ReinforcedLearning(context));
36  if (!value.compare(TwoPhases::configKey))
37  return (new TwoPhases(context));
38  return nullptr;
39 }
40 
41 
42 
43 
45 {
46  std::string value = getStringValue("mdp", "solver");
47  if (!value.compare(LinearProgramming::configKey))
48  return (new LinearProgramming(this));
49  return nullptr;
50 
51 }
52 
53 
54 
55 std::shared_ptr<Horizon> MdpConfiguration::getHorizonFromFile()
56 {
57  std::shared_ptr<Horizon> horizon = std::make_shared<Horizon>();
58  horizon->discountFactor = getDoubleValue("mdp", "discountFactor");
59 
60 
61  std::string value = getStringValue("mdp","costHorizon");
62  if (!value.compare("average"))
63  {
64  if (horizon->discountFactor < 1.0 || horizon->discountFactor > 1.0)
65  {
66  /*TODO: use the logging module and write it in orange*/
67  std::cout << "Warning: using a discount factor of 1.0 instead of ";
68  std::cout << horizon->discountFactor << "\n";
69  }
70  horizon->discountFactor = 1.0;
71  horizon->finiteHorizon = false;
72  }
73  else if (!value.compare("discounted"))
74  {
75  horizon->finiteHorizon = false;
76  }
77  else if (!value.compare("finite"))
78  {
79  horizon->finiteHorizon = false;
80  }
81  else
82  {
83  throw std::runtime_error("unknown horizon type");
84  }
85 
86  return horizon;
87 }
88 
89 
91 {
92  return getDoubleValue("reinforcementLearning","epsilon");
93 }
virtual std::shared_ptr< Horizon > getHorizonFromFile()
static constexpr const char * configKey
Definition: noLearning.h:23
virtual LearningStrategy * getLearningStrategyFromFile(std::shared_ptr< Context > context)
static constexpr const char * configKey
static constexpr const char * configKey
virtual double getDoubleValue(std::string section, std::string key)
virtual double getRlEpsilonFromFile()
Definition: action.h:18
static constexpr const char * configKey
Definition: twoPhases.h:24
static constexpr const char * configKey
virtual Solver * getSolverFromFile()
virtual std::string getStringValue(std::string section, std::string key)