@SuppressWarnings("unchecked") public static Map<VirtualNetwork, Boolean> calculateMappedVnr(NetworkStack stack) { VirtualNetwork tempVnr; Network tmpN; boolean isMapped; Map<VirtualNetwork, Boolean> isMappedVnr = new LinkedHashMap<VirtualNetwork, Boolean>(); for (Iterator<Network<?, ?, ?>> net = stack.iterator(); net.hasNext(); ) { tmpN = net.next(); if (tmpN.getLayer() != 0) { tempVnr = (VirtualNetwork) tmpN; isMapped = true; for (VirtualNode tmpVNode : tempVnr.getVertices()) { for (AbstractDemand dem : tmpVNode) { if (dem instanceof CpuDemand) { if (dem.getMappings().isEmpty()) { isMapped = false; } break; } } } isMappedVnr.put(tempVnr, isMapped); } } return isMappedVnr; }
@Override public double calculate() { HashMap<VirtualLink, Integer> lengths = new HashMap<VirtualLink, Integer>(); SubstrateNetwork sNetwork = stack.getSubstrate(); for (SubstrateLink sl : sNetwork.getEdges()) { LinkedList<VirtualLink> visited = new LinkedList<VirtualLink>(); for (AbstractResource r : sl.get()) { for (Mapping m : r.getMappings()) { AbstractDemand d = m.getDemand(); NetworkEntity<? extends AbstractConstraint> e = d.getOwner(); if (e instanceof VirtualLink) { VirtualLink vl = (VirtualLink) e; if (!visited.contains(vl)) { visited.add(vl); Integer i = lengths.get(vl); if (i == null) { i = 1; } else { i++; } lengths.put(vl, i); } } } } } int sum = 0; for (Integer i : lengths.values()) { sum += i; } int counter = 0; for (@SuppressWarnings("rawtypes") Network net : stack) { if (net instanceof VirtualNetwork) { VirtualNetwork vNet = (VirtualNetwork) net; counter += vNet.getEdgeCount(); } } return (counter == 0 ? 0.0 : (sum / (double) counter)); }