22 package org.matsim.core.router;
24 import jakarta.inject.Inject;
25 import jakarta.inject.Provider;
39 class FreespeedFactorRouting
implements Provider<RoutingModule> {
41 private final RoutingConfigGroup.TeleportedModeParams params;
43 public FreespeedFactorRouting( RoutingConfigGroup.TeleportedModeParams params ) {
48 private Network network;
51 private PopulationFactory populationFactory;
54 private LeastCostPathCalculatorFactory leastCostPathCalculatorFactory;
57 public RoutingModule
get() {
65 final TravelTime travelTime =
new TravelTime(){
66 @Override
public double getLinkTravelTime(Link link,
double time, Person person, Vehicle vehicle) {
67 return link.getLength() / Math.min( link.getFreespeed(time) , params.getTeleportedModeFreespeedLimit() ) ;
70 TravelDisutility travelDisutility =
new TravelDisutility(){
71 @Override
public double getLinkTravelDisutility(Link link,
double time, Person person, Vehicle vehicle) {
72 return travelTime.getLinkTravelTime(link, time, person, vehicle) ;
74 @Override
public double getLinkMinimumTravelDisutility(Link link) {
75 return link.getLength() / Math.min( link.getFreespeed() , params.getTeleportedModeFreespeedLimit() ) ;
78 Gbl.assertNotNull(leastCostPathCalculatorFactory);
79 LeastCostPathCalculator routeAlgoPtFreeFlow = leastCostPathCalculatorFactory.createPathCalculator(
80 network, travelDisutility, travelTime);
81 return DefaultRoutingModules.createPseudoTransitRouter(params.getMode(), populationFactory,
82 network, routeAlgoPtFreeFlow, params);