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 ) {
private boolean doReplanning(MobsimAgent mobsimAgent, double time, Mobsim mobsim) { PlanAgent planAgent = (PlanAgent) mobsimAgent; Id<Person> agentId = planAgent.getCurrentPlan().getPerson().getId(); PlanElement currentPlanElement = WithinDayAgentUtils.getCurrentPlanElement(mobsimAgent); if (currentPlanElement instanceof Activity) { Activity act = (Activity) currentPlanElement; if (encounteredActivities.contains(act)) { return false; } CarrierDriverAgent driver = carrierAgentTracker.getDriver(agentId); TourActivity plannedActivity = (TourActivity) driver.getPlannedTourElement(WithinDayAgentUtils.getCurrentPlanElementIndex(mobsimAgent)); if (plannedActivity instanceof Start){ encounteredActivities.add(act); return false; } else { double newEndTime = Math.max(time, plannedActivity.getTimeWindow().getStart()) + plannedActivity.getDuration(); // logger.info("[agentId="+ agentId + "][currentTime="+Time.writeTime(time)+"][actDuration="+plannedActivity.getDuration()+ // "[timeWindow="+ plannedActivity.getTimeWindow() + "][plannedActEnd="+ Time.writeTime(act.getEndTime()) + "][newActEnd="+Time.writeTime(newEndTime)+"]"); act.setMaximumDuration(Time.UNDEFINED_TIME); act.setEndTime(newEndTime); // WithinDayAgentUtils.calculateAndSetDepartureTime(mobsimAgent, act); WithinDayAgentUtils.resetCaches( mobsimAgent ); WithinDayAgentUtils.rescheduleActivityEnd(mobsimAgent,mobsim); encounteredActivities.add(act); return true ; } } return true; } }