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-2020 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 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 
165  double waitSeconds;
166 
168  double timeLoss;
169 
170  private:
173 
176 
179 
182 
184  double vehLengthSum;
185 
188 
191 
193 
196 
197  };
198 
199 
200 public:
217  MSMeanData_Net(const std::string& id,
218  const SUMOTime dumpBegin, const SUMOTime dumpEnd,
219  const bool useLanes, const bool withEmpty, const bool printDefaults,
220  const bool withInternal, const bool trackVehicles, const int detectPersons,
221  const double maxTravelTime, const double minSamples,
222  const double haltSpeed, const std::string& vTypes,
223  const std::string& writeAttributes);
224 
225 
227  virtual ~MSMeanData_Net();
228 
229 protected:
235  MSMeanData::MeanDataValues* createValues(MSLane* const lane, const double length, const bool doAdd) const;
236 
242  void resetOnly(SUMOTime stopTime);
243 
244 private:
246  const double myHaltSpeed;
247 
250 
253 
254 };
long long int SUMOTime
Definition: SUMOTime.h:31
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 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.
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.
double timeLoss
The time loss accrued by vehicle probes.
double frontSampleSeconds
The number of vehicle probes regarding the vehicle front.
void write(OutputDevice &dev, long long int attributeMask, const SUMOTime period, const double numLanes, const double defaultTravelTime, const int numVehicles=-1) const
Writes output values into the given stream.
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:60
Representation of a vehicle, person, or container.