/** Returns the set of lightpaths that traverse this fiber. * @return see above */ public SortedSet<WLightpathUnregenerated> getTraversingLps () { return e.getTraversingRoutes().stream().map(r->new WLightpathUnregenerated(r)).collect(Collectors.toCollection(TreeSet::new)); }
/** Returns the set of routes traversing the link that are designated as backup of other route * @return see above */ public SortedSet<Route> getTraversingBackupRoutes () { return getTraversingRoutes().stream ().filter(e->e.isBackupRoute()).collect(Collectors.toCollection(TreeSet::new)); }
/** Returns the set number of routes traversing the link that are designated as backup of other route * @return see above */ public int getNumberOfTraversingBackupRoutes () { return (int) getTraversingRoutes().stream ().filter(e->e.isBackupRoute()).count(); }
/** Returns the set of lightpaths that traverse this fiber * @return see above */ public SortedSet<WLightpathRequest> getTraversingLpRequestsInAtLeastOneLp () { return e.getTraversingRoutes().stream().map(r->new WLightpathRequest(r.getDemand())).collect(Collectors.toCollection(TreeSet::new)); }
for (Route r : e.getTraversingRoutes()) if (demands.contains(r.getDemand()))
e.getTraversingRoutes().stream().forEach(r->nodesThisIteration.addAll(r.getSeqNodes())); e.getForwardingRules().keySet().stream().map(p->p.getFirst()).forEach(d->nodesThisIteration.addAll(new TreeSet<> (Arrays.asList(d.getIngressNode() , d.getEgressNode())))); e.getTraversingTrees().stream().forEach(t->nodesThisIteration.addAll(t.getNodeSet()));
res.add(new AjtColumnInfo<Link>(this , Double.class, null , "Prop. speed (km/sec)", "Link average propagation speed in km per second", (d,val)->{ if (!d.isCoupled()) d.setPropagationSpeedInKmPerSecond((Double)val); } , d->d.getPropagationSpeedInKmPerSecond() , AGTYPE.NOAGGREGATION, null)); res.add(new AjtColumnInfo<Link>(this , Double.class, null , "Prop. delay (ms)", "Link propagation delay in ms, considering the worst case lower layer propagation of the traffic", null , d->d.getPropagationDelayInMs() , AGTYPE.MAXDOUBLE, null)); res.add(new AjtColumnInfo<Link>(this , Collection.class, null , "Routes", "Traversing routes", null , d->d.getTraversingRoutes() , AGTYPE.NOAGGREGATION, null)); res.add(new AjtColumnInfo<Link>(this , Collection.class, null , "Forw. rules", "Forwarding rules defined for this link", null , d->d.getForwardingRules().keySet() , AGTYPE.NOAGGREGATION, null)); res.add(new AjtColumnInfo<Link>(this , Collection.class, null , "Trees", "Traversing multicast trees", null , d->d.getTraversingTrees() , AGTYPE.NOAGGREGATION, null));
double delay_ms = (e.getPropagationDelayInMs() == Double.MAX_VALUE) ? Double.POSITIVE_INFINITY : e.getPropagationDelayInMs(); res.add(Triple.of("Delay (ms)", "" + df.format(delay_ms), "")); res.add(Triple.of("# routes (total / backup)", "" + e.getTraversingRoutes().size() + " / " + e.getTraversingBackupRoutes().size(), "")); res.add(Triple.of("# forw. rules", "" + e.getForwardingRules().size(), "")); res.add(Triple.of("# multicast trees", "" + e.getTraversingTrees().size() , ""));
for (Route route : eMe.getTraversingRoutes())
for (Route route : eMe.getTraversingRoutes())
double y_e = 0; for (Route r : e.getTraversingRoutes()) y_e += x_p.get (r.getIndex()); if (y_e > e.getCapacity() + 1E-3) throw new RuntimeException ("Bad");
for (Route route : eMe.getTraversingRoutes())
double yThisLink = 0; for (Route r : e.getTraversingRoutes()) yThisLink += x_p.get(r.getIndex ()); if (yThisLink > e.getCapacity() + 1E-3) throw new RuntimeException ("Bad");
for (Route r : e.getTraversingRoutes()) if (demandType.get(r.getDemand().getIndex ()) == 1) traf1 += r.getCarriedTraffic(); else traf2 += r.getCarriedTraffic(); if (traf1 > u_1.get (e.getIndex ()) + PRECISIONFACTOR) throw new RuntimeException ("Bad");
for (Route route : eMe.getTraversingRoutes())