SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
MSSOTLCongestionPolicy.cpp
Go to the documentation of this file.
1 /****************************************************************************/
8 // The class for SOTL Congestion logics
9 /****************************************************************************/
10 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
11 // Copyright 2001-2009 DLR (http://www.dlr.de/) and contributors
12 /****************************************************************************/
13 //
14 // This file is part of SUMO.
15 // SUMO is free software: you can redistribute it and/or modify
16 // it under the terms of the GNU General Public License as published by
17 // the Free Software Foundation, either version 3 of the License, or
18 // (at your option) any later version.
19 //
20 /****************************************************************************/
21 
22 #include "MSSOTLCongestionPolicy.h"
23 
25  const std::map<std::string, std::string>& parameters) :
26  MSSOTLPolicy("Congestion", parameters) {
27 }
28 
30  MSSOTLPolicyDesirability* desirabilityAlgorithm) :
31  MSSOTLPolicy("Congestion", desirabilityAlgorithm) {
32  getDesirabilityAlgorithm()->setKeyPrefix("CONGESTION");
33 }
34 
36  MSSOTLPolicyDesirability* desirabilityAlgorithm,
37  const std::map<std::string, std::string>& parameters) :
38  MSSOTLPolicy("Congestion", desirabilityAlgorithm, parameters) {
39  getDesirabilityAlgorithm()->setKeyPrefix("CONGESTION");
40 
41 }
42 
44  const MSPhaseDefinition* stage, int currentPhaseIndex,
45  int /* phaseMaxCTS */, bool thresholdPassed, bool pushButtonPressed, int vehicleCount) {
46  if (stage->isCommit()) {
47  // decide which chain to activate. Gotta work on this
48  return currentPhaseIndex;
49  }
50  if (stage->isTransient()) {
51  //If the junction was in a transient step
52  //=> go to the next step and return computeReturnTime()
53  return currentPhaseIndex + 1;
54  }
55 
56  if (stage->isDecisional()) {
57  if (canRelease(elapsed, thresholdPassed, pushButtonPressed, stage, vehicleCount)) {
58  return currentPhaseIndex + 1;
59  }
60  }
61 
62  return currentPhaseIndex;
63 }
64 
65 bool MSSOTLCongestionPolicy::canRelease(SUMOTime elapsed, bool /* thresholdPassed */, bool /* pushButtonPressed */,
66  const MSPhaseDefinition* stage, int /* vehicleCount */) {
67  return (elapsed >= stage->minDuration);
68 }
long long int SUMOTime
Definition: SUMOTime.h:43
int decideNextPhase(SUMOTime elapsed, const MSPhaseDefinition *stage, int currentPhaseIndex, int phaseMaxCTS, bool thresholdPassed, bool pushButtonPressed, int vehicleCount)
bool isCommit() const
MSSOTLCongestionPolicy(const std::map< std::string, std::string > &parameters)
bool canRelease(SUMOTime elapsed, bool thresholdPassed, bool pushButtonPressed, const MSPhaseDefinition *stage, int vehicleCount)
MSSOTLPolicyDesirability * getDesirabilityAlgorithm()
Definition: MSSOTLPolicy.h:128
void setKeyPrefix(std::string val)
This class determines the desirability algorithm of a MSSOTLPolicy when used in combination with a hi...
Class for a low-level policy.
Definition: MSSOTLPolicy.h:72
SUMOTime minDuration
The minimum duration of the phase.
bool isTransient() const
The definition of a single phase of a tls logic.
bool isDecisional() const