@Override public synchronized LeastCostPathCalculator createPathCalculator(final Network network, final TravelDisutility travelCosts, final TravelTime travelTimes) { if (this.usePreProcessData) { PreProcessDijkstra preProcessDijkstra = this.preProcessData.get(network); if (preProcessDijkstra == null) { preProcessDijkstra = new PreProcessDijkstra(); preProcessDijkstra.run(network); this.preProcessData.put(network, preProcessDijkstra); } return new Dijkstra(network, travelCosts, travelTimes, preProcessDijkstra); } return new Dijkstra(network, travelCosts, travelTimes); } }
@Override protected LeastCostPathCalculator getLeastCostPathCalculator(final Network network) { FreespeedTravelTimeAndDisutility travelTimeCostCalculator = new FreespeedTravelTimeAndDisutility(new PlanCalcScoreConfigGroup()); return new Dijkstra(network, travelTimeCostCalculator, travelTimeCostCalculator); }
@Test public void testPersonAvailableForDisutility_Dijkstra() { Fixture f = new Fixture(); Dijkstra router = new Dijkstra(f.network, f.costFunction, new FreeSpeedTravelTime()); router.calcLeastCostPath( f.network.getNodes().get(Id.create("2", Node.class)), f.network.getNodes().get(Id.create("1", Node.class)), 07*3600, f.person, f.vehicle); // hopefully there was no Exception until here... Assert.assertEquals(22, f.costFunction.cnt); // make sure the costFunction was actually used }
@Test public void testRouteLeg() { Fixture f = new Fixture(); FreespeedTravelTimeAndDisutility freespeed = new FreespeedTravelTimeAndDisutility(-6.0/3600, +6.0/3600, 0.0); LeastCostPathCalculator routeAlgo = new Dijkstra(f.s.getNetwork(), freespeed, freespeed); Person person = PopulationUtils.getFactory().createPerson(Id.create(1, Person.class)); Activity fromAct = PopulationUtils.createActivityFromCoord("h", new Coord(0, 0)); fromAct.setLinkId(Id.create("1", Link.class)); Activity toAct = PopulationUtils.createActivityFromCoord("h", new Coord(0, 3000)); toAct.setLinkId(Id.create("3", Link.class)); final NetworkRoutingModule routingModule = new NetworkRoutingModule( TransportMode.car, f.s.getPopulation().getFactory(), f.s.getNetwork(), routeAlgo); Facility fromFacility = new ActivityWrapperFacility( fromAct ) ; Facility toFacility = new ActivityWrapperFacility( toAct ) ; List<? extends PlanElement> result = routingModule.calcRoute(fromFacility, toFacility, 7.0*3600, person) ; Assert.assertEquals(1, result.size() ); Leg leg = (Leg)result.get(0) ; Assert.assertEquals(100.0, leg.getTravelTime(), 1e-8); Assert.assertTrue(leg.getRoute() instanceof NetworkRoute); }
final Fixture f = new Fixture(); FreespeedTravelTimeAndDisutility freespeed = new FreespeedTravelTimeAndDisutility(-6.0/3600, +6.0/3600, 0.0); LeastCostPathCalculator routeAlgo = new Dijkstra(f.s.getNetwork(), freespeed, freespeed);