@Override synchronized public void handleLeg(PersonExperiencedLeg o) { // Has to be synchronized because the thing which sends Legs and the thing which sends Activities can run // on different threads. Will go away when/if we get a more Actor or Reactive Streams like event infrastructure. Id<Person> agentId = o.getAgentId(); Leg leg = o.getLeg(); Plan plan = agentRecords.get(agentId); if (plan != null) { plan.addLeg(leg); } }
@Test public void testCreatesLeg() { Scenario scenario = createTriangularNetwork(); EventsToLegs eventsToLegs = new EventsToLegs(scenario); RememberingLegHandler lh = new RememberingLegHandler(); eventsToLegs.addLegHandler(lh); eventsToLegs.handleEvent(new PersonDepartureEvent(10.0, Id.create("1", Person.class), Id.create("l1", Link.class), "walk")); eventsToLegs.handleEvent(new TeleportationArrivalEvent(30.0, Id.create("1", Person.class), 50.0)); eventsToLegs.handleEvent(new PersonArrivalEvent(30.0, Id.create("1", Person.class), Id.create("l2", Link.class), "walk")); Assert.assertNotNull(lh.handledLeg); Assert.assertEquals(10.0, lh.handledLeg.getLeg().getDepartureTime(), 1e-9); Assert.assertEquals(20.0, lh.handledLeg.getLeg().getTravelTime(), 1e-9); Assert.assertEquals(50.0, lh.handledLeg.getLeg().getRoute().getDistance(), 1e-9); }
legHandler.handleLeg(new PersonExperiencedLeg(event.getPersonId(), leg));
@Test public void testCreatesLegWithRoute() { Scenario scenario = createTriangularNetwork(); EventsToLegs eventsToLegs = new EventsToLegs(scenario); RememberingLegHandler lh = new RememberingLegHandler(); eventsToLegs.addLegHandler(lh); Id<Person> agentId = Id.create("1", Person.class); Id<Vehicle> vehId = Id.create("veh1", Vehicle.class); eventsToLegs.handleEvent(new PersonDepartureEvent(10.0, agentId, Id.createLinkId("l1"), "car")); eventsToLegs.handleEvent(new PersonEntersVehicleEvent(10.0, agentId, vehId)); eventsToLegs.handleEvent(new VehicleEntersTrafficEvent(10.0, agentId, Id.createLinkId("l1"), vehId, "car", 1.0)); eventsToLegs.handleEvent(new LinkLeaveEvent(10.0, vehId, Id.createLinkId("l1"))); eventsToLegs.handleEvent(new LinkEnterEvent(11.0, vehId, Id.createLinkId("l2"))); eventsToLegs.handleEvent(new LinkLeaveEvent(15.0, vehId, Id.createLinkId("l2"))); eventsToLegs.handleEvent(new LinkEnterEvent(16.0, vehId, Id.createLinkId("l3"))); eventsToLegs.handleEvent(new VehicleLeavesTrafficEvent(30.0, agentId, Id.createLinkId("l3"), vehId, "car", 1.0)); eventsToLegs.handleEvent(new PersonArrivalEvent(30.0, agentId, Id.createLinkId("l3"), "car")); Assert.assertNotNull(lh.handledLeg); Assert.assertEquals(10.0,lh.handledLeg.getLeg().getDepartureTime(), 1e-9); Assert.assertEquals(20.0,lh.handledLeg.getLeg().getTravelTime(), 1e-9); Assert.assertEquals(20.0,lh.handledLeg.getLeg().getRoute().getTravelTime(), 1e-9); Assert.assertEquals(550.0,lh.handledLeg.getLeg().getRoute().getDistance(), 1e-9); }
sf.handleLeg(new PersonExperiencedLeg(personId, pf.createLeg("walk"))); Assert.assertEquals(0, rs.tripCounter); sf.handleActivity(new PersonExperiencedActivity(personId, pf.createActivityFromCoord("work", new Coord(1000, 100)))); Assert.assertEquals("walk", ((Leg) rs.lastTrip.getTripElements().get(0)).getMode()); sf.handleLeg(new PersonExperiencedLeg(personId, pf.createLeg("transit_walk"))); sf.handleActivity(new PersonExperiencedActivity(personId, pf.createActivityFromCoord("pt_interaction", new Coord(1000, 200)))); Assert.assertEquals(1, rs.tripCounter); sf.handleLeg(new PersonExperiencedLeg(personId, pf.createLeg("pt"))); sf.handleActivity(new PersonExperiencedActivity(personId, pf.createActivityFromCoord("pt_interaction", new Coord(1000, 200)))); Assert.assertEquals(1, rs.tripCounter); sf.handleLeg(new PersonExperiencedLeg(personId, pf.createLeg("transit_walk"))); sf.handleActivity(new PersonExperiencedActivity(personId, pf.createActivityFromCoord("leisure", new Coord(1000, 200)))); Assert.assertEquals(2, rs.tripCounter);
@Override synchronized public void handleLeg(PersonExperiencedLeg o) { Id<Person> agentId = o.getAgentId(); Leg leg = o.getLeg(); ScoringFunction scoringFunction = ScoringFunctionsForPopulation.this.getScoringFunctionForAgent(agentId); if (scoringFunction != null) { scoringFunction.handleLeg(leg); TDoubleCollection partialScoresForAgent = this.partialScores.get(agentId); partialScoresForAgent.add(scoringFunction.getScore()); } Plan plan = this.tripRecords.get( agentId ) ; // as container for trip if ( plan!=null ) { plan.addLeg( leg ); } }