Fault Tolerance provided by
Capillary Routing
Description of the AMPL code
Cleaning from the core set the
non bottleneck links
Script |
Comments |
printf "Cleaning the
core sets"; let benchmark_start :=
_ampl_time; |
◄starting the benchmarking |
for{t in FRAMES} { |
◄starting the loop for all frames |
let maxload := min(1,max{(i,j) in Core[t]}
Link[t,i,j]); |
◄using the maxload value instead of 1, in case if the load of bottleneck links did not reach exactly the level of 1 (due to precision errors) |
let Core_clean[t] := {(i,j) in Core[t]:
Link[t,i,j]>=maxload-eps}; } |
◄cleaned core contains only the links sustaining the maximal load values |
printf " ... "; let FRAMES_quit := {t in
FRAMES: Core[t] diff Core_clean[t] within {}}; |
◄frames for which cleaning could not remove any non-bottleneck links are marked for quit, since for these frames the bottlenecks are definitely discovered |
for{t in FRAMES} { let Core[t] := Core_clean[t]; } |
◄resetting the Core set with the new cleaned set |
let benchmark_stop := _ampl_time; printf "done in %f
seconds\n",benchmark_stop - benchmark_start; |
◄printing benchmarking results of the core cleaning process |
* * *