public static int indexOfPlanElement(MobsimAgent agent, PlanElement pe) { Plan plan = getModifiablePlan(agent) ; List<PlanElement> planElements = plan.getPlanElements() ; return planElements.indexOf(pe) ; }
private void printPlan(String str ,MobsimAgent agent1) { Plan plan = WithinDayAgentUtils.getModifiablePlan(agent1) ; log.debug(str + plan ); ; for ( PlanElement pe : plan.getPlanElements() ) { log.debug(" " + pe ); ; } } }
@Override public boolean doReplanning(MobsimAgent withinDayAgent) { this.planRouter.run(WithinDayAgentUtils.getModifiablePlan(withinDayAgent)); return true; } }
public static List<PlanElement> subList( MobsimAgent agent, int fromIndex, int toIndex) { return getModifiablePlan(agent).getPlanElements().subList( fromIndex, toIndex ) ; } }
static void printPlan(String str ,MobsimAgent agent1) { Plan plan = WithinDayAgentUtils.getModifiablePlan(agent1) ; log.debug(str + plan ); ; for ( PlanElement pe : plan.getPlanElements() ) { log.debug(" " + pe ); ; } } }
public static Plan printPlan(MobsimAgent agent1) { final Plan plan = getModifiablePlan(agent1); return printPlan(plan) ; }
public void flushEverythingBeyondCurrent(MobsimAgent agent) { List<PlanElement> pes = WithinDayAgentUtils.getModifiablePlan(agent).getPlanElements() ; Integer index = WithinDayAgentUtils.getCurrentPlanElementIndex(agent) ; for ( int ii=pes.size()-1 ; ii>index ; ii-- ) { pes.remove(ii) ; } } public void rescheduleCurrentActivityEndtime(MobsimAgent agent, double newEndTime) {
public Activity findRealActAfter(MobsimAgent agent, int index) { Plan plan = WithinDayAgentUtils.getModifiablePlan(agent) ; List<PlanElement> planElements = plan.getPlanElements() ; return (Activity) planElements.get( findIndexOfRealActAfter(agent, index) ) ; } public int findIndexOfRealActAfter(MobsimAgent agent, int index) {
public Trip findTripAtPlanElementIndex( MobsimAgent agent, int index ) { return findTripAtPlanElement( agent, WithinDayAgentUtils.getModifiablePlan(agent).getPlanElements().get(index) ) ; } // current trip:
public static Activity findNextActivityWithType( MobsimAgent agent, String type ) { int index = indexOfNextActivityWithType( agent, type ) ; return (Activity) getModifiablePlan(agent).getPlanElements().get(index) ; }
public static int indexOfNextActivityWithType( MobsimAgent agent, String type ) { Plan plan = getModifiablePlan(agent) ; List<PlanElement> planElements = plan.getPlanElements() ; for ( int index = getCurrentPlanElementIndex(agent) ; index < planElements.size() ; index++ ) { PlanElement pe = planElements.get(index) ; if ( pe instanceof Activity ) { if ( ((Activity)pe).getType().equals(type) ) { return index ; } } } return -1 ; }
public static PlanElement getCurrentPlanElement(MobsimAgent agent) { return getModifiablePlan(agent).getPlanElements().get(getCurrentPlanElementIndex(agent)); }
private void replanCurrentTripFromStageActivity(final List<PlanElement> tripElements, int tripElementsIndex, MobsimAgent agent, String mainMode) { // String mainMode = tripRouter.getMainModeIdentifier().identifyMainMode(tripElements) ; // yyyy I wonder what this will do if we are already at the egress stage. kai, oct'17 List<PlanElement> subTripPlanElements = tripElements.subList(tripElementsIndex,tripElements.size()-1) ; Trip subTrip = TripStructureUtils.getTrips(subTripPlanElements, tripRouter.getStageActivityTypes()).get(0) ; final double dpTime = agent.getActivityEndTime() ; this.replanFutureTrip(subTrip, WithinDayAgentUtils.getModifiablePlan(agent), mainMode, dpTime ) ; } // future:
public Trip findTripAtPlanElement(MobsimAgent agent, PlanElement pe) { log.debug("plan element to be found=" + pe ) ; List<Trip> trips = TripStructureUtils.getTrips( WithinDayAgentUtils.getModifiablePlan(agent), tripRouter.getStageActivityTypes() ) ; for ( Trip trip : trips ) { for ( PlanElement te : trip.getTripElements() ) { log.debug("trip element to be compared with=" + te ) ; if ( te==pe ) { log.debug("found trip element") ; return trip; } } } throw new ReplanningException("trip not found") ; } public Trip findTripAtPlanElementIndex( MobsimAgent agent, int index ) {
public Activity findRealActBefore(MobsimAgent agent, int index) { Plan plan = WithinDayAgentUtils.getModifiablePlan(agent) ; List<PlanElement> planElements = plan.getPlanElements() ; Activity prevAct = null ; for ( int ii=0 ; ii<index ; ii++ ) { if ( planElements.get(ii) instanceof Activity ) { Activity act = (Activity) planElements.get(ii) ; if ( !this.tripRouter.getStageActivityTypes().isStageActivity( act.getType() ) ) { prevAct = act ; } } } return prevAct; } // private Facility asFacility(Activity activity) {
public final void rescheduleActivityEndtime( MobsimAgent agent, int index, double newEndTime ) { Activity activity = (Activity) WithinDayAgentUtils.getModifiablePlan(agent).getPlanElements().get(index) ; activity.setEndTime(newEndTime); WithinDayAgentUtils.resetCaches(agent); WithinDayAgentUtils.rescheduleActivityEnd(agent, mobsim); } public final Activity replaceActivity(MobsimAgent agent, int index, Activity newAct, String upstreamMode, String downstreamMode ) {
@Deprecated // yyyy but I don't have an easy replacement yet // (maybe just editTrips.replanCurrentTrip(...)?) protected final void reRouteCurrentLeg( MobsimAgent agent, double now ) { Plan plan = WithinDayAgentUtils.getModifiablePlan(agent) ; PlanElement pe = plan.getPlanElements().get( WithinDayAgentUtils.getCurrentPlanElementIndex(agent)) ; if ( !(pe instanceof Leg) ) { return ; } int currentLinkIndex = WithinDayAgentUtils.getCurrentRouteLinkIdIndex(agent) ; this.editRoutes.replanCurrentLegRoute((Leg)pe, ((HasPerson)agent).getPerson(), currentLinkIndex, now ) ; WithinDayAgentUtils.resetCaches(agent); } @Deprecated // I don't think that this is really needed for the bushfire applications. kai, nov'17
public final void replanCurrentLeg( MobsimAgent agent, double now ) { Plan plan = WithinDayAgentUtils.getModifiablePlan(agent) ; PlanElement pe = plan.getPlanElements().get( WithinDayAgentUtils.getCurrentPlanElementIndex(agent)) ; if ( !(pe instanceof Leg) ) { return ; } int currentLinkIndex = WithinDayAgentUtils.getCurrentRouteLinkIdIndex(agent) ; this.replanCurrentLegRoute((Leg)pe, ((HasPerson)agent).getPerson(), currentLinkIndex, now ) ; WithinDayAgentUtils.resetCaches(agent); }
public String getModeOfCurrentOrNextTrip(MobsimAgent agent) { Trip trip ; if ( isAtRealActivity( agent ) ) { Activity activity = (Activity) WithinDayAgentUtils.getCurrentPlanElement(agent) ; trip = editTrips.findTripAfterActivity(WithinDayAgentUtils.getModifiablePlan(agent), activity) ; } else { trip = editTrips.findCurrentTrip(agent) ; } return tripRouter.getMainModeIdentifier().identifyMainMode(trip.getTripElements()) ; } public void flushEverythingBeyondCurrent(MobsimAgent agent) {
@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; }