@Override public RoutingModule get() { if (filteredNetwork == null){ TransportModeNetworkFilter filter = new TransportModeNetworkFilter(network); Set<String> modes = new HashSet<>(); modes.add(TransportMode.car); filteredNetwork = NetworkUtils.createNetwork(); filter.filter(filteredNetwork, modes); } TravelDisutilityFactory travelDisutilityFactory = this.travelDisutilityFactory.get(PlansCalcRouteWithTollOrNot.CAR_WITH_PAYED_AREA_TOLL); TravelTime travelTime = travelTimes.get(TransportMode.car); LeastCostPathCalculator routeAlgo = leastCostPathCalculatorFactory.createPathCalculator( filteredNetwork, travelDisutilityFactory.createTravelDisutility(travelTime), travelTime); if ( plansCalcRouteConfigGroup.isInsertingAccessEgressWalk() ) { return DefaultRoutingModules.createAccessEgressNetworkRouter(TransportMode.car, populationFactory, filteredNetwork, routeAlgo, plansCalcRouteConfigGroup); } else { return DefaultRoutingModules.createPureNetworkRouter(TransportMode.car, populationFactory, filteredNetwork, routeAlgo); } // yyyyyy not so great that this differentiation is here; need to push it down a bit (again). kai, feb'2016 } }
@Override public RoutingModule get() { return DefaultRoutingModules.createTeleportationRouter(params.getMode(), populationFactory, params); } }
@Override public List<? extends PlanElement> calcRoute(Facility fromFacility, Facility toFacility, double departureTime, Person person) { List<? extends PlanElement> trip = DefaultRoutingModules.createPureNetworkRouter("car", scenario.getPopulation().getFactory(), scenario.getNetwork(), leastCostAlgoFactory.createPathCalculator(scenario.getNetwork(), disutilityFactory.createTravelDisutility(travelTime), travelTime) ).calcRoute(fromFacility, toFacility, departureTime, person); ((NetworkRoute) TripStructureUtils.getLegs(trip).get(0).getRoute()).setVehicleId(newVehicleId); return trip; }
@Override public RoutingModule get() { // FreespeedTravelTimeAndDisutility ptTimeCostCalc = new FreespeedTravelTimeAndDisutility(-1.0, 0.0, 0.0); // I wanted to introduce the freespeed limit. Decided to locally re-implement rather than making the FreespeedTravelTimeAndDisutility // class longer. kai, nov'16 // yyyy the following might be improved by including additional disutility parameters. But the original one I found was also // just doing fastest time (see commented out version above). kai, nov'16 final TravelTime travelTime = new TravelTime(){ @Override public double getLinkTravelTime(Link link, double time, Person person, Vehicle vehicle) { return link.getLength() / Math.min( link.getFreespeed(time) , params.getTeleportedModeFreespeedLimit() ) ; } } ; TravelDisutility travelDisutility = new TravelDisutility(){ @Override public double getLinkTravelDisutility(Link link, double time, Person person, Vehicle vehicle) { return travelTime.getLinkTravelTime(link, time, person, vehicle) ; } @Override public double getLinkMinimumTravelDisutility(Link link) { return link.getLength() / Math.min( link.getFreespeed() , params.getTeleportedModeFreespeedLimit() ) ; } } ; Gbl.assertNotNull(leastCostPathCalculatorFactory); LeastCostPathCalculator routeAlgoPtFreeFlow = leastCostPathCalculatorFactory.createPathCalculator( network, travelDisutility, travelTime); return DefaultRoutingModules.createPseudoTransitRouter(params.getMode(), populationFactory, network, routeAlgoPtFreeFlow, params); } }
return DefaultRoutingModules.createAccessEgressNetworkRouter(mode, populationFactory, filteredNetwork, routeAlgo, plansCalcRouteConfigGroup) ; } else { return DefaultRoutingModules.createPureNetworkRouter(mode, populationFactory, filteredNetwork, routeAlgo);
Assert.assertEquals(1900.0, legDuration, 0.0); RoutingModule walkRoutingModule = DefaultRoutingModules.createTeleportationRouter(TransportMode.transit_walk, f.scenario.getPopulation().getFactory(), f.config.plansCalcRoute().getModeRoutingParams().get(TransportMode.walk)); Assert.assertEquals(5500.0, legDuration, 0.0); RoutingModule walkRoutingModule = DefaultRoutingModules.createTeleportationRouter(TransportMode.transit_walk, f.scenario.getPopulation().getFactory(), f.config.plansCalcRoute().getModeRoutingParams().get(TransportMode.walk)); Assert.assertEquals(50000, legDuration, 1.0); RoutingModule walkRoutingModule = DefaultRoutingModules.createTeleportationRouter(TransportMode.transit_walk, f.scenario.getPopulation().getFactory(), f.config.plansCalcRoute().getModeRoutingParams().get(TransportMode.walk));