SUMO - Simulation of Urban MObility
MSLane.h
Go to the documentation of this file.
1 /****************************************************************************/
13 // Representation of a lane in the micro simulation
14 /****************************************************************************/
15 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
16 // Copyright (C) 2001-2015 DLR (http://www.dlr.de/) and contributors
17 /****************************************************************************/
18 //
19 // This file is part of SUMO.
20 // SUMO is free software: you can redistribute it and/or modify
21 // it under the terms of the GNU General Public License as published by
22 // the Free Software Foundation, either version 3 of the License, or
23 // (at your option) any later version.
24 //
25 /****************************************************************************/
26 #ifndef MSLane_h
27 #define MSLane_h
28 
29 
30 // ===========================================================================
31 // included modules
32 // ===========================================================================
33 #ifdef _MSC_VER
34 #include <windows_config.h>
35 #else
36 #include <config.h>
37 #endif
38 
39 #include <vector>
40 #include <deque>
41 #include <cassert>
42 #include <utils/common/Named.h>
48 #include "MSLinkCont.h"
49 #include "MSMoveReminder.h"
50 #ifndef NO_TRACI
52 #endif
53 
54 
55 // ===========================================================================
56 // class declarations
57 // ===========================================================================
58 class MSEdge;
59 class MSVehicle;
60 class MSLaneChanger;
61 class MSLink;
62 class MSVehicleTransfer;
63 class MSVehicleControl;
64 class OutputDevice;
65 
66 
67 // ===========================================================================
68 // class definitions
69 // ===========================================================================
77 class MSLane : public Named, public Parameterised {
78 public:
80  friend class MSLaneChanger;
81 
82  friend class MSXMLRawOut;
83 
84  friend class MSQueueExport;
85 
86 
88  typedef std::vector< MSVehicle* > VehCont;
89 
92  struct VehPosition : public std::binary_function < const MSVehicle*, SUMOReal, bool > {
94  bool operator()(const MSVehicle* cmp, SUMOReal pos) const;
95  };
96 
97 public:
110  MSLane(const std::string& id, SUMOReal maxSpeed, SUMOReal length, MSEdge* const edge,
111  unsigned int numericalID, const PositionVector& shape, SUMOReal width,
112  SVCPermissions permissions);
113 
114 
116  virtual ~MSLane();
117 
118 
119 
122 
130  void addLink(MSLink* link);
132 
133 
134 
137 
144  virtual void addMoveReminder(MSMoveReminder* rem);
145 
146 
150  inline const std::vector< MSMoveReminder* >& getMoveReminders() const {
151  return myMoveReminders;
152  }
154 
155 
156 
159 
175  bool insertVehicle(MSVehicle& v);
176 
177 
195  bool isInsertionSuccess(MSVehicle* vehicle, SUMOReal speed, SUMOReal pos,
196  bool recheckNextLanes,
197  MSMoveReminder::Notification notification);
198 
199  bool checkFailure(MSVehicle* aVehicle, SUMOReal& speed, SUMOReal& dist, const SUMOReal nspeed, const bool patchSpeed, const std::string errorMsg) const;
200  bool pWagGenericInsertion(MSVehicle& veh, SUMOReal speed, SUMOReal maxPos, SUMOReal minPos);
201  bool pWagSimpleInsertion(MSVehicle& veh, SUMOReal speed, SUMOReal maxPos, SUMOReal minPos);
202  bool maxSpeedGapInsertion(MSVehicle& veh, SUMOReal mspeed);
203 
211  bool freeInsertion(MSVehicle& veh, SUMOReal speed,
213 
214 
222  void forceVehicleInsertion(MSVehicle* veh, SUMOReal pos);
224 
225 
226 
229 
241  SUMOReal setPartialOccupation(MSVehicle* v, SUMOReal leftVehicleLength);
242 
243 
248 
249 
254  return myInlappingVehicle;
255  }
256 
257 
262  return myInlappingVehicleEnd;
263  }
264 
265 
274  std::pair<MSVehicle*, SUMOReal> getLastVehicleInformation() const;
276 
277 
278 
281 
285  unsigned int getVehicleNumber() const {
286  return (unsigned int) myVehicles.size();
287  }
288 
289 
296  virtual const VehCont& getVehiclesSecure() const {
297  return myVehicles;
298  }
299 
300 
303  virtual void releaseVehicles() const { }
305 
306 
307 
310 
311 
315  inline size_t getNumericalID() const {
316  return myNumericalID;
317  }
318 
319 
323  inline const PositionVector& getShape() const {
324  return myShape;
325  }
326 
329  return myLengthGeometryFactor;
330  }
331 
332  /* @brief fit the given lane position to a visibly suitable geometry position
333  * (lane length might differ from geometry length) */
335  return lanePos * myLengthGeometryFactor;
336  }
337 
338  /* @brief fit the given lane position to a visibly suitable geometry position
339  * and return the coordinates */
340  inline const Position geometryPositionAtOffset(SUMOReal offset) const {
342  }
343 
344  /* @brief fit the given geomtry position to a valid lane position
345  * (lane length might differ from geometry length) */
347  return geometryPos / myLengthGeometryFactor;
348  }
349 
354  inline SUMOReal getVehicleMaxSpeed(const SUMOVehicle* const veh) const {
355  return myMaxSpeed * veh->getChosenSpeedFactor();
356  }
357 
358 
362  inline SUMOReal getSpeedLimit() const {
363  return myMaxSpeed;
364  }
365 
366 
370  inline SUMOReal getLength() const {
371  return myLength;
372  }
373 
374 
379  return myPermissions;
380  }
381 
382 
386  SUMOReal getWidth() const {
387  return myWidth;
388  }
390 
392  int getCrossingIndex() const;
393 
394 
397 
405  virtual void planMovements(const SUMOTime t);
406 
415  virtual bool executeMovements(SUMOTime t, std::vector<MSLane*>& into);
416 
418  virtual bool integrateNewVehicle(SUMOTime t);
420 
421 
422 
424  virtual void detectCollisions(SUMOTime timestep, const std::string& stage);
425 
426 
429  virtual bool appropriate(const MSVehicle* veh);
430 
431 
433  const MSLinkCont& getLinkCont() const;
434 
435 
437  bool empty() const {
438  assert(myVehBuffer.size() == 0);
439  return myVehicles.empty();
440  }
441 
445  void setMaxSpeed(SUMOReal val);
446 
450  void setLength(SUMOReal val);
451 
455  MSEdge& getEdge() const {
456  return *myEdge;
457  }
458 
459 
463  const MSEdge* getInternalFollower() const;
464 
465 
468 
479  static bool dictionary(const std::string& id, MSLane* lane);
480 
481 
488  static MSLane* dictionary(const std::string& id);
489 
490 
492  static void clear();
493 
494 
498  static size_t dictSize() {
499  return myDict.size();
500  }
501 
502 
506  static void insertIDs(std::vector<std::string>& into);
507 
508 
513  template<class RTREE>
514  static void fill(RTREE& into);
516 
517 
518 
523  static MSLinkCont::const_iterator succLinkSec(const SUMOVehicle& veh,
524  unsigned int nRouteSuccs,
525  const MSLane& succLinkSource,
526  const std::vector<MSLane*>& conts);
527 
528 
531  bool isLinkEnd(MSLinkCont::const_iterator& i) const;
532 
535  bool isLinkEnd(MSLinkCont::iterator& i);
536 
539  bool isEmpty() const;
540 
542  MSVehicle* getLastVehicle() const;
543  MSVehicle* getFirstVehicle() const;
544 
545 
546  /* @brief remove the vehicle from this lane
547  * @param[notify] whether moveReminders of the vehicle shall be triggered
548  */
549  virtual MSVehicle* removeVehicle(MSVehicle* remVehicle, MSMoveReminder::Notification notification, bool notify = true);
550 
553 
554 
555 
556  void leftByLaneChange(MSVehicle* v);
558 
559 
563  MSLane* getParallelLane(int offset) const;
564 
565 
566  inline void setPermissions(SVCPermissions permissions) {
567  myPermissions = permissions;
568  }
569 
570 
571  inline bool allowsVehicleClass(SUMOVehicleClass vclass) const {
572  return (myPermissions & vclass) == vclass;
573  }
574 
575  void addIncomingLane(MSLane* lane, MSLink* viaLink);
576 
577 
582  };
583 
584  const std::vector<IncomingLaneInfo>& getIncomingLanes() const {
585  return myIncomingLanes;
586  }
587 
588 
589  void addApproachingLane(MSLane* lane);
590  bool isApproachedFrom(MSEdge* const edge);
591  bool isApproachedFrom(MSEdge* const edge, MSLane* const lane);
592 
593 
594 
596  std::pair<MSVehicle* const, SUMOReal> getFollowerOnConsecutive(
597  SUMOReal backOffset, SUMOReal leaderSpeed, SUMOReal leaderMaxDecel) const;
598 
599 
601  SUMOReal getMissingRearGap(SUMOReal backOffset, SUMOReal leaderSpeed, SUMOReal leaderMaxDecel) const;
602 
603 
626  std::pair<MSVehicle* const, SUMOReal> getLeaderOnConsecutive(SUMOReal dist, SUMOReal seen,
627  SUMOReal speed, const MSVehicle& veh, const std::vector<MSLane*>& bestLaneConts) const;
628 
629 
647  std::pair<MSVehicle* const, SUMOReal> getCriticalLeader(SUMOReal dist, SUMOReal seen, SUMOReal speed, const MSVehicle& veh) const;
648 
649 
651 
654 
656  std::vector<const MSLane*> getOutgoingLanes() const;
657 
659 
660 
664  SUMOReal getMeanSpeed() const;
665 
669  SUMOReal getWaitingSeconds() const;
670 
671 
676 
677 
681  SUMOReal getNettoOccupancy() const;
682 
683 
688 
689 
693  SUMOReal getCO2Emissions() const;
694 
695 
699  SUMOReal getCOEmissions() const;
700 
701 
705  SUMOReal getPMxEmissions() const;
706 
707 
711  SUMOReal getNOxEmissions() const;
712 
713 
717  SUMOReal getHCEmissions() const;
718 
719 
724 
725 
731 
732 
735 
743  void saveState(OutputDevice& out);
744 
756  void loadState(std::vector<std::string>& vehIDs, MSVehicleControl& vc);
758 
759 
760 #ifndef NO_TRACI
761 
768  void visit(const TraCIServerAPI_Lane::StoringVisitor& cont) const {
769  cont.add(this);
770  }
771 #endif
772 
773 protected:
775  virtual void swapAfterLaneChange(SUMOTime t);
776 
787  virtual void incorporateVehicle(MSVehicle* veh, SUMOReal pos, SUMOReal speed,
788  const MSLane::VehCont::iterator& at,
790 
791 
793  void handleCollision(SUMOTime timestep, const std::string& stage, MSVehicle* collider, MSVehicle* victim, const SUMOReal gap);
794 
797 
798 protected:
801 
809  VehCont myVehicles;
810 
813 
816 
818  MSEdge* const myEdge;
819 
822 
825  VehCont myTmpVehicles;
826 
827 
829  std::vector<MSVehicle*> myVehBuffer;
830 
833 
834  std::vector<IncomingLaneInfo> myIncomingLanes;
836 
837 
840 
843 
846 
849 
850 
854 
855  std::map<MSEdge*, std::vector<MSLane*> > myApproachingLanes;
856 
857  // precomputed myShape.length / myLength
859 
861  typedef std::map< std::string, MSLane* > DictType;
862 
864  static DictType myDict;
865 
866 private:
868  std::vector< MSMoveReminder* > myMoveReminders;
869 
870 
876  public:
878  explicit vehicle_position_sorter() { }
879 
880 
886  int operator()(MSVehicle* v1, MSVehicle* v2) const;
887 
888  };
889 
894  public:
896  explicit by_connections_to_sorter(const MSEdge* const e);
897 
899  int operator()(const MSEdge* const e1, const MSEdge* const e2) const;
900 
901  private:
902  by_connections_to_sorter& operator=(const by_connections_to_sorter&); // just to avoid a compiler warning
903  private:
904  const MSEdge* const myEdge;
906  };
907 
911  class edge_finder {
912  public:
913  edge_finder(MSEdge* e) : myEdge(e) {}
914  bool operator()(const IncomingLaneInfo& ili) const {
915  return &(ili.lane->getEdge()) == myEdge;
916  }
917  private:
918  edge_finder& operator=(const edge_finder&); // just to avoid a compiler warning
919  private:
920  const MSEdge* const myEdge;
921  };
922 
923 private:
925  MSLane(const MSLane&);
926 
928  MSLane& operator=(const MSLane&);
929 
930 
931 };
932 
933 
934 #endif
935 
936 /****************************************************************************/
937 
void forceVehicleInsertion(MSVehicle *veh, SUMOReal pos)
Inserts the given vehicle at the given position.
Definition: MSLane.cpp:626
void loadState(std::vector< std::string > &vehIDs, MSVehicleControl &vc)
Loads the state of this segment with the given parameters.
Definition: MSLane.cpp:1629
SVCPermissions myPermissions
The vClass permissions for this lane.
Definition: MSLane.h:832
VehCont myVehicles
The lane's vehicles. The entering vehicles are inserted at the front of this container and the leavin...
Definition: MSLane.h:809
MSEdge & getEdge() const
Returns the lane's edge.
Definition: MSLane.h:455
Representation of a vehicle in the micro simulation.
Definition: MSVehicle.h:80
bool isLinkEnd(MSLinkCont::const_iterator &i) const
Definition: MSLane.cpp:944
SUMOReal getWaitingSeconds() const
Returns the overall waiting time on this lane.
Definition: MSLane.cpp:1468
static void insertIDs(std::vector< std::string > &into)
Adds the ids of all stored lanes into the given vector.
Definition: MSLane.cpp:884
const MSEdge * getInternalFollower() const
Returns the lane's follower if it is an internal lane, the edge of the lane otherwise.
Definition: MSLane.cpp:841
virtual void releaseVehicles() const
Allows to use the container for microsimulation again.
Definition: MSLane.h:303
int operator()(MSVehicle *v1, MSVehicle *v2) const
Comparing operator.
Definition: MSLane.cpp:1592
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
const Position geometryPositionAtOffset(SUMOReal offset) const
Definition: MSLane.h:340
static void fill(RTREE &into)
Fills the given RTree with lane instances.
Definition: MSLane.cpp:892
SUMOReal getLength() const
Returns the lane's length.
Definition: MSLane.h:370
std::vector< IncomingLaneInfo > myIncomingLanes
Definition: MSLane.h:834
int SVCPermissions
MSVehicle * getFirstVehicle() const
Definition: MSLane.cpp:969
size_t getNumericalID() const
Returns this lane's numerical id.
Definition: MSLane.h:315
void setLength(SUMOReal val)
Sets a new length for the lane (used by TraCI only)
Definition: MSLane.cpp:1039
void addLink(MSLink *link)
Delayed initialization.
Definition: MSLane.cpp:107
virtual bool integrateNewVehicle(SUMOTime t)
Insert buffered vehicle into the real lane.
Definition: MSLane.cpp:928
std::vector< MSVehicle * > VehCont
Container for vehicles.
Definition: MSLane.h:88
Notification
Definition of a vehicle state.
SUMOReal getFuelConsumption() const
Returns the sum of last step fuel consumption.
Definition: MSLane.cpp:1557
virtual MSVehicle * removeVehicle(MSVehicle *remVehicle, MSMoveReminder::Notification notification, bool notify=true)
Definition: MSLane.cpp:1053
size_t myNumericalID
Unique numerical ID (set on reading by netload)
Definition: MSLane.h:800
virtual void incorporateVehicle(MSVehicle *veh, SUMOReal pos, SUMOReal speed, const MSLane::VehCont::iterator &at, MSMoveReminder::Notification notification=MSMoveReminder::NOTIFICATION_DEPARTED)
Inserts the vehicle into this lane, and informs it about entering the network.
Definition: MSLane.cpp:125
const MSEdge *const myEdge
Definition: MSLane.h:904
SUMOReal getWidth() const
Returns the lane's width.
Definition: MSLane.h:386
SUMOReal getMaximumBrakeDist() const
compute maximum braking distance on this lane
Definition: MSLane.cpp:1140
MSLane(const std::string &id, SUMOReal maxSpeed, SUMOReal length, MSEdge *const edge, unsigned int numericalID, const PositionVector &shape, SUMOReal width, SVCPermissions permissions)
Constructor.
Definition: MSLane.cpp:87
void addIncomingLane(MSLane *lane, MSLink *viaLink)
Definition: MSLane.cpp:1076
SUMOReal getNettoOccupancy() const
Returns the netto (excluding minGaps) occupancy of this lane during the last step (including minGaps)...
Definition: MSLane.cpp:1447
by_connections_to_sorter(const MSEdge *const e)
constructor
Definition: MSLane.cpp:1596
Realises dumping the complete network state.
Definition: MSXMLRawOut.h:62
virtual void addMoveReminder(MSMoveReminder *rem)
Add a move-reminder to move-reminder container.
Definition: MSLane.cpp:114
void leftByLaneChange(MSVehicle *v)
Definition: MSLane.cpp:1407
void setPermissions(SVCPermissions permissions)
Definition: MSLane.h:566
bool operator()(const IncomingLaneInfo &ili) const
Definition: MSLane.h:914
int operator()(const MSEdge *const e1, const MSEdge *const e2) const
comparing operator
Definition: MSLane.cpp:1603
std::pair< MSVehicle *const, SUMOReal > getCriticalLeader(SUMOReal dist, SUMOReal seen, SUMOReal speed, const MSVehicle &veh) const
Returns the most dangerous leader and the distance to him.
Definition: MSLane.cpp:1278
const SUMOReal myWidth
Lane width [m].
Definition: MSLane.h:815
by_connections_to_sorter & operator=(const by_connections_to_sorter &)
bool pWagGenericInsertion(MSVehicle &veh, SUMOReal speed, SUMOReal maxPos, SUMOReal minPos)
Definition: MSLane.cpp:145
bool freeInsertion(MSVehicle &veh, SUMOReal speed, MSMoveReminder::Notification notification=MSMoveReminder::NOTIFICATION_DEPARTED)
Tries to insert the given vehicle on any place.
Definition: MSLane.cpp:275
SUMOReal myMaxSpeed
Lane-wide speedlimit [m/s].
Definition: MSLane.h:821
SUMOReal getBruttoVehLenSum() const
Returns the sum of lengths of vehicles, including their minGaps, which were on the lane during the la...
Definition: MSLane.cpp:1462
SUMOReal setPartialOccupation(MSVehicle *v, SUMOReal leftVehicleLength)
Sets the information about a vehicle lapping into this lane.
Definition: MSLane.cpp:634
static MSLinkCont::const_iterator succLinkSec(const SUMOVehicle &veh, unsigned int nRouteSuccs, const MSLane &succLinkSource, const std::vector< MSLane * > &conts)
Definition: MSLane.cpp:978
PositionVector myShape
The shape of the lane.
Definition: MSLane.h:552
SUMOReal getHCEmissions() const
Returns the sum of last step HC emissions.
Definition: MSLane.cpp:1545
bool isInsertionSuccess(MSVehicle *vehicle, SUMOReal speed, SUMOReal pos, bool recheckNextLanes, MSMoveReminder::Notification notification)
Tries to insert the given vehicle with the given state (speed and pos)
Definition: MSLane.cpp:446
virtual const VehCont & getVehiclesSecure() const
Returns the vehicles container; locks it for microsimulation.
Definition: MSLane.h:296
void setMaxSpeed(SUMOReal val)
Sets a new maximum speed for the lane (used by TraCI and MSCalibrator)
Definition: MSLane.cpp:1032
SUMOReal getPartialOccupatorEnd() const
Returns the position of the in-lapping vehicle's end.
Definition: MSLane.h:261
std::map< std::string, MSLane * > DictType
definition of the static dictionary type
Definition: MSLane.h:861
virtual bool executeMovements(SUMOTime t, std::vector< MSLane * > &into)
Executes planned vehicle movements with regards to right-of-way.
Definition: MSLane.cpp:742
MSLinkCont myLinks
Definition: MSLane.h:853
virtual void detectCollisions(SUMOTime timestep, const std::string &stage)
Check if vehicles are too close.
Definition: MSLane.cpp:683
static DictType myDict
Static dictionary to associate string-ids with objects.
Definition: MSLane.h:864
virtual SUMOReal getChosenSpeedFactor() const =0
Performs lane changing of vehicles.
Definition: MSLaneChanger.h:55
A road/street connecting two junctions.
Definition: MSEdge.h:81
bool insertVehicle(MSVehicle &v)
Tries to insert the given vehicle.
Definition: MSLane.cpp:358
MSLane * getLogicalPredecessorLane() const
Definition: MSLane.cpp:1357
VehCont myTmpVehicles
Definition: MSLane.h:825
Allows to store the object; used as context while traveling the rtree in TraCI.
bool allowsVehicleClass(SUMOVehicleClass vclass) const
Definition: MSLane.h:571
std::pair< MSVehicle *const, SUMOReal > getLeaderOnConsecutive(SUMOReal dist, SUMOReal seen, SUMOReal speed, const MSVehicle &veh, const std::vector< MSLane * > &bestLaneConts) const
Returns the immediate leader and the distance to him.
Definition: MSLane.cpp:1215
Export the queueing length in front of a junction (very experimental!)
Definition: MSQueueExport.h:57
void resetPartialOccupation(MSVehicle *v)
Removes the information about a vehicle lapping into this lane.
Definition: MSLane.cpp:642
LinkState getIncomingLinkState() const
get the state of the link from the logical predecessor to this lane
Definition: MSLane.cpp:1385
SUMOReal getMissingRearGap(SUMOReal backOffset, SUMOReal leaderSpeed, SUMOReal leaderMaxDecel) const
return by how much further the leader must be inserted to avoid rear end collisions ...
Definition: MSLane.cpp:1124
const MSEdge *const myEdge
Definition: MSLane.h:920
Representation of a vehicle.
Definition: SUMOVehicle.h:65
std::vector< MSVehicle * > myVehBuffer
Definition: MSLane.h:829
void add(const MSLane *const l) const
Adds the given object to the container.
Sorts vehicles by their position (descending)
Definition: MSLane.h:875
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
A list of positions.
void enteredByLaneChange(MSVehicle *v)
Definition: MSLane.cpp:1414
MSLane * getParallelLane(int offset) const
Returns the lane with the given offset parallel to this one or 0 if it does not exist.
Definition: MSLane.cpp:1070
SUMOReal getMeanSpeed() const
Returns the mean speed on this lane.
Definition: MSLane.cpp:1481
std::pair< MSVehicle *, SUMOReal > getLastVehicleInformation() const
Returns the last vehicle which is still on the lane.
Definition: MSLane.cpp:651
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic, in MSLink and GNEInternalLane.
Position positionAtOffset(SUMOReal pos, SUMOReal lateralOffset=0) const
Returns the position at the given length.
edge_finder & operator=(const edge_finder &)
SUMOReal getSpeedLimit() const
Returns the lane's maximum allowed speed.
Definition: MSLane.h:362
MSLane * myLogicalPredecessorLane
Definition: MSLane.h:835
Something on a lane to be noticed about vehicle movement.
SUMOReal myLength
Lane length [m].
Definition: MSLane.h:812
bool empty() const
Returns true if there is not a single vehicle on the lane.
Definition: MSLane.h:437
MSVehicle * getLastVehicle() const
returns the last vehicle
Definition: MSLane.cpp:960
SVCPermissions getPermissions() const
Returns the vehicle class permissions for this lane.
Definition: MSLane.h:378
virtual void swapAfterLaneChange(SUMOTime t)
moves myTmpVehicles int myVehicles after a lane change procedure
Definition: MSLane.cpp:1046
SUMOReal getLengthGeometryFactor() const
return shape.length() / myLength
Definition: MSLane.h:328
An upper class for objects with additional parameters.
Definition: Parameterised.h:47
std::map< MSEdge *, std::vector< MSLane * > > myApproachingLanes
Definition: MSLane.h:855
Base class for objects which have an id.
Definition: Named.h:45
std::vector< MSMoveReminder * > myMoveReminders
This lane's move reminder.
Definition: MSLane.h:868
bool pWagSimpleInsertion(MSVehicle &veh, SUMOReal speed, SUMOReal maxPos, SUMOReal minPos)
Definition: MSLane.cpp:193
const SUMOReal myLengthGeometryFactor
Definition: MSLane.h:858
unsigned int getVehicleNumber() const
Returns the number of vehicles on this lane.
Definition: MSLane.h:285
std::vector< const MSLane * > getOutgoingLanes() const
get the list of outgoing lanes
Definition: MSLane.cpp:1396
void handleCollision(SUMOTime timestep, const std::string &stage, MSVehicle *collider, MSVehicle *victim, const SUMOReal gap)
issue warning and add the vehicle to MSVehicleTransfer
Definition: MSLane.cpp:723
static bool dictionary(const std::string &id, MSLane *lane)
Static (sic!) container methods {.
Definition: MSLane.cpp:852
SUMOReal getNOxEmissions() const
Returns the sum of last step NOx emissions.
Definition: MSLane.cpp:1533
SUMOReal getPMxEmissions() const
Returns the sum of last step PMx emissions.
Definition: MSLane.cpp:1521
The vehicle has departed (was inserted into the network)
bool operator()(const MSVehicle *cmp, SUMOReal pos) const
compares vehicle position to the detector position
Definition: MSLane.cpp:1586
MSVehicle * myInlappingVehicle
The vehicle which laps into this lane.
Definition: MSLane.h:848
SUMOReal myBruttoVehicleLengthSum
The current length of all vehicles on this lane, including their minGaps.
Definition: MSLane.h:839
vehicle_position_sorter()
Constructor.
Definition: MSLane.h:878
static void clear()
Clears the dictionary.
Definition: MSLane.cpp:875
bool isEmpty() const
Definition: MSLane.cpp:955
SUMOReal interpolateLanePosToGeometryPos(SUMOReal lanePos) const
Definition: MSLane.h:334
SUMOReal getCO2Emissions() const
Returns the sum of last step CO2 emissions.
Definition: MSLane.cpp:1497
MSEdge *const myEdge
The lane's edge, for routing only.
Definition: MSLane.h:818
SUMOReal getCOEmissions() const
Returns the sum of last step CO emissions.
Definition: MSLane.cpp:1509
std::pair< MSVehicle *const, SUMOReal > getFollowerOnConsecutive(SUMOReal backOffset, SUMOReal leaderSpeed, SUMOReal leaderMaxDecel) const
return the follower with the largest missing rear gap among all predecessor lanes (within dist) ...
Definition: MSLane.cpp:1149
bool checkFailure(MSVehicle *aVehicle, SUMOReal &speed, SUMOReal &dist, const SUMOReal nspeed, const bool patchSpeed, const std::string errorMsg) const
Definition: MSLane.cpp:428
SUMOReal myInlappingVehicleEnd
End position of a vehicle which laps into this lane.
Definition: MSLane.h:845
bool maxSpeedGapInsertion(MSVehicle &veh, SUMOReal mspeed)
Definition: MSLane.cpp:226
static size_t dictSize()
Returns the number of stored lanes.
Definition: MSLane.h:498
bool isApproachedFrom(MSEdge *const edge)
Definition: MSLane.cpp:1100
int SUMOTime
Definition: SUMOTime.h:43
MSLane & operator=(const MSLane &)
invalidated assignment operator
void saveState(OutputDevice &out)
Saves the state of this lane into the given stream.
Definition: MSLane.cpp:1619
const PositionVector & getShape() const
Returns this lane's shape.
Definition: MSLane.h:323
void visit(const TraCIServerAPI_Lane::StoringVisitor &cont) const
Callback for visiting the lane when traversing an RTree.
Definition: MSLane.h:768
MSVehicle * getPartialOccupator() const
Returns the vehicle which laps into this lane.
Definition: MSLane.h:253
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:71
#define SUMOReal
Definition: config.h:218
virtual ~MSLane()
Destructor.
Definition: MSLane.cpp:99
SUMOReal myNettoVehicleLengthSum
The current length of all vehicles on this lane, excluding their minGaps.
Definition: MSLane.h:842
const MSLinkCont & getLinkCont() const
returns the container with all links !!!
Definition: MSLane.cpp:1026
The class responsible for building and deletion of vehicles.
SUMOReal getVehicleMaxSpeed(const SUMOVehicle *const veh) const
Returns the lane's maximum speed, given a vehicle's speed limit adaptation.
Definition: MSLane.h:354
SUMOReal getHarmonoise_NoiseEmissions() const
Returns the sum of last step noise emissions.
Definition: MSLane.cpp:1569
const std::vector< IncomingLaneInfo > & getIncomingLanes() const
Definition: MSLane.h:584
SUMOReal interpolateGeometryPosToLanePos(SUMOReal geometryPos) const
Definition: MSLane.h:346
SUMOReal getBruttoOccupancy() const
Returns the brutto (including minGaps) occupancy of this lane during the last step.
Definition: MSLane.cpp:1432
const std::vector< MSMoveReminder * > & getMoveReminders() const
Return the list of this lane's move reminders.
Definition: MSLane.h:150
Representation of a lane in the micro simulation.
Definition: MSLane.h:77
int getCrossingIndex() const
return the index of the link to the next crossing if this is walkingArea, else -1 ...
Definition: MSLane.cpp:1421
void addApproachingLane(MSLane *lane)
Definition: MSLane.cpp:1086
edge_finder(MSEdge *e)
Definition: MSLane.h:913
virtual bool appropriate(const MSVehicle *veh)
Definition: MSLane.cpp:910
virtual void planMovements(const SUMOTime t)
Compute safe velocities for all vehicles based on positions and speeds from the last time step...
Definition: MSLane.cpp:668