@Override public void addLeg(Leg leg) { this.delegate.addLeg(leg); }
@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); } }
public static Leg createAndAddLeg(Plan plan, String mode) { verifyCreateLeg( plan ) ; Leg leg = getFactory().createLeg(mode) ; plan.addLeg( leg ); return leg ; } private static void verifyCreateLeg(Plan plan) throws IllegalStateException {
@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 ); } }
public void addTrip(NetworkRoute networkRoute, String transportMode) { Activity lastActivity; if (!plan.getPlanElements().isEmpty()) { lastActivity = (Activity) plan.getPlanElements().get(plan.getPlanElements().size()-1); assert lastActivity.getLinkId().equals(networkRoute.getStartLinkId()); } else { lastActivity = PopulationUtils.createActivityFromLinkId(activityType, networkRoute.getStartLinkId()); plan.addActivity(lastActivity); } Leg leg = PopulationUtils.createLeg(transportMode); leg.setRoute(networkRoute); plan.addLeg(leg); Activity activity = PopulationUtils.createActivityFromLinkId(activityType, networkRoute.getEndLinkId()); plan.addActivity(activity); }
@Test public void addMultipleLegs() { Plan p = PopulationUtils.createPlan(); p.addActivity(new ActivityImpl("h")); p.addLeg(PopulationUtils.createLeg(TransportMode.walk)); p.addLeg(PopulationUtils.createLeg(TransportMode.pt)); p.addLeg(PopulationUtils.createLeg(TransportMode.walk)); p.addActivity(new ActivityImpl("w")); Assert.assertEquals(5, p.getPlanElements().size()); Assert.assertTrue(p.getPlanElements().get(0) instanceof Activity); Assert.assertTrue(p.getPlanElements().get(1) instanceof Leg); Assert.assertTrue(p.getPlanElements().get(2) instanceof Leg); Assert.assertTrue(p.getPlanElements().get(3) instanceof Leg); Assert.assertTrue(p.getPlanElements().get(4) instanceof Activity); }
@Test public void testMonoLegPlan() throws Exception { final Plan plan = PopulationUtils.createPlan(PopulationUtils.getFactory().createPerson(Id.create("id", Person.class))); final List<PlanElement> structure = new ArrayList<PlanElement>(); final Id<Link> id1 = Id.create( 1, Link.class ); final Id<Link> id2 = Id.create( 2, Link.class ); Activity act = PopulationUtils.createActivityFromLinkId("act_1", id1); plan.addActivity( act ); structure.add( act ); Leg leg = PopulationUtils.createLeg("mode_1"); plan.addLeg( leg ); structure.add( leg ); act = PopulationUtils.createActivityFromLinkId("act_2", id2); plan.addActivity( act ); structure.add( act ); leg = PopulationUtils.createLeg("mode_2"); plan.addLeg( leg ); structure.add( leg ); act = PopulationUtils.createActivityFromLinkId("act_3", id1); plan.addActivity( act ); structure.add( act ); performTest( new Fixture( "mono leg trips", plan, structure)); }
@Override public Plan createNewPlanInstance() { final PopulationFactory fact = createPopulationFactory(); final Id<Link> id1 = Id.create( 1, Link.class ); final Id<Link> id3 = Id.create( 3, Link.class ); final Plan plan = fact.createPlan(); plan.addActivity( fact.createActivityFromLinkId( "h" , id1 ) ); plan.addLeg( fact.createLeg( TransportMode.walk ) ); plan.addActivity( fact.createActivityFromLinkId( "w" , id3 ) ); plan.addLeg( fact.createLeg( TransportMode.walk ) ); plan.addActivity( fact.createActivityFromLinkId( "h" , id1 ) ); return plan; } };
@Test public void addMultipleActs() { Plan p = PopulationUtils.createPlan(); p.addActivity(new ActivityImpl("h")); p.addLeg(PopulationUtils.createLeg(TransportMode.walk)); p.addActivity(new ActivityImpl("w")); p.addActivity(new ActivityImpl("l")); Assert.assertEquals(4, p.getPlanElements().size()); Assert.assertTrue(p.getPlanElements().get(0) instanceof Activity); Assert.assertTrue(p.getPlanElements().get(1) instanceof Leg); Assert.assertTrue(p.getPlanElements().get(2) instanceof Activity); Assert.assertTrue(p.getPlanElements().get(3) instanceof Activity); }
public void testWalkOnlyPlan() { Plan plan = PopulationUtils.createPlan(); Coord dummyCoord = new Coord((double) 0, (double) 0); plan.addActivity(PopulationUtils.createActivityFromCoord("h", dummyCoord)); plan.addLeg(PopulationUtils.createLeg(TransportMode.transit_walk)); plan.addActivity(PopulationUtils.createActivityFromCoord("w", dummyCoord)); new TransitActsRemover().run(plan); assertEquals(3, plan.getPlanElements().size()); assertEquals(TransportMode.pt, ((Leg) plan.getPlanElements().get(1)).getMode()); }
public void testNoTransitActPlan() { Plan plan = PopulationUtils.createPlan(); Coord dummyCoord = new Coord((double) 0, (double) 0); plan.addActivity(PopulationUtils.createActivityFromCoord("h", dummyCoord)); plan.addLeg(PopulationUtils.createLeg(TransportMode.car)); plan.addActivity(PopulationUtils.createActivityFromCoord("w", dummyCoord)); new TransitActsRemover().run(plan); assertEquals(3, plan.getPlanElements().size()); assertEquals(TransportMode.car, ((Leg) plan.getPlanElements().get(1)).getMode()); }
public static void addPersonWithActivity(String actType, Coordinates coordsOfAct, double actEndTime, Scenario scenario) { PopulationFactory populationFactory = scenario.getPopulation() .getFactory(); Coord matSimCoord = new Coord(coordsOfAct.getLongitude(), coordsOfAct.getLatitude()); // Create a new plan Plan plan = populationFactory.createPlan(); // Create a new activity with the end time and add it to the plan Activity act = populationFactory.createActivityFromCoord(actType, matSimCoord); act.setEndTime(actEndTime); plan.addActivity(act); // Add a new leg to the plan. Needed, otherwise MATSim won't add this // leg-less plan to the simulation plan.addLeg(populationFactory.createLeg("car")); // Create a second activity (all plans must end in an activity) act = populationFactory.createActivityFromCoord(actType.toString(), matSimCoord); plan.addActivity(act); Person person = populationFactory.createPerson(Id .createPersonId(personIdPrefix + personId++)); person.addPlan(plan); scenario.getPopulation().addPerson(person); }
private Person createPersonWithPlan(PopulationFactory factory, String id, double homeX, double homeY, double workX, double workY) { Person person = factory.createPerson(Id.create(id, Person.class)); Plan plan = factory.createPlan(); person.addPlan(plan); Activity home1 = factory.createActivityFromCoord("home", new Coord(homeX, homeY)); home1.setEndTime(8*3600); Activity work = factory.createActivityFromCoord("work", new Coord(workX, workY)); work.setEndTime(17*3600); Activity home2 = factory.createActivityFromCoord("home", new Coord(homeX, homeY)); plan.addActivity(home1); plan.addLeg(factory.createLeg("car")); plan.addActivity(work); plan.addLeg(factory.createLeg("car")); plan.addActivity(home2); return person; }
@Test( expected=NullPointerException.class ) public void testNPEWhenLocationNullInSubtourAnalysis() { // this may sound surprising, but for a long time the algorithm // was perfectly fine with that if assertions were disabled... final Plan plan = populationFactory.createPlan(); // link ids are null plan.addActivity( populationFactory.createActivityFromCoord( "type", new Coord((double) 0, (double) 0)) ); plan.addLeg( populationFactory.createLeg( "mode" ) ); plan.addActivity( populationFactory.createActivityFromCoord( "type", new Coord((double) 0, (double) 0)) ); TripStructureUtils.getSubtours( plan , EmptyStageActivityTypes.INSTANCE ); } }
private void createPopulation() { Population pop = this.scenario.getPopulation(); PopulationFactory f = pop.getFactory(); Person p = f.createPerson(Id.create(1, Person.class)); pop.addPerson(p); Plan plan = f.createPlan(); p.addPlan(plan); Activity act = f.createActivityFromLinkId("home", Id.create(1, Link.class)); act.setEndTime(2000.0); plan.addActivity(act); Leg leg = f.createLeg(TransportMode.car); plan.addLeg(leg); act = f.createActivityFromLinkId("home", Id.create(34, Link.class)); plan.addActivity(act); }
private Person createPerson2(Id<Person> personId, Fixture f) { final Id<Person> id = personId; Person p = PopulationUtils.getFactory().createPerson(id); Plan plan = PopulationUtils.createPlan(); p.addPlan(plan); plan.addActivity(PopulationUtils.createActivityFromLinkId("home", f.link1.getId())); Leg leg = PopulationUtils.createLeg(TransportMode.car); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(f.link1.getId(), f.link2.getId()); route.setVehicleId(f.basicVehicle.getId()); leg.setRoute(route); plan.addLeg(leg); plan.addActivity(PopulationUtils.createActivityFromLinkId("work", f.link2.getId())); return p; }
private void createPopulation(){ for(int i=1;i<3;i++){ Id<Person> id = Id.createPersonId(i); Person p = population.getFactory().createPerson(id); Plan plan = population.getFactory().createPlan(); p.addPlan(plan); Activity a1 = population.getFactory().createActivityFromLinkId("h", link1.getId()); a1.setEndTime(0*3600); Leg leg = population.getFactory().createLeg(TransportMode.car); plan.addActivity(a1); plan.addLeg(leg); LinkNetworkRouteFactory factory = new LinkNetworkRouteFactory(); NetworkRoute route; List<Id<Link>> linkIds = new ArrayList<Id<Link>>(); route= (NetworkRoute) factory.createRoute(link1.getId(), link3.getId()); linkIds.add(link2.getId()); route.setLinkIds(link1.getId(), linkIds, link3.getId()); leg.setRoute(route); Activity a2 = population.getFactory().createActivityFromLinkId("w", link3.getId()); plan.addActivity(a2); population.addPerson(p); } } }
private Person createPerson(Scenario scenario, String id) { Person person = scenario.getPopulation().getFactory().createPerson(Id.create(id, Person.class)); Activity from = scenario.getPopulation().getFactory().createActivityFromLinkId("home", Id.create("l0", Link.class)); Leg leg = scenario.getPopulation().getFactory().createLeg(TransportMode.car); Activity to = scenario.getPopulation().getFactory().createActivityFromLinkId("home", Id.create("l2", Link.class)); from.setEndTime(8*3600); leg.setDepartureTime(8*3600); RouteFactory routeFactory = new LinkNetworkRouteFactory(); Id<Link> startLinkId = Id.create("l0", Link.class); Id<Link> endLinkId = Id.create("l2", Link.class); NetworkRoute route = (NetworkRoute) routeFactory.createRoute(startLinkId, endLinkId); List<Id<Link>> linkIds = new ArrayList<Id<Link>>(); linkIds.add(Id.create("l1", Link.class)); route.setLinkIds(startLinkId, linkIds, endLinkId); leg.setRoute(route); Plan plan = scenario.getPopulation().getFactory().createPlan(); plan.addActivity(from); plan.addLeg(leg); plan.addActivity(to); person.addPlan(plan); return person; }
@Test public void testLegAttributesIO() { final Population population = PopulationUtils.createPopulation(ConfigUtils.createConfig() ); final Person person = population.getFactory().createPerson(Id.createPersonId( "Donald Trump")); population.addPerson( person ); final Plan plan = population.getFactory().createPlan(); person.addPlan( plan ); final Leg leg = population.getFactory().createLeg( "SUV" ); plan.addActivity( population.getFactory().createActivityFromLinkId( "speech" , Id.createLinkId( 1 ))); plan.addLeg( leg ); plan.addActivity( population.getFactory().createActivityFromLinkId( "tweet" , Id.createLinkId( 2 ))); leg.getAttributes().putAttribute( "mpg" , 0.000001d ); final String file = utils.getOutputDirectory()+"/population.xml"; new PopulationWriter( population ).writeV6( file ); final Scenario readScenario = ScenarioUtils.createScenario( ConfigUtils.createConfig() ); new PopulationReader( readScenario ).readFile( file ); final Person readPerson = readScenario.getPopulation().getPersons().get( Id.createPersonId( "Donald Trump" ) ); final Leg readLeg = (Leg) readPerson.getSelectedPlan().getPlanElements().get( 1 ); Assert.assertEquals( "Unexpected Double attribute in " + readLeg.getAttributes(), leg.getAttributes().getAttribute( "mpg" ) , readLeg.getAttributes().getAttribute( "mpg" ) ); }
@Test public void testPlanAttributesIO() { final Population population = PopulationUtils.createPopulation(ConfigUtils.createConfig() ); final Person person = population.getFactory().createPerson(Id.createPersonId( "Donald Trump")); population.addPerson( person ); final Plan plan = population.getFactory().createPlan(); person.addPlan( plan ); final Leg leg = population.getFactory().createLeg( "SUV" ); plan.addActivity( population.getFactory().createActivityFromLinkId( "speech" , Id.createLinkId( 1 ))); plan.addLeg( leg ); plan.addActivity( population.getFactory().createActivityFromLinkId( "tweet" , Id.createLinkId( 2 ))); plan.getAttributes().putAttribute( "beauty" , 0.000001d ); final String file = utils.getOutputDirectory()+"/population.xml"; new PopulationWriter( population ).writeV6( file ); final Scenario readScenario = ScenarioUtils.createScenario( ConfigUtils.createConfig() ); new PopulationReader( readScenario ).readFile( file ); final Person readPerson = readScenario.getPopulation().getPersons().get( Id.createPersonId( "Donald Trump" ) ); final Plan readPlan = readPerson.getSelectedPlan() ; Assert.assertEquals( plan.getAttributes().getAttribute( "beauty" ) , readPlan.getAttributes().getAttribute( "beauty" ) ); }