SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
MSVehicleControl.h
Go to the documentation of this file.
1 /****************************************************************************/
9 // The class responsible for building and deletion of vehicles
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
12 // Copyright (C) 2001-2015 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 #ifndef MSVehicleControl_h
23 #define MSVehicleControl_h
24 
25 
26 // ===========================================================================
27 // included modules
28 // ===========================================================================
29 #ifdef _MSC_VER
30 #include <windows_config.h>
31 #else
32 #include <config.h>
33 #endif
34 
35 #include <math.h>
36 #include <string>
37 #include <map>
38 #include <set>
40 #include <utils/common/SUMOTime.h>
42 
43 
44 // ===========================================================================
45 // class declarations
46 // ===========================================================================
47 class SUMOVehicle;
49 class MSVehicle;
50 class MSRoute;
51 class MSVehicleType;
52 class OutputDevice;
53 class MSEdge;
54 
55 
56 // ===========================================================================
57 // class definitions
58 // ===========================================================================
75 public:
77  typedef std::map<std::string, SUMOVehicle*>::const_iterator constVehIt;
78 
79 public:
82 
83 
85  virtual ~MSVehicleControl();
86 
87 
90 
103  virtual SUMOVehicle* buildVehicle(SUMOVehicleParameter* defs, const MSRoute* route,
104  const MSVehicleType* type,
105  const bool ignoreStopErrors, const bool fromRouteFile = true);
107 
108 
109 
112 
125  virtual bool addVehicle(const std::string& id, SUMOVehicle* v);
126 
127 
136  SUMOVehicle* getVehicle(const std::string& id) const;
137 
138 
145  virtual void deleteVehicle(SUMOVehicle* v, bool discard = false);
146 
147 
160 
161 
165  constVehIt loadedVehBegin() const {
166  return myVehicleDict.begin();
167  }
168 
169 
173  constVehIt loadedVehEnd() const {
174  return myVehicleDict.end();
175  }
177 
178 
179 
182 
190  void vehicleDeparted(const SUMOVehicle& v);
192 
193 
194 
197 
201  unsigned int getLoadedVehicleNo() const {
202  return myLoadedVehNo;
203  }
204 
205 
209  unsigned int getEndedVehicleNo() const {
210  return myEndedVehNo;
211  }
212 
213 
217  unsigned int getRunningVehicleNo() const {
218  return myRunningVehNo;
219  }
220 
221 
225  unsigned int getDepartedVehicleNo() const {
227  }
228 
229 
236  unsigned int getQuota(SUMOReal frac = -1) const;
237 
238 
243  int getActiveVehicleCount() const {
245  }
246 
247 
249  unsigned int getCollisionCount() const {
250  return myCollisions;
251  }
252 
254  unsigned int getTeleportsJam() const {
255  return myTeleportsJam;
256  }
257 
259  unsigned int getTeleportsYield() const {
260  return myTeleportsYield;
261  }
262 
264  unsigned int getTeleportsWrongLane() const {
265  return myTeleportsWrongLane;
266  }
267 
269  unsigned int getTeleportCount() const {
271  }
272 
274  unsigned int getEmergencyStops() const {
275  return myEmergencyStops;
276  }
277 
278 
283  return myTotalDepartureDelay;
284  }
285 
286 
291  return myTotalTravelTime;
292  }
294 
295 
296 
299 
312  bool addVType(MSVehicleType* vehType);
313 
314 
328  bool addVTypeDistribution(const std::string& id, RandomDistributor<MSVehicleType*>* vehTypeDistribution);
329 
330 
338  bool hasVTypeDistribution(const std::string& id) const;
339 
340 
345  MSVehicleType* getVType(const std::string& id = DEFAULT_VTYPE_ID, MTRand* rng = 0);
346 
347 
351  void insertVTypeIDs(std::vector<std::string>& into) const;
353 
355  void addWaiting(const MSEdge* const edge, SUMOVehicle* vehicle);
356 
358  void removeWaiting(const MSEdge* const edge, SUMOVehicle* vehicle);
359 
360  /* @brief returns a vehicle of the given lines that is waiting for a for a person or a container at this edge at the given positions
361  * @param[in] edge The edge at which the vehicle is positioned.
362  * @param[in] lines The set of lines from which at least one must correspond to the line of the vehicle
363  * @param[in] position The vehicle shall be positioned in the interval [position - t, position + t], where t is some tolerance
364  * @param[in] ridingID The id of the person or container that wants to ride
365  */
366  SUMOVehicle* getWaitingVehicle(const MSEdge* const edge, const std::set<std::string>& lines, const SUMOReal position, const std::string ridingID);
367 
372  }
373 
378  }
379 
384  }
385 
390  }
391 
394  myCollisions++;
395  }
396 
399  myTeleportsJam++;
400  }
401 
405  }
406 
410  }
411 
415  }
416 
419 
422  void setState(int runningVehNo, int endedVehNo, SUMOReal totalDepartureDelay, SUMOReal totalTravelTime);
423 
426  void saveState(OutputDevice& out);
428 
429 
432  void abortWaiting();
433 
436 
439  return myMaxSpeedFactor;
440  }
441 
444  return myMinDeceleration;
445  }
446 
447 private:
454  bool checkVType(const std::string& id);
455 
456 protected:
459 
461  unsigned int myLoadedVehNo;
462 
464  unsigned int myRunningVehNo;
465 
467  unsigned int myEndedVehNo;
468 
470  unsigned int myDiscarded;
471 
473  unsigned int myCollisions;
474 
476  unsigned int myTeleportsJam;
477 
479  unsigned int myTeleportsYield;
480 
482  unsigned int myTeleportsWrongLane;
483 
485  unsigned int myEmergencyStops;
486 
488 
489 
492 
495 
499 
500 
503 
505  typedef std::map< std::string, SUMOVehicle* > VehicleDictType;
507  VehicleDictType myVehicleDict;
509 
510 
513 
515  typedef std::map< std::string, MSVehicleType* > VTypeDictType;
517  VTypeDictType myVTypeDict;
518 
520  typedef std::map< std::string, RandomDistributor<MSVehicleType*>* > VTypeDistDictType;
522  VTypeDistDictType myVTypeDistDict;
523 
526 
529 
531  std::map<const MSEdge* const, std::vector<SUMOVehicle*> > myWaiting;
532 
534  unsigned int myWaitingForPerson;
535 
537  unsigned int myWaitingForContainer;
538 
541 
544 
547 
550 
551 private:
554 
557 
558 
559 };
560 
561 
562 #endif
563 
564 /****************************************************************************/
565 
bool myDefaultPedTypeMayBeDeleted
Whether no pedestrian type was loaded.
unsigned int getTeleportsYield() const
return the number of teleports due to vehicles stuck on a minor road
bool checkVType(const std::string &id)
Checks whether the vehicle type (distribution) may be added.
SUMOReal myMaxSpeedFactor
The maximum speed factor for all vehicles in the network.
bool addVTypeDistribution(const std::string &id, RandomDistributor< MSVehicleType * > *vehTypeDistribution)
Adds a vehicle type distribution.
void addWaiting(const MSEdge *const edge, SUMOVehicle *vehicle)
Adds a vehicle to the list of waiting vehiclse to a given edge.
unsigned int getTeleportsWrongLane() const
return the number of teleports due to vehicles stuck on the wrong lane
Representation of a vehicle in the micro simulation.
Definition: MSVehicle.h:80
virtual void deleteVehicle(SUMOVehicle *v, bool discard=false)
Deletes the vehicle.
SUMOReal myTotalDepartureDelay
The aggregated time vehicles had to wait for departure (in seconds)
SUMOReal myMinDeceleration
The minimum deceleration capability for all vehicles in the network.
unsigned int getRunningVehicleNo() const
Returns the number of build and inserted, but not yet deleted vehicles.
SUMOReal getTotalDepartureDelay() const
Returns the total departure delay.
unsigned int getDepartedVehicleNo() const
Returns the number of inserted vehicles.
unsigned int myDiscarded
The number of vehicles which were discarded while loading.
SUMOReal myTotalTravelTime
The aggregated time vehicles needed to aacomplish their route (in seconds)
constVehIt loadedVehBegin() const
Returns the begin of the internal vehicle map.
void registerTeleportYield()
register one non-collision-related teleport
unsigned int myWaitingForContainer
the number of vehicles wainting for containers contained in myWaiting which can only continue by bein...
std::map< const MSEdge *const, std::vector< SUMOVehicle * > > myWaiting
the lists of waiting vehicles to a given edge
MSVehicleControl()
Constructor.
int getActiveVehicleCount() const
Returns the number of build vehicles that have not been removed or need to wait for a passenger or a ...
void registerEmergencyStop()
register emergency stop
VehicleDictType myVehicleDict
Dictionary of vehicles.
SUMOVehicle * getWaitingVehicle(const MSEdge *const edge, const std::set< std::string > &lines, const SUMOReal position, const std::string ridingID)
virtual bool addVehicle(const std::string &id, SUMOVehicle *v)
Tries to insert the vehicle into the internal vehicle container.
VTypeDictType myVTypeDict
Dictionary of vehicle types.
void removeWaiting(const MSEdge *const edge, SUMOVehicle *vehicle)
Removes a vehicle from the list of waiting vehicles to a given edge.
void insertVTypeIDs(std::vector< std::string > &into) const
Inserts ids of all known vehicle types and vehicle type distributions to the given vector...
bool myDefaultVTypeMayBeDeleted
Whether no vehicle type was loaded.
const std::string DEFAULT_VTYPE_ID
The car-following model and parameter.
Definition: MSVehicleType.h:74
SUMOReal getTotalTravelTime() const
Returns the total travel time.
void unregisterOneWaitingForContainer()
decreases the count of vehicles waiting for a container to allow recogniztion of container related de...
unsigned int getCollisionCount() const
return the number of collisions
A road/street connecting two junctions.
Definition: MSEdge.h:81
unsigned int getLoadedVehicleNo() const
Returns the number of build vehicles.
std::map< std::string, MSVehicleType * > VTypeDictType
Vehicle type dictionary type.
unsigned int getTeleportCount() const
return the number of teleports (including collisions)
void setState(int runningVehNo, int endedVehNo, SUMOReal totalDepartureDelay, SUMOReal totalTravelTime)
Sets the current state variables as loaded from the stream.
SUMOTime computeRandomDepartOffset() const
compute (optional) random offset to the departure time
Representation of a vehicle.
Definition: SUMOVehicle.h:65
SUMOReal getMaxSpeedFactor() const
return the maximum speed factor for all vehicles that ever entered the network
SUMOReal myScale
The scaling factor (especially for inc-dua)
std::map< std::string, RandomDistributor< MSVehicleType * > * > VTypeDistDictType
Vehicle type distribution dictionary type.
virtual SUMOVehicle * buildVehicle(SUMOVehicleParameter *defs, const MSRoute *route, const MSVehicleType *type, const bool ignoreStopErrors, const bool fromRouteFile=true)
Builds a vehicle, increases the number of built vehicles.
SUMOTime myMaxRandomDepartOffset
The maximum random offset to be added to vehicles departure times (non-negative)
void saveState(OutputDevice &out)
Saves the current state into the given stream.
unsigned int myCollisions
The number of collisions.
unsigned int myEndedVehNo
The number of removed vehicles.
void registerTeleportJam()
register one non-collision-related teleport
void unregisterOneWaitingForPerson()
decreases the count of vehicles waiting for a person to allow recogniztion of person related deadlock...
void registerOneWaitingForPerson()
increases the count of vehicles waiting for a person to allow recogniztion of person related deadlock...
unsigned int myTeleportsJam
The number of teleports due to jam.
unsigned int myTeleportsWrongLane
The number of teleports due to vehicles stuck on the wrong lane.
void abortWaiting()
informes about all waiting vehicles (deletion in destructor)
MSVehicleControl & operator=(const MSVehicleControl &s)
invalidated assignment operator
bool addVType(MSVehicleType *vehType)
Adds a vehicle type.
unsigned int getTeleportsJam() const
return the number of teleports due to jamming
void registerOneWaitingForContainer()
increases the count of vehicles waiting for a container to allow recogniztion of container related de...
void scheduleVehicleRemoval(SUMOVehicle *veh)
Removes a vehicle after it has ended.
Structure representing possible vehicle parameter.
VTypeDistDictType myVTypeDistDict
A distribution of vehicle types (probability->vehicle type)
unsigned int myWaitingForPerson
the number of vehicles wainting for persons contained in myWaiting which can only continue by being t...
virtual ~MSVehicleControl()
Destructor.
unsigned int myEmergencyStops
The number of emergency stops.
int SUMOTime
Definition: SUMOTime.h:43
std::map< std::string, SUMOVehicle * >::const_iterator constVehIt
Definition of the internal vehicles map iterator.
unsigned int getEndedVehicleNo() const
Returns the number of removed vehicles.
SUMOReal getMinDeceleration() const
return the minimum deceleration capability for all vehicles that ever entered the network ...
SUMOVehicle * getVehicle(const std::string &id) const
Returns the vehicle with the given id.
bool hasVTypeDistribution(const std::string &id) const
Asks for a vehicle type distribution.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:71
#define SUMOReal
Definition: config.h:218
std::map< std::string, SUMOVehicle * > VehicleDictType
Vehicle dictionary type.
unsigned int myTeleportsYield
The number of teleports due to vehicles stuck on a minor road.
void registerCollision()
registers one collision-related teleport
constVehIt loadedVehEnd() const
Returns the end of the internal vehicle map.
void vehicleDeparted(const SUMOVehicle &v)
Informs this control about a vehicle's departure.
The class responsible for building and deletion of vehicles.
unsigned int myLoadedVehNo
The number of build vehicles.
MSVehicleType * getVType(const std::string &id=DEFAULT_VTYPE_ID, MTRand *rng=0)
Returns the named vehicle type or a sample from the named distribution.
void registerTeleportWrongLane()
register one non-collision-related teleport
unsigned int getEmergencyStops() const
return the number of emergency stops
unsigned int getQuota(SUMOReal frac=-1) const
Returns the number of instances of the current vehicle that shall be emitted considering that "frac" ...
unsigned int myRunningVehNo
The number of vehicles within the network (build and inserted but not removed)