Eclipse SUMO - Simulation of Urban MObility
MSMeanData_Net.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2004-2022 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
21 // Network state mean data collector for edges/lanes
22 /****************************************************************************/
23 #pragma once
24 #include <config.h>
25 
26 #include <vector>
27 #include <set>
28 #include <limits>
29 #include "MSMeanData.h"
30 
31 
32 // ===========================================================================
33 // class declarations
34 // ===========================================================================
35 class OutputDevice;
36 class MSEdgeControl;
37 class MSEdge;
38 class MSLane;
39 
40 
41 // ===========================================================================
42 // class definitions
43 // ===========================================================================
55 class MSMeanData_Net : public MSMeanData {
56 public:
65  public:
69  MSLaneMeanDataValues(MSLane* const lane, const double length, const bool doAdd,
70  const MSMeanData_Net* parent);
71 
73  virtual ~MSLaneMeanDataValues();
74 
77  void reset(bool afterWrite = false);
78 
83  void addTo(MSMeanData::MeanDataValues& val) const;
84 
87 
97  bool notifyLeave(SUMOTrafficObject& veh, double lastPos, MSMoveReminder::Notification reason, const MSLane* enteredLane = 0);
98 
99 
113  bool notifyEnter(SUMOTrafficObject& veh, MSMoveReminder::Notification reason, const MSLane* enteredLane = 0);
115 
116  bool isEmpty() const;
117 
125  void write(OutputDevice& dev, long long int attributeMask, const SUMOTime period,
126  const double numLanes, const double speedLimit, const double defaultTravelTime,
127  const int numVehicles = -1) const;
128 
129  protected:
133  void notifyMoveInternal(const SUMOTrafficObject& veh,
134  const double frontOnLane, const double timeOnLane, const double,
135  const double meanSpeedVehicleOnLane,
136  const double travelledDistanceFrontOnLane,
137  const double travelledDistanceVehicleOnLane,
138  const double meanLengthOnLane);
139 
140  private:
141 // /// @brief Calculate the vehicle front's distance to myLane's end for a vehicle that called notifyMoveInternal()
142 // /// maxDist gives the maximal distance to search back from the vehicle's current lane to myLane
143 // /// returns INVALID_DOUBLE if myLane wasn't found in that range
144 // double getVehicleDistToMyLane(const SUMOVehicle& veh, double maxDist);
145 
146  public:
151 
154 
157 
159  int nVehLeft;
160 
163 
166 
168  double waitSeconds;
169 
171  double timeLoss;
172 
173  private:
176 
179 
182 
185 
187  double vehLengthSum;
188 
191 
194 
196 
199 
200  };
201 
202 
203 public:
220  MSMeanData_Net(const std::string& id,
221  const SUMOTime dumpBegin, const SUMOTime dumpEnd,
222  const bool useLanes, const bool withEmpty, const bool printDefaults,
223  const bool withInternal, const bool trackVehicles, const int detectPersons,
224  const double maxTravelTime, const double minSamples,
225  const double haltSpeed, const std::string& vTypes,
226  const std::string& writeAttributes);
227 
228 
230  virtual ~MSMeanData_Net();
231 
232 protected:
238  MSMeanData::MeanDataValues* createValues(MSLane* const lane, const double length, const bool doAdd) const;
239 
245  void resetOnly(SUMOTime stopTime);
246 
247 private:
249  const double myHaltSpeed;
250 
253 
256 
257 };
long long int SUMOTime
Definition: SUMOTime.h:32
Stores edges and lanes, performs moving of vehicle.
Definition: MSEdgeControl.h:81
A road/street connecting two junctions.
Definition: MSEdge.h:77
Representation of a lane in the micro simulation.
Definition: MSLane.h:82
Data structure for mean (aggregated) edge/lane values.
Definition: MSMeanData.h:66
Data structure for mean (aggregated) edge/lane values.
bool notifyLeave(SUMOTrafficObject &veh, double lastPos, MSMoveReminder::Notification reason, const MSLane *enteredLane=0)
Called if the vehicle leaves the reminder's lane.
const MSMeanData_Net * myParent
The meandata parent.
double frontTravelledDistance
The travelled distance regarding the vehicle front.
void addTo(MSMeanData::MeanDataValues &val) const
Add the values of this to the given one and store them there.
int nVehLaneChangeTo
The number of vehicles that changed to this lane.
int nVehVaporized
The number of vehicles that left this lane via vaporization within the sample interval.
double minimalVehicleLength
minimal vehicle length in the current interval (used to determine a maximal density,...
bool isEmpty() const
Returns whether any data was collected.
void write(OutputDevice &dev, long long int attributeMask, const SUMOTime period, const double numLanes, const double speedLimit, const double defaultTravelTime, const int numVehicles=-1) const
Writes output values into the given stream.
bool notifyEnter(SUMOTrafficObject &veh, MSMoveReminder::Notification reason, const MSLane *enteredLane=0)
Computes current values and adds them to their sums.
MSLaneMeanDataValues(MSLane *const lane, const double length, const bool doAdd, const MSMeanData_Net *parent)
Constructor.
void notifyMoveInternal(const SUMOTrafficObject &veh, const double frontOnLane, const double timeOnLane, const double, const double meanSpeedVehicleOnLane, const double travelledDistanceFrontOnLane, const double travelledDistanceVehicleOnLane, const double meanLengthOnLane)
Internal notification about the vehicle moves.
int nVehLeft
The number of vehicles that left this lane within the sample interval.
int nVehLaneChangeFrom
The number of vehicles that changed from this lane.
int nVehTeleported
The number of vehicles that left this lane via teleporting within the sample interval.
double timeLoss
The time loss accrued by vehicle probes.
double frontSampleSeconds
The number of vehicle probes regarding the vehicle front.
int nVehArrived
The number of vehicles that finished on the lane.
double waitSeconds
The number of vehicle probes with small speed.
virtual ~MSLaneMeanDataValues()
Destructor.
double occupationSum
The sum of the occupation of the lane.
int nVehEntered
The number of vehicles that entered this lane within the sample interval.
double vehLengthSum
The sum of the lengths the vehicles had.
void reset(bool afterWrite=false)
Resets values so they may be used for the next interval.
Network state mean data collector for edges/lanes.
virtual ~MSMeanData_Net()
Destructor.
MSMeanData_Net(const MSMeanData_Net &)
Invalidated copy constructor.
MSMeanData_Net & operator=(const MSMeanData_Net &)
Invalidated assignment operator.
MSMeanData_Net(const std::string &id, const SUMOTime dumpBegin, const SUMOTime dumpEnd, const bool useLanes, const bool withEmpty, const bool printDefaults, const bool withInternal, const bool trackVehicles, const int detectPersons, const double maxTravelTime, const double minSamples, const double haltSpeed, const std::string &vTypes, const std::string &writeAttributes)
Constructor.
MSMeanData::MeanDataValues * createValues(MSLane *const lane, const double length, const bool doAdd) const
Create an instance of MeanDataValues.
void resetOnly(SUMOTime stopTime)
Resets network value in order to allow processing of the next interval.
const double myHaltSpeed
the minimum sample seconds
Data collector for edges/lanes.
Definition: MSMeanData.h:57
Notification
Definition of a vehicle state.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:61
Representation of a vehicle, person, or container.