@Override public Plan getCurrentPlan() { return planDelegate.getCurrentPlan(); }
public static Integer getCurrentPlanElementIndex(MobsimAgent agent) { // if (agent instanceof PersonDriverAgentImpl) { // return ((PersonDriverAgentImpl) agent).getCurrentPlanElementIndex() ; // } else // commenting out the above so the new code runs through the existing tests. kai, nov'17 if ( agent instanceof PlanAgent ) { return ((PlanAgent)agent).getCurrentPlan().getPlanElements().indexOf( ((PlanAgent)agent).getCurrentPlanElement() ) ; } else { throw new RuntimeException("Sorry, agent is from type " + agent.getClass().toString() + " which does not support getCurrentPlanElementIndex(...). Aborting!"); } }
@Override public PlanElement getNextPlanElement() { return planDelegate.getNextPlanElement(); }
@Override public PlanElement getCurrentPlanElement() { return planDelegate.getCurrentPlanElement(); }
public PlanElement getPreviousPlanElement() { return this.planDelegate.getPreviousPlanElement(); }
private static boolean checkIfTripHasAlreadyStarted(MobsimAgent agent, final List<PlanElement> currentTripElements) { return currentTripElements.contains( ((PlanAgent)agent).getCurrentPlanElement() ) ; } private static void checkIfNotInPastOrCurrent(MobsimAgent agent, int index) {
@Override public Plan getPlan(MobsimAgent agent) { if (agent instanceof PlanAgent) { return ((PlanAgent) agent).getCurrentPlan(); } else if (nonPlanAgentQueryHelper != null) { return OnTheFlyServer.this.nonPlanAgentQueryHelper.getPlan(agent); } else { return null; } }
private static Id getDriverId(final MobsimAgent agent) { if ( !(agent instanceof PlanAgent) ) throw new RuntimeException( agent.getClass().toString() ); final Leg currentLeg = (Leg) ((PlanAgent) agent).getCurrentPlanElement(); final PassengerRoute route = (PassengerRoute) currentLeg.getRoute(); return route.getDriverId(); }
private List<Plan> getPersonsNOW() { List<Plan> actPersons = new ArrayList<>(); VisLink link = simulationView.getVisNetwork().getVisLinks().get(this.queryLinkId); Collection<? extends VisVehicle> vehs = link.getAllVehicles(); for( VisVehicle veh : vehs) { if ( veh.getDriver() instanceof PlanAgent ) { Plan plan = ((PlanAgent)veh.getDriver()).getCurrentPlan() ; actPersons.add( plan ); } } return actPersons; }
private static Collection<Id<Person>> getPassengerIds(final MobsimAgent agent) { if ( !(agent instanceof PlanAgent) ) throw new RuntimeException( agent.getClass().toString() ); final Leg currentLeg = (Leg) ((PlanAgent) agent).getCurrentPlanElement(); final DriverRoute route = (DriverRoute) currentLeg.getRoute(); return route.getPassengersIds(); }
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; } }
@Override public Activity getCurrentActivity(MobsimAgent mobsimAgent) { if (mobsimAgent == null || mobsimAgent.getState() != MobsimAgent.State.ACTIVITY) { return null; } if (mobsimAgent instanceof PlanAgent) { return (Activity) ((PlanAgent)mobsimAgent).getCurrentPlanElement(); } if (nonPlanAgentQueryHelper != null) { return nonPlanAgentQueryHelper.getCurrentActivity(mobsimAgent); } return null; }
/** * TODO Note that in MATSim leg departure times may be meaningless; the only thing that truly matters is the * activity end time. kai, jul'14 */ @Override public void notifyMobsimInitialized(@SuppressWarnings("rawtypes") MobsimInitializedEvent e) { Collection<MobsimAgent> agents = ((QSim)e.getQueueSimulation()).getAgents().values(); String mode = passengerEngine.getMode(); for (MobsimAgent mobsimAgent : agents) { if (mobsimAgent instanceof PlanAgent) { Plan plan = ((PlanAgent)mobsimAgent).getCurrentPlan(); for (PlanElement elem : plan.getPlanElements()) { if (elem instanceof Leg) { Leg leg = (Leg)elem; if (leg.getMode().equals(mode)) { Id<Link> fromLinkId = leg.getRoute().getStartLinkId(); Id<Link> toLinkId = leg.getRoute().getEndLinkId(); double departureTime = leg.getDepartureTime(); passengerEngine.prebookTrip(0, (MobsimPassengerAgent)mobsimAgent, fromLinkId, toLinkId, departureTime); } } } } } } }