SUMO - Simulation of Urban MObility
MSLink Class Reference

#include <MSLink.h>

Collaboration diagram for MSLink:
Collaboration graph

Data Structures

struct  ApproachingVehicleInformation
 A structure holding the information about vehicles approaching a link. More...
 
struct  LinkLeader
 

Public Types

typedef std::vector< LinkLeaderLinkLeaders
 

Public Member Functions

void addBlockedLink (MSLink *link)
 
void addWalkingAreaFoe (const MSLane *lane)
 add walkingarea as foe More...
 
bool blockedAtTime (SUMOTime arrivalTime, SUMOTime leaveTime, double arrivalSpeed, double leaveSpeed, bool sameTargetLane, double impatience, double decel, SUMOTime waitingTime, std::vector< const SUMOVehicle *> *collectFoes=0, const SUMOVehicle *ego=0) const
 Returns the information whether this link is blocked Valid after the vehicles have set their requests. More...
 
bool fromInternalLane () const
 return whether the fromLane of this link is an internal lane More...
 
ApproachingVehicleInformation getApproaching (const SUMOVehicle *veh) const
 
const std::map< const SUMOVehicle *, ApproachingVehicleInformation, ComparatorIdLess > & getApproaching () const
 return all approaching vehicles More...
 
MSLinkgetCorrespondingExitLink () const
 returns the corresponding exit link for entryLinks to a junction. More...
 
LinkDirection getDirection () const
 Returns the direction the vehicle passing this link take. More...
 
const std::vector< const MSLane * > & getFoeLanes () const
 
const std::vector< MSLink * > & getFoeLinks () const
 
double getFoeVisibilityDistance () const
 Returns the distance on the approaching lane from which an approaching vehicle is able to see all relevant foes and may accelerate if the link is minor and no foe is approaching. More...
 
double getGreenFraction () const
 Returns the average proportion of green time to cycle time. More...
 
int getIndex () const
 Returns the respond index (for visualization) More...
 
const MSLanegetInternalLaneBefore () const
 return myInternalLaneBefore (always 0 when compiled without internal lanes) More...
 
double getInternalLengthsAfter () const
 Returns the cumulative length of all internal lanes after this link. More...
 
double getInternalLengthsBefore () const
 Returns the cumulative length of all internal lanes before this link. More...
 
MSJunctiongetJunction () const
 
MSLanegetLane () const
 Returns the connected lane. More...
 
const MSLanegetLaneBefore () const
 return the internalLaneBefore if it exists and the laneBefore otherwise More...
 
SUMOTime getLastStateChange () const
 
LinkLeaders getLeaderInfo (const MSVehicle *ego, double dist, std::vector< const MSPerson *> *collectBlockers=0, bool isShadowLink=false) const
 Returns all potential link leaders (vehicles on foeLanes) Valid during the planMove() phase. More...
 
SUMOTime getLeaveTime (const SUMOTime arrivalTime, const double arrivalSpeed, const double leaveSpeed, const double vehicleLength) const
 return the expected time at which the given vehicle will clear the link More...
 
double getLength () const
 Returns the length of this link. More...
 
double getLengthBeforeCrossing (const MSLane *foeLane) const
 Returns the internal length from the beginning of the link's internal lane before to the crossing with the given foe lane if applicable, if the lane is no foe lane to the link, INVALID_DOUBLE is returned. More...
 
double getLengthsBeforeCrossing (const MSLane *foeLane) const
 Returns the sum of the lengths along internal lanes following this link to the crossing with the given foe lane, if the lane is no foe lane to any of the internal lanes, INVALID_DOUBLE is returned. More...
 
const std::vector< std::pair< double, double > > & getLengthsBehindCrossing () const
 
SUMOTime getMesoTLSPenalty () const
 Returns the time penalty for passing a tls-controlled link (meso) More...
 
MSLinkgetParallelLink (int direction) const
 return the link that is parallel to this lane or 0 More...
 
LinkState getState () const
 Returns the current state of the link. More...
 
int getTLIndex () const
 Returns the TLS index. More...
 
const MSTrafficLightLogicgetTLLogic () const
 Returns the TLS index. More...
 
MSLanegetViaLane () const
 Returns the following inner lane. More...
 
MSLanegetViaLaneOrLane () const
 return the via lane if it exists and the lane otherwise More...
 
const MSLanegetWalkingAreaFoe ()
 get walkingarea as foe More...
 
double getZipperSpeed (const MSVehicle *ego, const double dist, double vSafe, SUMOTime arrivalTime, std::vector< const SUMOVehicle *> *collectFoes) const
 return the speed at which ego vehicle must approach the zipper link More...
 
bool hasApproachingFoe (SUMOTime arrivalTime, SUMOTime leaveTime, double speed, double decel) const
 Returns the information whether a vehicle is approaching on one of the link's foe streams. More...
 
bool hasFoes () const
 Returns whether this link belongs to a junction where more than one edge is incoming. More...
 
bool havePriority () const
 Returns whether this link is a major link. More...
 
bool haveRed () const
 Returns whether this link is blocked by a red (or redyellow) traffic light. More...
 
bool haveYellow () const
 
void initParallelLinks ()
 initialize parallel links (to be called after all links are loaded) More...
 
bool isBlockingAnyone () const
 
bool isCont () const
 
bool isExitLink () const
 return whether the fromLane of this link is an internal lane and toLane is a normal lane More...
 
bool isInternalJunctionLink () const
 return whether the fromLane and the toLane of this link are internal lanes More...
 
bool isLeader (const MSVehicle *ego, const MSVehicle *foe) const
 
bool isTLSControlled () const
 
bool keepClear () const
 whether the junction after this link must be kept clear More...
 
bool lastWasContMajor () const
 whether this is a link past an internal junction which currently has priority More...
 
 MSLink (MSLane *predLane, MSLane *succLane, MSLane *via, LinkDirection dir, LinkState state, double length, double foeVisibilityDistance, bool keepClear, MSTrafficLightLogic *logic, int tlLinkIdx)
 Constructor for simulation which uses internal lanes. More...
 
bool opened (SUMOTime arrivalTime, double arrivalSpeed, double leaveSpeed, double vehicleLength, double impatience, double decel, SUMOTime waitingTime, double posLat=0, std::vector< const SUMOVehicle *> *collectFoes=0, bool ignoreRed=false, const SUMOVehicle *ego=0) const
 Returns the information whether the link may be passed. More...
 
void passedJunction (const MSVehicle *vehicle) const
 erase vehicle from myLinkLeaders of this links junction More...
 
void removeApproaching (const SUMOVehicle *veh)
 removes the vehicle from myApproachingVehicles More...
 
void setApproaching (const SUMOVehicle *approaching, const SUMOTime arrivalTime, const double arrivalSpeed, const double leaveSpeed, const bool setRequest, const SUMOTime arrivalTimeBraking, const double arrivalSpeedBraking, const SUMOTime waitingTime, double dist)
 Sets the information about an approaching vehicle. More...
 
void setApproaching (const SUMOVehicle *approaching, ApproachingVehicleInformation ai)
 Sets the information about an approaching vehicle. More...
 
void setGreenFraction (const double fraction)
 Sets the green fraction for passing a tls-controlled link (meso) More...
 
void setMesoTLSPenalty (const SUMOTime penalty)
 Sets the time penalty for passing a tls-controlled link (meso) More...
 
void setRequestInformation (int index, bool hasFoes, bool isCont, const std::vector< MSLink *> &foeLinks, const std::vector< MSLane *> &foeLanes, MSLane *internalLaneBefore=0)
 Sets the request information. More...
 
void setTLState (LinkState state, SUMOTime t)
 Sets the current tl-state. More...
 
bool willHaveBlockedFoe () const
 
void writeApproaching (OutputDevice &od, const std::string fromLaneID) const
 write information about all approaching vehicles to the given output device More...
 
 ~MSLink ()
 Destructor. More...
 

Static Public Attributes

static const double ZIPPER_ADAPT_DIST
 

Private Member Functions

bool blockedByFoe (const SUMOVehicle *veh, const ApproachingVehicleInformation &avi, SUMOTime arrivalTime, SUMOTime leaveTime, double arrivalSpeed, double leaveSpeed, bool sameTargetLane, double impatience, double decel, SUMOTime waitingTime, const SUMOVehicle *ego) const
 
MSLinkcomputeParallelLink (int direction)
 
 MSLink (const MSLink &s)
 invalidated copy constructor More...
 
MSLinkoperator= (const MSLink &s)
 invalidated assignment operator More...
 

Static Private Member Functions

static bool couldBrakeForLeader (double followDist, double leaderDist, const MSVehicle *follow, const MSVehicle *leader)
 whether fllower could stay behind leader (possibly by braking) More...
 
static bool maybeOccupied (MSLane *lane)
 returns whether the given lane may still be occupied by a vehicle currently on it More...
 
static bool unsafeMergeSpeeds (double leaderSpeed, double followerSpeed, double leaderDecel, double followerDecel)
 return whether the given vehicles may NOT merge safely More...
 

Private Attributes

bool myAmCont
 
std::map< const SUMOVehicle *, ApproachingVehicleInformation, ComparatorIdLessmyApproachingVehicles
 
std::set< MSLink * > myBlockedFoeLinks
 
LinkDirection myDirection
 An abstract (hopefully human readable) definition of the link's direction. More...
 
std::vector< const MSLane * > myFoeLanes
 
std::vector< MSLink * > myFoeLinks
 
double myFoeVisibilityDistance
 distance from which an approaching vehicle is able to see all relevant foes and may accelerate if the link is minor and no foe is approaching. Defaults to 4.5m. More...
 
double myGreenFraction
 green fraction at tls for mesoscopic simulation More...
 
bool myHasFoes
 Whether any foe links exist. More...
 
int myIndex
 The position within this respond. More...
 
MSLane *const myInternalLane
 The following junction-internal lane if used. More...
 
const MSLanemyInternalLaneBefore
 
MSJunctionmyJunction
 the junction to which this link belongs More...
 
bool myKeepClear
 
MSLanemyLane
 The lane behind the junction approached by this link. More...
 
MSLanemyLaneBefore
 The lane approaching this link. More...
 
SUMOTime myLastStateChange
 The time of the last state change. More...
 
double myLength
 The length of the link. More...
 
std::vector< std::pair< double, double > > myLengthsBehindCrossing
 
const MSTrafficLightLogicmyLogic
 the controlling logic or 0 More...
 
SUMOTime myMesoTLSPenalty
 penalty time at tls for mesoscopic simulation More...
 
MSLinkmyParallelLeft
 
MSLinkmyParallelRight
 
LinkState myState
 The state of the link. More...
 
std::vector< MSLane * > mySublaneFoeLanes
 
std::vector< MSLink * > mySublaneFoeLinks
 
const int myTLIndex
 the traffic light index More...
 
const MSLanemyWalkingAreaFoe
 

Static Private Attributes

static const SUMOTime myLookaheadTime = TIME2STEPS(1)
 
static const SUMOTime myLookaheadTimeZipper = TIME2STEPS(4)
 

Detailed Description

Definition at line 76 of file MSLink.h.

Member Typedef Documentation

◆ LinkLeaders

typedef std::vector<LinkLeader> MSLink::LinkLeaders

Definition at line 94 of file MSLink.h.

Constructor & Destructor Documentation

◆ MSLink() [1/2]

MSLink::MSLink ( MSLane predLane,
MSLane succLane,
MSLane via,
LinkDirection  dir,
LinkState  state,
double  length,
double  foeVisibilityDistance,
bool  keepClear,
MSTrafficLightLogic logic,
int  tlLinkIdx 
)

Constructor for simulation which uses internal lanes.

Parameters
[in]succLaneThe lane approached by this link
[in]viaThe lane to use within the junction
[in]dirThe direction of this link
[in]stateThe state of this link
[in]lengthThe length of this link

Definition at line 71 of file MSLink.cpp.

◆ ~MSLink()

MSLink::~MSLink ( )

Destructor.

Definition at line 96 of file MSLink.cpp.

◆ MSLink() [2/2]

MSLink::MSLink ( const MSLink s)
private

invalidated copy constructor

Member Function Documentation

◆ addBlockedLink()

void MSLink::addBlockedLink ( MSLink link)

Definition at line 291 of file MSLink.cpp.

References myBlockedFoeLinks.

Referenced by getWalkingAreaFoe().

◆ addWalkingAreaFoe()

void MSLink::addWalkingAreaFoe ( const MSLane lane)
inline

add walkingarea as foe

Definition at line 175 of file MSLink.h.

References myWalkingAreaFoe.

Referenced by MSRightOfWayJunction::postloadInit().

◆ blockedAtTime()

bool MSLink::blockedAtTime ( SUMOTime  arrivalTime,
SUMOTime  leaveTime,
double  arrivalSpeed,
double  leaveSpeed,
bool  sameTargetLane,
double  impatience,
double  decel,
SUMOTime  waitingTime,
std::vector< const SUMOVehicle *> *  collectFoes = 0,
const SUMOVehicle ego = 0 
) const

Returns the information whether this link is blocked Valid after the vehicles have set their requests.

Parameters
[in]arrivalTimeThe arrivalTime of the vehicle who checks for an approaching foe
[in]leaveTimeThe leaveTime of the vehicle who checks for an approaching foe
[in]arrivalSpeedThe speed with which the checking vehicle plans to arrive at the link
[in]leaveSpeedThe speed with which the checking vehicle plans to leave the link
[in]sameTargetLaneWhether the link that calls this method has the same target lane as this link
[in]impatienceThe impatience of the checking vehicle
[in]decelThe maximum deceleration of the checking vehicle
[in]waitingTimeThe waiting time of the checking vehicle
[in]collectFoesIf a vector is passed the return value is always False, instead all blocking foes are collected and inserted into this vector
Returns
Whether this link is blocked
Note
Since this needs to be called without a SUMOVehicle (TraCI), we cannot simply pass the checking vehicle itself

Definition at line 426 of file MSLink.cpp.

References blockedByFoe(), gDebugFlag1, Named::getID(), SUMOVTypeParameter::getJMParam(), MSVehicleType::getParameter(), SUMOVehicle::getVehicleType(), getViaLaneOrLane(), myApproachingVehicles, RandHelper::rand(), SUMO_ATTR_JM_IGNORE_FOE_PROB, and SUMO_ATTR_JM_IGNORE_FOE_SPEED.

Referenced by getApproaching().

◆ blockedByFoe()

◆ computeParallelLink()

MSLink * MSLink::computeParallelLink ( int  direction)
private

◆ couldBrakeForLeader()

bool MSLink::couldBrakeForLeader ( double  followDist,
double  leaderDist,
const MSVehicle follow,
const MSVehicle leader 
)
staticprivate

whether fllower could stay behind leader (possibly by braking)

Definition at line 1091 of file MSLink.cpp.

References MSVehicle::getCarFollowModel(), MSCFModel::getMaxDecel(), and MSVehicle::getSpeed().

Referenced by getZipperSpeed(), and unsafeMergeSpeeds().

◆ fromInternalLane()

bool MSLink::fromInternalLane ( ) const

return whether the fromLane of this link is an internal lane

Definition at line 758 of file MSLink.cpp.

References isExitLink(), and isInternalJunctionLink().

Referenced by getLeaderInfo(), keepClear(), and setRequestInformation().

◆ getApproaching() [1/2]

MSLink::ApproachingVehicleInformation MSLink::getApproaching ( const SUMOVehicle veh) const

Definition at line 325 of file MSLink.cpp.

References myApproachingVehicles.

Referenced by MSRailSignal::getAppropriateState(), and getZipperSpeed().

◆ getApproaching() [2/2]

const std::map<const SUMOVehicle*, ApproachingVehicleInformation, ComparatorIdLess>& MSLink::getApproaching ( ) const
inline

return all approaching vehicles

Definition at line 207 of file MSLink.h.

References blockedAtTime(), myApproachingVehicles, and opened().

Referenced by getWalkingAreaFoe().

◆ getCorrespondingExitLink()

MSLink * MSLink::getCorrespondingExitLink ( ) const

returns the corresponding exit link for entryLinks to a junction.

Definition at line 741 of file MSLink.cpp.

References MSLane::getLinkCont(), getViaLane(), and myInternalLane.

Referenced by MSDevice_SSM::classifyEncounter(), and keepClear().

◆ getDirection()

LinkDirection MSLink::getDirection ( ) const

Returns the direction the vehicle passing this link take.

Returns
The direction of this link

Definition at line 568 of file MSLink.cpp.

References myDirection.

Referenced by MSLaneChanger::changeOpposite(), getLastStateChange(), libsumo::Lane::getLinks(), and MSVehicle::processLaneAdvances().

◆ getFoeLanes()

const std::vector<const MSLane*>& MSLink::getFoeLanes ( ) const
inline

Definition at line 490 of file MSLink.h.

References myFoeLanes.

Referenced by GUILane::debugDrawFoeIntersections(), and libsumo::Lane::getInternalFoes().

◆ getFoeLinks()

const std::vector<MSLink*>& MSLink::getFoeLinks ( ) const
inline

◆ getFoeVisibilityDistance()

double MSLink::getFoeVisibilityDistance ( ) const
inline

Returns the distance on the approaching lane from which an approaching vehicle is able to see all relevant foes and may accelerate if the link is minor and no foe is approaching.

Returns
The foe-visibility-distance

Definition at line 360 of file MSLink.h.

References myFoeVisibilityDistance.

Referenced by MSVehicle::passingMinor(), and MSVehicle::processLinkAproaches().

◆ getGreenFraction()

double MSLink::getGreenFraction ( ) const
inline

Returns the average proportion of green time to cycle time.

Definition at line 476 of file MSLink.h.

References myGreenFraction.

Referenced by MESegment::getTLSCapacity().

◆ getIndex()

int MSLink::getIndex ( ) const
inline

Returns the respond index (for visualization)

Returns
The respond index for this link

Definition at line 309 of file MSLink.h.

References myIndex.

Referenced by GUILane::drawLinkNo(), and getLeaderInfo().

◆ getInternalLaneBefore()

const MSLane * MSLink::getInternalLaneBefore ( ) const

return myInternalLaneBefore (always 0 when compiled without internal lanes)

Definition at line 1012 of file MSLink.cpp.

References myInternalLaneBefore.

Referenced by MSVehicle::checkLinkLeader(), MSDevice_SSM::classifyEncounter(), isExitLink(), isInternalJunctionLink(), and keepClear().

◆ getInternalLengthsAfter()

double MSLink::getInternalLengthsAfter ( ) const

Returns the cumulative length of all internal lanes after this link.

Returns
sum of the lengths of all internal lanes following this link

Definition at line 639 of file MSLink.cpp.

References MSLane::getLength(), MSLane::getLinkCont(), MSLane::isInternal(), and myInternalLane.

Referenced by MSDevice_SSM::classifyEncounter(), MSLCM_LC2013::distanceAlongNextRoundabout(), MSDevice_SSM::findFoeConflictLane(), MSDevice_SSM::findSurroundingVehicles(), MSLCM_LC2013::getRoundaboutAheadInfo(), and keepClear().

◆ getInternalLengthsBefore()

double MSLink::getInternalLengthsBefore ( ) const

Returns the cumulative length of all internal lanes before this link.

Returns
sum of the lengths of all internal lanes before this link

Definition at line 651 of file MSLink.cpp.

References MSLane::getIncomingLanes(), MSLane::getLength(), MSLane::isInternal(), and myInternalLane.

Referenced by keepClear().

◆ getJunction()

MSJunction* MSLink::getJunction ( ) const
inline

Definition at line 263 of file MSLink.h.

References myJunction.

◆ getLane()

◆ getLaneBefore()

const MSLane * MSLink::getLaneBefore ( ) const

return the internalLaneBefore if it exists and the laneBefore otherwise

Definition at line 959 of file MSLink.cpp.

References myInternalLaneBefore, and myLaneBefore.

Referenced by computeParallelLink(), getLengthBeforeCrossing(), MSRailSignal::init(), keepClear(), and MSVehicle::updateDriveItems().

◆ getLastStateChange()

SUMOTime MSLink::getLastStateChange ( ) const
inline

◆ getLeaderInfo()

MSLink::LinkLeaders MSLink::getLeaderInfo ( const MSVehicle ego,
double  dist,
std::vector< const MSPerson *> *  collectBlockers = 0,
bool  isShadowLink = false 
) const

Returns all potential link leaders (vehicles on foeLanes) Valid during the planMove() phase.

Parameters
[in]egoThe ego vehicle that is looking for leaders
[in]distThe distance of the vehicle who is asking about the leader to this link
[out]blockingReturn blocking pedestrians if a vector is given
[in]isShadowLinkwhether this link is a shadowLink for ego
Returns
The all vehicles on foeLanes and their (virtual) distances to the asking vehicle
Todo:
consider lateral position (depending on whether the crossing is encountered on the way in or out)

Definition at line 763 of file MSLink.cpp.

References MSLane::anyVehiclesBegin(), MSLane::anyVehiclesEnd(), MSPModel::blockedAtDist(), Position::distanceTo2D(), fromInternalLane(), gDebugFlag1, MSVehicle::getBackPositionOnLane(), MSLane::getEdge(), Named::getID(), MSBaseVehicle::getID(), getIndex(), MSLane::getIndex(), SUMOVTypeParameter::getJMParam(), MSVehicle::getLane(), MSVehicle::getLaneChangeModel(), MSVehicle::getLateralPositionOnLane(), MSVehicle::getLatOffset(), MSVehicleType::getLength(), MSBaseVehicle::getLength(), MSLane::getLength(), MSLane::getLinkCont(), MSLane::getLogicalPredecessorLane(), MSVehicleType::getMinGap(), MSPModel::getModel(), MSVehicleType::getParameter(), MSEdge::getPersons(), MSTransportable::getPosition(), MSVehicle::getPosition(), MSBaseVehicle::getVehicleType(), MSTransportable::getVehicleType(), getViaLaneOrLane(), MSVehicle::getWaitingTime(), MSVehicleType::getWidth(), MSLane::getWidth(), MSGlobals::gIgnoreJunctionBlocker, MSGlobals::gLateralResolution, MSVehicle::isFrontOnLane(), MSAbstractLaneChangeModel::isOpposite(), MSVehicle::isStopped(), JM_CROSSING_GAP_DEFAULT, MAX2(), MIN2(), myFoeLanes, myInternalLaneBefore, myLane, myLaneBefore, myLengthsBehindCrossing, mySublaneFoeLanes, myWalkingAreaFoe, MSPModel::SAFETY_GAP, SIMTIME, and SUMO_ATTR_JM_CROSSING_GAP.

Referenced by MSVehicle::checkLinkLeader(), and keepClear().

◆ getLeaveTime()

SUMOTime MSLink::getLeaveTime ( const SUMOTime  arrivalTime,
const double  arrivalSpeed,
const double  leaveSpeed,
const double  vehicleLength 
) const

return the expected time at which the given vehicle will clear the link

Definition at line 336 of file MSLink.cpp.

References getLength(), MAX2(), NUMERICAL_EPS, and TIME2STEPS.

Referenced by keepClear(), opened(), and setApproaching().

◆ getLength()

double MSLink::getLength ( ) const
inline

◆ getLengthBeforeCrossing()

double MSLink::getLengthBeforeCrossing ( const MSLane foeLane) const

Returns the internal length from the beginning of the link's internal lane before to the crossing with the given foe lane if applicable, if the lane is no foe lane to the link, INVALID_DOUBLE is returned.

See also
getLengthsBeforeCrossing()

Definition at line 694 of file MSLink.cpp.

References MSLane::getEntryLink(), Named::getID(), getLaneBefore(), MSLane::getLength(), INVALID_DOUBLE, myFoeLanes, myInternalLaneBefore, and myLengthsBehindCrossing.

Referenced by getLengthsBeforeCrossing(), and keepClear().

◆ getLengthsBeforeCrossing()

double MSLink::getLengthsBeforeCrossing ( const MSLane foeLane) const

Returns the sum of the lengths along internal lanes following this link to the crossing with the given foe lane, if the lane is no foe lane to any of the internal lanes, INVALID_DOUBLE is returned.

See also
getLengthBeforeCrossing()

Definition at line 668 of file MSLink.cpp.

References MSLane::getLength(), getLengthBeforeCrossing(), MSLane::getLinkCont(), getViaLane(), INVALID_DOUBLE, and myInternalLane.

Referenced by MSDevice_SSM::classifyEncounter(), and keepClear().

◆ getLengthsBehindCrossing()

const std::vector<std::pair<double, double> >& MSLink::getLengthsBehindCrossing ( ) const
inline

Definition at line 494 of file MSLink.h.

References myLengthsBehindCrossing.

Referenced by GUILane::debugDrawFoeIntersections().

◆ getMesoTLSPenalty()

SUMOTime MSLink::getMesoTLSPenalty ( ) const
inline

Returns the time penalty for passing a tls-controlled link (meso)

Definition at line 471 of file MSLink.h.

References myMesoTLSPenalty.

Referenced by MESegment::getLinkPenalty(), MESegment::getMaxPenaltySeconds(), and MSEdge::recalcCache().

◆ getParallelLink()

MSLink * MSLink::getParallelLink ( int  direction) const

◆ getState()

LinkState MSLink::getState ( ) const
inline

◆ getTLIndex()

int MSLink::getTLIndex ( ) const
inline

Returns the TLS index.

Definition at line 314 of file MSLink.h.

References myTLIndex.

◆ getTLLogic()

const MSTrafficLightLogic* MSLink::getTLLogic ( ) const
inline

Returns the TLS index.

Definition at line 319 of file MSLink.h.

References myLogic.

Referenced by MSVehicle::ignoreRed(), and GUILane::setFunctionalColor().

◆ getViaLane()

◆ getViaLaneOrLane()

◆ getWalkingAreaFoe()

const MSLane* MSLink::getWalkingAreaFoe ( )
inline

get walkingarea as foe

Definition at line 180 of file MSLink.h.

References addBlockedLink(), getApproaching(), myWalkingAreaFoe, removeApproaching(), and setApproaching().

◆ getZipperSpeed()

◆ hasApproachingFoe()

bool MSLink::hasApproachingFoe ( SUMOTime  arrivalTime,
SUMOTime  leaveTime,
double  speed,
double  decel 
) const

Returns the information whether a vehicle is approaching on one of the link's foe streams.

Valid after the vehicles have set their requests

Parameters
[in]arrivalTimeThe arrivalTime of the vehicle who checks for an approaching foe
[in]leaveTimeThe leaveTime of the vehicle who checks for an approaching foe
[in]speedThe speed with which the checking vehicle plans to leave the link
[in]decelThe maximum deceleration of the checking vehicle
Returns
Whether a foe of this link is approaching

Definition at line 552 of file MSLink.cpp.

References myFoeLanes, myFoeLinks, and myLane.

Referenced by libsumo::Lane::getLinks(), and isBlockingAnyone().

◆ hasFoes()

bool MSLink::hasFoes ( ) const
inline

Returns whether this link belongs to a junction where more than one edge is incoming.

Returns
Whether any foe links exist

Definition at line 369 of file MSLink.h.

References myHasFoes.

Referenced by MSVehicle::keepClear(), and setRequestInformation().

◆ havePriority()

◆ haveRed()

bool MSLink::haveRed ( ) const
inline

Returns whether this link is blocked by a red (or redyellow) traffic light.

Returns
Whether the link has a red light

Definition at line 333 of file MSLink.h.

References LINKSTATE_TL_RED, LINKSTATE_TL_REDYELLOW, and myState.

Referenced by MSLaneChanger::changeOpposite(), MSPModel_Striping::PState::ignoreRed(), MSVehicle::ignoreRed(), opened(), and MSVehicle::processLaneAdvances().

◆ haveYellow()

bool MSLink::haveYellow ( ) const
inline

◆ initParallelLinks()

void MSLink::initParallelLinks ( )

initialize parallel links (to be called after all links are loaded)

Definition at line 1100 of file MSLink.cpp.

References computeParallelLink(), myParallelLeft, and myParallelRight.

Referenced by getFoeLinks().

◆ isBlockingAnyone()

bool MSLink::isBlockingAnyone ( ) const
inline

Definition at line 244 of file MSLink.h.

References hasApproachingFoe(), myApproachingVehicles, and willHaveBlockedFoe().

◆ isCont()

bool MSLink::isCont ( ) const
inline

◆ isExitLink()

bool MSLink::isExitLink ( ) const

return whether the fromLane of this link is an internal lane and toLane is a normal lane

Definition at line 731 of file MSLink.cpp.

References EDGEFUNC_NORMAL, MSLane::getEdge(), MSEdge::getFunction(), getInternalLaneBefore(), MSGlobals::gUsingInternalLanes, and myLane.

Referenced by fromInternalLane(), and keepClear().

◆ isInternalJunctionLink()

bool MSLink::isInternalJunctionLink ( ) const

return whether the fromLane and the toLane of this link are internal lanes

Definition at line 753 of file MSLink.cpp.

References getInternalLaneBefore(), and myInternalLane.

Referenced by fromInternalLane(), and keepClear().

◆ isLeader()

bool MSLink::isLeader ( const MSVehicle ego,
const MSVehicle foe 
) const

◆ isTLSControlled()

bool MSLink::isTLSControlled ( ) const
inline

Definition at line 341 of file MSLink.h.

References myLogic.

Referenced by MESegment::getLinkPenalty(), and MESegment::getTLSCapacity().

◆ keepClear()

◆ lastWasContMajor()

bool MSLink::lastWasContMajor ( ) const

whether this is a link past an internal junction which currently has priority

Definition at line 588 of file MSLink.cpp.

References MSLinkContHelper::getConnectingLink(), MSLane::getEdge(), MSLane::getLogicalPredecessorLane(), havePriority(), MSEdge::isInternal(), myAmCont, and myInternalLane.

Referenced by keepClear(), and MSVehicle::processLinkAproaches().

◆ maybeOccupied()

bool MSLink::maybeOccupied ( MSLane lane)
staticprivate

returns whether the given lane may still be occupied by a vehicle currently on it

Definition at line 536 of file MSLink.cpp.

References MSVehicle::getBackPositionOnLane(), MSVehicle::getCarFollowModel(), MSLane::getLastAnyVehicle(), MSLane::getLength(), MSCFModel::getMaxDecel(), and MSVehicle::getSpeed().

Referenced by unsafeMergeSpeeds().

◆ opened()

bool MSLink::opened ( SUMOTime  arrivalTime,
double  arrivalSpeed,
double  leaveSpeed,
double  vehicleLength,
double  impatience,
double  decel,
SUMOTime  waitingTime,
double  posLat = 0,
std::vector< const SUMOVehicle *> *  collectFoes = 0,
bool  ignoreRed = false,
const SUMOVehicle ego = 0 
) const

◆ operator=()

MSLink& MSLink::operator= ( const MSLink s)
private

invalidated assignment operator

◆ passedJunction()

void MSLink::passedJunction ( const MSVehicle vehicle) const

erase vehicle from myLinkLeaders of this links junction

Definition at line 994 of file MSLink.cpp.

References myJunction, and MSJunction::passedJunction().

Referenced by MSVehicle::checkLinkLeader(), keepClear(), and MSVehicle::processLaneAdvances().

◆ removeApproaching()

void MSLink::removeApproaching ( const SUMOVehicle veh)

◆ setApproaching() [1/2]

void MSLink::setApproaching ( const SUMOVehicle approaching,
const SUMOTime  arrivalTime,
const double  arrivalSpeed,
const double  leaveSpeed,
const bool  setRequest,
const SUMOTime  arrivalTimeBraking,
const double  arrivalSpeedBraking,
const SUMOTime  waitingTime,
double  dist 
)

Sets the information about an approaching vehicle.

The information is stored in myApproachingVehicles.

Definition at line 258 of file MSLink.cpp.

References DEBUG_COND, Named::getID(), SUMOVehicle::getID(), getLeaveTime(), MSVehicleType::getLength(), SUMOVehicle::getVehicleType(), myApproachingVehicles, myLane, myLaneBefore, and SIMTIME.

Referenced by MSVehicle::checkRewindLinkLanes(), getWalkingAreaFoe(), and MELoop::setApproaching().

◆ setApproaching() [2/2]

void MSLink::setApproaching ( const SUMOVehicle approaching,
ApproachingVehicleInformation  ai 
)

Sets the information about an approaching vehicle.

Definition at line 276 of file MSLink.cpp.

References DEBUG_COND, Named::getID(), SUMOVehicle::getID(), myApproachingVehicles, myLane, myLaneBefore, and SIMTIME.

◆ setGreenFraction()

void MSLink::setGreenFraction ( const double  fraction)
inline

Sets the green fraction for passing a tls-controlled link (meso)

Definition at line 486 of file MSLink.h.

References myGreenFraction.

◆ setMesoTLSPenalty()

void MSLink::setMesoTLSPenalty ( const SUMOTime  penalty)
inline

Sets the time penalty for passing a tls-controlled link (meso)

Definition at line 481 of file MSLink.h.

References myMesoTLSPenalty.

◆ setRequestInformation()

void MSLink::setRequestInformation ( int  index,
bool  hasFoes,
bool  isCont,
const std::vector< MSLink *> &  foeLinks,
const std::vector< MSLane *> &  foeLanes,
MSLane internalLaneBefore = 0 
)

◆ setTLState()

void MSLink::setTLState ( LinkState  state,
SUMOTime  t 
)

Sets the current tl-state.

Parameters
[in]stateThe current state of the link
[in]tThe time of the state change

Definition at line 574 of file MSLink.cpp.

References myLastStateChange, and myState.

Referenced by MSTrafficLightLogic::addLink(), and getLastStateChange().

◆ unsafeMergeSpeeds()

static bool MSLink::unsafeMergeSpeeds ( double  leaderSpeed,
double  followerSpeed,
double  leaderDecel,
double  followerDecel 
)
inlinestaticprivate

return whether the given vehicles may NOT merge safely

Definition at line 507 of file MSLink.h.

References blockedByFoe(), computeParallelLink(), couldBrakeForLeader(), and maybeOccupied().

Referenced by blockedByFoe().

◆ willHaveBlockedFoe()

bool MSLink::willHaveBlockedFoe ( ) const

Definition at line 298 of file MSLink.cpp.

References myBlockedFoeLinks.

Referenced by isBlockingAnyone().

◆ writeApproaching()

Field Documentation

◆ myAmCont

bool MSLink::myAmCont
private

Definition at line 566 of file MSLink.h.

Referenced by isCont(), lastWasContMajor(), opened(), and setRequestInformation().

◆ myApproachingVehicles

std::map<const SUMOVehicle*, ApproachingVehicleInformation, ComparatorIdLess> MSLink::myApproachingVehicles
private

◆ myBlockedFoeLinks

std::set<MSLink*> MSLink::myBlockedFoeLinks
private

Definition at line 533 of file MSLink.h.

Referenced by addBlockedLink(), and willHaveBlockedFoe().

◆ myDirection

LinkDirection MSLink::myDirection
private

An abstract (hopefully human readable) definition of the link's direction.

Definition at line 551 of file MSLink.h.

Referenced by getDirection().

◆ myFoeLanes

std::vector<const MSLane*> MSLink::myFoeLanes
private

◆ myFoeLinks

std::vector<MSLink*> MSLink::myFoeLinks
private

◆ myFoeVisibilityDistance

double MSLink::myFoeVisibilityDistance
private

distance from which an approaching vehicle is able to see all relevant foes and may accelerate if the link is minor and no foe is approaching. Defaults to 4.5m.

Definition at line 560 of file MSLink.h.

Referenced by getFoeVisibilityDistance().

◆ myGreenFraction

double MSLink::myGreenFraction
private

green fraction at tls for mesoscopic simulation

Definition at line 582 of file MSLink.h.

Referenced by getGreenFraction(), and setGreenFraction().

◆ myHasFoes

bool MSLink::myHasFoes
private

Whether any foe links exist.

Definition at line 563 of file MSLink.h.

Referenced by hasFoes(), and setRequestInformation().

◆ myIndex

int MSLink::myIndex
private

The position within this respond.

Definition at line 536 of file MSLink.h.

Referenced by getIndex(), and setRequestInformation().

◆ myInternalLane

MSLane* const MSLink::myInternalLane
private

◆ myInternalLaneBefore

const MSLane* MSLink::myInternalLaneBefore
private

◆ myJunction

MSJunction* MSLink::myJunction
private

the junction to which this link belongs

Definition at line 611 of file MSLink.h.

Referenced by getJunction(), getZipperSpeed(), isLeader(), passedJunction(), and setRequestInformation().

◆ myKeepClear

bool MSLink::myKeepClear
private

Definition at line 568 of file MSLink.h.

Referenced by keepClear().

◆ myLane

MSLane* MSLink::myLane
private

The lane behind the junction approached by this link.

Definition at line 527 of file MSLink.h.

Referenced by getLane(), getLeaderInfo(), getViaLaneOrLane(), hasApproachingFoe(), isExitLink(), opened(), removeApproaching(), setApproaching(), and setRequestInformation().

◆ myLaneBefore

MSLane* MSLink::myLaneBefore
private

The lane approaching this link.

Definition at line 530 of file MSLink.h.

Referenced by getLaneBefore(), getLeaderInfo(), removeApproaching(), setApproaching(), and setRequestInformation().

◆ myLastStateChange

SUMOTime MSLink::myLastStateChange
private

The time of the last state change.

Definition at line 548 of file MSLink.h.

Referenced by getLastStateChange(), and setTLState().

◆ myLength

double MSLink::myLength
private

The length of the link.

Note
This is not equal to the result of getInternalLengthsAfter for links with more than one internal lane.

Definition at line 555 of file MSLink.h.

Referenced by getLength().

◆ myLengthsBehindCrossing

std::vector<std::pair<double, double> > MSLink::myLengthsBehindCrossing
private

◆ myLogic

const MSTrafficLightLogic* MSLink::myLogic
private

the controlling logic or 0

Definition at line 542 of file MSLink.h.

Referenced by getTLLogic(), and isTLSControlled().

◆ myLookaheadTime

const SUMOTime MSLink::myLookaheadTime = TIME2STEPS(1)
staticprivate

Definition at line 604 of file MSLink.h.

Referenced by blockedByFoe().

◆ myLookaheadTimeZipper

const SUMOTime MSLink::myLookaheadTimeZipper = TIME2STEPS(4)
staticprivate

Definition at line 605 of file MSLink.h.

Referenced by blockedByFoe().

◆ myMesoTLSPenalty

SUMOTime MSLink::myMesoTLSPenalty
private

penalty time at tls for mesoscopic simulation

Definition at line 580 of file MSLink.h.

Referenced by getMesoTLSPenalty(), and setMesoTLSPenalty().

◆ myParallelLeft

MSLink* MSLink::myParallelLeft
private

Definition at line 608 of file MSLink.h.

Referenced by getParallelLink(), and initParallelLinks().

◆ myParallelRight

MSLink* MSLink::myParallelRight
private

Definition at line 607 of file MSLink.h.

Referenced by getParallelLink(), and initParallelLinks().

◆ myState

LinkState MSLink::myState
private

The state of the link.

Definition at line 545 of file MSLink.h.

Referenced by blockedByFoe(), getState(), havePriority(), haveRed(), haveYellow(), opened(), and setTLState().

◆ mySublaneFoeLanes

std::vector<MSLane*> MSLink::mySublaneFoeLanes
private

Definition at line 602 of file MSLink.h.

Referenced by getLeaderInfo(), and setRequestInformation().

◆ mySublaneFoeLinks

std::vector<MSLink*> MSLink::mySublaneFoeLinks
private

Definition at line 598 of file MSLink.h.

Referenced by opened(), and setRequestInformation().

◆ myTLIndex

const int MSLink::myTLIndex
private

the traffic light index

Definition at line 539 of file MSLink.h.

Referenced by getTLIndex().

◆ myWalkingAreaFoe

const MSLane* MSLink::myWalkingAreaFoe
private

Definition at line 594 of file MSLink.h.

Referenced by addWalkingAreaFoe(), getLeaderInfo(), and getWalkingAreaFoe().

◆ ZIPPER_ADAPT_DIST

const double MSLink::ZIPPER_ADAPT_DIST
static

Definition at line 80 of file MSLink.h.

Referenced by getZipperSpeed(), and MSVehicle::unsafeLinkAhead().


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