@Override public void doSimStep(double time) { beforeFirstSimStep = false; while (activityEndsList.peek() != null) { if (activityEndsList.peek().activityEndTime <= time) { MobsimAgent agent = activityEndsList.poll().agent; unregisterAgentAtActivityLocation(agent); agent.endActivityAndComputeNextState(time); internalInterface.arrangeNextAgentState(agent); } else { return; } } }
@Override public boolean handleActivity(MobsimAgent agent) { if (!(agent instanceof DynAgent)) { return activityEngine.handleActivity(agent); } double endTime = agent.getActivityEndTime(); double currentTime = internalInterface.getMobsim().getSimTimer().getTimeOfDay(); if (endTime == Double.POSITIVE_INFINITY) { // This is the last planned activity. // So the agent goes to sleep. internalInterface.getMobsim().getAgentCounter().decLiving(); } else if (endTime <= currentTime && !beforeFirstSimStep) { // This activity is already over (planned for 0 duration) // So we proceed immediately. agent.endActivityAndComputeNextState(currentTime); internalInterface.arrangeNextAgentState(agent); } else { // The agent commences an activity on this link. if (beforeFirstSimStep) { dynAgents.add((DynAgent)agent); } else { newDynAgents.add((DynAgent)agent); } internalInterface.registerAdditionalAgentOnLink(agent); } return true; }
agent.endActivityAndComputeNextState(internalInterface.getMobsim().getSimTimer().getTimeOfDay()); internalInterface.arrangeNextAgentState(agent) ; } else {