Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
MSSOTLCongestionPolicy.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2014-2024 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
19// The class for SOTL Congestion logics
20/****************************************************************************/
21
23
25 const Parameterised::Map& parameters) :
26 MSSOTLPolicy("Congestion", parameters) {
27}
28
30 MSSOTLPolicyDesirability* desirabilityAlgorithm) :
31 MSSOTLPolicy("Congestion", desirabilityAlgorithm) {
33}
34
36 MSSOTLPolicyDesirability* desirabilityAlgorithm,
37 const Parameterised::Map& parameters) :
38 MSSOTLPolicy("Congestion", desirabilityAlgorithm, parameters) {
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
65bool 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 GUI.h:36
The definition of a single phase of a tls logic.
SUMOTime minDuration
The minimum duration of the phase.
bool isDecisional() const
bool canRelease(SUMOTime elapsed, bool thresholdPassed, bool pushButtonPressed, const MSPhaseDefinition *stage, int vehicleCount)
MSSOTLCongestionPolicy(const Parameterised::Map &parameters)
int decideNextPhase(SUMOTime elapsed, const MSPhaseDefinition *stage, int currentPhaseIndex, int phaseMaxCTS, bool thresholdPassed, bool pushButtonPressed, int vehicleCount)
This class determines the desirability algorithm of a MSSOTLPolicy when used in combination with a hi...
void setKeyPrefix(std::string val)
Class for a low-level policy.
MSSOTLPolicyDesirability * getDesirabilityAlgorithm()
std::map< std::string, std::string > Map
parameters map