SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups 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-sim.org/
12 // Copyright (C) 2001-2014 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>
39 #include "MSGlobals.h"
41 #include <utils/common/SUMOTime.h>
44 
45 
46 // ===========================================================================
47 // class declarations
48 // ===========================================================================
49 class SUMOVehicle;
50 class MSVehicle;
51 class MSRoute;
52 class MSVehicleType;
53 class BinaryInputDevice;
54 class MSEdge;
55 
56 
57 // ===========================================================================
58 // class definitions
59 // ===========================================================================
76 public:
78  typedef std::map<std::string, SUMOVehicle*>::const_iterator constVehIt;
79 
80 public:
83 
84 
86  virtual ~MSVehicleControl();
87 
88 
91 
102  virtual SUMOVehicle* buildVehicle(SUMOVehicleParameter* defs, const MSRoute* route,
103  const MSVehicleType* type);
105 
106 
107 
110 
123  virtual bool addVehicle(const std::string& id, SUMOVehicle* v);
124 
125 
134  SUMOVehicle* getVehicle(const std::string& id) const;
135 
136 
143  virtual void deleteVehicle(SUMOVehicle* v, bool discard = false);
144 
145 
158 
159 
164  constVehIt loadedVehBegin() const;
165 
166 
171  constVehIt loadedVehEnd() const;
173 
174 
175 
178 
186  void vehicleDeparted(const SUMOVehicle& v);
188 
189 
190 
193 
197  unsigned int getLoadedVehicleNo() const {
198  return myLoadedVehNo;
199  }
200 
201 
205  unsigned int getEndedVehicleNo() const {
206  return myEndedVehNo;
207  }
208 
209 
213  unsigned int getRunningVehicleNo() const {
214  return myRunningVehNo;
215  }
216 
217 
221  unsigned int getDepartedVehicleNo() const {
223  }
224 
225 
232  unsigned int getQuota(SUMOReal frac = -1) const;
233 
234 
239  int getActiveVehicleCount() const {
241  }
242 
243 
245  unsigned int getCollisionCount() const {
246  return myCollisions;
247  }
248 
250  unsigned int getTeleportsJam() const {
251  return myTeleportsJam;
252  }
253 
255  unsigned int getTeleportsYield() const {
256  return myTeleportsYield;
257  }
258 
260  unsigned int getTeleportsWrongLane() const {
261  return myTeleportsWrongLane;
262  }
263 
265  unsigned int getTeleportCount() const {
267  }
268 
270  unsigned int getEmergencyStops() const {
271  return myEmergencyStops;
272  }
273 
274 
279  return myTotalDepartureDelay;
280  }
281 
282 
287  return myTotalTravelTime;
288  }
290 
291 
292 
295 
308  bool addVType(MSVehicleType* vehType);
309 
310 
324  bool addVTypeDistribution(const std::string& id, RandomDistributor<MSVehicleType*>* vehTypeDistribution);
325 
326 
334  bool hasVTypeDistribution(const std::string& id) const;
335 
336 
341  MSVehicleType* getVType(const std::string& id = DEFAULT_VTYPE_ID);
342 
343 
347  void insertVTypeIDs(std::vector<std::string>& into) const;
349 
350  void addWaiting(const MSEdge* const edge, SUMOVehicle* vehicle);
351 
352  void removeWaiting(const MSEdge* const edge, SUMOVehicle* vehicle);
353 
354  SUMOVehicle* getWaitingVehicle(const MSEdge* const edge, const std::set<std::string>& lines);
355 
360  }
361 
366  }
367 
370  myCollisions++;
371  }
372 
375  myTeleportsJam++;
376  }
377 
381  }
382 
386  }
387 
391  }
392 
395 
398  void setState(int runningVehNo, int endedVehNo, SUMOReal totalDepartureDelay, SUMOReal totalTravelTime);
399 
402  void saveState(OutputDevice& out);
404 
405 
408  void abortWaiting();
409 
410 
411 public:
414 
415 
416 private:
423  bool checkVType(const std::string& id);
424 
425 protected:
428 
430  unsigned int myLoadedVehNo;
431 
433  unsigned int myRunningVehNo;
434 
436  unsigned int myEndedVehNo;
437 
439  unsigned int myDiscarded;
440 
442  unsigned int myCollisions;
443 
445  unsigned int myTeleportsJam;
446 
448  unsigned int myTeleportsYield;
449 
451  unsigned int myTeleportsWrongLane;
452 
454  unsigned int myEmergencyStops;
455 
457 
458 
461 
464 
468 
469 
472 
474  typedef std::map< std::string, SUMOVehicle* > VehicleDictType;
478 
479 
482 
484  typedef std::map< std::string, MSVehicleType* > VTypeDictType;
487 
489  typedef std::map< std::string, RandomDistributor<MSVehicleType*>* > VTypeDistDictType;
492 
495 
497  std::map<const MSEdge* const, std::vector<SUMOVehicle*> > myWaiting;
498 
500  unsigned int myWaitingForPerson;
501 
504 
507 
508 
509 private:
512 
515 
516 
517 };
518 
519 
520 #endif
521 
522 /****************************************************************************/
523 
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.
bool addVTypeDistribution(const std::string &id, RandomDistributor< MSVehicleType * > *vehTypeDistribution)
Adds a vehicle type distribution.
void addWaiting(const MSEdge *const edge, SUMOVehicle *vehicle)
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:77
virtual void deleteVehicle(SUMOVehicle *v, bool discard=false)
Deletes the vehicle.
SUMOReal myTotalDepartureDelay
The aggregated time vehicles had to wait for departure (in seconds)
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.
constVehIt loadedVehBegin() const
Returns the begin of the internal vehicle map.
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)
void registerTeleportYield()
register one non-collision-related teleport
std::map< const MSEdge *const, std::vector< SUMOVehicle * > > myWaiting
the lists of waiting vehicles
MSVehicleType * getVType(const std::string &id=DEFAULT_VTYPE_ID)
Returns the named vehicle type or a sample from the named distribution.
MSVehicleControl()
Constructor.
int getActiveVehicleCount() const
Returns the number of build vehicles that have not been removed or need to wait for a passenger...
void registerEmergencyStop()
register emergency stop
VehicleDictType myVehicleDict
Dictionary of vehicles.
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)
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.
constVehIt loadedVehEnd() const
Returns the end of the internal vehicle map.
const std::string DEFAULT_VTYPE_ID
The car-following model and parameter.
Definition: MSVehicleType.h:74
SUMOReal getTotalTravelTime() const
Returns the total travel time.
unsigned int getCollisionCount() const
return the number of collisions
virtual SUMOVehicle * buildVehicle(SUMOVehicleParameter *defs, const MSRoute *route, const MSVehicleType *type)
Builds a vehicle, increases the number of built vehicles.
SUMOVehicle * getWaitingVehicle(const MSEdge *const edge, const std::set< std::string > &lines)
A road/street connecting two junctions.
Definition: MSEdge.h:74
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.
Representation of a vehicle.
Definition: SUMOVehicle.h:64
SUMOReal myScale
The scaling factor (especially for inc-dua)
std::map< std::string, RandomDistributor< MSVehicleType * > * > VTypeDistDictType
Vehicle type distribution dictionary type.
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.
static MTRand myVehicleParamsRNG
A random number generator used to choose from vtype/route distributions and computing the speed facto...
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()
removes any vehicles that are still waiting
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 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 contained in myWaiting which can only continue by being triggered ...
virtual ~MSVehicleControl()
Destructor.
unsigned int myEmergencyStops
The number of emergency stops.
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.
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:215
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
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.
void registerTeleportWrongLane()
register one non-collision-related teleport
Encapsulates binary reading operations on a file.
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)