105 myDevices[vehicle]->addRoute();
128 (*i).route->release();
179 os <<
" replacedOnEdge=\"";
190 const MSEdge* lastEdge = 0;
191 for (; i < index; ++i) {
198 const MSEdge* lastEdge = 0;
213 int remainingWithExitTime = (int)
myExits.size() - numWritten;
214 assert(remainingWithExitTime >= 0);
222 os <<
"\" exitTimes=\"";
223 for (std::vector<SUMOTime>::const_iterator it =
myExits.begin(); it !=
myExits.end(); ++it) {
231 (os <<
"\"").closeTag();
273 od.writeAttr(
"routeLength", routeLength);
278 if (routeDist != 0) {
279 const std::vector<const MSRoute*>& routes = routeDist->
getVals();
281 while (index < routes.size() && routes[index] !=
myCurrentRoute) {
285 const std::vector<double>& probs = routeDist->
getProbs();
286 for (
int i = 0; i < (int)routes.size(); ++i) {
293 routes[i]->writeEdgeIDs(od, *routes[i]->begin());
294 (od <<
"\"").closeTag();
326 std::map<const std::string, std::string>& infos =
myRouteInfos[it->first];
327 for (std::map<const std::string, std::string>::const_iterator it2 = infos.begin(); it2 != infos.end(); ++it2) {
328 routeOut << it2->second;
335 routeOut << od.getString();
374 if (it->first->hasDeparted()) {
375 it->second->writeOutput(
false);
385 std::vector<std::string> internals;
395 internals.push_back(replacedOnEdge);
415 for (
int i = 0; i < size; ++i) {
static std::map< const SUMOTime, int > myDepartureCounts
Map needed to sort vehicles by departure time.
virtual double getDepartPos() const =0
Returns this vehicle's real departure position.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
const int myMaxRoutes
The maximum number of routes to report.
Representation of a vehicle in the micro simulation.
const MSRoute * myCurrentRoute
The currently used route.
virtual SUMOTime getDeparture() const =0
Returns this vehicle's real departure time.
static StateListener myStateListener
A class that is notified about reroutings.
Function-object for stable sorting of objects acting like Named without being derived (SUMOVehicle) ...
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.
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 const ConstMSEdgeVector::const_iterator & getCurrentRouteEdge() const =0
Returns an iterator pointing to the current edge in this vehicles route.
bool hasInternalLinks() const
return whether the network contains internal links
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
Notification
Definition of a vehicle state.
std::string time2string(SUMOTime t)
virtual const MSEdge * getEdge() const =0
Returns the edge the vehicle is currently at.
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
virtual double getPositionOnLane() const =0
Get the vehicle's position along the lane.
static bool dictionary(const std::string &id, MSEdge *edge)
Inserts edge into the static dictionary Returns true if the key id isn't already in the dictionary...
bool notifyEnter(SUMOVehicle &veh, MSMoveReminder::Notification reason, const MSLane *enteredLane=0)
Does nothing, returns true only if exit times should be collected.
std::vector< SUMOTime > myExits
The times the vehicle exites an edge.
static bool mySorted
A shortcut for the Option "vehroute-output.sorted".
const std::vector< double > & getProbs() const
Returns the probabilities assigned to the members of the distribution.
static RandomDistributor< const MSRoute * > * distDictionary(const std::string &id)
Returns the named route distribution.
const std::vector< SUMOVehicleParameter::Stop > & getStops() const
Returns the stops.
SUMOTime getCurrentTimeStep() const
Returns the current simulation step.
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.
const MSLane * getLane() const
Returns the lane the reminder works on.
begin/end of the description of a route
static bool myIntendedDepart
A shortcut for the Option "vehroute-output.intended-depart".
virtual bool hasDeparted() const =0
Returns whether this vehicle has departed.
static OptionsCont & getOptions()
Retrieves the options.
const std::vector< T > & getVals() const
Returns the members of the distribution.
std::vector< Stop > stops
List of the stops the vehicle will make, TraCI may add entries here.
std::map< const SUMOVehicle *, MSDevice_Vehroutes *, SUMOVehicle::ComparatorIdLess > myDevices
A map for internal notification.
static void init()
Static intialization.
void writeOutput(const bool hasArrived) const
Called on writing vehroutes output.
const std::string & getID() const
Returns the id.
A road/street connecting two junctions.
The vehicle changes lanes (micro only)
int myDepartLane
The lane the vehicle departed at.
static bool myLastRouteOnly
A shortcut for the Option "vehroute-output.last-route".
virtual double getSpeed() const =0
Returns the vehicle's current speed.
void saveState(OutputDevice &out) const
Saves the state of the device.
The vehicle got a new route.
void addRoute()
Called on route change.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Representation of a vehicle.
Encapsulated SAX-Attributes.
const int VEHPARS_DEPARTSPEED_SET
double myDepartPosLat
The lateral depart position.
int size() const
Returns the number of edges to pass.
std::vector< RouteReplaceInfo > myReplacedRoutes
Prior routes.
const int VEHPARS_DEPARTPOSLAT_SET
SUMOTime depart
The vehicle's departure time.
virtual double getArrivalPos() const =0
Returns this vehicle's desired arrivalPos for its current route (may change on reroute) ...
A class that is notified about reroutings.
static bool gUsingInternalLanes
Information whether the simulation regards internal lanes.
virtual const MSVehicleType & getVehicleType() const =0
Returns the vehicle's type.
virtual std::string getString(int id) const =0
Returns the string-value of the named (by its enum-value) attribute.
int getIndex() const
Returns the lane's index.
virtual int getNumberReroutes() const =0
Returns the number of new routes this vehicle got.
void addReference() const
increments the reference counter for the route
static void generateOutputForUnfinished()
generate vehroute output for vehicles which are still in the network
static bool myRouteLength
A shortcut for the Option "vehroute-output.route-length".
VehicleState
Definition of a vehicle state.
bool notifyLeave(SUMOVehicle &veh, double lastPos, Notification reason, const MSLane *enteredLane=0)
Saves exit times if needed.
Abstract in-vehicle device.
The vehicle has departed (was inserted into the network)
Structure representing possible vehicle parameter.
virtual const MSRoute & getRoute() const =0
Returns the current route.
static MSDevice_Vehroutes * buildVehicleDevices(SUMOVehicle &v, std::vector< MSDevice * > &into, int maxRoutes=std::numeric_limits< int >::max())
Build devices for the given vehicle, if needed.
double myDepartSpeed
The speed on departure.
static OutputDevice & getDeviceByOption(const std::string &name)
Returns the device described by the option.
MSDevice_Vehroutes(SUMOVehicle &holder, const std::string &id, int maxRoutes)
Constructor.
const int VEHPARS_DEPARTLANE_SET
const std::string & getID() const
Returns the name of the vehicle type.
virtual const std::string & getID() const =0
Get the vehicle's ID.
void writeXMLRoute(OutputDevice &os, int index=-1) const
Called on route output.
A device which collects info on the vehicle trip (mainly on departure and arrival) ...
double getDistanceBetween(double fromPos, double 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...
virtual const SUMOVehicleParameter & getParameter() const =0
Returns the vehicle's parameter (including departure definition)
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.
bool closeTag()
Closes the most recently opened tag.
void loadState(const SUMOSAXAttributes &attrs)
Loads the state of the device from the given description.
static std::map< const SUMOTime, std::map< const std::string, std::string > > myRouteInfos
const int VEHPARS_DEPARTPOS_SET
void release() const
deletes the route if there are no further references to it
void generateOutput() const
Called on writing vehroutes output.
void writeParams(OutputDevice &out) const
double myDepartPos
The lane the vehicle departed at.
Representation of a lane in the micro simulation.
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
An output device that encapsulates an ofstream.
MSRouteIterator begin() const
Returns the begin of the list of edges to pass.
The vehicle is being teleported.
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
const MSRoute * getRoute(int index) const
Called on route retrieval.
const MSEdge * myLastSavedAt
The last edge the exit time was saved for.
bool isBinary() const
Returns whether we have a binary output.
static bool dictionary(const std::string &id, const MSRoute *route)
Adds a route to the dictionary.
~MSDevice_Vehroutes()
Destructor.
Information about a replaced route.