@Override @Deprecated // use TripRouter instead. kai, dec'13 public void run(final Plan plan) { planRouter.run( plan ); }
@Override public void run(final Person person) { for (Plan plan : person.getPlans()) { run( plan ); } }
@Override public boolean doReplanning(MobsimAgent withinDayAgent) { this.planRouter.run(WithinDayAgentUtils.getModifiablePlan(withinDayAgent)); return true; } }
private void handlePlan(Plan plan) { // This calculates a best-response plan from the two options, paying area toll or not. // From what I understand, it may be simpler/better to just throw a coin and produce // one of the two options. replaceCarModeWithTolledCarMode(plan); PlanRouter untolledPlanRouter = new PlanRouter(tripRouterFactory.get()); untolledPlanRouter.run(plan); double areaToll = roadPricingScheme.getTypicalCosts().iterator().next().amount; double routeCostWithAreaToll = sumNetworkModeCosts(plan) + areaToll; replaceTolledCarModeWithCarMode(plan); new PlanRouter(tripRouterFactory.get()).run(plan); double routeCostWithoutAreaToll = sumNetworkModeCosts(plan); if (routeCostWithAreaToll < routeCostWithoutAreaToll) { replaceCarModeWithTolledCarMode(plan); untolledPlanRouter.run(plan); } }
planRouter.run(person);
@Override public void run( final Plan plan ) { JointRouteIterator oldPlan = new JointRouteIterator( plan.getPlanElements() ); delegate.run( plan ); // "transmit" joint info before returning JointRouteIterator newPlan = new JointRouteIterator( plan.getPlanElements() ) ; Route oldRoute = oldPlan.nextJointRoute(); Route newRoute = newPlan.nextJointRoute(); while (oldRoute != null) { if (oldRoute instanceof DriverRoute) { ((DriverRoute) newRoute).setPassengerIds( ((DriverRoute) oldRoute).getPassengersIds() ); } else { ((PassengerRoute) newRoute).setDriverId( ((PassengerRoute) oldRoute).getDriverId() ); } oldRoute = oldPlan.nextJointRoute(); newRoute = newPlan.nextJointRoute(); } assert oldRoute == null; assert newRoute == null; }
@Test public void passesVehicleFromOldPlan() { final Config config = ConfigUtils.loadConfig(IOUtils.newUrl(ExamplesUtils.getTestScenarioURL("equil"), "config.xml")); config.plans().setInputFile("plans1.xml"); final Scenario scenario = ScenarioUtils.loadScenario(config); com.google.inject.Injector injector = Injector.createInjector(scenario.getConfig(), new AbstractModule() { @Override public void install() { install(new TripRouterModule()); install(new ScenarioByInstanceModule(scenario)); addTravelTimeBinding("car").toInstance(new FreespeedTravelTimeAndDisutility(config.planCalcScore())); addTravelDisutilityFactoryBinding("car").toInstance(new OnlyTimeDependentTravelDisutilityFactory()); } }); TripRouter tripRouter = injector.getInstance(TripRouter.class); PlanRouter testee = new PlanRouter(tripRouter); Plan plan = scenario.getPopulation().getPersons().get(Id.createPersonId(1)).getSelectedPlan(); Id<Vehicle> vehicleId = Id.create(1, Vehicle.class); ((NetworkRoute) TripStructureUtils.getLegs(plan).get(0).getRoute()).setVehicleId(vehicleId); testee.run(plan); if ( !config.plansCalcRoute().isInsertingAccessEgressWalk() ) { Assert.assertEquals("Vehicle Id transferred to new Plan", vehicleId, ((NetworkRoute) TripStructureUtils.getLegs(plan).get(0).getRoute()).getVehicleId()); } else { Assert.assertEquals("Vehicle Id transferred to new Plan", vehicleId, ((NetworkRoute) TripStructureUtils.getLegs(plan).get(1).getRoute()).getVehicleId()); // yy I changed get(0) to get(1) since in the input file there is no intervening walk leg, but in the output there is. kai, feb'16 } }
testee.run(plan); if ( !config.plansCalcRoute().isInsertingAccessEgressWalk() ) { Assert.assertEquals("Vehicle Id from TripRouter used", newVehicleId, ((NetworkRoute) TripStructureUtils.getLegs(plan).get(0).getRoute()).getVehicleId());
new PlanRouter(tripRouter).run(plan);