/** * Internal method to clean up the graph. */ protected void cleanUp() { int prevNodeCount = ghStorage.getNodes(); PrepareRoutingSubnetworks preparation = new PrepareRoutingSubnetworks(ghStorage, encodingManager.fetchEdgeEncoders()); preparation.setMinNetworkSize(minNetworkSize); preparation.setMinOneWayNetworkSize(minOneWayNetworkSize); preparation.doWork(); int currNodeCount = ghStorage.getNodes(); logger.info("edges: " + Helper.nf(ghStorage.getAllEdges().length()) + ", nodes " + Helper.nf(currNodeCount) + ", there were " + Helper.nf(preparation.getMaxSubnetworks()) + " subnetworks. removed them => " + Helper.nf(prevNodeCount - currNodeCount) + " less nodes"); }
@Test public void testRemoveSubnetworkIfOnlyOneVehicle() { GraphHopperStorage g = createSubnetworkTestStorage2(em); PrepareRoutingSubnetworks instance = new PrepareRoutingSubnetworks(g, em.fetchEdgeEncoders()); instance.setMinNetworkSize(4); instance.doWork(); g.optimize(); assertEquals(6, g.getNodes()); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(g)); EdgeExplorer explorer = g.createEdgeExplorer(); assertEquals(GHUtility.asSet(2, 1, 5), GHUtility.getNeighbors(explorer.setBaseNode(3))); // do not remove because small network is big enough g = createSubnetworkTestStorage2(em); instance = new PrepareRoutingSubnetworks(g, em.fetchEdgeEncoders()); instance.setMinNetworkSize(3); instance.doWork(); g.optimize(); assertEquals(9, g.getNodes()); }
@Test public void test481() { // 0->1->3->4->5->6 // 2 7<--/ GraphHopperStorage g = createStorage(em); g.edge(0, 1, 1, false); g.edge(1, 2, 1, false); g.edge(2, 0, 1, false); g.edge(1, 3, 1, false); g.edge(3, 4, 1, false); g.edge(4, 5, 1, false); g.edge(5, 6, 1, false); g.edge(6, 7, 1, false); g.edge(7, 4, 1, false); PrepareRoutingSubnetworks instance = new PrepareRoutingSubnetworks(g, Collections.singletonList(carFlagEncoder)). setMinOneWayNetworkSize(2). setMinNetworkSize(4); instance.doWork(); // only one remaining network List<IntArrayList> components = instance.findSubnetworks(new PrepEdgeFilter(carFlagEncoder)); assertEquals(1, components.size()); }
@Test public void testRemoveSubnetworkWhenMultipleVehicles() { FlagEncoder carEncoder = new CarFlagEncoder(); BikeFlagEncoder bikeEncoder = new BikeFlagEncoder(); EncodingManager em2 = new EncodingManager(carEncoder, bikeEncoder); GraphHopperStorage g = createSubnetworkTestStorage2(em2); GHUtility.getEdge(g, 3, 4).setFlags(carEncoder.setProperties(10, false, false) | bikeEncoder.setProperties(5, true, true)); PrepareRoutingSubnetworks instance = new PrepareRoutingSubnetworks(g, em2.fetchEdgeEncoders()); instance.setMinNetworkSize(5); instance.doWork(); g.optimize(); // remove nothing because of two vehicles with different subnetworks assertEquals(9, g.getNodes()); EdgeExplorer carExplorer = g.createEdgeExplorer(DefaultEdgeFilter.allEdges(carEncoder)); assertEquals(GHUtility.asSet(7, 2, 1), GHUtility.getNeighbors(carExplorer.setBaseNode(3))); EdgeExplorer bikeExplorer = g.createEdgeExplorer(DefaultEdgeFilter.allEdges(bikeEncoder)); assertEquals(GHUtility.asSet(7, 2, 1, 4), GHUtility.getNeighbors(bikeExplorer.setBaseNode(3))); GHUtility.getEdge(g, 3, 4).setFlags(carEncoder.setProperties(10, false, false) | bikeEncoder.setProperties(5, false, false)); instance = new PrepareRoutingSubnetworks(g, em2.fetchEdgeEncoders()); instance.setMinNetworkSize(5); instance.doWork(); g.optimize(); assertEquals(6, g.getNodes()); }
l_preparation.setMinNetworkSize( CConfiguration.getInstance().get().MinNetworkSize ); l_preparation.doWork();
/** * Internal method to clean up the graph. */ protected void cleanUp() { int prevNodeCount = ghStorage.getNodes(); PrepareRoutingSubnetworks preparation = new PrepareRoutingSubnetworks(ghStorage, encodingManager.fetchEdgeEncoders()); preparation.setMinNetworkSize(minNetworkSize); preparation.setMinOneWayNetworkSize(minOneWayNetworkSize); logger.info("start finding subnetworks, " + Helper.getMemInfo()); preparation.doWork(); int currNodeCount = ghStorage.getNodes(); logger.info("edges: " + ghStorage.getAllEdges().getMaxId() + ", nodes " + currNodeCount + ", there were " + preparation.getMaxSubnetworks() + " subnetworks. removed them => " + (prevNodeCount - currNodeCount) + " less nodes"); }
/** * Internal method to clean up the graph. */ protected void cleanUp() { int prevNodeCount = ghStorage.getNodes(); PrepareRoutingSubnetworks preparation = new PrepareRoutingSubnetworks(ghStorage, encodingManager.fetchEdgeEncoders()); preparation.setMinNetworkSize(minNetworkSize); preparation.setMinOneWayNetworkSize(minOneWayNetworkSize); preparation.doWork(); int currNodeCount = ghStorage.getNodes(); logger.info("edges: " + Helper.nf(ghStorage.getAllEdges().length()) + ", nodes " + Helper.nf(currNodeCount) + ", there were " + Helper.nf(preparation.getMaxSubnetworks()) + " subnetworks. removed them => " + Helper.nf(prevNodeCount - currNodeCount) + " less nodes"); }