MATSIM
Classes | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
org.matsim.analysis.LegHistogram Class Reference
Inheritance diagram for org.matsim.analysis.LegHistogram:
Inheritance graph
[legend]

Classes

class  DataFrame
 

Public Member Functions

 LegHistogram (final int binSize, final int nofBins)
 
 LegHistogram (final int binSize)
 
void handleEvent (final PersonDepartureEvent event)
 
void handleEvent (final PersonArrivalEvent event)
 
void handleEvent (final PersonStuckEvent event)
 
void reset (final int iter)
 
void write (final String filename)
 
void write (final PrintStream stream)
 
int [] getDepartures ()
 
int [] getArrivals ()
 
int [] getStuck ()
 
Set< String > getLegModes ()
 
int [] getDepartures (final String legMode)
 
int [] getArrivals (final String legMode)
 
int [] getStuck (final String legMode)
 

Static Public Attributes

static final int DEFAULT_END_TIME = 30 * 3600
 
static final int DEFAULT_BIN_SIZE = 300
 

Private Member Functions

int getBinIndex (final double time)
 

Private Attributes

Set< Id< Person > > personIds
 
int iteration = 0
 
final int binSize
 
final int nofBins
 
final Map< String, DataFrame > data = new TreeMap<>()
 

Detailed Description

Author
mrieser

Counts the number of persons departed, arrived or got stuck per time bin based on events.

The chart plotting was moved to its own class. This class could be moved to trafficmonitoring.

Definition at line 57 of file LegHistogram.java.

Constructor & Destructor Documentation

◆ LegHistogram() [1/2]

org.matsim.analysis.LegHistogram.LegHistogram ( final int  binSize,
final int  nofBins 
)

Creates a new LegHistogram with the specified binSize and the specified number of bins.

Parameters
binSizeThe size of a time bin in seconds.
nofBinsThe number of time bins for this analysis.

Definition at line 88 of file LegHistogram.java.

References org.matsim.analysis.LegHistogram.binSize, org.matsim.analysis.LegHistogram.nofBins, and org.matsim.analysis.LegHistogram.reset().

88  {
89  super();
90  this.binSize = binSize;
91  this.nofBins = nofBins;
92  reset(0);
93  }
Here is the call graph for this function:

◆ LegHistogram() [2/2]

org.matsim.analysis.LegHistogram.LegHistogram ( final int  binSize)

Creates a new LegHistogram with the specified binSize and a default number of bins, such that 30 hours are analyzed.

Parameters
binSizeThe size of a time bin in seconds.

Definition at line 100 of file LegHistogram.java.

References org.matsim.analysis.LegHistogram.binSize.

100  {
101  this(binSize, DEFAULT_END_TIME / binSize + 1);
102  }

Member Function Documentation

◆ handleEvent() [1/3]

void org.matsim.analysis.LegHistogram.handleEvent ( final PersonDepartureEvent  event)

Implements org.matsim.api.core.v01.events.handler.PersonDepartureEventHandler.

Definition at line 107 of file LegHistogram.java.

References org.matsim.analysis.LegHistogram.getBinIndex(), org.matsim.api.core.v01.events.PersonDepartureEvent.getLegMode(), org.matsim.api.core.v01.events.PersonDepartureEvent.getPersonId(), and org.matsim.api.core.v01.events.Event.getTime().

107  {
108  int index = getBinIndex(event.getTime());
109  if ((this.personIds == null || this.personIds.contains(event.getPersonId())) && event.getLegMode() != null) {
110  DataFrame dataFrame = getDataForMode(event.getLegMode());
111  dataFrame.countsDep[index]++;
112  }
113  }
int getBinIndex(final double time)
Here is the call graph for this function:

◆ handleEvent() [2/3]

void org.matsim.analysis.LegHistogram.handleEvent ( final PersonArrivalEvent  event)

Implements org.matsim.api.core.v01.events.handler.PersonArrivalEventHandler.

Definition at line 116 of file LegHistogram.java.

References org.matsim.analysis.LegHistogram.getBinIndex(), org.matsim.api.core.v01.events.PersonArrivalEvent.getLegMode(), org.matsim.api.core.v01.events.PersonArrivalEvent.getPersonId(), and org.matsim.api.core.v01.events.Event.getTime().

116  {
117  int index = getBinIndex(event.getTime());
118  if ((this.personIds == null || this.personIds.contains(event.getPersonId())) && event.getLegMode() != null) {
119  DataFrame dataFrame = getDataForMode(event.getLegMode());
120  dataFrame.countsArr[index]++;
121  }
122  }
int getBinIndex(final double time)
Here is the call graph for this function:

◆ handleEvent() [3/3]

void org.matsim.analysis.LegHistogram.handleEvent ( final PersonStuckEvent  event)

Implements org.matsim.api.core.v01.events.handler.PersonStuckEventHandler.

Definition at line 125 of file LegHistogram.java.

References org.matsim.analysis.LegHistogram.getBinIndex(), org.matsim.api.core.v01.events.PersonStuckEvent.getLegMode(), org.matsim.api.core.v01.events.PersonStuckEvent.getPersonId(), and org.matsim.api.core.v01.events.Event.getTime().

125  {
126  int index = getBinIndex(event.getTime());
127  if ((this.personIds == null || this.personIds.contains(event.getPersonId())) && event.getLegMode() != null) {
128  DataFrame dataFrame = getDataForMode(event.getLegMode());
129  dataFrame.countsStuck[index]++;
130  }
131  }
int getBinIndex(final double time)
Here is the call graph for this function:

◆ reset()

void org.matsim.analysis.LegHistogram.reset ( final int  iteration)

Gives the event handler the possibility to clean up its internal state. Within a Controler-Simulation, this is called before the mobsim starts.

Parameters
iterationthe up-coming iteration from which up-coming events will be from.

Implements org.matsim.core.events.handler.EventHandler.

Definition at line 134 of file LegHistogram.java.

Referenced by org.matsim.analysis.LegHistogram.LegHistogram().

134  {
135  this.iteration = iter;
136  this.data.clear();
137  }
final Map< String, DataFrame > data

◆ write() [1/2]

void org.matsim.analysis.LegHistogram.write ( final String  filename)

Writes the gathered data tab-separated into a text file.

Parameters
filenameThe name of a file where to write the gathered data.

Definition at line 144 of file LegHistogram.java.

References org.matsim.core.utils.io.IOUtils.getFileUrl(), and org.matsim.core.utils.io.IOUtils.getOutputStream().

144  {
145  try (OutputStream stream = IOUtils.getOutputStream(IOUtils.getFileUrl(filename), false)) {
146  write(new PrintStream(stream));
147  } catch (IOException e) {
148  throw new UncheckedIOException(e);
149  }
150  }
void write(final String filename)
Here is the call graph for this function:

◆ write() [2/2]

void org.matsim.analysis.LegHistogram.write ( final PrintStream  stream)

Writes the gathered data tab-separated into a text stream.

Parameters
streamThe data stream where to write the gathered data.

Definition at line 157 of file LegHistogram.java.

References org.matsim.analysis.LegHistogram.binSize, and org.matsim.core.utils.misc.Time.writeTime().

157  {
158  stream.print("time\ttime\tdepartures_all\tarrivals_all\tstuck_all\ten-route_all");
159  for (String legMode : this.data.keySet()) {
160  stream.print("\tdepartures_" + legMode + "\tarrivals_" + legMode + "\tstuck_" + legMode + "\ten-route_" + legMode);
161  }
162  stream.print("\n");
163  int allEnRoute = 0;
164  int[] modeEnRoute = new int[this.data.size()];
165  DataFrame allModesData = getAllModesData();
166  for (int i = 0; i < allModesData.countsDep.length; i++) {
167  // data about all modes
168  allEnRoute = allEnRoute + allModesData.countsDep[i] - allModesData.countsArr[i] - allModesData.countsStuck[i];
169  stream.print(Time.writeTime(i*this.binSize) + "\t" + i*this.binSize);
170  stream.print("\t" + allModesData.countsDep[i] + "\t" + allModesData.countsArr[i] + "\t" + allModesData.countsStuck[i] + "\t" + allEnRoute);
171 
172  // data about single modes
173  int mode = 0;
174  for (DataFrame dataFrame : this.data.values()) {
175  modeEnRoute[mode] = modeEnRoute[mode] + dataFrame.countsDep[i] - dataFrame.countsArr[i] - dataFrame.countsStuck[i];
176  stream.print("\t" + dataFrame.countsDep[i] + "\t" + dataFrame.countsArr[i] + "\t" + dataFrame.countsStuck[i] + "\t" + modeEnRoute[mode]);
177  mode++;
178  }
179 
180  // new line
181  stream.print("\n");
182  }
183  }
final Map< String, DataFrame > data
Here is the call graph for this function:

◆ getDepartures() [1/2]

int [] org.matsim.analysis.LegHistogram.getDepartures ( )
Returns
number of departures per time-bin, for all legs

Definition at line 188 of file LegHistogram.java.

188  {
189  return this.getAllModesData().countsDep;
190  }

◆ getArrivals() [1/2]

int [] org.matsim.analysis.LegHistogram.getArrivals ( )
Returns
number of all arrivals per time-bin, for all legs

Definition at line 195 of file LegHistogram.java.

195  {
196  return this.getAllModesData().countsArr;
197  }

◆ getStuck() [1/2]

int [] org.matsim.analysis.LegHistogram.getStuck ( )
Returns
number of all vehicles that got stuck in a time-bin, for all legs

Definition at line 202 of file LegHistogram.java.

202  {
203  return this.getAllModesData().countsStuck;
204  }

◆ getLegModes()

Set<String> org.matsim.analysis.LegHistogram.getLegModes ( )
Returns
Set of all transportation modes data is available for

Definition at line 209 of file LegHistogram.java.

209  {
210  return this.data.keySet();
211  }
final Map< String, DataFrame > data

◆ getDepartures() [2/2]

int [] org.matsim.analysis.LegHistogram.getDepartures ( final String  legMode)
Parameters
legModetransport mode
Returns
number of departures per time-bin, for all legs with the specified mode

Definition at line 217 of file LegHistogram.java.

217  {
218  DataFrame dataFrame = this.data.get(legMode);
219  if (dataFrame == null) {
220  return new int[0];
221  }
222  return dataFrame.countsDep.clone();
223  }
final Map< String, DataFrame > data

◆ getArrivals() [2/2]

int [] org.matsim.analysis.LegHistogram.getArrivals ( final String  legMode)
Parameters
legModetransport mode
Returns
number of all arrivals per time-bin, for all legs with the specified mode

Definition at line 229 of file LegHistogram.java.

229  {
230  DataFrame dataFrame = this.data.get(legMode);
231  if (dataFrame == null) {
232  return new int[0];
233  }
234  return dataFrame.countsArr.clone();
235  }
final Map< String, DataFrame > data

◆ getStuck() [2/2]

int [] org.matsim.analysis.LegHistogram.getStuck ( final String  legMode)
Parameters
legModetransport mode
Returns
number of vehicles that got stuck in a time-bin, for all legs with the specified mode

Definition at line 241 of file LegHistogram.java.

References org.matsim.analysis.LegHistogram.iteration.

241  {
242  DataFrame dataFrame = this.data.get(legMode);
243  if (dataFrame == null) {
244  return new int[0];
245  }
246  return dataFrame.countsStuck.clone();
247  }
final Map< String, DataFrame > data

◆ getBinIndex()

int org.matsim.analysis.LegHistogram.getBinIndex ( final double  time)
private

Definition at line 269 of file LegHistogram.java.

References org.matsim.analysis.LegHistogram.binSize, and org.matsim.analysis.LegHistogram.nofBins.

Referenced by org.matsim.analysis.LegHistogram.handleEvent().

269  {
270  int bin = (int)(time / this.binSize);
271  if (bin >= this.nofBins) {
272  return this.nofBins;
273  }
274  return bin;
275  }

Member Data Documentation

◆ DEFAULT_END_TIME

final int org.matsim.analysis.LegHistogram.DEFAULT_END_TIME = 30 * 3600
static

Definition at line 59 of file LegHistogram.java.

◆ DEFAULT_BIN_SIZE

final int org.matsim.analysis.LegHistogram.DEFAULT_BIN_SIZE = 300
static

Definition at line 60 of file LegHistogram.java.

◆ personIds

Set<Id<Person> > org.matsim.analysis.LegHistogram.personIds
private

Definition at line 62 of file LegHistogram.java.

◆ iteration

int org.matsim.analysis.LegHistogram.iteration = 0
private

Definition at line 63 of file LegHistogram.java.

Referenced by org.matsim.analysis.LegHistogram.getStuck().

◆ binSize

final int org.matsim.analysis.LegHistogram.binSize
private

◆ nofBins

final int org.matsim.analysis.LegHistogram.nofBins
private

◆ data

final Map<String, DataFrame> org.matsim.analysis.LegHistogram.data = new TreeMap<>()
private

Definition at line 66 of file LegHistogram.java.


The documentation for this class was generated from the following file: