AbstractPersonReRouteStuck(final PlanAlgorithm router, final MutableScenario scenario, Set<Id<Person>> agentsStuck) { super(); this.router = router; Network network = scenario.getNetwork(); Network net = network; if (NetworkUtils.isMultimodal(network)) { log.info("Network seems to be multimodal. XY2Links will only use car links."); TransportModeNetworkFilter filter = new TransportModeNetworkFilter(network); net = NetworkUtils.createNetwork(); HashSet<String> modes = new HashSet<>(); modes.add(TransportMode.car); filter.filter(net, modes); } this.agentsStuck = agentsStuck; log.info("initialized"); }
@Override public Network get() { if (dvrpCfg.getNetworkMode() == null) { // no mode filtering return network; } Network dvrpNetwork = NetworkUtils.createNetwork(); new TransportModeNetworkFilter(network).filter(dvrpNetwork, Collections.singleton(dvrpCfg.getNetworkMode())); return dvrpNetwork; } }
public PersonPrepareForSim(final PlanAlgorithm router, final Scenario scenario) { super(); this.router = router; this.carOnlyNetwork = scenario.getNetwork(); Network net = this.carOnlyNetwork; if (NetworkUtils.isMultimodal( carOnlyNetwork )) { log.info("Network seems to be multimodal. XY2Links will only use car links."); TransportModeNetworkFilter filter = new TransportModeNetworkFilter( carOnlyNetwork ); net = NetworkUtils.createNetwork(); HashSet<String> modes = new HashSet<String>(); modes.add(TransportMode.car); filter.filter(net, modes); } this.xy2links = new XY2Links(net, scenario.getActivityFacilities()); this.activityFacilities = scenario.getActivityFacilities(); this.scenario = scenario ; }
HashSet<String> modes = new HashSet<>(); modes.add(TransportMode.car); filter.filter(carOnlyNetwork, modes); } else { carOnlyNetwork = network;
@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 } }
modes.add(mode); filteredNetwork = NetworkUtils.createNetwork(); filter.filter(filteredNetwork, modes); this.singleModeNetworksCache.getSingleModeNetworksCache().put(mode, filteredNetwork);
@Test public void testFilter_NoModes() { final Fixture f = new Fixture(); TransportModeNetworkFilter filter = new TransportModeNetworkFilter(f.scenario.getNetwork()); Network subNetwork = ScenarioUtils.createScenario(ConfigUtils.createConfig()).getNetwork(); filter.filter(subNetwork, new HashSet<String>()); Assert.assertEquals("wrong number of nodes.", 0, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 0, subNetwork.getLinks().size()); }
HashSet<String> modes = new HashSet<>(); modes.add(TransportMode.car); filter.filter(carOnlyNetwork, modes); } else { carOnlyNetwork = network;
@Test public void testFilter_NoCommonModes() { final Fixture f = new Fixture(); TransportModeNetworkFilter filter = new TransportModeNetworkFilter(f.scenario.getNetwork()); Network subNetwork = ScenarioUtils.createScenario(ConfigUtils.createConfig()).getNetwork(); filter.filter(subNetwork, createHashSet(TransportMode.pt, "motorbike")); Assert.assertEquals("wrong number of nodes.", 0, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 0, subNetwork.getLinks().size()); }
@Test public void testFilter_AdditionalModes() { final Fixture f = new Fixture(); TransportModeNetworkFilter filter = new TransportModeNetworkFilter(f.scenario.getNetwork()); Network subNetwork = ScenarioUtils.createScenario(ConfigUtils.createConfig()).getNetwork(); filter.filter(subNetwork, createHashSet(TransportMode.walk, TransportMode.pt, "motorbike")); Assert.assertEquals("wrong number of nodes.", 5, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 4, subNetwork.getLinks().size()); Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[13])); Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[14])); Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[15])); Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[16])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[1])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[4])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[7])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[10])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[13])); Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[13]).getAllowedModes()); Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[14]).getAllowedModes()); Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[15]).getAllowedModes()); Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[16]).getAllowedModes()); Assert.assertEquals(1, subNetwork.getNodes().get(f.nodeIds[4]).getInLinks().size()); Assert.assertNotNull(subNetwork.getNodes().get(f.nodeIds[4]).getInLinks().get(f.linkIds[13])); Assert.assertEquals(1, subNetwork.getNodes().get(f.nodeIds[4]).getOutLinks().size()); Assert.assertNotNull(subNetwork.getNodes().get(f.nodeIds[4]).getOutLinks().get(f.linkIds[14])); }
Set<String> modeSet = new HashSet<>(); modeSet.add("car"); filter.filter(carNetwork, modeSet); LOG.warn("Pure car network now has " + carNetwork.getNodes().size() + " nodes.");
filter.filter(subNetwork, createHashSet(TransportMode.car, TransportMode.bike)); Assert.assertEquals("wrong number of nodes.", 13, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 15, subNetwork.getLinks().size()); filter.filter(subNetwork, createHashSet(TransportMode.bike, TransportMode.walk)); Assert.assertEquals("wrong number of nodes.", 9, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 10, subNetwork.getLinks().size());
filter.filter(subNetwork, createHashSet(TransportMode.car)); Assert.assertEquals("wrong number of nodes.", 13, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 14, subNetwork.getLinks().size()); filter.filter(subNetwork, createHashSet(TransportMode.bike)); Assert.assertEquals("wrong number of nodes.", 9, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 8, subNetwork.getLinks().size()); filter.filter(subNetwork, createHashSet(TransportMode.walk)); Assert.assertEquals("wrong number of nodes.", 5, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 4, subNetwork.getLinks().size());
/** * Tests the algorithm for the case the network contains direct loops, i.e. * links with the same from and to node. * * <code>Issue #178</code> - http://sourceforge.net/apps/trac/matsim/ticket/178 * * The problem seems only to happen when the loop link is (accidentally / randomly) * chosen as start link for the algorithm, as otherwise the node already exists. * Thus cannot extend existing Fixture to test this, but have to create test * scenario from scratch. */ @Test public void testFilter_SingleMode_loop() { Scenario scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig()); final Network network = scenario.getNetwork(); final NetworkFactory factory = network.getFactory(); Node node1 = factory.createNode(Id.create(1, Node.class), new Coord((double) 0, (double) 0)); network.addNode(node1); Link link1 = factory.createLink(Id.create(1, Link.class), node1, node1); link1.setAllowedModes(createHashSet(TransportMode.car)); network.addLink(link1); TransportModeNetworkFilter filter = new TransportModeNetworkFilter(network); Network subNetwork = ScenarioUtils.createScenario(ConfigUtils.createConfig()).getNetwork(); filter.filter(subNetwork, createHashSet(TransportMode.car)); Assert.assertEquals("wrong number of nodes.", 1, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 1, subNetwork.getLinks().size()); Assert.assertTrue(subNetwork.getLinks().containsKey(Id.create(1, Link.class))); }