@Override public void handleEvent(final PersonLeavesVehicleEvent event) { if (this.analyzedTransitDrivers.contains(event.getPersonId()) || !this.analyzedTransitVehicles.contains(event.getVehicleId())) { return; // ignore transit drivers or persons entering non-(analyzed-)transit vehicles } // ----------------veh_passenger-(for occupancy)-------------------------- Id vehId = event.getVehicleId(); double time = event.getTime(); Integer nPassengers = this.vehPassengers.get(vehId); if (nPassengers == null) { throw new RuntimeException("null passenger-No. in vehicle ?"); } this.vehPassengers.put(vehId, nPassengers - 1); if (this.vehPassengers.get(vehId).intValue() == 0) { this.vehPassengers.remove(vehId); } Integer passengers = this.vehPassengers.get(vehId); this.occupancyRecord.append( "time :\t" + time + " veh :\t" + vehId + " has Passenger\t" + ((passengers != null) ? passengers : 0) + "\n"); }
@Override public void handleEvent(PersonLeavesVehicleEvent event) { if (this.transitDrivers.contains(event.getPersonId()) || !this.transitVehicles.contains(event.getVehicleId())) { return; // ignore transit drivers or persons entering non-transit vehicles } Id<Vehicle> vehId = event.getVehicleId(); Integer nPassengers = this.vehPassengers.get(vehId); if (nPassengers != null) { this.vehPassengers.put(vehId, nPassengers - 1); if (this.vehPassengers.get(vehId) == 0) { this.vehPassengers.remove(vehId); } } else { log.fatal("negative passenger-No. in vehicle?"); } }
@Override public void handleEvent(PersonLeavesVehicleEvent event) { if (ptDrivers.contains(event.getPersonId())) { // ptDrivers are not considered } else { int tripNumber = personId2currentTripNumber.get(event.getPersonId()); Map<Integer, String> tripNumber2legMode = personId2tripNumber2legMode.get(event.getPersonId()); if ((tripNumber2legMode.get(tripNumber)).equals(TransportMode.car)) { // car drivers not considered here } else { double distanceTravelled = (driverId2totalDistance.get(event.getVehicleId()) - personId2distanceEnterValue.get(event.getPersonId())); Map<Integer, Double> tripNumber2distance = personId2tripNumber2tripDistance.get(event.getPersonId()); tripNumber2distance.put( tripNumber, tripNumber2distance.get(tripNumber) + distanceTravelled); personId2distanceEnterValue.remove(event.getPersonId()); } } }
@Override public void handleEvent(PersonLeavesVehicleEvent event) { if (!event.getPersonId().toString().startsWith("pt_tr")) { TravellerChain chain = chains.get(event.getPersonId()); if (event.getVehicleId().toString().startsWith("tr")) { if (chain.modes.size() == chain.distances.size() && chain.modes.get(chain.modes.size() - 1).equals("pt")) { double stageDistance = ptVehicles.get(event.getVehicleId()).removePassenger(event.getPersonId()); chain.distances.set( chain.distances.size() - 1, chain.distances.get(chain.distances.size() - 1) + stageDistance); chain.in = true; } else if (chain.modes.size() == chain.distances.size()) throw new RuntimeException("Person is leaving a pt vehicle, but is not in a pt mode"); else throw new RuntimeException("Modes list has not the same size of distances list (pt)"); } } }
@Override public void handleEvent(PersonLeavesVehicleEvent event) { List<String> activityChain = activityChains.get(event.getPersonId()); if (activityChain != null) { String lastLeg = activityChain.get(activityChain.size() - 1); if (lastLeg.startsWith("*")) if (lastLeg.endsWith("+") || lastLeg.endsWith("+t")) activityChain.set(activityChain.size() - 1, lastLeg + "-"); else throw new RuntimeException("Leave vehicle without enter"); else throw new RuntimeException("Leave vehicle without departure"); } else throw new RuntimeException("Leave vehicle without person"); }
@Override public boolean doProcessEvent(Event event) { Id linkId = null; Id vehId = null; if (event instanceof VehicleEntersTrafficEvent) { VehicleEntersTrafficEvent e = (VehicleEntersTrafficEvent) event; linkId = e.getLinkId(); vehId = e.getVehicleId(); } else if (event instanceof LinkEnterEvent) { LinkEnterEvent e = (LinkEnterEvent) event; linkId = e.getLinkId(); vehId = e.getVehicleId(); } else if (event instanceof PersonEntersVehicleEvent) { PersonEntersVehicleEvent e = (PersonEntersVehicleEvent) event; if (e.getPersonId().toString().startsWith("pt_")) { return false; } if (this.networkContainedLastLinkEnterByVehicleId.containsKey(e.getVehicleId()) && this.networkContainedLastLinkEnterByVehicleId.get(e.getVehicleId())) { this.countedPersonIds.add(e.getPersonId()); return true; } } else if (event instanceof PersonLeavesVehicleEvent) { PersonLeavesVehicleEvent e = (PersonLeavesVehicleEvent) event; if (e.getPersonId().toString().startsWith("pt_")) { return false; } if (this.networkContainedLastLinkEnterByVehicleId.containsKey(e.getVehicleId()) && this.networkContainedLastLinkEnterByVehicleId.get(e.getVehicleId()) && countedPersonIds.contains(e.getPersonId())) { countedPersonIds.remove(e.getPersonId()); return true; } else if (this.countedPersonIds.contains(e.getPersonId())) { countedPersonIds.remove(e.getPersonId()); return true; } } if (linkId != null) { if (this.network.getLinks().containsKey(linkId)) { this.networkContainedLastLinkEnterByVehicleId.put(vehId, true); return true; } else { this.networkContainedLastLinkEnterByVehicleId.put(vehId, false); return true; } } return false; }
@Override public void handleEvent(PersonLeavesVehicleEvent event) { if (event.getVehicleId().toString().equalsIgnoreCase(this.vehId)) { if (event.getTime() >= this.startTime && event.getTime() < this.stopTime) { AgentCountBox acb = this.enteredMap.get(event.getPersonId()); acb.travelTimeInVehicle = event.getTime() - acb.travelTimeInVehicle; this.completeAgents.add(acb); this.enteredMap.remove(event.getPersonId()); if (this.debug.containsKey(event.getPersonId())) { // log.warn("Agent " + event.getPersonId() + " counted twice"); this.numberOfAdditionalTripsPerformed++; } else { this.debug.put(event.getPersonId(), ""); } } } }
@Override public void handleEvent(PersonLeavesVehicleEvent event) { if (transitDriverIds.contains(event.getPersonId())) return; try { if (ptVehicles.keySet().contains(event.getVehicleId())) { TravellerChain chain = chains.get(event.getPersonId()); chain.traveledVehicle = true; PTVehicle vehicle = ptVehicles.get(event.getVehicleId()); double stageDistance = vehicle.removePassenger(event.getPersonId()); Trip trip = chain.getJourneys().getLast().getTrips().getLast(); trip.setDistance(stageDistance); trip.setAlightingStop(vehicle.lastStop); } else { driverIdFromVehicleId.remove(event.getVehicleId()); } } catch (Exception e) { System.err.println(e.getStackTrace()); System.err.println(event.toString()); } }
@Override public void handleEvent(final PersonLeavesVehicleEvent event) { handleEvent(eventsPerPerson, event.getPersonId(), event); }