@Override public boolean applyAgentFilter(Id<Person> id, double time) { MobsimAgent agent = this.agents.get(id); if (!(agent.getState() == MobsimAgent.State.LEG)) return false; if (!(modes.contains(agent.getMode()))) return false; return true; } }
@Override public boolean applyAgentFilter(Id<Person> id, double time) { MobsimAgent agent = this.agents.get(id); // check whether the agent is performing a leg if (!(agent.getState() == MobsimAgent.State.LEG)) return false; /* * Check whether the agent ends its leg on the current link. If * yes, remove the agent from the set. */ DriverAgent driver = (DriverAgent) agent; // Id<Link> nextLinkId = driver.chooseNextLinkId(); // if (nextLinkId == null) return false; if ( driver.isWantingToArriveOnCurrentLink() ) return false ; 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; }
@Override public boolean applyAgentFilter(Id<Person> id, double time) { MobsimAgent agent = this.agents.get(id); if (!(agent.getState() == MobsimAgent.State.ACTIVITY)) return false; int planElementIndex = WithinDayAgentUtils.getCurrentPlanElementIndex(agent); List<PlanElement> planElements = WithinDayAgentUtils.getModifiablePlan(agent).getPlanElements(); List<PlanElement> subList = planElements.subList(planElementIndex, planElements.size()); Iterator<PlanElement> iter = subList.iterator(); while (iter.hasNext()) { PlanElement planElement = iter.next(); if (planElement instanceof Leg) { Leg leg = (Leg) planElement; if (modes.contains(leg.getMode())) return true; else return false; // mode not in set of valid modes } } // no next leg was found return false; } }
private void arrangeNextAgentAction(final MobsimAgent agent) { switch( agent.getState() ) { case ACTIVITY: arrangeAgentActivity(agent); break ; case LEG: this.arrangeAgentDeparture(agent); break ; case ABORT: this.events.processEvent( new PersonStuckEvent(this.simTimer.getTimeOfDay(), agent.getId(), agent.getCurrentLinkId(), agent.getMode())); // NOTE: in the same way as one can register departure handler or activity handler, we could allow to // register abort handlers. If someone ever comes to this place here and needs this. kai, nov'17 this.agents.remove(agent.getId()) ; this.agentCounter.decLiving(); this.agentCounter.incLost(); break ; default: throw new RuntimeException("agent with unknown state (possibly null)") ; } }
if ( agent.getState()!=State.ACTIVITY ) { return ;