@Test (dependsOnMethods = "testWeightedGraphConstruction") public void testDijkstraPathFinding(){ FlowSpec flowSpec = initFlowSpec(); TopologySpec topologySpec_1 = initTopologySpec(TOPOLOGY_SPEC_STORE_DIR, TEST_SOURCE_NAME, TEST_HOP_NAME_A, TEST_HOP_NAME_B, TEST_SINK_NAME); TopologySpec topologySpec_2 = initTopologySpec(TOPOLOGY_SPEC_STORE_DIR_SECOND, TEST_SOURCE_NAME, TEST_HOP_NAME_B, TEST_HOP_NAME_C, TEST_SINK_NAME); this.compilerWithTemplateCalague.onAddSpec(topologySpec_1); this.compilerWithTemplateCalague.onAddSpec(topologySpec_2); // Get the edge -> Change the weight -> Materialized the edge change back to graph -> compile again -> Assertion this.compilerWithTemplateCalague.compileFlow(flowSpec); DirectedWeightedMultigraph<ServiceNode, FlowEdge> weightedGraph = compilerWithTemplateCalague.getWeightedGraph(); FlowEdge a2b= weightedGraph.getEdge(vertexHopA, vertexHopB); FlowEdge b2c = weightedGraph.getEdge(vertexHopB, vertexHopC); FlowEdge c2s = weightedGraph.getEdge(vertexHopC, vertexSink); weightedGraph.setEdgeWeight(a2b, 1.99); weightedGraph.setEdgeWeight(b2c, 0.1); weightedGraph.setEdgeWeight(c2s, 0.2); // Best route: Src - B(1) - C(0.1) - sink (0.2) this.compilerWithTemplateCalague.compileFlow(flowSpec); List<FlowEdge> edgeList = dijkstraBasedPathFindingHelper(vertexSource, vertexSink, weightedGraph); FlowEdge src2b = weightedGraph.getEdge(vertexSource, vertexHopB); FlowEdge b2C = weightedGraph.getEdge(vertexHopB, vertexHopC); FlowEdge c2sink = weightedGraph.getEdge(vertexHopC, vertexSink); Assert.assertEquals(edgeList.get(0).getEdgeIdentity(), src2b.getEdgeIdentity()); Assert.assertEquals(edgeList.get(1).getEdgeIdentity(), b2C.getEdgeIdentity()); Assert.assertEquals(edgeList.get(2).getEdgeIdentity(), c2sink.getEdgeIdentity()); this.compilerWithTemplateCalague.onDeleteSpec(topologySpec_1.getUri(), ""); this.compilerWithTemplateCalague.onDeleteSpec(topologySpec_2.getUri(), ""); }
public void changeLinkWeight(DefaultLink link, double weight) { this.graph.setEdgeWeight(link, weight); }
private void updateWeights() { logger.debug("<enter"); if (linksPreferredByUI != null) for (LabeledLink link : linksPreferredByUI) gPrime.setEdgeWeight(link, ModelingParams.PROPERTY_UI_PREFERRED_WEIGHT); if (linksForcedByUser != null) for (LabeledLink link : linksForcedByUser) { // // removing all the links to target // Set<Link> incomingLinks = gPrime.incomingEdgesOf(link.getTarget()); // if (incomingLinks == null) continue; // Link[] incomingLinksArray = incomingLinks.toArray(new Link[0]); // for (Link inLink: incomingLinksArray) { // gPrime.removeAllEdges( inLink.getSource(), inLink.getTarget() ); // } // // // adding the user selected link // gPrime.addEdge(link.getSource(), link.getTarget(), link); gPrime.setEdgeWeight(link, ModelingParams.PROPERTY_USER_PREFERRED_WEIGHT); } logger.debug("exit>"); // GraphUtil.printGraph(gPrime); }
this.graph.setEdgeWeight(link, w);
if (source != null && target != null) { graph.addEdge(source, target, l); if (weight[0] != null) graph.setEdgeWeight(l, weight[0].doubleValue());
tree.setEdgeWeight(reverseLink, inLink.getWeight());
if (tree.vertexSet().contains(stm.getSource())) { tree.addEdge(stm.getSource(), stm.getTarget(), dataPropertyLink); tree.setEdgeWeight(dataPropertyLink, stm.getLink().getWeight()); } else { logger.error("this should not conceptually happen, there should be a bug in the code!");
tree.setEdgeWeight(newLink, link.getWeight()); if (allowedChangingGraph) this.graphBuilder.addLink(link.getSource(), link.getTarget(), newLink);
tree.setEdgeWeight(newLink, l.getWeight());