@Override public PlanAlgorithm getPlanAlgoInstance() { ChooseRandomSingleLegMode algo = new ChooseRandomSingleLegMode(this.availableModes, MatsimRandom.getLocalInstance(), this.allowSwitchFromListedModesOnly ); algo.setIgnoreCarAvailability(this.ignoreCarAvailability); return algo; }
@Test public void testIgnoreCarAvailability_Always() { ChooseRandomSingleLegMode algo = new ChooseRandomSingleLegMode(new String[] {TransportMode.car, TransportMode.pt, TransportMode.bike}, new Random(1),false); algo.setIgnoreCarAvailability(false); Person person = PopulationUtils.getFactory().createPerson(Id.create(1, Person.class)); PersonUtils.setCarAvail(person, "always"); Plan plan = PopulationUtils.createPlan(person); PopulationUtils.createAndAddActivityFromCoord(plan, "home", new Coord((double) 0, (double) 0)); PopulationUtils.createAndAddLeg( plan, TransportMode.pt ); PopulationUtils.createAndAddActivityFromCoord(plan, "work", new Coord((double) 0, (double) 0)); algo.run(plan); assertEquals("unexpected leg mode in leg 1.", TransportMode.car, ((Leg) plan.getPlanElements().get(1)).getMode()); algo.run(plan); assertEquals("unexpected leg mode in leg 1.", TransportMode.pt, ((Leg) plan.getPlanElements().get(1)).getMode()); algo.run(plan); assertEquals("unexpected leg mode in leg 1.", TransportMode.car, ((Leg) plan.getPlanElements().get(1)).getMode()); algo.run(plan); assertEquals("unexpected leg mode in leg 1.", TransportMode.bike, ((Leg) plan.getPlanElements().get(1)).getMode()); }
@Test public void testIgnoreCarAvailability_Never_noChoice() { ChooseRandomSingleLegMode algo = new ChooseRandomSingleLegMode(new String[] {TransportMode.car, TransportMode.pt}, MatsimRandom.getRandom(),false); algo.setIgnoreCarAvailability(false); Person person = PopulationUtils.getFactory().createPerson(Id.create(1, Person.class)); PersonUtils.setCarAvail(person, "never"); Plan plan = PopulationUtils.createPlan(person); PopulationUtils.createAndAddActivityFromCoord(plan, "home", new Coord((double) 0, (double) 0)); PopulationUtils.createAndAddLeg( plan, TransportMode.pt ); PopulationUtils.createAndAddActivityFromCoord(plan, "work", new Coord((double) 0, (double) 0)); algo.run(plan); assertEquals("unexpected leg mode in leg 1.", TransportMode.pt, ((Leg) plan.getPlanElements().get(1)).getMode()); }
@Test public void testIgnoreCarAvailability_Never() { ChooseRandomSingleLegMode algo = new ChooseRandomSingleLegMode(new String[] {TransportMode.car, TransportMode.pt, TransportMode.bike}, MatsimRandom.getRandom(),false); algo.setIgnoreCarAvailability(false); Person person = PopulationUtils.getFactory().createPerson(Id.create(1, Person.class)); PersonUtils.setCarAvail(person, "never"); Plan plan = PopulationUtils.createPlan(person); PopulationUtils.createAndAddActivityFromCoord(plan, "home", new Coord((double) 0, (double) 0)); PopulationUtils.createAndAddLeg( plan, TransportMode.pt ); PopulationUtils.createAndAddActivityFromCoord(plan, "work", new Coord((double) 0, (double) 0)); algo.run(plan); assertEquals("unexpected leg mode in leg 1.", TransportMode.bike, ((Leg) plan.getPlanElements().get(1)).getMode()); algo.run(plan); assertEquals("unexpected leg mode in leg 1.", TransportMode.pt, ((Leg) plan.getPlanElements().get(1)).getMode()); algo.run(plan); assertEquals("unexpected leg mode in leg 1.", TransportMode.bike, ((Leg) plan.getPlanElements().get(1)).getMode()); algo.run(plan); assertEquals("unexpected leg mode in leg 1.", TransportMode.pt, ((Leg) plan.getPlanElements().get(1)).getMode()); }