public Id<Person> getDriverOfVehicle(Id<Vehicle> vehicleId) { return vehicle2Driver.getDriverOfVehicle(vehicleId); }
@Override public void handleEvent(LinkEnterEvent event) { Id<Person> driverOfVehicle = delegate.getDriverOfVehicle(event.getVehicleId()); List<Id<Link>> route = experiencedRoutes.get(driverOfVehicle); route.add(event.getLinkId()); }
@Override public void handleEvent(LinkEnterEvent event) { this.linkEnteredAgents.put(delegate.getDriverOfVehicle(event.getVehicleId()), event.getLinkId()); }
@Override public void handleEvent(LinkLeaveEvent event) { this.removeEarliestLinkExitTimesAtTime(delegate.getDriverOfVehicle(event.getVehicleId())); }
@Override public void handleEvent(LinkEnterEvent event) { String ptMode = this.vehId2ptModeMap.get(event.getVehicleId()); if (ptMode == null) { ptMode = "nonPtMode"; } if (ptMode2CountMap.get(ptMode) == null) { ptMode2CountMap.put(ptMode, 0.0); } double capacity; if(super.ptDriverIds.contains(delegate.getDriverOfVehicle(event.getVehicleId()))){ capacity = this.vehId2VehicleCapacity.get(event.getVehicleId()); }else{ // it's a car, which will not appear in the vehicles-list, called in updateVehicles \dr // TODO [AN] nonPtMode is not fully implemented - check that again capacity = 1; } double capacityMeterForThatLink = capacity * this.network.getLinks().get(event.getLinkId()).getLength(); ptMode2CountMap.put(ptMode, ptMode2CountMap.get(ptMode) + capacityMeterForThatLink); }
@Override public void handleEvent(LinkEnterEvent event) { CarrierAgent carrierAgent = getCarrierAgent(delegate.getDriverOfVehicle(event.getVehicleId())); if(carrierAgent == null) return; carrierAgent.handleEvent(event); }
@Override public void handleEvent(LinkEnterEvent event) { getDriver(vehicle2DriverEventHandler.getDriverOfVehicle(event.getVehicleId())).handleEvent(event); }
@Override public void handleEvent(LinkEnterEvent event) { vehicleEnterTimes.put( event.getVehicleId(), event.getTime() ) ; if ( this.tolledLinkIds.contains( event.getLinkId() ) ) { final Double gantryCountSoFar = this.vehicleGantryCounts.get( event.getVehicleId() ) ; if ( gantryCountSoFar==null ) { this.vehicleGantryCounts.put( event.getVehicleId(), 1. ) ; } else { this.vehicleGantryCounts.put( event.getVehicleId(), 1. + gantryCountSoFar ) ; } } if ( this.otherTolledLinkIds.contains( event.getLinkId() ) ) { add( delegate.getDriverOfVehicle(event.getVehicleId()), 1., CERTAIN_LINKS_CNT ); } }
@Override public void handleEvent(LinkLeaveEvent event) { DepartureEvent removeMe = new DepartureEvent(delegate.getDriverOfVehicle(event.getVehicleId())); Double departureTime = departureEventsTimes.remove(removeMe); if (departureTime != null) { double departureDelay = event.getTime() - departureTime.intValue(); if (departureDelay < 0) { throw new RuntimeException("departureDelay cannot be < 0."); } Id<Link> linkId = event.getLinkId(); DepartureDelayData ddd = this.getDepartureDelayRole(linkId); if (ddd == null) { ddd = new DepartureDelayData(); this.linkData.put(linkId, ddd); } ddd.addDepartureDelay(departureTime, departureDelay); } }
@Override public void handleEvent(final LinkEnterEvent event) { testForSnapshot(event.getTime()); this.eventLinks.get(event.getLinkId()).enter(getEventAgent(delegate.getDriverOfVehicle(event.getVehicleId()), event.getTime())); }
@Override public void handleEvent(final LinkLeaveEvent event) { testForSnapshot(event.getTime()); this.eventLinks.get(event.getLinkId()).leave(getEventAgent(delegate.getDriverOfVehicle(event.getVehicleId()), event.getTime())); }
@Override public void handleEvent(LinkEnterEvent event) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); String transportMode = this.transportModeProvider.getTransportMode(driverId); double now = event.getTime(); Link link = this.scenario.getNetwork().getLinks().get(event.getLinkId()); Person person = this.scenario.getPopulation().getPersons().get(driverId); double earliestExitTime; if (this.multiModalTravelTimes != null) { if (transportMode == null) { throw new RuntimeException( "Agent " + driverId.toString() + " is currently not performing a leg. Aborting!"); } else { TravelTime travelTime = this.multiModalTravelTimes.get(transportMode); if (travelTime == null) { throw new RuntimeException( "No TravelTime object was found for mode " + transportMode + ". Aborting!"); } earliestExitTime = Math.floor(now + travelTime.getLinkTravelTime(link, now, person, null)); } } else { earliestExitTime = Math.floor(now + this.freeSpeedTravelTime.getLinkTravelTime(link, now, person, null)); } this.handleAddEarliestLinkExitTime(driverId, earliestExitTime); }
@Override public void handleEvent(final LinkEnterEvent event) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); // getting the (monetary? generalized?) cost of the link Cost cost = this.scheme.getLinkCostInfo(event.getLinkId(), event.getTime(), driverId, event.getVehicleId() ); if (cost != null) { // i.e. if there is a toll on the link Link link = this.network.getLinks().get(event.getLinkId()); if (link != null) { // get some distance that has been accumulated (how?) up to this point: Double length = this.agentDistance.get(driverId); // if nothing has been accumlated so far, initialize this at zero: if (length == null) { length = zero; } // add the new length to the already accumulated length: length = length + link.getLength(); // put the result again in the "memory": this.agentDistance.put(driverId, length); } } }
@Override public void handleEvent(final LinkEnterEvent event, final Link link) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); Cost cost = CalcPaidToll.this.scheme.getLinkCostInfo(link.getId(), event.getTime(), driverId, event.getVehicleId() ); if (cost != null) {
@Override public void handleEvent(final LinkEnterEvent event, final Link link) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); Cost cost = CalcPaidToll.this.scheme.getLinkCostInfo(link.getId(), event.getTime(), driverId, event.getVehicleId() ); if (cost != null) { AgentTollInfo info = CalcPaidToll.this.agents.get(driverId); if (info == null) { /* The agent is not yet "registered" */ /* Generate a "registration object" */ info = new AgentTollInfo(); /* Register it. */ CalcPaidToll.this.agents.put(driverId, info); } info.toll += cost.amount; events.processEvent(new PersonMoneyEvent(event.getTime(),driverId,-cost.amount)); } } }
@Override public void handleEvent(final LinkEnterEvent event, final Link link) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); Cost cost = CalcPaidToll.this.scheme.getLinkCostInfo(link.getId(), event.getTime(), driverId, event.getVehicleId() ); if (cost != null) { AgentTollInfo info = CalcPaidToll.this.agents.get(driverId); if (info == null) { /* The agent is not yet "registered" */ /* Generate a "registration object" */ info = new AgentTollInfo(); /* Register it. */ CalcPaidToll.this.agents.put(driverId, info); /* The toll amount comes from the current link, but should * be the same for all links. */ info.toll = cost.amount; events.processEvent(new PersonMoneyEvent(event.getTime(),driverId,-cost.amount)); } } } }
@Override public void handleEvent(LinkLeaveEvent event) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId());
@Override public void handleEvent(final LinkEnterEvent event, final Link link) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); Cost cost = CalcPaidToll.this.scheme.getLinkCostInfo(link.getId(), event.getTime(), driverId, event.getVehicleId()); if (cost != null) { double newToll = link.getLength() * cost.amount; AgentTollInfo info = CalcPaidToll.this.agents.get(driverId); if (info == null) { /* The agent is not yet "registered". */ /* Generate a "registration object. */ info = new AgentTollInfo(); /* Register it. */ CalcPaidToll.this.agents.put(driverId, info); } info.toll += newToll; events.processEvent(new PersonMoneyEvent(event.getTime(),driverId,-newToll)); } } }
Id<Person> driverId = this.vehicles2Drivers.getDriverOfVehicle(vehicleId) ; ScoringFunction scoringFunction = getScoringFunctionForAgent( driverId );