44 #ifdef CHECK_MEMORY_LEAKS 46 #endif // CHECK_MEMORY_LEAKS 86 if (maxRoutes < INT_MAX) {
107 myDevices[vehicle]->addRoute();
123 (*i).route->release();
168 os <<
" replacedOnEdge=\"";
179 const MSEdge* lastEdge = 0;
180 for (; i < index; ++i) {
187 const MSEdge* lastEdge = 0;
202 int remainingWithExitTime = (int)
myExits.size() - numWritten;
203 assert(remainingWithExitTime >= 0);
211 os <<
"\" exitTimes=\"";
212 for (std::vector<SUMOTime>::const_iterator it =
myExits.begin(); it !=
myExits.end(); ++it) {
220 (os <<
"\"").closeTag();
240 od.writeAttr(
"routeLength", routeLength);
251 if (routeDist != 0) {
252 const std::vector<const MSRoute*>& routes = routeDist->
getVals();
254 while (index < routes.size() && routes[index] !=
myCurrentRoute) {
258 const std::vector<SUMOReal>& probs = routeDist->
getProbs();
259 for (
int i = 0; i < (int)routes.size(); ++i) {
266 routes[i]->writeEdgeIDs(od, *routes[i]->begin());
267 (od <<
"\"").closeTag();
298 std::map<const std::string, std::string>& infos =
myRouteInfos[it->first];
299 for (std::map<const std::string, std::string>::const_iterator it2 = infos.begin(); it2 != infos.end(); ++it2) {
300 routeOut << it2->second;
307 routeOut << od.getString();
346 if (it->first->hasDeparted()) {
347 it->second->generateOutput();
const int VEHPARS_TO_TAZ_SET
static std::map< const SUMOTime, int > myDepartureCounts
Map needed to sort vehicles by departure time.
const int myMaxRoutes
The maximum number of routes to report.
virtual bool hasDeparted() const =0
Returns whether this vehicle has departed.
const MSRoute * myCurrentRoute
The currently used route.
static StateListener myStateListener
A class that is notified about reroutings.
void release() const
deletes the route if there are no further references to it
Function-object for stable sorting of objects acting like Named without being derived (SUMOVehicle) ...
virtual const MSRoute & getRoute() const =0
Returns the current route.
Represents a generic random distribution.
void vehicleStateChanged(const SUMOVehicle *const vehicle, MSNet::VehicleState to)
Called if a vehicle changes its state.
SUMOVehicle & myHolder
The vehicle that stores the device.
static bool myDUAStyle
A shortcut for the Option "vehroute-output.dua".
virtual SUMOReal getDepartPos() const =0
Returns this vehicle's real departure position.
virtual const MSEdge * getEdge() const =0
Returns the edge the vehicle is currently at.
Notification
Definition of a vehicle state.
std::string time2string(SUMOTime t)
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
const std::vector< T > & getVals() const
Returns the members of the distribution.
std::vector< SUMOTime > myExits
The times the vehicle exites an edge.
static bool mySorted
A shortcut for the Option "vehroute-output.sorted".
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
static RandomDistributor< const MSRoute * > * distDictionary(const std::string &id)
Returns the named route distribution.
int size() const
Returns the number of edges to pass.
const std::string DEFAULT_VTYPE_ID
static bool mySaveExits
A shortcut for the Option "vehroute-output.exit-times".
void addVehicleStateListener(VehicleStateListener *listener)
Adds a vehicle states listener.
void writeXMLRoute(OutputDevice &os, int index=-1) const
Called on route output.
bool notifyLeave(SUMOVehicle &veh, SUMOReal lastPos, Notification reason)
Saves exit times if needed.
static bool myIntendedDepart
A shortcut for the Option "vehroute-output.intended-depart".
static OptionsCont & getOptions()
Retrieves the options.
std::string toTaz
The vehicle's destination zone (district)
std::map< const SUMOVehicle *, MSDevice_Vehroutes *, SUMOVehicle::ComparatorIdLess > myDevices
A map for internal notification.
void generateOutput() const
Called on writing tripinfo output.
static void init()
Static intialization.
A road/street connecting two junctions.
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
SUMOReal getDistanceBetween(SUMOReal fromPos, SUMOReal toPos, const MSEdge *fromEdge, const MSEdge *toEdge, bool includeInternal=true) const
Compute the distance between 2 given edges on this route, including the length of internal lanes...
The vehicle changes lanes (micro only) XXX: What if a vehicle changes lanes and passes a junction sim...
static bool myLastRouteOnly
A shortcut for the Option "vehroute-output.last-route".
The edge is a district edge.
The vehicle got a new route.
void addRoute()
Called on route change.
Representation of a vehicle.
virtual int getNumberReroutes() const =0
Returns the number of new routes this vehicle got.
std::vector< RouteReplaceInfo > myReplacedRoutes
Prior routes.
SUMOTime depart
The vehicle's departure time.
SUMOTime getCurrentTimeStep() const
Returns the current simulation step.
static MSDevice_Vehroutes * buildVehicleDevices(SUMOVehicle &v, std::vector< MSDevice *> &into, int maxRoutes=INT_MAX)
Build devices for the given vehicle, if needed.
std::string fromTaz
The vehicle's origin zone (district)
bool hasInternalLinks() const
return whether the network contains internal links
A class that is notified about reroutings.
static bool gUsingInternalLanes
Information whether the simulation regards internal lanes.
int writeEdgeIDs(OutputDevice &os, const MSEdge *const from, const MSEdge *const upTo=0) const
Output the edge ids up to but not including the id of the given edge.
static void generateOutputForUnfinished()
generate vehroute output for vehicles which are still in the network
const int VEHPARS_FROM_TAZ_SET
static bool myRouteLength
A shortcut for the Option "vehroute-output.route-length".
VehicleState
Definition of a vehicle state.
Abstract in-vehicle device.
The vehicle has departed (was inserted into the network)
virtual SUMOTime getDeparture() const =0
Returns this vehicle's real departure time.
virtual bool hasArrived() const =0
Returns whether this vehicle has arrived.
static OutputDevice & getDeviceByOption(const std::string &name)
Returns the device described by the option.
virtual const SUMOVehicleParameter & getParameter() const =0
Returns the vehicle's parameter (including departure definition)
const std::map< std::string, std::string > & getMap() const
Returns the inner key/value map.
MSDevice_Vehroutes(SUMOVehicle &holder, const std::string &id, int maxRoutes)
Constructor.
const std::string & getID() const
Returns the name of the vehicle type.
void addReference() const
increments the reference counter for the route
A device which collects info on the vehicle trip (mainly on departure and arrival) ...
bool wasSet(int what) const
Returns whether the given parameter was set.
const std::vector< SUMOReal > & getProbs() const
Returns the probabilities assigned to the members of the distribution.
static bool createDeviceByOption(const std::string &optionName, const std::string &rootElement="", const std::string &schemaFile="")
Creates the device using the output definition stored in the named option.
Static storage of an output device and its base (abstract) implementation.
const MSRoute * getRoute(int index) const
Called on route retrieval.
MSRouteIterator begin() const
Returns the begin of the list of edges to pass.
static std::map< const SUMOTime, std::map< const std::string, std::string > > myRouteInfos
virtual const ConstMSEdgeVector::const_iterator & getCurrentRouteEdge() const =0
Returns an iterator pointing to the current edge in this vehicles route.
virtual SUMOReal getArrivalPos() const =0
Returns this vehicle's desired arrivalPos for its current route (may change on reroute) ...
bool isBinary() const
Returns whether we have a binary output.
bool notifyEnter(SUMOVehicle &veh, MSMoveReminder::Notification reason)
Does nothing, returns true only if exit times should be collected.
virtual const std::string & getID() const =0
Get the vehicle's ID.
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
An output device that encapsulates an ofstream.
The vehicle is being teleported.
const MSEdge * myLastSavedAt
The last edge the exit time was saved for.
virtual const MSVehicleType & getVehicleType() const =0
Returns the vehicle's type.
~MSDevice_Vehroutes()
Destructor.
Information about a replaced route.