@Override public boolean doReplanning(MobsimAgent withinDayAgent) { Plan executedPlan = WithinDayAgentUtils.getModifiablePlan(withinDayAgent); // If we don't have an executed plan if (executedPlan == null) return false; // Get the activity currently performed by the agent as well as the subsequent trip. Activity currentActivity = (Activity) WithinDayAgentUtils.getCurrentPlanElement(withinDayAgent); Trip trip = TripStructureUtils.findTripStartingAtActivity(currentActivity, executedPlan, this.tripRouter.getStageActivityTypes() ); // If there is no trip after the activity. if (trip == null) return false; String mainMode = this.tripRouter.getMainModeIdentifier().identifyMainMode(trip.getTripElements()); double departureTime = TripStructureUtils.getDepartureTime(trip); new EditTrips(this.tripRouter, scenario).replanFutureTrip(trip, executedPlan, mainMode, departureTime); return true; }
@Inject Replanner(QSim qSim2, TripRouter tripRouter, Map<String,TravelTime> travelTimes ) { Scenario scenario = qSim2.getScenario(); this.travelTimes = travelTimes ; { TravelTime travelTime = TravelTimeUtils.createFreeSpeedTravelTime(); TravelDisutility travelDisutility = TravelDisutilityUtils.createFreespeedTravelTimeAndDisutility(scenario.getConfig().planCalcScore()); LeastCostPathCalculator pathCalculator = new FastAStarLandmarksFactory().createPathCalculator(scenario.getNetwork(), travelDisutility, travelTime); this.editRoutes = new EditRoutes(scenario.getNetwork(), pathCalculator, scenario.getPopulation().getFactory()); } this.editTrips = new EditTrips(tripRouter, qSim2.getScenario() ) ; this.editPlans = new EditPlans(qSim2, tripRouter, editTrips, scenario.getPopulation().getFactory() ) ; }