Eclipse SUMO - Simulation of Urban MObility
MSSOTLPolicy.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2013-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
18 // The class for low-level policy
19 /****************************************************************************/
20 
21 #ifndef MSTLPolicy_h
22 #define MSTLPolicy_h
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #include <config.h>
28 
29 //#define SWARM_DEBUG
31 #include <sstream>
32 #include <cmath>
33 #include <utility>
34 #include <vector>
36 #include "MSPhaseDefinition.h"
38 
40 protected:
41  void init(std::string prefix, const Parameterised* parameterised);
42 
43  bool pushButtonLogic(SUMOTime elapsed, bool pushButtonPressed, const MSPhaseDefinition* stage);
44 
46  std::string m_prefix;
47 };
48 
49 class SigmoidLogic {
50 protected:
51  void init(std::string prefix, const Parameterised* parameterised);
52 
53  bool sigmoidLogic(SUMOTime elapsed, const MSPhaseDefinition* stage, int vehicleCount);
54 
56  double m_k;
57  std::string m_prefix;
58 };
59 
65 class MSSOTLPolicy: public Parameterised {
66 private:
67 
75  std::string myName;
81 
82 protected:
83  virtual void init() {}
84 
85 public:
90  MSSOTLPolicy(std::string name,
91  const std::map<std::string, std::string>& parameters);
96  MSSOTLPolicy(std::string name, MSSOTLPolicyDesirability* desirabilityAlgorithm);
102  MSSOTLPolicy(std::string name, MSSOTLPolicyDesirability* desirabilityAlgorithm,
103  const std::map<std::string, std::string>& parameters);
104  virtual ~MSSOTLPolicy();
105 
106  virtual bool canRelease(SUMOTime elapsed, bool thresholdPassed, bool pushButtonPressed,
107  const MSPhaseDefinition* stage, int vehicleCount) = 0;
108  virtual int decideNextPhase(SUMOTime elapsed, const MSPhaseDefinition* stage,
109  int currentPhaseIndex, int phaseMaxCTS, bool thresholdPassed, bool pushButtonPressed,
110  int vehicleCount);
111 
112  virtual double getThetaSensitivity() {
113  return theta_sensitivity;
114  }
115  virtual void setThetaSensitivity(double val) {
116  theta_sensitivity = val;
117  }
118  std::string getName() {
119  return myName;
120  }
123  }
127  double computeDesirability(double vehInMeasure, double vehOutMeasure, double vehInDispersionMeasure, double vehOutDispersionMeasure);
128 
129  double computeDesirability(double vehInMeasure, double vehOutMeasure);
130 };
131 
132 #endif
MSSOTLPolicy::decideNextPhase
virtual int decideNextPhase(SUMOTime elapsed, const MSPhaseDefinition *stage, int currentPhaseIndex, int phaseMaxCTS, bool thresholdPassed, bool pushButtonPressed, int vehicleCount)
Definition: MSSOTLPolicy.cpp:121
MSSOTLPolicy
Class for a low-level policy.
Definition: MSSOTLPolicy.h:65
MSSOTLPolicy::getThetaSensitivity
virtual double getThetaSensitivity()
Definition: MSSOTLPolicy.h:112
Parameterised
An upper class for objects with additional parameters.
Definition: Parameterised.h:43
SigmoidLogic::init
void init(std::string prefix, const Parameterised *parameterised)
Definition: MSSOTLPolicy.cpp:45
MSSOTLPolicy::~MSSOTLPolicy
virtual ~MSSOTLPolicy()
Definition: MSSOTLPolicy.cpp:100
SigmoidLogic::sigmoidLogic
bool sigmoidLogic(SUMOTime elapsed, const MSPhaseDefinition *stage, int vehicleCount)
Definition: MSSOTLPolicy.cpp:61
SigmoidLogic::m_prefix
std::string m_prefix
Definition: MSSOTLPolicy.h:57
MSSOTLPolicy::computeDesirability
double computeDesirability(double vehInMeasure, double vehOutMeasure, double vehInDispersionMeasure, double vehOutDispersionMeasure)
Computes the desirability of this policy, necessary when used in combination with an high level polic...
Definition: MSSOTLPolicy.cpp:103
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:35
PushButtonLogic::init
void init(std::string prefix, const Parameterised *parameterised)
Definition: MSSOTLPolicy.cpp:25
MSSOTLPolicy::MSSOTLPolicy
MSSOTLPolicy(std::string name, const std::map< std::string, std::string > &parameters)
Simple constructor.
Definition: MSSOTLPolicy.cpp:79
MSSOTLPolicy::init
virtual void init()
Definition: MSSOTLPolicy.h:83
MSSOTLPolicy::getDesirabilityAlgorithm
MSSOTLPolicyDesirability * getDesirabilityAlgorithm()
Definition: MSSOTLPolicy.h:121
SigmoidLogic::m_useSigmoid
bool m_useSigmoid
Definition: MSSOTLPolicy.h:55
MSSOTLPolicy::getName
std::string getName()
Definition: MSSOTLPolicy.h:118
MSSOTLPolicy::theta_sensitivity
double theta_sensitivity
The sensitivity of this policy.
Definition: MSSOTLPolicy.h:71
Parameterised.h
SigmoidLogic
Definition: MSSOTLPolicy.h:49
PushButtonLogic::m_prefix
std::string m_prefix
Definition: MSSOTLPolicy.h:46
PushButtonLogic::m_pushButtonScaleFactor
double m_pushButtonScaleFactor
Definition: MSSOTLPolicy.h:45
PushButtonLogic
Definition: MSSOTLPolicy.h:39
MSSOTLPolicy::setThetaSensitivity
virtual void setThetaSensitivity(double val)
Definition: MSSOTLPolicy.h:115
PushButtonLogic::pushButtonLogic
bool pushButtonLogic(SUMOTime elapsed, bool pushButtonPressed, const MSPhaseDefinition *stage)
Definition: MSSOTLPolicy.cpp:31
MSPhaseDefinition.h
MSSOTLPolicyDesirability.h
config.h
SwarmDebug.h
MSSOTLPolicy::canRelease
virtual bool canRelease(SUMOTime elapsed, bool thresholdPassed, bool pushButtonPressed, const MSPhaseDefinition *stage, int vehicleCount)=0
MSPhaseDefinition
The definition of a single phase of a tls logic.
Definition: MSPhaseDefinition.h:52
MSSOTLPolicyDesirability
This class determines the desirability algorithm of a MSSOTLPolicy when used in combination with a hi...
Definition: MSSOTLPolicyDesirability.h:36
SigmoidLogic::m_k
double m_k
Definition: MSSOTLPolicy.h:56
MSSOTLPolicy::myName
std::string myName
The name of the policy.
Definition: MSSOTLPolicy.h:75
MSSOTLPolicy::myDesirabilityAlgorithm
MSSOTLPolicyDesirability * myDesirabilityAlgorithm
A pointer to the policy desirability object.\nIt's an optional component related to the computeDesira...
Definition: MSSOTLPolicy.h:80