44 #include <mesosim/MELoop.h>
45 #include <mesosim/MESegment.h>
48 #ifdef CHECK_MEMORY_LEAKS
50 #endif // CHECK_MEMORY_LEAKS
62 const std::set<std::string>*
const vTypes,
76 typedTravelDistance.clear();
86 for (std::map<const MSVehicleType*, unsigned>::const_iterator it = typedAmount.begin(); it != typedAmount.end(); ++it) {
89 for (std::map<const MSVehicleType*, SUMOReal>::const_iterator it = typedSamples.begin(); it != typedSamples.end(); ++it) {
92 for (std::map<const MSVehicleType*, SUMOReal>::const_iterator it = typedTravelDistance.begin(); it != typedTravelDistance.end(); ++it) {
100 sampleSeconds += timeOnLane;
101 travelledDistance += speed * timeOnLane;
109 if (vehicleApplies(veh)) {
110 if (getLane() == 0 || getLane() == static_cast<MSVehicle&>(veh).getLane()) {
124 return sampleSeconds == 0 && amount == 0;
131 if (sampleSeconds > 0) {
132 dev.
writeAttr(
"amount", amount).
writeAttr(
"averageSpeed",
int(100 * travelledDistance / sampleSeconds));
133 }
else if (defaultTravelTime >= 0.) {
134 dev.
writeAttr(
"amount", amount).
writeAttr(
"averageSpeed",
int(100 * myLaneLength / defaultTravelTime));
139 for (std::map<const MSVehicleType*, unsigned>::const_iterator it = typedAmount.begin(); it != typedAmount.end(); ++it) {
141 dev.
writeAttr(
"amount", it->second).
writeAttr(
"averageSpeed",
int(100 * typedTravelDistance.find(it->first)->second / typedSamples.find(it->first)->second));
153 const SUMOTime dumpEnd,
const bool useLanes,
154 const bool withEmpty,
const bool printDefaults,
155 const bool withInternal,
156 const bool trackVehicles,
160 const std::set<std::string> vTypes)
161 :
MSMeanData(id, dumpBegin, dumpEnd, useLanes, withEmpty, printDefaults,
162 withInternal, trackVehicles, maxTravelTime, minSamples, vTypes),
172 dev.
writeXMLHeader(
"linkData",
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://sumo-sim.org/xsd/amitran/linkdata.xsd\"");
184 const int duration =
int(1000 *
STEPS2TIME(stopTime - startTime) + 0.5);