SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MSSimpleTrafficLightLogic Class Reference

A fixed traffic light logic. More...

#include <MSSimpleTrafficLightLogic.h>

Inheritance diagram for MSSimpleTrafficLightLogic:
MSTrafficLightLogic MSActuatedTrafficLightLogic MSAgentbasedTrafficLightLogic

Public Types

Structure definitions
typedef std::vector
< MSPhaseDefinition * > 
Phases
 Definition of a list of phases, being the junction logic. More...
 
typedef std::vector< MSLink * > LinkVector
 Definition of the list of links that participate in this tl-light. More...
 
typedef std::vector< LinkVectorLinkVectorVector
 Definition of a list that holds lists of links that do have the same attribute. More...
 
typedef std::vector< MSLane * > LaneVector
 Definition of the list of links that participate in this tl-light. More...
 
typedef std::vector< LaneVectorLaneVectorVector
 Definition of a list that holds lists of links that do have the same attribute. More...
 

Public Member Functions

virtual void init (NLDetectorBuilder &nb)
 Initialises the tls with information about incoming lanes. More...
 
 MSSimpleTrafficLightLogic (MSTLLogicControl &tlcontrol, const std::string &id, const std::string &subid, const Phases &phases, unsigned int step, SUMOTime delay)
 Constructor. More...
 
 ~MSSimpleTrafficLightLogic ()
 Destructor. More...
 
Switching and setting current rows
SUMOTime trySwitch (bool isActive)
 Switches to the next phase. More...
 
Static Information Retrieval
unsigned int getPhaseNumber () const
 Returns the number of phases. More...
 
const PhasesgetPhases () const
 Returns the phases of this tls program. More...
 
PhasesgetPhases ()
 Returns the phases of this tls program. More...
 
const MSPhaseDefinitiongetPhase (unsigned int givenstep) const
 Returns the definition of the phase from the given position within the plan. More...
 
Dynamic Information Retrieval
unsigned int getCurrentPhaseIndex () const
 Returns the current index within the program. More...
 
const MSPhaseDefinitiongetCurrentPhaseDef () const
 Returns the definition of the current phase. More...
 
Conversion between time and phase
SUMOTime getPhaseIndexAtTime (SUMOTime simStep) const
 Returns the index of the logic at the given simulation step. More...
 
SUMOTime getOffsetFromIndex (unsigned int index) const
 Returns the position (start of a phase during a cycle) from of a given step. More...
 
unsigned int getIndexFromOffset (SUMOTime offset) const
 Returns the step (the phasenumber) of a given position of the cycle. More...
 
Changing phases and phase durations
void changeStepAndDuration (MSTLLogicControl &tlcontrol, SUMOTime simStep, unsigned int step, SUMOTime stepDuration)
 Changes the current phase and her duration. More...
 
void setPhases (const Phases &phases, unsigned int index)
 Replaces the phases and set the phase index. More...
 
Handling of controlled links
void addLink (MSLink *link, MSLane *lane, unsigned int pos)
 Adds a link on building. More...
 
virtual void adaptLinkInformationFrom (const MSTrafficLightLogic &logic)
 Applies information about controlled links and lanes from the given logic. More...
 
std::map< MSLink *, LinkStatecollectLinkStates () const
 Returns the (uncontrolled) states of the controlled links. More...
 
void resetLinkStates (const std::map< MSLink *, LinkState > &vals) const
 Resets the states of controlled links. More...
 
Switching and setting current rows
bool setTrafficLightSignals (SUMOTime t) const
 Applies the current signal states to controlled links. More...
 
Static Information Retrieval
const std::string & getID () const
 Returns this tl-logic's id. More...
 
const std::string & getProgramID () const
 Returns this tl-logic's id. More...
 
const LaneVectorVectorgetLanes () const
 Returns the list of lists of all lanes controlled by this tls. More...
 
const LaneVectorgetLanesAt (unsigned int i) const
 Returns the list of lanes that are controlled by the signals at the given position. More...
 
const LinkVectorVectorgetLinks () const
 Returns the list of lists of all affected links. More...
 
const LinkVectorgetLinksAt (unsigned int i) const
 Returns the list of links that are controlled by the signals at the given position. More...
 
int getLinkIndex (const MSLink *const link) const
 Returns the index of the given link. More...
 
Dynamic Information Retrieval
SUMOTime getDefaultCycleTime () const
 Returns the cycle time (in ms) More...
 
SUMOTime getNextSwitchTime () const
 Returns the assumed next switch time. More...
 
Changing phases and phase durations
void addOverridingDuration (SUMOTime duration)
 Changes the duration of the next phase. More...
 
void setCurrentDurationIncrement (SUMOTime delay)
 Delays current phase by the given delay. More...
 
Algorithm parameter handling
void setParameter (const std::map< std::string, std::string > &params)
 Inserts read parameter. More...
 
std::string getParameterValue (const std::string &key) const
 Returns a named parameter. More...
 

Protected Attributes

SUMOTime myCurrentDurationIncrement
 A value for enlarge the current duration. More...
 
SUMOTime myDefaultCycleTime
 The cycle time (without changes) More...
 
std::string myID
 The id of the logic. More...
 
LaneVectorVector myLanes
 The list of links which do participate in this traffic light. More...
 
LinkVectorVector myLinks
 The list of links which do participate in this traffic light. More...
 
std::vector< SUMOTimemyOverridingTimes
 A list of duration overrides. More...
 
std::map< std::string,
std::string > 
myParameter
 Given parameter. More...
 
Phases myPhases
 The list of phases this logic uses. More...
 
std::string myProgramID
 
unsigned int myStep
 The current step. More...
 
SwitchCommandmySwitchCommand
 The current switch command. More...
 

Private Member Functions

void deletePhases ()
 frees memory responsibilities More...
 

Detailed Description

A fixed traffic light logic.

The implementation of a simple traffic light which only switches between it's phases and sets the lights to red in between. Some functions are called with an information about the current step. This is needed as a single logic may be used by many junctions and so the current step is stored within them, not within the logic.

Definition at line 59 of file MSSimpleTrafficLightLogic.h.

Member Typedef Documentation

typedef std::vector<MSLane*> MSTrafficLightLogic::LaneVector
inherited

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
inherited

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
inherited

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
inherited

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
inherited

Definition of a list of phases, being the junction logic.

Definition at line 68 of file MSTrafficLightLogic.h.

Constructor & Destructor Documentation

MSSimpleTrafficLightLogic::MSSimpleTrafficLightLogic ( MSTLLogicControl tlcontrol,
const std::string &  id,
const std::string &  subid,
const Phases phases,
unsigned int  step,
SUMOTime  delay 
)

Constructor.

Parameters
[in]tlcontrolThe tls control responsible for this tls
[in]idThis tls' id
[in]subidThis tls' sub-id (program id)
[in]phasesDefinitions of the phases
[in]stepThe initial phase index
[in]delayThe time to wait before the first switch

Definition at line 52 of file MSSimpleTrafficLightLogic.cpp.

References MSTrafficLightLogic::myDefaultCycleTime, and myPhases.

MSSimpleTrafficLightLogic::~MSSimpleTrafficLightLogic ( )

Destructor.

Definition at line 63 of file MSSimpleTrafficLightLogic.cpp.

References deletePhases().

Member Function Documentation

void MSTrafficLightLogic::adaptLinkInformationFrom ( const MSTrafficLightLogic logic)
virtualinherited

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.

Parameters
[in]logicThe logic to use the information about controlled links/lanes from

Reimplemented in MSOffTrafficLightLogic.

Definition at line 145 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::myLanes, and MSTrafficLightLogic::myLinks.

Referenced by MSOffTrafficLightLogic::adaptLinkInformationFrom(), and MSTLLogicControl::TLSLogicVariants::addLogic().

void MSTrafficLightLogic::addLink ( MSLink link,
MSLane lane,
unsigned int  pos 
)
inherited

Adds a link on building.

Parameters
[in]linkThe controlled link
[in]laneThe lane this link starts at
[in]posThe link's index (signal group) within this program

Definition at line 127 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::getCurrentPhaseDef(), MSNet::getInstance(), MSTrafficLightLogic::myLanes, MSTrafficLightLogic::myLinks, and MSLink::setTLState().

void MSTrafficLightLogic::addOverridingDuration ( SUMOTime  duration)
inherited

Changes the duration of the next phase.

Parameters
[in]durationThe new duration

Definition at line 218 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::myOverridingTimes.

void MSSimpleTrafficLightLogic::changeStepAndDuration ( MSTLLogicControl tlcontrol,
SUMOTime  simStep,
unsigned int  step,
SUMOTime  stepDuration 
)
virtual

Changes the current phase and her duration.

Parameters
[in]tlcontrolThe responsible traffic lights control
[in]simStepThe current simulation step
[in]stepIndex of the phase to use
[in]stepDurationThe left duration of the phase
See Also
MSTrafficLightLogic::changeStepAndDuration

Implements MSTrafficLightLogic.

Definition at line 191 of file MSSimpleTrafficLightLogic.cpp.

References MSEventControl::ADAPT_AFTER_EXECUTION, MSEventControl::addEvent(), MSTrafficLightLogic::SwitchCommand::deschedule(), MSNet::getBeginOfTimestepEvents(), MSNet::getInstance(), myStep, and MSTrafficLightLogic::mySwitchCommand.

Referenced by GUIViewTraffic::onGamingClick().

std::map< MSLink *, LinkState > MSTrafficLightLogic::collectLinkStates ( ) const
inherited

Returns the (uncontrolled) states of the controlled links.

Returns
The controlled link's states

Definition at line 152 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::myLinks.

void MSSimpleTrafficLightLogic::deletePhases ( )
private

frees memory responsibilities

Definition at line 212 of file MSSimpleTrafficLightLogic.cpp.

References myPhases.

Referenced by setPhases(), and ~MSSimpleTrafficLightLogic().

const MSPhaseDefinition & MSSimpleTrafficLightLogic::getCurrentPhaseDef ( ) const
virtual
unsigned int MSSimpleTrafficLightLogic::getCurrentPhaseIndex ( ) const
virtual

Returns the current index within the program.

Returns
The index of the current phase within the tls
See Also
MSTrafficLightLogic::getCurrentPhaseIndex

Implements MSTrafficLightLogic.

Definition at line 127 of file MSSimpleTrafficLightLogic.cpp.

References myStep.

SUMOTime MSTrafficLightLogic::getDefaultCycleTime ( ) const
inlineinherited

Returns the cycle time (in ms)

Returns
The (maybe changing) cycle time of this tls

Definition at line 263 of file MSTrafficLightLogic.h.

References MSTrafficLightLogic::myDefaultCycleTime.

Referenced by MSTLLogicControl::WAUTSwitchProcedure::isPosAtGSP().

unsigned int MSSimpleTrafficLightLogic::getIndexFromOffset ( SUMOTime  offset) const
virtual

Returns the step (the phasenumber) of a given position of the cycle.

Parameters
[in]offsetThe offset (time) for which the according phase shall be returned
Returns
The according phase
See Also
MSTrafficLightLogic::getIndexFromOffset

Implements MSTrafficLightLogic.

Definition at line 169 of file MSSimpleTrafficLightLogic.cpp.

References MSPhaseDefinition::duration, getPhase(), MSTrafficLightLogic::myDefaultCycleTime, and myPhases.

const LaneVectorVector& MSTrafficLightLogic::getLanes ( ) const
inlineinherited

Returns the list of lists of all lanes controlled by this tls.

Returns
All lanes controlled by this tls, sorted by the signal index

Definition at line 186 of file MSTrafficLightLogic.h.

References MSTrafficLightLogic::myLanes.

Referenced by GUITrafficLightLogicWrapper::getCenteringBoundary(), TraCIServerAPI_TLS::processGet(), and MSFullExport::writeTLS().

const LaneVector& MSTrafficLightLogic::getLanesAt ( unsigned int  i) const
inlineinherited

Returns the list of lanes that are controlled by the signals at the given position.

Parameters
[in]iThe index of the signal
Returns
The lanes controlled by the signal at the given index

Definition at line 195 of file MSTrafficLightLogic.h.

References MSTrafficLightLogic::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
inherited

Returns the index of the given link.

Parameters
[in]linkThe link to retrieve the index for
Returns
The index of the given link (-1 if it is not controlled by this tls)

Definition at line 194 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::myLinks.

Referenced by GUITrafficLightLogicWrapper::getLinkIndex().

const LinkVectorVector& MSTrafficLightLogic::getLinks ( ) const
inlineinherited
const LinkVector& MSTrafficLightLogic::getLinksAt ( unsigned int  i) const
inlineinherited

Returns the list of links that are controlled by the signals at the given position.

Parameters
[in]iThe index of the signal
Returns
The links controlled by the signal at the given index

Definition at line 212 of file MSTrafficLightLogic.h.

References MSTrafficLightLogic::myLinks.

SUMOTime MSTrafficLightLogic::getNextSwitchTime ( ) const
inherited

Returns the assumed next switch time.

The time may change in case of adaptive/actuated traffic lights.

Returns
The assumed next switch time (simulation time)

Definition at line 211 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::SwitchCommand::getNextSwitchTime(), and MSTrafficLightLogic::mySwitchCommand.

Referenced by MSTLLogicControl::WAUTSwitchProcedure::isPosAtGSP(), and TraCIServerAPI_TLS::processGet().

SUMOTime MSSimpleTrafficLightLogic::getOffsetFromIndex ( unsigned int  index) const
virtual

Returns the position (start of a phase during a cycle) from of a given step.

Parameters
[in]indexThe index of the phase to return the begin of
Returns
The begin time of the phase
See Also
MSTrafficLightLogic::getOffsetFromIndex

Implements MSTrafficLightLogic.

Definition at line 155 of file MSSimpleTrafficLightLogic.cpp.

References MSPhaseDefinition::duration, getPhase(), and myPhases.

std::string MSTrafficLightLogic::getParameterValue ( const std::string &  key) const
inherited

Returns a named parameter.

Parameters
[in]keyThe name of the parameter
Returns
The value of the parameter, "" if the parameter is not known

Definition at line 239 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::myParameter.

Referenced by MSTLLogicControl::WAUTSwitchProcedure::getGSPValue(), MSTLLogicControl::WAUTSwitchProcedure_Stretch::getStretchAreaNo(), and MSTLLogicControl::WAUTSwitchProcedure_Stretch::getStretchBereichDef().

const MSPhaseDefinition & MSSimpleTrafficLightLogic::getPhase ( unsigned int  givenstep) const
virtual

Returns the definition of the phase from the given position within the plan.

Parameters
[in]givenstepThe index of the phase within the plan
Returns
The definition of the phase at the given position
See Also
MSTrafficLightLogic::getPhase

Implements MSTrafficLightLogic.

Definition at line 119 of file MSSimpleTrafficLightLogic.cpp.

References myPhases.

Referenced by getIndexFromOffset(), getOffsetFromIndex(), getPhaseIndexAtTime(), and GUIViewTraffic::onGamingClick().

SUMOTime MSSimpleTrafficLightLogic::getPhaseIndexAtTime ( SUMOTime  simStep) const
virtual

Returns the index of the logic at the given simulation step.

Returns
The (estimated) index of the tls at the given simulation time step
See Also
MSTrafficLightLogic::getPhaseIndexAtTime

Implements MSTrafficLightLogic.

Definition at line 140 of file MSSimpleTrafficLightLogic.cpp.

References MSPhaseDefinition::duration, getPhase(), MSTrafficLightLogic::myDefaultCycleTime, MSPhaseDefinition::myLastSwitch, and myStep.

unsigned int MSSimpleTrafficLightLogic::getPhaseNumber ( ) const
virtual

Returns the number of phases.

Returns
The number of this tls program's phases
See Also
MSTrafficLightLogic::getPhaseNumber

Implements MSTrafficLightLogic.

Definition at line 101 of file MSSimpleTrafficLightLogic.cpp.

References myPhases.

const MSSimpleTrafficLightLogic::Phases & MSSimpleTrafficLightLogic::getPhases ( ) const
virtual

Returns the phases of this tls program.

Returns
The phases of this tls program
See Also
MSTrafficLightLogic::getPhases

Implements MSTrafficLightLogic.

Definition at line 107 of file MSSimpleTrafficLightLogic.cpp.

References myPhases.

MSSimpleTrafficLightLogic::Phases & MSSimpleTrafficLightLogic::getPhases ( )

Returns the phases of this tls program.

Returns
The phases of this tls program
Todo:
Recheck!

Definition at line 113 of file MSSimpleTrafficLightLogic.cpp.

References myPhases.

const std::string& MSTrafficLightLogic::getProgramID ( ) const
inlineinherited
void MSTrafficLightLogic::init ( NLDetectorBuilder nb)
virtualinherited

Initialises the tls with information about incoming lanes.

Parameters
[in]nbThe detector builder
[in]edgeContinuationsInformation about edge predecessors/successors
Exceptions
ProcessErrorIf something fails on initialisation

Reimplemented in MSAgentbasedTrafficLightLogic, MSActuatedTrafficLightLogic, and MSOffTrafficLightLogic.

Definition at line 115 of file MSTrafficLightLogic.cpp.

Referenced by NLJunctionControlBuilder::closeTrafficLightLogic().

void MSTrafficLightLogic::resetLinkStates ( const std::map< MSLink *, LinkState > &  vals) const
inherited

Resets the states of controlled links.

Parameters
[in]valsThe state of controlled links to use

Definition at line 181 of file MSTrafficLightLogic.cpp.

References MSNet::getCurrentTimeStep(), MSNet::getInstance(), and MSTrafficLightLogic::myLinks.

void MSTrafficLightLogic::setCurrentDurationIncrement ( SUMOTime  delay)
inherited

Delays current phase by the given delay.

Parameters
[in]delayThe time by which the current phase shall be delayed

Definition at line 224 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::myCurrentDurationIncrement.

void MSTrafficLightLogic::setParameter ( const std::map< std::string, std::string > &  params)
inherited

Inserts read parameter.

Parameters
[in]paramsThe parameter to use

Definition at line 233 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::myParameter.

Referenced by NLJunctionControlBuilder::closeTrafficLightLogic().

void MSSimpleTrafficLightLogic::setPhases ( const Phases phases,
unsigned int  index 
)

Replaces the phases and set the phase index.

Definition at line 203 of file MSSimpleTrafficLightLogic.cpp.

References deletePhases(), myPhases, and myStep.

bool MSTrafficLightLogic::setTrafficLightSignals ( SUMOTime  t) const
inherited

Applies the current signal states to controlled links.

Parameters
[in]tThe current time
Returns
Always true
See Also
LinkState
MSLink::setTLState

Definition at line 165 of file MSTrafficLightLogic.cpp.

References MSTrafficLightLogic::getCurrentPhaseDef(), MSPhaseDefinition::getState(), and MSTrafficLightLogic::myLinks.

Referenced by MSTLLogicControl::TLSLogicVariants::addLogic(), and TraCIServerAPI_TLS::processSet().

SUMOTime MSSimpleTrafficLightLogic::trySwitch ( bool  isActive)
virtual

Switches to the next phase.

Parameters
[in]isActiveWhether this program is the currently used one
Returns
The time of the next switch
See Also
MSTrafficLightLogic::trySwitch

Implements MSTrafficLightLogic.

Definition at line 70 of file MSSimpleTrafficLightLogic.cpp.

References MSNet::getCurrentTimeStep(), MSNet::getInstance(), MSTrafficLightLogic::myCurrentDurationIncrement, MSTrafficLightLogic::myOverridingTimes, myPhases, and myStep.

Field Documentation

SUMOTime MSTrafficLightLogic::myCurrentDurationIncrement
protectedinherited

A value for enlarge the current duration.

Definition at line 427 of file MSTrafficLightLogic.h.

Referenced by MSTrafficLightLogic::setCurrentDurationIncrement(), and trySwitch().

SUMOTime MSTrafficLightLogic::myDefaultCycleTime
protectedinherited
std::string MSTrafficLightLogic::myID
protectedinherited
LaneVectorVector MSTrafficLightLogic::myLanes
protectedinherited
std::vector<SUMOTime> MSTrafficLightLogic::myOverridingTimes
protectedinherited

A list of duration overrides.

Definition at line 424 of file MSTrafficLightLogic.h.

Referenced by MSTrafficLightLogic::addOverridingDuration(), and trySwitch().

std::map<std::string, std::string> MSTrafficLightLogic::myParameter
protectedinherited
std::string MSTrafficLightLogic::myProgramID
protectedinherited
SwitchCommand* MSTrafficLightLogic::mySwitchCommand
protectedinherited

The documentation for this class was generated from the following files: