SUMO - Simulation of Urban MObility
|
The parent class for traffic light logics. More...
#include <MSTrafficLightLogic.h>
Data Structures | |
class | SwitchCommand |
Class realising the switch between the traffic light phases. More... | |
Public Types | |
Structure definitions | |
typedef std::vector < MSPhaseDefinition * > | Phases |
Definition of a list of phases, being the junction logic. | |
typedef std::vector< MSLink * > | LinkVector |
Definition of the list of links that participate in this tl-light. | |
typedef std::vector< LinkVector > | LinkVectorVector |
Definition of a list that holds lists of links that do have the same attribute. | |
typedef std::vector< MSLane * > | LaneVector |
Definition of the list of links that participate in this tl-light. | |
typedef std::vector< LaneVector > | LaneVectorVector |
Definition of a list that holds lists of links that do have the same attribute. | |
Public Member Functions | |
virtual void | init (NLDetectorBuilder &nb) |
Initialises the tls with information about incoming lanes. | |
MSTrafficLightLogic (MSTLLogicControl &tlcontrol, const std::string &id, const std::string &programID, SUMOTime delay) | |
Constructor. | |
virtual | ~MSTrafficLightLogic () |
Destructor. | |
Handling of controlled links | |
void | addLink (MSLink *link, MSLane *lane, unsigned int pos) |
Adds a link on building. | |
virtual void | adaptLinkInformationFrom (const MSTrafficLightLogic &logic) |
Applies information about controlled links and lanes from the given logic. | |
std::map< MSLink *, LinkState > | collectLinkStates () const |
Returns the (uncontrolled) states of the controlled links. | |
void | resetLinkStates (const std::map< MSLink *, LinkState > &vals) const |
Resets the states of controlled links. | |
Switching and setting current rows | |
virtual SUMOTime | trySwitch (bool isActive)=0 |
Switches to the next phase. | |
bool | setTrafficLightSignals (SUMOTime t) const |
Applies the current signal states to controlled links. | |
Static Information Retrieval | |
const std::string & | getID () const |
Returns this tl-logic's id. | |
const std::string & | getProgramID () const |
Returns this tl-logic's id. | |
const LaneVectorVector & | getLanes () const |
Returns the list of lists of all lanes controlled by this tls. | |
const LaneVector & | getLanesAt (unsigned int i) const |
Returns the list of lanes that are controlled by the signals at the given position. | |
const LinkVectorVector & | getLinks () const |
Returns the list of lists of all affected links. | |
const LinkVector & | getLinksAt (unsigned int i) const |
Returns the list of links that are controlled by the signals at the given position. | |
int | getLinkIndex (const MSLink *const link) const |
Returns the index of the given link. | |
virtual unsigned int | getPhaseNumber () const =0 |
Returns the number of phases. | |
virtual const Phases & | getPhases () const =0 |
Returns the phases of this tls program. | |
virtual const MSPhaseDefinition & | getPhase (unsigned int givenstep) const =0 |
Returns the definition of the phase from the given position within the plan. | |
Dynamic Information Retrieval | |
virtual unsigned int | getCurrentPhaseIndex () const =0 |
Returns the current index within the program. | |
virtual const MSPhaseDefinition & | getCurrentPhaseDef () const =0 |
Returns the definition of the current phase. | |
SUMOTime | getDefaultCycleTime () const |
Returns the cycle time (in ms) | |
SUMOTime | getNextSwitchTime () const |
Returns the assumed next switch time. | |
Conversion between time and phase | |
virtual SUMOTime | getPhaseIndexAtTime (SUMOTime simStep) const =0 |
Returns the index of the logic at the given simulation step. | |
virtual SUMOTime | getOffsetFromIndex (unsigned int index) const =0 |
Returns the position (start of a phase during a cycle) from of a given step. | |
virtual unsigned int | getIndexFromOffset (SUMOTime offset) const =0 |
Returns the step (the phasenumber) of a given position of the cycle. | |
Changing phases and phase durations | |
void | addOverridingDuration (SUMOTime duration) |
Changes the duration of the next phase. | |
void | setCurrentDurationIncrement (SUMOTime delay) |
Delays current phase by the given delay. | |
virtual void | changeStepAndDuration (MSTLLogicControl &tlcontrol, SUMOTime simStep, unsigned int step, SUMOTime stepDuration)=0 |
Changes the current phase and her duration. | |
Algorithm parameter handling | |
void | setParameter (const std::map< std::string, std::string > ¶ms) |
Inserts read parameter. | |
std::string | getParameterValue (const std::string &key) const |
Returns a named parameter. | |
Protected Attributes | |
SUMOTime | myCurrentDurationIncrement |
A value for enlarge the current duration. | |
SUMOTime | myDefaultCycleTime |
The cycle time (without changes) | |
std::string | myID |
The id of the logic. | |
LaneVectorVector | myLanes |
The list of links which do participate in this traffic light. | |
LinkVectorVector | myLinks |
The list of links which do participate in this traffic light. | |
std::vector< SUMOTime > | myOverridingTimes |
A list of duration overrides. | |
std::map< std::string, std::string > | myParameter |
Given parameter. | |
std::string | myProgramID |
SwitchCommand * | mySwitchCommand |
The current switch command. | |
Private Member Functions | |
MSTrafficLightLogic (const MSTrafficLightLogic &s) | |
invalidated copy constructor | |
MSTrafficLightLogic & | operator= (const MSTrafficLightLogic &s) |
invalidated assignment operator |
The parent class for traffic light logics.
Definition at line 62 of file MSTrafficLightLogic.h.
typedef std::vector<MSLane*> MSTrafficLightLogic::LaneVector |
Definition of the list of links that participate in this tl-light.
Definition at line 77 of file MSTrafficLightLogic.h.
typedef std::vector<LaneVector> MSTrafficLightLogic::LaneVectorVector |
Definition of a list that holds lists of links that do have the same attribute.
Definition at line 80 of file MSTrafficLightLogic.h.
typedef std::vector<MSLink*> MSTrafficLightLogic::LinkVector |
Definition of the list of links that participate in this tl-light.
Definition at line 71 of file MSTrafficLightLogic.h.
typedef std::vector<LinkVector> MSTrafficLightLogic::LinkVectorVector |
Definition of a list that holds lists of links that do have the same attribute.
Definition at line 74 of file MSTrafficLightLogic.h.
typedef std::vector<MSPhaseDefinition*> MSTrafficLightLogic::Phases |
Definition of a list of phases, being the junction logic.
Definition at line 68 of file MSTrafficLightLogic.h.
MSTrafficLightLogic::MSTrafficLightLogic | ( | MSTLLogicControl & | tlcontrol, |
const std::string & | id, | ||
const std::string & | programID, | ||
SUMOTime | delay | ||
) |
Constructor.
[in] | tlcontrol | The tls control responsible for this tls |
[in] | id | This tls' id |
[in] | programID | This tls' sub-id (program id) |
[in] | delay | The time to wait before the first switch |
Definition at line 102 of file MSTrafficLightLogic.cpp.
References MSEventControl::addEvent(), MSNet::getBeginOfTimestepEvents(), MSNet::getInstance(), mySwitchCommand, and MSEventControl::NO_CHANGE.
MSTrafficLightLogic::~MSTrafficLightLogic | ( | ) | [virtual] |
Destructor.
Definition at line 118 of file MSTrafficLightLogic.cpp.
References MSTrafficLightLogic::SwitchCommand::deschedule(), and mySwitchCommand.
MSTrafficLightLogic::MSTrafficLightLogic | ( | const MSTrafficLightLogic & | s | ) | [private] |
invalidated copy constructor
void MSTrafficLightLogic::adaptLinkInformationFrom | ( | const MSTrafficLightLogic & | logic | ) | [virtual] |
Applies information about controlled links and lanes from the given logic.
If we load a logic after the network has been loaded, we do not get the information about controlled links afterwards. We have to copy them from a previously loaded logic.
[in] | logic | The logic to use the information about controlled links/lanes from |
Reimplemented in MSOffTrafficLightLogic.
Definition at line 143 of file MSTrafficLightLogic.cpp.
References myLanes, and myLinks.
Referenced by MSTLLogicControl::TLSLogicVariants::addLogic().
void MSTrafficLightLogic::addLink | ( | MSLink * | link, |
MSLane * | lane, | ||
unsigned int | pos | ||
) |
Adds a link on building.
[in] | link | The controlled link |
[in] | lane | The lane this link starts at |
[in] | pos | The link's index (signal group) within this program |
Definition at line 125 of file MSTrafficLightLogic.cpp.
References getCurrentPhaseDef(), MSNet::getInstance(), myLanes, myLinks, and MSLink::setTLState().
void MSTrafficLightLogic::addOverridingDuration | ( | SUMOTime | duration | ) |
Changes the duration of the next phase.
[in] | duration | The new duration |
Definition at line 216 of file MSTrafficLightLogic.cpp.
References myOverridingTimes.
virtual void MSTrafficLightLogic::changeStepAndDuration | ( | MSTLLogicControl & | tlcontrol, |
SUMOTime | simStep, | ||
unsigned int | step, | ||
SUMOTime | stepDuration | ||
) | [pure virtual] |
Changes the current phase and her duration.
[in] | tlcontrol | The responsible traffic lights control |
[in] | simStep | The current simulation step |
[in] | step | Index of the phase to use |
[in] | stepDuration | The left duration of the phase |
Implemented in MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
Referenced by TraCIServerAPI_TLS::processSet(), and MSTLLogicControl::WAUTSwitchProcedure::switchToPos().
std::map< MSLink *, LinkState > MSTrafficLightLogic::collectLinkStates | ( | ) | const |
Returns the (uncontrolled) states of the controlled links.
Definition at line 150 of file MSTrafficLightLogic.cpp.
References myLinks.
virtual const MSPhaseDefinition& MSTrafficLightLogic::getCurrentPhaseDef | ( | ) | const [pure virtual] |
Returns the definition of the current phase.
Implemented in MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
Referenced by NLHandler::addConnection(), addLink(), GUITrafficLightLogicWrapper::drawGL(), Command_SaveTLSState::execute(), Command_SaveTLSSwitchStates::execute(), Command_SaveTLSSwitches::execute(), MSTLLogicControl::getPhaseDef(), MSTLLogicControl::WAUTSwitchProcedure::isPosAtGSP(), TraCIServerAPI_TLS::processGet(), and setTrafficLightSignals().
virtual unsigned int MSTrafficLightLogic::getCurrentPhaseIndex | ( | ) | const [pure virtual] |
Returns the current index within the program.
Implemented in MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
Referenced by GUITrafficLightLogicWrapper::drawGL(), Command_SaveTLSState::execute(), Command_SaveTLSSwitchStates::execute(), MSTLLogicControl::WAUTSwitchProcedure::isPosAtGSP(), TraCIServerAPI_TLS::processGet(), and TraCIServerAPI_TLS::processSet().
SUMOTime MSTrafficLightLogic::getDefaultCycleTime | ( | ) | const [inline] |
Returns the cycle time (in ms)
Definition at line 263 of file MSTrafficLightLogic.h.
References myDefaultCycleTime.
Referenced by MSTLLogicControl::WAUTSwitchProcedure::isPosAtGSP().
const std::string& MSTrafficLightLogic::getID | ( | ) | const [inline] |
Returns this tl-logic's id.
Definition at line 170 of file MSTrafficLightLogic.h.
References myID.
Referenced by MSTLLogicControl::TLSLogicVariants::addLogic(), GUITrafficLightLogicWrapper::begin2TrackPhases(), GUINet::createTLWrapper(), Command_SaveTLSState::execute(), Command_SaveTLSSwitchStates::execute(), Command_SaveTLSSwitches::execute(), GUITrafficLightLogicWrapper::getPopUpMenu(), GUITLLogicPhasesTrackerWindow::GUITLLogicPhasesTrackerWindow(), MSTLLogicControl::isActive(), GUIViewTraffic::onGamingClick(), and GUITrafficLightLogicWrapper::switchTLSLogic().
virtual unsigned int MSTrafficLightLogic::getIndexFromOffset | ( | SUMOTime | offset | ) | const [pure virtual] |
Returns the step (the phasenumber) of a given position of the cycle.
[in] | offset | The offset (time) for which the according phase shall be returned |
Implemented in MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
Referenced by MSTLLogicControl::WAUTSwitchProcedure::getDiffToStartOfPhase(), and MSTLLogicControl::WAUTSwitchProcedure::switchToPos().
const LaneVectorVector& MSTrafficLightLogic::getLanes | ( | ) | const [inline] |
Returns the list of lists of all lanes controlled by this tls.
Definition at line 186 of file MSTrafficLightLogic.h.
References myLanes.
Referenced by GUITrafficLightLogicWrapper::getCenteringBoundary(), and TraCIServerAPI_TLS::processGet().
const LaneVector& MSTrafficLightLogic::getLanesAt | ( | unsigned int | i | ) | const [inline] |
Returns the list of lanes that are controlled by the signals at the given position.
[in] | i | The index of the signal |
Definition at line 195 of file MSTrafficLightLogic.h.
References myLanes.
Referenced by MSAgentbasedTrafficLightLogic::collectData(), GUITrafficLightLogicWrapper::drawGL(), MSActuatedTrafficLightLogic::duration(), Command_SaveTLSSwitches::execute(), MSActuatedTrafficLightLogic::gapControl(), and GUIViewTraffic::onGamingClick().
int MSTrafficLightLogic::getLinkIndex | ( | const MSLink *const | link | ) | const |
Returns the index of the given link.
[in] | link | The link to retrieve the index for |
Definition at line 192 of file MSTrafficLightLogic.cpp.
References myLinks.
Referenced by GUITrafficLightLogicWrapper::getLinkIndex().
const LinkVectorVector& MSTrafficLightLogic::getLinks | ( | ) | const [inline] |
Returns the list of lists of all affected links.
Definition at line 203 of file MSTrafficLightLogic.h.
References myLinks.
Referenced by MSTLLogicControl::TLSLogicVariants::addLogic(), GUINet::createTLWrapper(), GUITLLogicPhasesTrackerWindow::drawValues(), Command_SaveTLSSwitches::execute(), GUITLLogicPhasesTrackerWindow::GUITLLogicPhasesTrackerWindow(), TraCIServerAPI_TLS::processGet(), and MSOffTrafficLightLogic::rebuildPhase().
const LinkVector& MSTrafficLightLogic::getLinksAt | ( | unsigned int | i | ) | const [inline] |
Returns the list of links that are controlled by the signals at the given position.
[in] | i | The index of the signal |
Definition at line 212 of file MSTrafficLightLogic.h.
References myLinks.
Returns the assumed next switch time.
The time may change in case of adaptive/actuated traffic lights.
Definition at line 209 of file MSTrafficLightLogic.cpp.
References MSTrafficLightLogic::SwitchCommand::getNextSwitchTime(), and mySwitchCommand.
Referenced by MSTLLogicControl::WAUTSwitchProcedure::isPosAtGSP(), and TraCIServerAPI_TLS::processGet().
virtual SUMOTime MSTrafficLightLogic::getOffsetFromIndex | ( | unsigned int | index | ) | const [pure virtual] |
Returns the position (start of a phase during a cycle) from of a given step.
[in] | index | The index of the phase to return the begin of |
Implemented in MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
Referenced by MSTLLogicControl::WAUTSwitchProcedure::getDiffToStartOfPhase(), and MSTLLogicControl::WAUTSwitchProcedure::isPosAtGSP().
std::string MSTrafficLightLogic::getParameterValue | ( | const std::string & | key | ) | const |
Returns a named parameter.
[in] | key | The name of the parameter |
Definition at line 237 of file MSTrafficLightLogic.cpp.
References myParameter.
Referenced by MSTLLogicControl::WAUTSwitchProcedure::getGSPValue(), MSTLLogicControl::WAUTSwitchProcedure_Stretch::getStretchAreaNo(), and MSTLLogicControl::WAUTSwitchProcedure_Stretch::getStretchBereichDef().
virtual const MSPhaseDefinition& MSTrafficLightLogic::getPhase | ( | unsigned int | givenstep | ) | const [pure virtual] |
Returns the definition of the phase from the given position within the plan.
[in] | givenstep | The index of the phase within the plan |
Implemented in MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
Referenced by MSTLLogicControl::TLSLogicVariants::addLogic(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_TLS::processSet(), and MSTLLogicControl::WAUTSwitchProcedure::switchToPos().
virtual SUMOTime MSTrafficLightLogic::getPhaseIndexAtTime | ( | SUMOTime | simStep | ) | const [pure virtual] |
Returns the index of the logic at the given simulation step.
Implemented in MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
virtual unsigned int MSTrafficLightLogic::getPhaseNumber | ( | ) | const [pure virtual] |
Returns the number of phases.
Implemented in MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
Referenced by TraCIServerAPI_TLS::processGet(), and TraCIServerAPI_TLS::processSet().
virtual const Phases& MSTrafficLightLogic::getPhases | ( | ) | const [pure virtual] |
Returns the phases of this tls program.
Implemented in MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
Referenced by GUITrafficLightLogicWrapper::drawGL().
const std::string& MSTrafficLightLogic::getProgramID | ( | ) | const [inline] |
Returns this tl-logic's id.
Definition at line 178 of file MSTrafficLightLogic.h.
References myProgramID.
Referenced by Command_SaveTLSState::execute(), Command_SaveTLSSwitchStates::execute(), Command_SaveTLSSwitches::execute(), GUITLLogicPhasesTrackerWindow::GUITLLogicPhasesTrackerWindow(), GUIViewTraffic::onGamingClick(), and TraCIServerAPI_TLS::processGet().
void MSTrafficLightLogic::init | ( | NLDetectorBuilder & | nb | ) | [virtual] |
Initialises the tls with information about incoming lanes.
[in] | nb | The detector builder |
[in] | edgeContinuations | Information about edge predecessors/successors |
ProcessError | If something fails on initialisation |
Reimplemented in MSAgentbasedTrafficLightLogic, MSActuatedTrafficLightLogic, and MSOffTrafficLightLogic.
Definition at line 114 of file MSTrafficLightLogic.cpp.
Referenced by NLJunctionControlBuilder::closeTrafficLightLogic().
MSTrafficLightLogic& MSTrafficLightLogic::operator= | ( | const MSTrafficLightLogic & | s | ) | [private] |
invalidated assignment operator
void MSTrafficLightLogic::resetLinkStates | ( | const std::map< MSLink *, LinkState > & | vals | ) | const |
Resets the states of controlled links.
[in] | vals | The state of controlled links to use |
Definition at line 179 of file MSTrafficLightLogic.cpp.
References MSNet::getCurrentTimeStep(), MSNet::getInstance(), and myLinks.
void MSTrafficLightLogic::setCurrentDurationIncrement | ( | SUMOTime | delay | ) |
Delays current phase by the given delay.
[in] | delay | The time by which the current phase shall be delayed |
Definition at line 222 of file MSTrafficLightLogic.cpp.
References myCurrentDurationIncrement.
void MSTrafficLightLogic::setParameter | ( | const std::map< std::string, std::string > & | params | ) |
Inserts read parameter.
[in] | params | The parameter to use |
Definition at line 231 of file MSTrafficLightLogic.cpp.
References myParameter.
Referenced by NLJunctionControlBuilder::closeTrafficLightLogic().
Applies the current signal states to controlled links.
[in] | t | The current time |
Definition at line 163 of file MSTrafficLightLogic.cpp.
References getCurrentPhaseDef(), MSPhaseDefinition::getState(), and myLinks.
Referenced by MSTLLogicControl::TLSLogicVariants::addLogic(), and TraCIServerAPI_TLS::processSet().
virtual SUMOTime MSTrafficLightLogic::trySwitch | ( | bool | isActive | ) | [pure virtual] |
Switches to the next phase.
[in] | isActive | Whether this program is the currently used one |
Implemented in MSAgentbasedTrafficLightLogic, MSActuatedTrafficLightLogic, MSOffTrafficLightLogic, and MSSimpleTrafficLightLogic.
A value for enlarge the current duration.
Definition at line 427 of file MSTrafficLightLogic.h.
Referenced by setCurrentDurationIncrement(), and MSSimpleTrafficLightLogic::trySwitch().
SUMOTime MSTrafficLightLogic::myDefaultCycleTime [protected] |
The cycle time (without changes)
Definition at line 433 of file MSTrafficLightLogic.h.
Referenced by getDefaultCycleTime(), MSSimpleTrafficLightLogic::getIndexFromOffset(), MSSimpleTrafficLightLogic::getPhaseIndexAtTime(), MSOffTrafficLightLogic::MSOffTrafficLightLogic(), and MSSimpleTrafficLightLogic::MSSimpleTrafficLightLogic().
std::string MSTrafficLightLogic::myID [protected] |
The id of the logic.
Definition at line 415 of file MSTrafficLightLogic.h.
Referenced by getID(), MSActuatedTrafficLightLogic::init(), and MSAgentbasedTrafficLightLogic::init().
LaneVectorVector MSTrafficLightLogic::myLanes [protected] |
The list of links which do participate in this traffic light.
Definition at line 421 of file MSTrafficLightLogic.h.
Referenced by adaptLinkInformationFrom(), addLink(), getLanes(), getLanesAt(), MSActuatedTrafficLightLogic::init(), and MSAgentbasedTrafficLightLogic::init().
LinkVectorVector MSTrafficLightLogic::myLinks [protected] |
The list of links which do participate in this traffic light.
Definition at line 418 of file MSTrafficLightLogic.h.
Referenced by adaptLinkInformationFrom(), addLink(), collectLinkStates(), getLinkIndex(), getLinks(), getLinksAt(), resetLinkStates(), and setTrafficLightSignals().
std::vector<SUMOTime> MSTrafficLightLogic::myOverridingTimes [protected] |
A list of duration overrides.
Definition at line 424 of file MSTrafficLightLogic.h.
Referenced by addOverridingDuration(), and MSSimpleTrafficLightLogic::trySwitch().
std::map<std::string, std::string> MSTrafficLightLogic::myParameter [protected] |
Given parameter.
Definition at line 412 of file MSTrafficLightLogic.h.
Referenced by getParameterValue(), MSActuatedTrafficLightLogic::init(), MSAgentbasedTrafficLightLogic::init(), and setParameter().
std::string MSTrafficLightLogic::myProgramID [protected] |
Definition at line 415 of file MSTrafficLightLogic.h.
Referenced by getProgramID(), MSActuatedTrafficLightLogic::init(), and MSAgentbasedTrafficLightLogic::init().
SwitchCommand* MSTrafficLightLogic::mySwitchCommand [protected] |
The current switch command.
Definition at line 430 of file MSTrafficLightLogic.h.
Referenced by MSSimpleTrafficLightLogic::changeStepAndDuration(), getNextSwitchTime(), MSTrafficLightLogic(), and ~MSTrafficLightLogic().