@Override public void handleEvent(final PersonStuckEvent event) { testForSnapshot(event.getTime()); if (event.getLinkId() != null) { // link id is optional - agent can be teleporting or whatever. this.eventLinks.get(event.getLinkId()).stuck(getEventAgent(event.getPersonId(), event.getTime())); } }
@Override public void handleEvent(final PersonStuckEvent event) { int index = getBinIndex(event.getTime()); if ((this.personIds == null || this.personIds.contains(event.getPersonId())) && event.getLegMode() != null) { DataFrame dataFrame = getDataForMode(event.getLegMode()); dataFrame.countsStuck[index]++; } }
@Override public void handleEvent(PersonStuckEvent event) { if (eventCounter.incrementAndGet() > maxEvents) return; try { if (!transitDriverIds.contains(event.getPersonId())) { TravellerChain chain = chains.get(event.getPersonId()); setStuck(getStuck() + 1); if (chain.getJourneys().size() > 0) chain.getJourneys().removeLast(); } } catch (Exception e) { System.err.println(e.getStackTrace()); System.err.println(event.toString()); } }
public void testWriteReadXmlWithLinkIdNull() { final PersonStuckEvent event1 = new PersonStuckEvent(81153.3, Id.create("a007", Person.class), null, TransportMode.walk); final PersonStuckEvent event2 = XmlEventsTester.testWriteReadXml(getOutputDirectory() + "events.xml", event1); assertEquals(event1.getTime(), event2.getTime(), EPSILON); assertEquals(event1.getPersonId(), event2.getPersonId()); assertEquals(event1.getLinkId(), null); assertEquals(event1.getLegMode(), event2.getLegMode()); }
@Override public void afterSim() { double now = this.internalInterface.getMobsim().getSimTimer().getTimeOfDay(); for (AgentEntry entry : activityEndsList) { if (entry.activityEndTime!=Double.POSITIVE_INFINITY && entry.activityEndTime!=Time.UNDEFINED_TIME) { // since we are at an activity, it is not plausible to assume that the agents know mode or destination // link id. Thus generating the event with ``null'' in the corresponding entries. kai, mar'12 eventsManager.processEvent(new PersonStuckEvent(now, entry.agent.getId(), null, null)); } } activityEndsList.clear(); }
@Override public void handleEvent(PersonStuckEvent event) { this.legJustStartedAgents.remove(event.getPersonId()); }
ProtobufEvents.PersonStuckEvent.Builder ps = ProtobufEvents.PersonStuckEvent.newBuilder() .setTime(event.getTime()) .setPersId(ProtobufEvents.PersonId.newBuilder().setId(((PersonStuckEvent) event).getPersonId().toString())) .setLinkId(ProtobufEvents.LinkId.newBuilder().setId(((PersonStuckEvent) event).getLinkId().toString())) .setLegMode(((PersonStuckEvent) event).getLegMode()); eb.setType(ProtobufEvents.Event.Type.PersonStuck).setPersonStuck(ps);
@Override public void handleEvent(PersonStuckEvent event) { Double startWaitingTime = agentsWaitingData.get(event.getPersonId()); if(startWaitingTime!=null) { int legs = 0, currentLeg = agentsCurrentLeg.get(event.getPersonId()); PLAN_ELEMENTS: for(PlanElement planElement:population.getPersons().get(event.getPersonId()).getSelectedPlan().getPlanElements()) if(planElement instanceof Leg) { if(currentLeg==legs) { Route route = ((Leg)planElement).getRoute(); ExperimentalTransitRoute eRoute = (ExperimentalTransitRoute) new ExperimentalTransitRouteFactory().createRoute(route.getStartLinkId(), route.getEndLinkId()); eRoute.setStartLinkId(route.getStartLinkId()); eRoute.setEndLinkId(route.getEndLinkId()); eRoute.setRouteDescription(route.getRouteDescription()); WaitTimeData data = waitTimes.get(new Tuple<Id<TransitLine>, Id<TransitRoute>>(eRoute.getLineId(), eRoute.getRouteId())).get(eRoute.getAccessStopId()); if(data!=null) data.addWaitTime((int) (startWaitingTime/timeSlot), event.getTime()-startWaitingTime); agentsWaitingData.remove(event.getPersonId()); break PLAN_ELEMENTS; } else legs++; } } }
public void testWriteReadXml() { final PersonStuckEvent event1 = new PersonStuckEvent(81153.3, Id.create("a007", Person.class), Id.create("link1", Link.class), TransportMode.walk); final PersonStuckEvent event2 = XmlEventsTester.testWriteReadXml(getOutputDirectory() + "events.xml", event1); assertEquals(event1.getTime(), event2.getTime(), EPSILON); assertEquals(event1.getPersonId(), event2.getPersonId()); assertEquals(event1.getLinkId(), event2.getLinkId()); assertEquals(event1.getLegMode(), event2.getLegMode()); }
@Override public void afterSim() { double now = this.qSim.getSimTimer().getTimeOfDay(); for (Entry<Id<TransitStopFacility>, List<PTPassengerAgent>> agentsAtStop : this.agentTracker.getAgentsAtStop().entrySet()) { TransitStopFacility stop = this.schedule.getFacilities().get(agentsAtStop.getKey()); for (PTPassengerAgent agent : agentsAtStop.getValue()) { this.qSim.getEventsManager().processEvent(new PersonStuckEvent( now, agent.getId(), stop.getLinkId(), ((MobsimAgent)agent).getMode())); this.qSim.getAgentCounter().decLiving(); this.qSim.getAgentCounter().incLost(); } } }
@Override public void handleEvent(PersonStuckEvent event) { this.linkEnteredAgents.remove(event.getPersonId()); }
@Override public void handleEvent(PersonStuckEvent event) { if (this.considerStuckedAgents) { if (!totalDelayPerLink.containsKey(event.getLinkId())) { // initialize link based analysis data structure totalDelayPerLink.put(event.getLinkId(), 0.0); numberOfAgentsPerLink.put(event.getLinkId(), 0); } double stuckDelay = event.getTime() - this.earliestLinkExitTimePerAgent.remove(event.getPersonId()); LOG.warn("Add delay " + stuckDelay + " of agent " + event.getPersonId() + " that stucked on link " + event.getLinkId()); totalDelayPerLink.put(event.getLinkId(), totalDelayPerLink.get(event.getLinkId()) + stuckDelay); this.totalDelay += stuckDelay; // increase agent counter numberOfAgentsPerLink.put(event.getLinkId(), numberOfAgentsPerLink.get(event.getLinkId()) + 1); } }
@Override public void handleEvent(final PersonStuckEvent event) { if(!agentToBeObserved(event.getPersonId())) return; int index = getBinIndex(event.getTime()); this.allModesData.countsStuck[index]++; if (event.getLegMode() != null) { ModeData modeData = getDataForMode(event.getLegMode()); modeData.countsStuck[index]++; } }
private void rejectInvalidRequest(PassengerRequest request) { Set<String> violations = requestValidator.validateRequest(request); if (!violations.isEmpty()) { String causes = violations.stream().collect(Collectors.joining(", ")); LOGGER.warn("Request: " + request.getId() + "of mode: " + mode + " will not be served. The agent will get stuck. Causes: " + causes); request.setRejected(true); eventsManager.processEvent( new PassengerRequestRejectedEvent(request.getSubmissionTime(), mode, request.getId(), causes)); eventsManager.processEvent(new PersonStuckEvent(request.getSubmissionTime(), request.getPassengerId(), request.getFromLink().getId(), request.getMode())); } }
@Override public void handleEvent(PersonStuckEvent event) { this.transportModes.remove(event.getPersonId()); }
@Override public void handleEvent(PersonStuckEvent event) { writeLine(event.getTime(), event.getPersonId(), event.getLinkId(), Number.PersonStuck.ordinal(), PersonStuckEvent.EVENT_TYPE); }
@Override public void afterSim() { double now = internalInterface.getMobsim().getSimTimer().getTimeOfDay(); for (Tuple<Double, MobsimAgent> entry : teleportationList) { MobsimAgent agent = entry.getSecond(); eventsManager.processEvent(new PersonStuckEvent(now, agent.getId(), agent.getDestinationLinkId(), agent.getMode())); } teleportationList.clear(); }
@Override public void handleEvent(PersonStuckEvent event) { this.agentsStuck.add(event.getPersonId()); }
@Override public void handleEvent(final PersonStuckEvent event) { this.eventCounter++; assertEquals("expected agentStuck-Event to be event #8", 8, this.eventCounter); assertEquals(21680.0, event.getTime(), 0.0); assertEquals("8", event.getPersonId().toString()); assertEquals("9", event.getLinkId().toString()); }
@Override public void handleEvent(LinkEnterEvent event) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } events.processEvent(new PersonStuckEvent(event.getTime(), Id.createPersonId(0), Id.createLinkId(0), "car")); }