private void checksInitialize() { /* Check in h_ct, the columns sum zero */ for (int t = 0; t < this.currentNetPlan.getNumberOfNodes(); t++) if (Math.abs(global_h_ct.viewColumn(t).zSum()) > PRECISIONFACTOR) throw new RuntimeException("Bad"); /* Check in h_nt, the columns sum zero */ for (int t = 0; t < this.currentNetPlan.getNumberOfNodes(); t++) if (Math.abs(global_h_nt.viewColumn(t).zSum()) > PRECISIONFACTOR) throw new RuntimeException("Bad"); }
public WNet (NetPlan np) { super (np); this.np = np; if(np.getNumberOfNodes() < 2 || np.getNumberOfLayers() != 2) throw new Net2PlanException("Incorrect number of nodes or layers"); } private final NetPlan np;
/** * Calculates the correct map center and zoom so that all nodes are visible. */ private void calculateMapPosition() { final NetPlan netPlan = callback.getDesign(); final double zoomRatio = 0.6; // Read xy coordinates of each node as latitude and longitude coordinates. final Map<Long, GeoPosition> nodeToGeoPositionMap = netPlan.getNodes().stream().collect(Collectors.toMap(Node::getId, node -> new GeoPosition(node.getXYPositionMap().getY(), node.getXYPositionMap().getX()))); // Calculating OSM map center and zoom. mapViewer.zoomToBestFit(nodeToGeoPositionMap.isEmpty() ? Collections.singleton(mapViewer.getDefaultPosition()) : new HashSet<>(nodeToGeoPositionMap.values()), zoomRatio); if (netPlan.getNumberOfNodes() <= 1) mapViewer.setZoom(16); // So that the map is not too close to the node. }
private Pair<List<Node>, Set<Demand>> computeFilteringNodesAndDemands() { final NetPlan np = networkViewer.getDesign(); final List<Node> filteredNodes = new ArrayList<>(np.getNumberOfNodes()); final String filteringNodeTag = this.cmb_tagNodesSelector.getSelectedItem() == DEFAULT_TAG_FILTER ? null : (String) this.cmb_tagNodesSelector.getSelectedItem(); final String filteringDemandTag = this.cmb_tagDemandsSelector.getSelectedItem() == DEFAULT_TAG_FILTER ? null : (String) this.cmb_tagDemandsSelector.getSelectedItem(); for (Node n : np.getNodes()) { if (filteringNodeTag != null) if (!n.hasTag(filteringNodeTag)) continue; if (this.cb_filterLinklessNodes.isSelected()) if (n.getOutgoingLinks(layerThisTable).isEmpty() && n.getIncomingLinks(layerThisTable).isEmpty()) continue; filteredNodes.add(n); } Set<Demand> filteredDemands; if (filteringDemandTag == null) { filteredDemands = new HashSet<>(np.getDemands(layerThisTable)); } else { filteredDemands = new HashSet<>(); for (Demand d : np.getDemands(layerThisTable)) if (d.hasTag(filteringDemandTag)) filteredDemands.add(d); } return Pair.of(filteredNodes, filteredDemands); }
public double getCanvasDefaultVerticalDistanceForInterLayers() { if (this.getNetPlan().getNumberOfNodes() == 0) return 1.0; final int numVisibleLayers = getCanvasNumberOfVisibleLayers() == 0 ? this.getNetPlan().getNumberOfLayers() : getCanvasNumberOfVisibleLayers(); double minY = Double.MAX_VALUE; double maxY = -Double.MAX_VALUE; for (Node n : this.getNetPlan().getNodes()) { final double y = n.getXYPositionMap().getY(); minY = Math.min(minY, y); maxY = Math.max(maxY, y); } if ((maxY - minY < 1e-6)) return Math.abs(maxY) / (30 * numVisibleLayers); return (maxY - minY) / (30 * numVisibleLayers); }
public void execute() { Random rng = new Random(); NetPlan netPlan = callback.getDesign(); if (netPlan.hasMulticastDemands(getTableNetworkLayer())) { int result = JOptionPane.showConfirmDialog(null, "Remove all existing multicast demands before?", "", JOptionPane.YES_NO_CANCEL_OPTION); if (result == JOptionPane.CANCEL_OPTION || result == JOptionPane.CLOSED_OPTION) return; if (result == JOptionPane.YES_OPTION) netPlan.removeAllMulticastDemands(); } if (netPlan.getNumberOfNodes() < 2) throw new Net2PlanException("At least two nodes are needed"); for (Node ingressNode : netPlan.getNodes()) { Set<Node> egressNodes = new HashSet<Node>(); for (Node n : netPlan.getNodes()) if ((n != ingressNode) && rng.nextBoolean()) egressNodes.add(n); if (egressNodes.isEmpty()) egressNodes.add(netPlan.getNode(ingressNode.getIndex() == 0 ? 1 : 0)); netPlan.addMulticastDemand(ingressNode, egressNodes, 0, null); } }
public void execute() { NetPlan netPlan = callback.getDesign(); if (netPlan.hasMulticastDemands(getTableNetworkLayer())) { int result = JOptionPane.showConfirmDialog(null, "Remove all existing multicast demands before?", "", JOptionPane.YES_NO_CANCEL_OPTION); if (result == JOptionPane.CANCEL_OPTION || result == JOptionPane.CLOSED_OPTION) return; else if (result == JOptionPane.YES_OPTION) netPlan.removeAllMulticastDemands(); } if (netPlan.getNumberOfNodes() < 2) throw new Net2PlanException("At least two nodes are needed"); for (Node ingressNode : netPlan.getNodes()) { Set<Node> egressNodes = new HashSet<Node>(netPlan.getNodes()); egressNodes.remove(ingressNode); netPlan.addMulticastDemand(ingressNode, egressNodes, 0, null); } } }
public void updateNetPlanView(NetPlan currentState) { txt_numLayers.setText(Integer.toString(currentState.getNumberOfLayers())); txt_numNodes.setText(Integer.toString(currentState.getNumberOfNodes())); txt_numSRGs.setText(Integer.toString(currentState.getNumberOfSRGs()));
public List<AjtRcMenu> getNonBasicRightClickMenusInfo() { final NetPlan np = callback.getDesign(); final List<AjtRcMenu> res = new ArrayList<> (); res.add(new AjtRcMenu("Add node", e->np.addNode (0 , 0 , "Node " + np.getNumberOfNodes() , null), (a,b)->true, null)); res.add(new AjtRcMenu("Remove selected nodes", e->getSelectedElements().forEach(dd->((Node)dd).remove()) , (a,b)->b>0, null)); res.add(new AjtRcMenu("Show selected nodes", e->getSelectedElements().forEach(ee->callback.getVisualizationState().showOnCanvas(ee)) , (a,b)->b>0, null)); res.add(new AjtRcMenu("Hide selected nodes", e->getSelectedElements().forEach(ee->callback.getVisualizationState().hideOnCanvas(ee)) , (a,b)->b>0, null)); res.add(new AjtRcMenu("Switch selected nodes' coordinates from (x,y) to (y,x)", e->getSelectedElements().forEach(node->node.setXYPositionMap(new Point2D.Double(node.getXYPositionMap().getY(), node.getXYPositionMap().getX()))) , (a,b)->b>0, null)); res.add(new AjtRcMenu("Create planning domain restricted to selected nodes", e->np.restrictDesign(getSelectedElements()) , (a,b)->b>0, null)); return res; } }
actions.add(new JMenuItem(new RemoveNodeAction("Remove node", node))); if (netPlan.getNumberOfNodes() > 1)
@Override public void addNode(Point2D pos) { final Node node = callback.getDesign().addNode(pos.getX(), pos.getY(), "Node" + callback.getDesign().getNumberOfNodes(), null); callback.getVisualizationState().recomputeCanvasTopologyBecauseOfLinkOrNodeAdditionsOrRemovals(); callback.updateVisualizationAfterChanges(); callback.addNetPlanChange(); callback.getPickManager().pickElements(node); callback.updateVisualizationAfterPick(); }
private void setNodeTableInfoFromNetPlan(NetPlan netPlan) { int N = netPlan.getNumberOfNodes(); if (N == 0) throw new Net2PlanException("Network structure doesn't contain a physical topology"); maxLevel = 1; Object[][] data = new Object[N][6]; for (Node node : netPlan.getNodes()) { final int n = node.getIndex(); final long nodeId = node.getId(); double population; int level; population = (int) node.getPopulation (); try { level = Integer.parseInt(node.getAttribute("level")); } catch (Exception ex) { level = 1; } data[n][0] = nodeId; data[n][1] = node.getName(); data[n][2] = node.getXYPositionMap().getX(); data[n][3] = node.getXYPositionMap().getY(); data[n][4] = population < 0 ? 0 : population; data[n][5] = level < 1 ? 1 : level; if (level > maxLevel) maxLevel = level; } nodeInfoTableModel.setDataVector(data, nodeInfoTableHeader); ((DefaultTableModel) levelMatrixTableModel).setRowCount(maxLevel); numNodes.setText(Integer.toString(N)); }
public static SortedMap<Demand,Double> getGravityModelEstimationFromCurrentCarriedTraffic (NetworkLayer layer) { final NetPlan np = layer.getNetPlan(); final int N = np.getNumberOfNodes(); final double [] ingressTrafficPerNode = new double [N]; final double [] egressTrafficPerNode = new double [N]; for (Node n : np.getNodes()) { ingressTrafficPerNode [n.getIndex()] = n.getIncomingLinks(layer).stream().mapToDouble(e->e.getCarriedTraffic()).sum(); egressTrafficPerNode [n.getIndex()] = n.getOutgoingLinks(layer).stream().mapToDouble(e->e.getCarriedTraffic()).sum(); } final DoubleMatrix2D tm = TrafficMatrixGenerationModels.gravityModel(ingressTrafficPerNode, egressTrafficPerNode); final SortedMap<Demand,Double> res = new TreeMap<> (); for (Node n1 : np.getNodes()) for (Node n2 : np.getNodes()) { if (n1 == n2) continue; final SortedSet<Demand> nodePairDemands = np.getNodePairDemands(n1, n2, false, layer); final double traf = tm.get(n1.getIndex(), n2.getIndex()); nodePairDemands.forEach(d->res.put(d, traf / nodePairDemands.size())); } return res; }
public static SortedMap<Demand,Double> getGravityModelEstimationFromMonitorTraffic (NetworkLayer layer , Date date) { if (!isGravityModelApplicableWithLinkMonitoringInfo(layer, date)) throw new Net2PlanException ("Gravity model not applicable"); final NetPlan np = layer.getNetPlan(); final List<Link> links = np.getLinks(layer); final List<Demand> demands = np.getDemands(layer); final int N = np.getNumberOfNodes(); final double [] ingressTrafficPerNode = new double [N]; final double [] egressTrafficPerNode = new double [N]; for (Node n : np.getNodes()) { ingressTrafficPerNode [n.getIndex()] = n.getIncomingLinks(layer).stream().mapToDouble(e->e.getMonitoredOrForecastedCarriedTraffic().getValueOrNull(date)).sum(); egressTrafficPerNode [n.getIndex()] = n.getOutgoingLinks(layer).stream().mapToDouble(e->e.getMonitoredOrForecastedCarriedTraffic().getValueOrNull(date)).sum(); } final DoubleMatrix2D tm = TrafficMatrixGenerationModels.gravityModel(ingressTrafficPerNode, egressTrafficPerNode); final SortedMap<Demand,Double> res = new TreeMap<> (); for (Node n1 : np.getNodes()) for (Node n2 : np.getNodes()) { if (n1 == n2) continue; final SortedSet<Demand> nodePairDemands = np.getNodePairDemands(n1, n2, false, layer); final double traf = tm.get(n1.getIndex(), n2.getIndex()); nodePairDemands.forEach(d->res.put(d, traf / nodePairDemands.size())); } return res; }
@Override public void addNode(Point2D pos) { final double scale = canvas.getCurrentCanvasScale(); final Point2D swingPoint = new Point2D.Double(pos.getX() * scale, -pos.getY() * scale); final GeoPosition geoPosition = OSMController.OSMMapUtils.convertPointToGeo(swingPoint); if (!OSMController.OSMMapUtils.isInsideBounds(geoPosition.getLongitude(), geoPosition.getLatitude())) { throw new OSMException("The node is out of the map's bounds", "Problem while adding node"); } final NetPlan netPlan = callback.getDesign(); final Node node = netPlan.addNode(geoPosition.getLongitude(), geoPosition.getLatitude(), "Node" + netPlan.getNumberOfNodes(), null); callback.getVisualizationState().recomputeCanvasTopologyBecauseOfLinkOrNodeAdditionsOrRemovals(); callback.updateVisualizationAfterChanges(); mapController.refreshTopologyAlignment(); callback.addNetPlanChange(); callback.getPickManager().pickElements(node); callback.updateVisualizationAfterPick(); }
final int N = netPlan.getNumberOfNodes(); if (N == 0) throw new Net2PlanException("The input design must have nodes"); netPlan.removeAllUnicastRoutingInformation();
final int N = netPlan.getNumberOfNodes(); final int E = netPlan.getNumberOfLinks(); if (N == 0) throw new Net2PlanException("The input design must have nodes");
int N = netPlan.getNumberOfNodes(); int E = netPlan.getNumberOfLinks(); int D = netPlan.getNumberOfDemands();
final int N = netPlan.getNumberOfNodes (); DoubleMatrix1D w_f = getVectorFiberNumFrequencySlots (netPlan, layer); final int W = w_f.size () == 0? 0 : (int) w_f.getMaxLocation() [0];
int N = netPlan.getNumberOfNodes(); int E = netPlan.getNumberOfLinks(); int D = netPlan.getNumberOfDemands();