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

Classes

class  TravelTimeInfo
 
class  TripBin
 
class  UpdateMeanTravelTimesRunnable
 

Public Member Functions

 TravelTimeCollector (Scenario scenario, Set< String > analyzedModes)
 
void changeSpeedMetersPerSecond (Link link, double speed)
 
double getLinkTravelTime (Link link, double time, Person person, Vehicle vehicle)
 
void reset (int iteration)
 
void handleEvent (LinkEnterEvent event)
 
void handleEvent (LinkLeaveEvent event)
 
void handleEvent (PersonStuckEvent event)
 
void handleEvent (VehicleLeavesTrafficEvent event)
 
void handleEvent (VehicleEntersTrafficEvent event)
 
void notifyMobsimInitialized (MobsimInitializedEvent e)
 
void notifyMobsimAfterSimStep (MobsimAfterSimStepEvent e)
 
void notifyMobsimBeforeSimStep (MobsimBeforeSimStepEvent e)
 
void notifyMobsimBeforeCleanup (MobsimBeforeCleanupEvent e)
 
void notifyMobsimInitialized (final MobsimInitializedEvent e)
 
void notifyMobsimBeforeSimStep (final MobsimBeforeSimStepEvent e)
 
void notifyMobsimAfterSimStep (final MobsimAfterSimStepEvent e)
 
void notifyMobsimBeforeCleanup (final MobsimBeforeCleanupEvent e)
 

Private Member Functions

void init ()
 
void printInfo (double time)
 
void run (double time)
 
void initParallelThreads ()
 

Private Attributes

Network network
 
Map< Id< Vehicle >, TripBinregularActiveTrips
 
Map< Id< Link >, TravelTimeInfo > travelTimeInfos
 
TravelTimeInfoProvider travelTimeInfoProvider
 
TreeMap< Double, Map< Link,
Double > > 
changedLinks
 
CyclicBarrier startBarrier
 
CyclicBarrier endBarrier
 
UpdateMeanTravelTimesRunnable[] updateMeanTravelTimesRunnables
 
final int numOfThreads
 
final int infoTimeStep = 3600
 
int nextInfoTime = 0
 
Set< Id< Vehicle > > vehiclesToFilter
 
final Set< String > analyzedModes
 
final boolean filterModes
 
boolean problem = true
 
int resetCnt = 0
 
double now = Double.NEGATIVE_INFINITY
 

Static Private Attributes

static final Logger log = Logger.getLogger(TravelTimeCollector.class)
 

Detailed Description

Collects link travel times over a given time span (storedTravelTimesBinSize) and calculates an average travel time over this time span.

TODO:

Author
cdobler

Definition at line 66 of file TravelTimeCollector.java.

Constructor & Destructor Documentation

org.matsim.withinday.trafficmonitoring.TravelTimeCollector.TravelTimeCollector ( Scenario  scenario,
Set< String >  analyzedModes 
)

Definition at line 111 of file TravelTimeCollector.java.

References org.matsim.withinday.trafficmonitoring.TravelTimeCollector.analyzedModes, org.matsim.api.core.v01.Scenario.getConfig(), org.matsim.api.core.v01.Scenario.getNetwork(), org.matsim.core.config.Config.global, and org.matsim.withinday.trafficmonitoring.TravelTimeCollector.init().

111  {
112 // log.setLevel(Level.DEBUG);
113 
114  /*
115  * The parallelization should scale almost linear, therefore we do use
116  * the number of available threads according to the config file.
117  */
118  this.network = scenario.getNetwork();
119  this.numOfThreads = scenario.getConfig().global().getNumberOfThreads();
120 
121  if (analyzedModes == null || analyzedModes.size() == 0) {
122  this.filterModes = false;
123  this.analyzedModes = null;
124  } else {
125  this.analyzedModes = new HashSet<>(analyzedModes);
126  filterModes = true;
127  }
128 
129  init();
130  }

Here is the call graph for this function:

Member Function Documentation

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.init ( )
private

Definition at line 132 of file TravelTimeCollector.java.

References org.matsim.api.core.v01.network.Network.getLinks(), org.matsim.core.network.NetworkUtils.getNetworkChangeEvents(), org.matsim.core.network.NetworkChangeEvent.ChangeValue.getType(), and org.matsim.core.network.NetworkChangeEvent.ChangeValue.getValue().

Referenced by org.matsim.withinday.trafficmonitoring.TravelTimeCollector.reset(), and org.matsim.withinday.trafficmonitoring.TravelTimeCollector.TravelTimeCollector().

132  {
133  this.regularActiveTrips = new HashMap<>();
134  this.travelTimeInfos = new ConcurrentHashMap<>();
135  this.changedLinks = new TreeMap<>();
136  this.vehiclesToFilter = new HashSet<>();
137 
138  // one TravelTimeInfo per link:
139  for (Link link : this.network.getLinks().values()) {
140  TravelTimeInfo travelTimeInfo = new TravelTimeInfo();
141  this.travelTimeInfos.put(link.getId(), travelTimeInfo);
142  }
143 
144  /*
145  * If no RoutingNetwork is used, ArrayBasedTravelTimeInfoProvider uses
146  * a MapBasedTravelTimeInfoProvider as fall back solution. This increases
147  * routing times of a AStarLandmarks router by ~5%.
148  */
149 // this.travelTimeInfoProvider = new MapBasedTravelTimeInfoProvider(this.travelTimeInfos);
150  this.travelTimeInfoProvider = new ArrayBasedTravelTimeInfoProvider(this.travelTimeInfos, this.network);
151 
152  /*
153  * If the network is time variant, we have to update the link parameters
154  * according to the network change events.
155  */
156  Queue<NetworkChangeEvent> networkChangeEvents = NetworkUtils.getNetworkChangeEvents(this.network);
157 
158  // I just changed the return type of the network change events from Collection to Queue.
159  // This should, in a first step, allow to remove the separate changedLinks data structure.
160  // In a second step, this should allow to insert link change events after everything
161  // has started. kai, dec'17
162  // Well, but maybe I don't even want this, and I want this class here recognize changes
163  // only when someone observes them??? (bushfire evacuation use case). kai, dec'17
164 
165  // If one looks at transport telematics, then we need to also be able to set expected
166  // speeds for the future! Which would indeed justify its own data model. kai, dec'17
167  // (in contrast, watch out: the NetworkChangeEventsEngine also keeps its own
168  // copy for the mobsim)
169 
170  if (networkChangeEvents != null) {
171  for (NetworkChangeEvent networkChangeEvent : networkChangeEvents) {
172  ChangeValue freespeedChange = networkChangeEvent.getFreespeedChange();
173  if (freespeedChange != null) {
174  double startTime = networkChangeEvent.getStartTime();
175  Map<Link,Double> links = changedLinks.computeIfAbsent(startTime, k -> new HashMap<>());
176  for ( Link link : networkChangeEvent.getLinks() ) {
177  // yy seems that the following should be available centrally. kai, dec'17
178  double newSpeed ;
179  switch ( freespeedChange.getType() ) {
180  case ABSOLUTE_IN_SI_UNITS:
181  newSpeed = freespeedChange.getValue() ;
182  break;
183  case FACTOR:
184  newSpeed = link.getFreespeed() * freespeedChange.getValue() ;
185  break;
186  case OFFSET_IN_SI_UNITS:
187  newSpeed = link.getFreespeed() + freespeedChange.getValue() ;
188  break;
189  default:
190  throw new RuntimeException("change event type not implemented") ;
191  }
192  if ( startTime > 0. ) {
193  log.debug( "registering a change event for time=" + startTime
194  + "; linkId=" + link.getId() ) ;
195  }
196  links.put( link, newSpeed ) ;
197  }
198  }
199  }
200  }
201  }
Map< Id< Link >,?extends Link > getLinks()

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.changeSpeedMetersPerSecond ( Link  link,
double  speed 
)

Definition at line 203 of file TravelTimeCollector.java.

203  {
204  // yy note that this method should allow to set expectations for the future (transport telematics).
205  // But the implementation actually does not. Since this class is the one that enforces
206  // the behavior that agents cannot look ahead. Which also is not true: they can speculate
207  // about the future. kai, dec'17
208 
209  Map<Link,Double> links = changedLinks.computeIfAbsent(this.now, k -> new HashMap<>());
210  links.put( link, speed ) ;
211  }
double org.matsim.withinday.trafficmonitoring.TravelTimeCollector.getLinkTravelTime ( Link  link,
double  time,
Person  person,
Vehicle  vehicle 
)

Returns the travel time for the specified link at the specified time.

Parameters
linkThe link for which the travel time is calculated.
timeThe departure time (in seconds since 00:00) at the beginning of the link for which the travel time is calculated.
personTODO
vehicleTODO
Returns
The time (in seconds) needed to travel over the link link, departing at time time.

Implements org.matsim.core.router.util.TravelTime.

Definition at line 214 of file TravelTimeCollector.java.

References org.matsim.withinday.trafficmonitoring.TravelTimeInfoProvider.getTravelTimeInfo().

214  {
215  final double travelTime = this.travelTimeInfoProvider.getTravelTimeInfo(link).travelTime;
216  if ( Id.createLinkId(51825).equals(link.getId())) {
217  log.debug( "link=" + link.getId() + ";\ttime=" + time + ";\tttime=" + travelTime ) ;
218  }
219  return travelTime;
220  }
TravelTimeInfo getTravelTimeInfo(final Id< Link > linkId)

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.reset ( 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 223 of file TravelTimeCollector.java.

References org.matsim.withinday.trafficmonitoring.TravelTimeCollector.init().

223  {
224  init();
225  resetCnt++ ;
226  if ( resetCnt >1 ) {
227  if ( problem ) {
228  throw new RuntimeException("using TravelTimeCollector, but mobsim notifications not called between two resets. "
229  + "Did you really add this as a mobsim listener?") ;
230  }
231  }
232  }

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.handleEvent ( LinkEnterEvent  event)

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

Definition at line 235 of file TravelTimeCollector.java.

References org.matsim.api.core.v01.events.LinkEnterEvent.getVehicleId().

235  {
236  /*
237  * If only some modes are analyzed, we check whether the vehicle
238  * performs a trip with one of those modes. if not, we skip the event.
239  */
240  if (filterModes && vehiclesToFilter.contains(event.getVehicleId())) return;
241 
242  Id<Vehicle> vehicleId = event.getVehicleId();
243  double time = event.getTime();
244 
245  TripBin tripBin = new TripBin();
246  tripBin.enterTime = time;
247 
248  this.regularActiveTrips.put(vehicleId, tripBin);
249  }

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.handleEvent ( LinkLeaveEvent  event)

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

Definition at line 252 of file TravelTimeCollector.java.

References org.matsim.withinday.trafficmonitoring.TravelTimeInfoProvider.getTravelTimeInfo().

252  {
253  Id<Link> linkId = event.getLinkId();
254  Id<Vehicle> vehicleId = event.getVehicleId();
255  double time = event.getTime();
256 
257  TripBin tripBin = this.regularActiveTrips.remove(vehicleId);
258  if (tripBin != null) {
259  tripBin.leaveTime = time;
260 
261  double tripTime = tripBin.leaveTime - tripBin.enterTime;
262 
263  TravelTimeInfo travelTimeInfo = this.travelTimeInfoProvider.getTravelTimeInfo(linkId);
264  travelTimeInfo.tripBins.add(tripBin);
265  travelTimeInfo.addedTravelTimes += tripTime;
266  travelTimeInfo.addedTrips++;
267 
268  travelTimeInfo.checkActiveState();
269  travelTimeInfo.checkBinSize(tripTime);
270  }
271  }
TravelTimeInfo getTravelTimeInfo(final Id< Link > linkId)

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.handleEvent ( PersonStuckEvent  event)

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

Definition at line 278 of file TravelTimeCollector.java.

278  {
279 
280  }
void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.handleEvent ( VehicleLeavesTrafficEvent  event)

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

Definition at line 288 of file TravelTimeCollector.java.

References org.matsim.api.core.v01.events.VehicleLeavesTrafficEvent.getVehicleId().

288  {
289  Id<Vehicle> vehicleId = event.getVehicleId();
290 
291  this.regularActiveTrips.remove(vehicleId);
292 
293  // try to remove vehicle from set with filtered vehicles
294  if (filterModes) this.vehiclesToFilter.remove(event.getVehicleId());
295  }

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.handleEvent ( VehicleEntersTrafficEvent  event)

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

Definition at line 298 of file TravelTimeCollector.java.

References org.matsim.api.core.v01.events.VehicleEntersTrafficEvent.getNetworkMode(), and org.matsim.api.core.v01.events.VehicleEntersTrafficEvent.getVehicleId().

298  {
299  /*
300  * If filtering transport modes is enabled and the vehicle
301  * starts a leg on a non analyzed transport mode, add the vehicle
302  * to the filtered vehicles set.
303  */
304  if (filterModes && !analyzedModes.contains(event.getNetworkMode())) this.vehiclesToFilter.add(event.getVehicleId());
305  }

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.notifyMobsimInitialized ( MobsimInitializedEvent  e)

Definition at line 311 of file TravelTimeCollector.java.

References org.matsim.api.core.v01.network.Network.getLinks(), org.matsim.withinday.trafficmonitoring.TravelTimeInfoProvider.getTravelTimeInfo(), org.matsim.withinday.trafficmonitoring.TravelTimeCollector.infoTimeStep, org.matsim.withinday.trafficmonitoring.TravelTimeCollector.initParallelThreads(), and org.matsim.core.utils.misc.Time.UNDEFINED_TIME.

311  {
312  problem = false ;
313 
314  if (e.getQueueSimulation() instanceof QSim) {
315  double simStartTime = ((QSim) e.getQueueSimulation()).getSimTimer().getSimStartTime();
316 
317  /*
318  * infoTime may be < simStartTime, this ensures to print
319  * out the info at the very first timestep already
320  */
321  this.nextInfoTime = (int)(Math.floor(simStartTime / this.infoTimeStep) * this.infoTimeStep);
322  }
323 
324 
325  for (Link link : this.network.getLinks().values()) {
326  double freeSpeedTravelTime = link.getLength() / link.getFreespeed(Time.UNDEFINED_TIME);
327 
328  TravelTimeInfo travelTimeInfo = this.travelTimeInfoProvider.getTravelTimeInfo(link);
329  travelTimeInfo.travelTime = freeSpeedTravelTime;
330  travelTimeInfo.init(freeSpeedTravelTime);
331  }
332 
333  // Now initialize the Parallel Update Threads
335  }
TravelTimeInfo getTravelTimeInfo(final Id< Link > linkId)
Map< Id< Link >,?extends Link > getLinks()

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.notifyMobsimAfterSimStep ( MobsimAfterSimStepEvent  e)

Definition at line 339 of file TravelTimeCollector.java.

References org.matsim.api.core.v01.network.Link.getLength(), and org.matsim.withinday.trafficmonitoring.TravelTimeInfoProvider.getTravelTimeInfo().

339  {
340  problem = false ;
341 
342  // yyyy In terms of "bushfire evacuation" design (and maybe even in terms of more general transport telematics)
343  // one would need some settable TimeDependentNetworkUpdater class. kai, dec'17
344 
345 // Collection<Link> links = changedLinks.remove(e.getSimulationTime());
346  // yyyyyy I find it quite optimistic to do this with doubles. What
347  // if someone adds a link change event in between two integer
348  // time steps? kai, dec'17
349 
350  while( !changedLinks.isEmpty() && changedLinks.firstKey() <= e.getSimulationTime() ) {
351  Map<Link, Double> map = changedLinks.pollFirstEntry().getValue();
352  for ( Map.Entry<Link,Double> link2speed : map.entrySet() ) {
353  Link link = link2speed.getKey() ;
354  double freeSpeedTravelTime = link.getLength() / link2speed.getValue() ;
355  if ( e.getSimulationTime() > ((QSim)e.getQueueSimulation()).getSimTimer().getSimStartTime() ) {
356  // (otherwise, in some simulations one gets a lot of change events at time 0. kai, dec'17)
357  log.debug("time=" + e.getSimulationTime() +
358  "; network change event for link=" + link.getId() +
359  "; new ttime="+ freeSpeedTravelTime );
360  }
361  TravelTimeInfo travelTimeInfo = this.travelTimeInfoProvider.getTravelTimeInfo(link);
362  travelTimeInfo.init(freeSpeedTravelTime);
363  travelTimeInfo.checkActiveState(); // ensure that the estimated link travel time is updated
364  }
365  }
366 
367 // if (links != null) {
368 // for (Link link : links) {
369 // double freeSpeedTravelTime = link.getLength() / link.getFreespeed(e.getSimulationTime());
370 // if ( e.getSimulationTime() > 0 ) {
371 // log.debug("time=" + e.getSimulationTime() +
372 // ";\tnetwork change event for link=" + link.getId() +
373 // ";\tnew ttime="+ freeSpeedTravelTime );
374 // }
375 // TravelTimeInfo travelTimeInfo = this.travelTimeInfoProvider.getTravelTimeInfo(link);
376 // travelTimeInfo.init(freeSpeedTravelTime);
377 // travelTimeInfo.checkActiveState(); // ensure that the estimated link travel time is updated
378 // }
379 // }
380  }
TravelTimeInfo getTravelTimeInfo(final Id< Link > linkId)

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.notifyMobsimBeforeSimStep ( MobsimBeforeSimStepEvent  e)

Definition at line 384 of file TravelTimeCollector.java.

References org.matsim.withinday.trafficmonitoring.TravelTimeCollector.printInfo(), and org.matsim.withinday.trafficmonitoring.TravelTimeCollector.run().

384  {
385  problem = false ;
386 
387  now = e.getSimulationTime() ;
388 
389  // parallel Execution
390  this.run(e.getSimulationTime());
391 
392  printInfo(e.getSimulationTime());
393  }

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.notifyMobsimBeforeCleanup ( MobsimBeforeCleanupEvent  e)

Definition at line 397 of file TravelTimeCollector.java.

397  {
398  problem = false ;
399 
400  /*
401  * Calling the afterSim Method of the Threads will set their
402  * simulationRunning flag to false.
403  */
404  for (UpdateMeanTravelTimesRunnable runnable : this.updateMeanTravelTimesRunnables) {
405  runnable.afterSim();
406  }
407 
408  /*
409  * Triggering the startBarrier of the UpdateMeanTravelTimesRunnables.
410  * They will check whether the Simulation is still running.
411  * It is not, so the Threads will terminate.
412  */
413  try {
414  this.startBarrier.await();
415  } catch (InterruptedException | BrokenBarrierException ex) {
416  throw new RuntimeException(ex);
417  }
418  }
void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.printInfo ( double  time)
private

Definition at line 420 of file TravelTimeCollector.java.

References org.matsim.withinday.trafficmonitoring.TravelTimeCollector.infoTimeStep, and org.matsim.core.utils.misc.Time.writeTime().

Referenced by org.matsim.withinday.trafficmonitoring.TravelTimeCollector.notifyMobsimBeforeSimStep().

420  {
421  if (time >= this.nextInfoTime) {
422  int activeLinks = 0;
423  for (UpdateMeanTravelTimesRunnable runnable : this.updateMeanTravelTimesRunnables) {
424  activeLinks += runnable.getActiveLinksCount();
425  }
426 
427  log.info("TravelTimeCollector at " + Time.writeTime(time) + " #links=" + activeLinks);
428 
429  this.nextInfoTime += this.infoTimeStep;
430  }
431  }

Here is the call graph for this function:

void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.run ( double  time)
private

Definition at line 494 of file TravelTimeCollector.java.

Referenced by org.matsim.withinday.trafficmonitoring.TravelTimeCollector.notifyMobsimBeforeSimStep().

494  {
495 
496  try {
497  // set current Time
498  for (UpdateMeanTravelTimesRunnable updateMeanTravelTimesRunnable : updateMeanTravelTimesRunnables) {
499  updateMeanTravelTimesRunnable.setTime(time);
500  }
501 
502  this.startBarrier.await();
503 
504  this.endBarrier.await();
505  } catch (InterruptedException | BrokenBarrierException e) {
506  throw new RuntimeException(e);
507  }
508  }
void org.matsim.withinday.trafficmonitoring.TravelTimeCollector.initParallelThreads ( )
private

Definition at line 510 of file TravelTimeCollector.java.

References org.matsim.withinday.trafficmonitoring.TravelTimeCollector.numOfThreads, org.matsim.withinday.trafficmonitoring.TravelTimeCollector.UpdateMeanTravelTimesRunnable.setEndBarrier(), and org.matsim.withinday.trafficmonitoring.TravelTimeCollector.UpdateMeanTravelTimesRunnable.setStartBarrier().

Referenced by org.matsim.withinday.trafficmonitoring.TravelTimeCollector.notifyMobsimInitialized().

510  {
511 
512  this.startBarrier = new CyclicBarrier(numOfThreads + 1);
513  this.endBarrier = new CyclicBarrier(numOfThreads + 1);
514 
515  Thread[] threads = new Thread[numOfThreads];
516  this.updateMeanTravelTimesRunnables = new UpdateMeanTravelTimesRunnable[numOfThreads];
517 
518  // setup threads
519  for (int i = 0; i < numOfThreads; i++) {
520  UpdateMeanTravelTimesRunnable updateMeanTravelTimesRunnable = new UpdateMeanTravelTimesRunnable();
521  updateMeanTravelTimesRunnable.setStartBarrier(this.startBarrier);
522  updateMeanTravelTimesRunnable.setEndBarrier(this.endBarrier);
523  updateMeanTravelTimesRunnables[i] = updateMeanTravelTimesRunnable;
524 
525  Thread thread = new Thread(updateMeanTravelTimesRunnable);
526  thread.setName("UpdateMeanTravelTimes" + i);
527  thread.setDaemon(true); // make the Thread demons so they will terminate automatically
528  threads[i] = thread;
529 
530  thread.start();
531  }
532 
533  /*
534  * Assign the TravelTimeInfos to the Threads
535  */
536  int roundRobin = 0;
537  for (TravelTimeInfo travelTimeInfo : this.travelTimeInfos.values()) {
538  travelTimeInfo.runnable = updateMeanTravelTimesRunnables[roundRobin % numOfThreads];
539  roundRobin++;
540  }
541 
542  /*
543  * After initialization the Threads are waiting at the endBarrier. We
544  * trigger this Barrier once so they wait at the startBarrier what has
545  * to be their state when the run() method is called.
546  */
547  try {
548  this.endBarrier.await();
549  } catch (InterruptedException | BrokenBarrierException e) {
550  throw new RuntimeException(e);
551  }
552  }

Here is the call graph for this function:

void org.matsim.core.mobsim.framework.listeners.MobsimInitializedListener.notifyMobsimInitialized ( final MobsimInitializedEvent  e)
inherited
void org.matsim.core.mobsim.framework.listeners.MobsimBeforeSimStepListener.notifyMobsimBeforeSimStep ( final MobsimBeforeSimStepEvent  e)
inherited
void org.matsim.core.mobsim.framework.listeners.MobsimAfterSimStepListener.notifyMobsimAfterSimStep ( final MobsimAfterSimStepEvent  e)
inherited
void org.matsim.core.mobsim.framework.listeners.MobsimBeforeCleanupListener.notifyMobsimBeforeCleanup ( final MobsimBeforeCleanupEvent  e)
inherited

Member Data Documentation

final Logger org.matsim.withinday.trafficmonitoring.TravelTimeCollector.log = Logger.getLogger(TravelTimeCollector.class)
staticprivate

Definition at line 72 of file TravelTimeCollector.java.

Network org.matsim.withinday.trafficmonitoring.TravelTimeCollector.network
private

Definition at line 74 of file TravelTimeCollector.java.

Map<Id<Vehicle>, TripBin> org.matsim.withinday.trafficmonitoring.TravelTimeCollector.regularActiveTrips
private

Definition at line 77 of file TravelTimeCollector.java.

Map<Id<Link>, TravelTimeInfo> org.matsim.withinday.trafficmonitoring.TravelTimeCollector.travelTimeInfos
private

Definition at line 78 of file TravelTimeCollector.java.

TravelTimeInfoProvider org.matsim.withinday.trafficmonitoring.TravelTimeCollector.travelTimeInfoProvider
private

Definition at line 80 of file TravelTimeCollector.java.

TreeMap<Double, Map<Link,Double> > org.matsim.withinday.trafficmonitoring.TravelTimeCollector.changedLinks
private

Definition at line 83 of file TravelTimeCollector.java.

CyclicBarrier org.matsim.withinday.trafficmonitoring.TravelTimeCollector.startBarrier
private

Definition at line 89 of file TravelTimeCollector.java.

CyclicBarrier org.matsim.withinday.trafficmonitoring.TravelTimeCollector.endBarrier
private

Definition at line 90 of file TravelTimeCollector.java.

UpdateMeanTravelTimesRunnable [] org.matsim.withinday.trafficmonitoring.TravelTimeCollector.updateMeanTravelTimesRunnables
private

Definition at line 91 of file TravelTimeCollector.java.

final int org.matsim.withinday.trafficmonitoring.TravelTimeCollector.numOfThreads
private
final int org.matsim.withinday.trafficmonitoring.TravelTimeCollector.infoTimeStep = 3600
private
int org.matsim.withinday.trafficmonitoring.TravelTimeCollector.nextInfoTime = 0
private

Definition at line 95 of file TravelTimeCollector.java.

Set<Id<Vehicle> > org.matsim.withinday.trafficmonitoring.TravelTimeCollector.vehiclesToFilter
private

Definition at line 97 of file TravelTimeCollector.java.

final Set<String> org.matsim.withinday.trafficmonitoring.TravelTimeCollector.analyzedModes
private
final boolean org.matsim.withinday.trafficmonitoring.TravelTimeCollector.filterModes
private

Definition at line 99 of file TravelTimeCollector.java.

boolean org.matsim.withinday.trafficmonitoring.TravelTimeCollector.problem = true
private

Definition at line 101 of file TravelTimeCollector.java.

int org.matsim.withinday.trafficmonitoring.TravelTimeCollector.resetCnt = 0
private

Definition at line 102 of file TravelTimeCollector.java.

double org.matsim.withinday.trafficmonitoring.TravelTimeCollector.now = Double.NEGATIVE_INFINITY
private

Definition at line 104 of file TravelTimeCollector.java.


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