public PlanElement removeActivity(MobsimAgent agent, int index, String mode) {
Plan plan = WithinDayAgentUtils.getModifiablePlan(agent) ;
List<PlanElement> planElements = plan.getPlanElements() ;
checkIfNotInPastOrCurrent(agent, index);
final Trip tripBefore = TripStructureUtils.findTripEndingAtActivity( (Activity) planElements.get(index),plan,tripRouter.getStageActivityTypes() );
final Trip tripAfter = TripStructureUtils.findTripStartingAtActivity( (Activity)planElements.get(index),plan,tripRouter.getStageActivityTypes() );
if ( mode==null ) {
final String mainModeBefore = tripRouter.getMainModeIdentifier().identifyMainMode( tripBefore.getTripElements() );
final String mainModeAfter = tripRouter.getMainModeIdentifier().identifyMainMode( tripAfter.getTripElements() );
if ( mainModeBefore.equals( mainModeAfter ) ) {
mode = mainModeBefore ;
} else {
throw new ReplanningException("mode not given and mode before removed activity != mode after removed activity; don't know which mode to use") ;
}
}
PlanElement pe = planElements.remove(index) ;
if ( checkIfTripHasAlreadyStarted( agent, tripBefore.getTripElements() ) ) {
editTrips.replanCurrentTrip(agent, mobsim.getSimTimer().getTimeOfDay() , mode);
} else {
editTrips.insertEmptyTrip(plan, tripBefore.getOriginActivity(), tripAfter.getDestinationActivity(), mode ) ;
}
WithinDayAgentUtils.resetCaches(agent);
this.mobsim.rescheduleActivityEnd(agent);
return pe ;
}
public final void rescheduleActivityEndtime( MobsimAgent agent, int index, double newEndTime ) {