public BenchPerformance(String fileName, Graph graph) { r = Runtime.getRuntime(); forceGC(); long used1 = r.totalMemory() - r.freeMemory(); g = graph; try { g.read(fileName); } catch (Exception e) { e.printStackTrace(); System.exit(0); } System.out.println( "Graph read: " + g.getNodeCount() + " nodes and " + g.getEdgeCount() + " edges"); for (Node n : g) n.clearAttributes(); for (Edge e : g.getEachEdge()) e.clearAttributes(); forceGC(); long used2 = r.totalMemory() - r.freeMemory(); measureValues = new EnumMap<Measures, Long>(Measures.class); measureValues.put(Measures.MEMORY, used2 - used1); nodeIds = new ArrayList<String>(g.getNodeCount()); for (Node n : g) nodeIds.add(n.getId()); // sort them to be sure that we always work with the same nodes Collections.sort(nodeIds); edgeIds = new ArrayList<String>(g.getEdgeCount()); for (Edge e : g.getEachEdge()) edgeIds.add(e.getId()); Collections.sort(edgeIds); }
/** * Clone a given graph with same node/edge structure and same attributes. * * @param g the graph to clone * @return a copy of g */ public static Graph clone(Graph g) { Graph copy; try { Class<? extends Graph> cls = g.getClass(); copy = cls.getConstructor(String.class).newInstance(g.getId()); } catch (Exception e) { logger.warning(String.format("Cannot create a graph of %s.", g.getClass().getName())); copy = new AdjacencyListGraph(g.getId()); } copyAttributes(g, copy); for (int i = 0; i < g.getNodeCount(); i++) { Node source = g.getNode(i); Node target = copy.addNode(source.getId()); copyAttributes(source, target); } for (int i = 0; i < g.getEdgeCount(); i++) { Edge source = g.getEdge(i); Edge target = copy.addEdge( source.getId(), source.getSourceNode().getId(), source.getTargetNode().getId(), source.isDirected()); copyAttributes(source, target); } return copy; }
public void execute() { // Toolkit.c final Graph graph = new SingleGraph("roberto"); graph.setStrict(false); graph.addAttribute("ui.stylesheet", "node.important {fill-color: red;}"); graph.addAttribute("ui.quality"); graph.addAttribute("ui.antialias"); BaseGenerator gen = null; // Between 1 and 3 new links per node added. // gen = new BarabasiAlbertGenerator(1);//talvez // gen = new DorogovtsevMendesGenerator();//talvez // gen = new PointsOfInterestGenerator();//gera desconexo // gen = new PreferentialAttachmentGenerator();//parece com lobster // gen = new RandomEuclideanGenerator(2);//+- // gen = new RandomFixedDegreeDynamicGraphGenerator(200, 9.0, // 0.5);//acho que não // gen = new WattsStrogatzGenerator(200, 4, 0.1);//+- // gen = new ClusterGeneratorOld(200); int n = 100; // gen = new LobsterGenerator(5, 5);// sim // gen = new CustomLobsterGenerator(500, 3, 5);// sim // gen = new CustomFlowerSnarkGenerator(100);//sim // gen = new ClusterGenerator(n, 3, 3); //sim // gen = new CustomGridGenerator(110, true, 0.9F, 15, 5);//usado para // gen = new WattsStrogatzGenerator(20, 10, 0.1);//pode ser mas tem que // rodar 2 vezes // gen = new BarabasiAlbertGenerator(1);//talvez - parecido com lobster // gen = new DorogovtsevMendesGenerator();//talvez gen.setRandomSeed(12345); gen.addSink(graph); gen.begin(); while (gen.nextEvents()) ; gen.end(); System.out.println("" + graph.getNodeCount() + " " + graph.getEdgeCount()); // gen.configureNodes(graph); // System.out.println("Amount of important: " + gen.countImportant); Viewer viewer = graph.display(true); // Layout layoutAlgorithm = new SpringBox(); // viewer.enableAutoLayout(layoutAlgorithm); viewer.setCloseFramePolicy(Viewer.CloseFramePolicy.HIDE_ONLY); ViewerListener vl = new MyViewListener(graph, n, 2, gen); ViewerPipe fromViewer = viewer.newViewerPipe(); fromViewer.addViewerListener(vl); fromViewer.addSink(graph); while (loop) { fromViewer.pump(); // or fromViewer.blockingPump(); try { Thread.sleep(100); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } // try { // Thread.sleep(10000); // } catch (InterruptedException e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } }