MATSIM
CongestionDetectionEventHandler.java
Go to the documentation of this file.
1 package tutorial.programming.example06EventsHandling;
2 
3 import java.util.HashMap;
4 import java.util.Map;
5 
6 import org.matsim.api.core.v01.Id;
15 import org.matsim.vehicles.Vehicle;
26 
27  private Map<Id<Vehicle>,Double> earliestLinkExitTime = new HashMap<>() ;
28  private Network network;
29 
31  this.network = network ;
32  }
33 
34  @Override
35  public void reset(int iteration) {
36  this.earliestLinkExitTime.clear();
37  }
38 
39  @Override
40  public void handleEvent(LinkEnterEvent event) {
41  Link link = network.getLinks().get( event.getLinkId() ) ;
42  double linkTravelTime = link.getFreespeed( event.getTime() ) / link.getLength() ;
43  this.earliestLinkExitTime.put( event.getVehicleId(), event.getTime() + linkTravelTime ) ;
44  }
45 
46  @Override
47  public void handleEvent(LinkLeaveEvent event) {
48  double excessTravelTime = event.getTime() - this.earliestLinkExitTime.get( event.getVehicleId() ) ;
49  System.out.println( "excess travel time: " + excessTravelTime ) ;
50  }
51 
52  @Override
53  public void handleEvent(PersonDepartureEvent event) {
54  Id<Vehicle> vehId = Id.create( event.getPersonId(), Vehicle.class ) ; // unfortunately necessary since vehicle departures are not uniformly registered
55  this.earliestLinkExitTime.put( vehId, event.getTime() ) ;
56  }
57 }
Map< Id< Link >,?extends Link > getLinks()