22 package org.matsim.core.router;
24 import com.google.inject.Inject;
25 import com.google.inject.Provider;
26 import org.apache.logging.log4j.LogManager;
27 import org.apache.logging.log4j.Logger;
41 import com.google.inject.name.Named;
51 @Inject Map<String, TravelTime> travelTimes;
52 @Inject Map<String, TravelDisutilityFactory> travelDisutilityFactories;
94 log.debug(
"requesting network routing module with routingMode=" 95 + routingMode +
";\tmode=" + mode) ;
98 Network filteredNetwork = singleModeNetworksCache.getOrCreateSingleModeNetwork(mode);
104 if (travelDisutilityFactory == null) {
105 throw new RuntimeException(
"No TravelDisutilityFactory bound for mode "+routingMode+
".");
107 TravelTime travelTime = travelTimes.get(routingMode);
108 if (travelTime == null) {
109 throw new RuntimeException(
"No TravelTime bound for mode "+routingMode+
".");
112 leastCostPathCalculatorFactory.createPathCalculator(
136 log.warn(
"[mode: {}; routingMode: {}] Using deprecated routing module without access/egress. Consider using AccessEgressNetworkRouter instead.", mode, routingMode);
146 if(alreadyCheckedConsistency){
150 log.info(
"Checking network for mode '{}' for consistency...", mode);
152 int nLinks = filteredNetwork.
getLinks().size();
153 int nNodes = filteredNetwork.
getNodes().size();
155 boolean changed = nLinks != filteredNetwork.
getLinks().size() || nNodes != filteredNetwork.
getNodes().size();
158 String errorMessage =
"Network for mode '" + mode +
"' has unreachable links and nodes. This may be caused by mode restrictions on certain links. Aborting.";
159 log.error(errorMessage +
"\n If you restricted modes on some links, consider doing that with NetworkUtils.restrictModesAndCleanNetwork(). This makes sure, that the network is consistent for each mode." +
160 "\n If this network topology is intended, set the routing config parameter 'networkRouteConsistencyCheck' to 'disable'.");
164 alreadyCheckedConsistency =
true;
static RoutingModule createPureNetworkRouter(String mode, PopulationFactory popFact, Network net, final LeastCostPathCalculator routeAlgo)
Map< Id< Node >, ? extends Node > getNodes()
void run(final Network network)
TravelDisutility createTravelDisutility(TravelTime timeCalculator)
boolean alreadyCheckedConsistency
static RoutingModule createAccessEgressNetworkRouter(String mode, final LeastCostPathCalculator routeAlgo, Scenario scenario, Network filteredNetwork, RoutingModule accessEgressToNetworkRouter, TimeInterpretation timeInterpretation, MultimodalLinkChooser multimodalLinkChooser)
Map< Id< Link >, ? extends Link > getLinks()
NetworkRoutingProvider(String mode, String routingMode)
void checkNetwork(Network filteredNetwork)