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 /****************************************************************************/
17 // The class for low-level policy
18 /****************************************************************************/
19 
20 #ifndef MSTLPolicy_h
21 #define MSTLPolicy_h
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #include <config.h>
27 
28 //#define SWARM_DEBUG
30 #include <sstream>
31 #include <cmath>
32 #include <utility>
33 #include <vector>
35 #include "MSPhaseDefinition.h"
37 
39 protected:
40  void init(std::string prefix, const Parameterised* parameterised);
41 
42  bool pushButtonLogic(SUMOTime elapsed, bool pushButtonPressed, const MSPhaseDefinition* stage);
43 
45  std::string m_prefix;
46 };
47 
48 class SigmoidLogic {
49 protected:
50  void init(std::string prefix, const Parameterised* parameterised);
51 
52  bool sigmoidLogic(SUMOTime elapsed, const MSPhaseDefinition* stage, int vehicleCount);
53 
55  double m_k;
56  std::string m_prefix;
57 };
58 
64 class MSSOTLPolicy: public Parameterised {
65 private:
66 
74  std::string myName;
80 
81 protected:
82  virtual void init() {}
83 
84 public:
89  MSSOTLPolicy(std::string name,
90  const std::map<std::string, std::string>& parameters);
95  MSSOTLPolicy(std::string name, MSSOTLPolicyDesirability* desirabilityAlgorithm);
101  MSSOTLPolicy(std::string name, MSSOTLPolicyDesirability* desirabilityAlgorithm,
102  const std::map<std::string, std::string>& parameters);
103  virtual ~MSSOTLPolicy();
104 
105  virtual bool canRelease(SUMOTime elapsed, bool thresholdPassed, bool pushButtonPressed,
106  const MSPhaseDefinition* stage, int vehicleCount) = 0;
107  virtual int decideNextPhase(SUMOTime elapsed, const MSPhaseDefinition* stage,
108  int currentPhaseIndex, int phaseMaxCTS, bool thresholdPassed, bool pushButtonPressed,
109  int vehicleCount);
110 
111  virtual double getThetaSensitivity() {
112  return theta_sensitivity;
113  }
114  virtual void setThetaSensitivity(double val) {
115  theta_sensitivity = val;
116  }
117  std::string getName() {
118  return myName;
119  }
122  }
126  double computeDesirability(double vehInMeasure, double vehOutMeasure, double vehInDispersionMeasure, double vehOutDispersionMeasure);
127 
128  double computeDesirability(double vehInMeasure, double vehOutMeasure);
129 };
130 
131 #endif
MSSOTLPolicy::decideNextPhase
virtual int decideNextPhase(SUMOTime elapsed, const MSPhaseDefinition *stage, int currentPhaseIndex, int phaseMaxCTS, bool thresholdPassed, bool pushButtonPressed, int vehicleCount)
Definition: MSSOTLPolicy.cpp:120
MSSOTLPolicy
Class for a low-level policy.
Definition: MSSOTLPolicy.h:64
MSSOTLPolicy::getThetaSensitivity
virtual double getThetaSensitivity()
Definition: MSSOTLPolicy.h:111
Parameterised
An upper class for objects with additional parameters.
Definition: Parameterised.h:42
SigmoidLogic::init
void init(std::string prefix, const Parameterised *parameterised)
Definition: MSSOTLPolicy.cpp:44
MSSOTLPolicy::~MSSOTLPolicy
virtual ~MSSOTLPolicy()
Definition: MSSOTLPolicy.cpp:99
SigmoidLogic::sigmoidLogic
bool sigmoidLogic(SUMOTime elapsed, const MSPhaseDefinition *stage, int vehicleCount)
Definition: MSSOTLPolicy.cpp:60
SigmoidLogic::m_prefix
std::string m_prefix
Definition: MSSOTLPolicy.h:56
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:102
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:34
PushButtonLogic::init
void init(std::string prefix, const Parameterised *parameterised)
Definition: MSSOTLPolicy.cpp:24
MSSOTLPolicy::MSSOTLPolicy
MSSOTLPolicy(std::string name, const std::map< std::string, std::string > &parameters)
Simple constructor.
Definition: MSSOTLPolicy.cpp:78
MSSOTLPolicy::init
virtual void init()
Definition: MSSOTLPolicy.h:82
MSSOTLPolicy::getDesirabilityAlgorithm
MSSOTLPolicyDesirability * getDesirabilityAlgorithm()
Definition: MSSOTLPolicy.h:120
SigmoidLogic::m_useSigmoid
bool m_useSigmoid
Definition: MSSOTLPolicy.h:54
MSSOTLPolicy::getName
std::string getName()
Definition: MSSOTLPolicy.h:117
MSSOTLPolicy::theta_sensitivity
double theta_sensitivity
The sensitivity of this policy.
Definition: MSSOTLPolicy.h:70
Parameterised.h
SigmoidLogic
Definition: MSSOTLPolicy.h:48
PushButtonLogic::m_prefix
std::string m_prefix
Definition: MSSOTLPolicy.h:45
PushButtonLogic::m_pushButtonScaleFactor
double m_pushButtonScaleFactor
Definition: MSSOTLPolicy.h:44
PushButtonLogic
Definition: MSSOTLPolicy.h:38
MSSOTLPolicy::setThetaSensitivity
virtual void setThetaSensitivity(double val)
Definition: MSSOTLPolicy.h:114
PushButtonLogic::pushButtonLogic
bool pushButtonLogic(SUMOTime elapsed, bool pushButtonPressed, const MSPhaseDefinition *stage)
Definition: MSSOTLPolicy.cpp:30
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:51
MSSOTLPolicyDesirability
This class determines the desirability algorithm of a MSSOTLPolicy when used in combination with a hi...
Definition: MSSOTLPolicyDesirability.h:35
SigmoidLogic::m_k
double m_k
Definition: MSSOTLPolicy.h:55
MSSOTLPolicy::myName
std::string myName
The name of the policy.
Definition: MSSOTLPolicy.h:74
MSSOTLPolicy::myDesirabilityAlgorithm
MSSOTLPolicyDesirability * myDesirabilityAlgorithm
A pointer to the policy desirability object.\nIt's an optional component related to the computeDesira...
Definition: MSSOTLPolicy.h:79