Umlegungsalgorithmus

Nachstehend folgt der Pseudo-Code des Verfahrens im Rahmen eines Umlegungsalgorithmus.

function LUCE
            f = 0          initialize the solution flows to zero
for k = 1 to n          perform n iterations
   for each d∈Z          for each destination d
     for each ij∈A          compute arc costs and their derivatives
             cij = cij( fij)
       gij = max{∂cij( fij)/∂fij, ε}
       if fid > 0 then yijd = fijd / fid else yijd = 0
     B(d) =B(B(d), c, f)          initialize or modify the current bush
     Cdd = 0           the average cost of the destination is zero
     Gdd = 0          so its derivative
     for each i:∃ij∈B(d) in reverse topological order  for each node i ≠ d in the bush
       if fid > 0 then
         Cid = ∑j∈FSB(i, d)yijd • (cij + Cjd)        compute the node average cost to d
         Gid = ∑j∈FSB(i, d)yijd2 (gij + Gjd)        and its derivative
      else
         Cid = min{cij + Cjd: j∈FSB(i, d)}
         Gid= ∑j∈FSB(i, d) [Cid = cij + Cjd] • (gij + Gjd) / ∑j∈FSB(i, d) [Cid = cij + Cjd],
  ed = 0          reset the arc and node flows to d
  for each o∈Z          load on the origins the demand to d
      eod = Dod
  for each i:∃ij∈B(d) in topological order  for each node i ≠ d in the bush
     J = FSB(i, d)          initialize the set of arcs with positive flow
     λ = 0
      until λ = 1 do
       λ = 1
       Vid = [eid + ∑j∈J (cij + Cjd) / (gij + Gjd) - eid•yijd] / ∑j∈J 1/(gij + Gjd)
       for each j∈J
                  eijd = Vid / (gij + Gjd) - (cij + Cjd) / (gij + Gjd) + eidyijd
         if eijd < 0 then
            eijd = 0
            J = J \ {j}         remove ij from the set of arcs with positive flow
            λ = 0          then repeat the procedure
     for each j∈J
        ejd = ejd + eijd          propagate the arc flows to the head node flows
  α = 1
  if k > 1 then
    until ∑ij∈A cij( fij + a • (eijd - fijd)) • (eijd - fijd) < 0 do α = 0.5 •α  armijo step
  for each ij∈A          update arc flows
    fij = fij + α • (eijd - fijd)
    fijd = fijd + α • (eijd - fijd)

Der Busch zu jedem Ziel d∈Z wird mit der Menge der effizienten Kanten initialisiert, die näher an das Ziel heranführen, wobei die minimalen Kosten bei unbelastetem Netz ausgewertet werden. Bei jeder Iteration werden alle nicht-effizienten Kanten, über die keine Zielbelastungen fließen, aus dem Busch entfernt, während alle Kanten, die Kurzwege auf dem Busch verbessern würden, hinzugefügt werden, wenn die entgegengesetzte Kante keine Belastung trägt. Ist der resultierende Teilgraph azyklisch, ersetzt er den aktuellen Busch dieses Ziels. Da der LUCE-Algorithmus auf ein Gleichgewicht auf dem Busch abzielt, wird die Belastung auf den nicht-effizienten Wegen schließlich abgebaut und der Busch kann passend umgebaut werden.

Bemerkenswerterweise erfordert der LUCE-Algorithmus nach der Initialisierung der Büsche keine weiteren Kurzwegberechnungen, sondern lediglich einfaches Durchlaufen der Büsche.