# Span-Restorable Spare Capacity Placement Network Optimization # July 2001 by John Doucette # Copyright (C) 2001 TRLabs, Inc. All Rights Reserved. # ******************************************************** # TRLabs # 7th Floor # 9107 116 Street NW # Edmonton, Alberta, Canada # T6G 2V4 # +1 780 441-3800 # www.trlabs.ca # ******************************************************** # This model, including any data and algorithms contained herein, is the # exclusive property of TRLabs, held on behalf of its sponsors. Except # as specifically authorized in writing by TRLabs, the recipient of this # model shall keep it confidential and shall protect it in whole or # in part from disclosure and dissementation to all third parties. # If any part of this model, including any data and algorithms contained # herein, is used in any derivative works or publications, TRLabs shall be # duly cited as a reference. # TRLabs makes no representation or warranties about the suitability of # this model, either express or implied, including but not limited to # implied warranties of merchantability, fitness for a particular purpose, # or non-infringement. TRLabs shall not be liable for any damages suffered # as a result of using, modifying or distributing this model or its # derivatives. # This is an AMPL model for optimal design of a span-restorable mesh network # where working capacity has been shortest path routed. # ************************ # SETS # ************************ set SPANS; # set of all spans set REST_ROUTES{i in SPANS}; # set of all restoration routes for each span failure i # ************************ # PARAMETERS # ************************ param Cost{j in SPANS}; # cost of each unit of capacity on span j param Work{j in SPANS}; # number of working links placed on span j param DeltaRestRoute{i in SPANS, j in SPANS, p in REST_ROUTES[i]} default 0; # equal to 1 if pth restoration route for failure of span i uses span j and 0 otherwise var flowrest{i in SPANS, p in REST_ROUTES[i]} >=0 integer, <=10000; # restoration flow through pth restoration route for failure of span i var spare{j in SPANS} >=0 integer, <=10000; # number of spare links place on span j # ************************ # OBJECTIVE FUNCTION # ************************ minimize totcost: sum{j in SPANS} Cost[j] * spare[j]; # ************************ # CONSTRAINTS # ************************ subject to restn{i in SPANS}: sum{p in REST_ROUTES[i]} flowrest[i,p] = Work[i]; # There is enough restoration flow over all eligible restoration routes to # restore all working capacity on failed span i. subject to sparasst{i in SPANS, j in SPANS: i <> j}: spare[j] >= sum{p in REST_ROUTES[i]} DeltaRestRoute[i,j,p] * flowrest[i,p]; # There is engouh spare capcity on surviving span j to accommodate all of # the restoration flow simultaneously crossing it over various restoration # routes used in the event of failure of span i.