Flöde i nätverk Graf: G = (N, B) Variabeldefinition: x ij = flöde i båge (i, j). Bågdata för båge (i, j): c ij : flödeskostnad per enhet. u ij : övre gräns för flödet. l ij : undre gräns för flödet. Bivillkor: l ij x ij u ij Noddata för nod i: b i : källstyrka/sänkstyrka. (måste vara givet) Nodjämviktsvillkor: x ji x ij = b i för alla i N (in - ut) Krav på indata: i b i = 0. Kaj Holmberg (LiU) TAOP Optimering september 0 / Specialfall av minkostnadsflödesproblemet Flöde i nätverk Sats Varje anslutningsmatris är fullständigt unimodulär. Slutsats Flödesproblem kan betraktas som LP-problem. Flödet blir automatiskt heltal. Obs: Inga andra bivillkor får finnas. Minkostnadsflödesproblemet Skicka efterfrågade mängder så billigt som möjligt. min (i,j) B x ji l ij x ij u ij x ij = b i för alla (i, j) B för alla i N Kaj Holmberg (LiU) TAOP Optimering september 0 / Specialfall av minkostnadsflödesproblemet Maxflödesproblemet: Inför återbåge (t, s). Sätt c ts = och c ij = 0 för alla (i, j) B \ (ts). Sök cirkulerande flöde (inga källor eller sänkor). Billigaste väg-problemet: Minkostnadsflödesproblem med en källa och en sänka, båda av styrka ett. i = s b i = i = t 0 f ö l ij = 0 och u ij stor (men i praktiken ) för alla bågar. Riktade brevbärarproblemet: Cirkulerande minkostnadsflödesproblem med undre gräns ett för alla bågar. max f x ji 0 x ij u ij för alla (i, j) B f fri 0, 0, f i = s x ij = f i = t 0 f ö 0, 0, 0, 0, 0, 0, för alla i N,M Kaj Holmberg (LiU) TAOP Optimering september 0 / Kaj Holmberg (LiU) TAOP Optimering september 0 /
Specialfall av minkostnadsflödesproblemet Transportproblemet: Minkostnadsflödesproblem i tudelad graf. min m i= j= x ij = s i j= m x ij = d j i= i =,... m j =,... n Kan ses som ett matrisproblem, där i står för rader och j för kolumner. Bivillkoren specificerar radsummor och kolumnsummor. (Eftersom detta är ett minkostnadsflödesproblem blir lösningen heltal.) Kaj Holmberg (LiU) TAOP Optimering september 0 / Nätverksformuleringstips Specialfall av minkostnadsflödesproblemet Tillordningsproblemet: Transportproblem med all tillgång och efterfrågan lika med ett. Varje person i skall göra en uppgift och varje uppgift j ska göras en gång. Variabeldefinition: x ij = om person i gör uppgift j. min i= j= x ij = j= x ij = i= i =,... n j =,... n Lösningsmetod: Ungerska metoden. Baseras på LP-dualen. (Eftersom detta är ett minkostnadsflödesproblem blir lösningen heltal.) Kaj Holmberg (LiU) TAOP Optimering september 0 / Nätverksformuleringstips Mer tillgång än efterfrågan: Tillgång:, efterfrågan:. Alternativ : Inför dummy-sänka, för varor som egentligen inte skickas. Kaj Holmberg (LiU) TAOP Optimering september 0 / Mer tillgång än efterfrågan: Tillgång:, efterfrågan:. Alternativ : Inför superkälla, med tillgång lika med total efterfrågan. Begränsa flödet i bågar från superkällan till tidigare källor, som nu blir mellannoder. Kaj Holmberg (LiU) TAOP Optimering september 0 /
Nätverksformuleringstips Köp allt i nod och släng allt i nod, men vet inte hur mycket. Alternativ : Inför återbåge, nod och mellannoder. Cirkulerande flöde. Alternativ : Inför slackbåge, nod sänka och nod sänka av styrka 000. 000 000 Nätverksformuleringstips Konvex styckvis linjär kostnad: De först 0 enheterna kostar 0 kr/st, sedan kr/st. Inför en parallell båge för det dyrare flödet. En extranod behövs om parallella bågar inte accepteras. 0 0,0 Observera: Den billigaste bågen kommer automatiskt att användas fullt ut, innan den dyrare börjar användas. Detta fungerar inte för konkava kostnader. Kaj Holmberg (LiU) TAOP Optimering september 0 9 / Lösningsmetod för minkostnadsflödesproblemet min (i,j) B x ji l ij x ij u ij Simplexmetoden Baslösning: x ij = b i för alla (i, j) B för alla i N Icke-basvariabler: x ij = l ij eller x ij = u ij. (Övre och undre gränser behandlas implicit.) Hur många basvariabler? Ett av nodjämviktsvillkoren är redundant. En n n-matris vore linjärt beroende. Kan bara ha bas av dimension n. Alltså n basvariabler. Kaj Holmberg (LiU) TAOP Optimering september 0 0 / Simplexmetoden för minkostnadsflödesproblemet En iteration: Basvariablerna ger ett uppspännande träd. Inkommande variabel bildar en unik cykel. Man vill skicka runt så mycket som möjligt i cykeln. Utgående variabel begränsar flödesändringen i cykeln. Den hamnar på övre eller undre gräns. Utgående variabel bryter upp cykeln. En cykel motsvarar linjärt beroende. Alltså ingen cykel i basen. Slutsats: En bas motsvarar ett uppspännande träd. Kaj Holmberg (LiU) TAOP Optimering september 0 / Kaj Holmberg (LiU) TAOP Optimering september 0 /
Simplexmetoden för minkostnadsflödesproblemet Hur välja inkommande variabel? y: dualvariabler till nodjämviktsvillkoren. y i kallas nodpris för nod i. Reducerade kostnader: ĉ ij = c ij + y i y j. (Nod i till j: Jämför skillnaden i nodpris, y j y i, med direktvägen, c ij.) Minimering ĉ ij < 0 Båge (i, j) billig. Skicka så mycket som möjligt. Öka x ij. x ij = u ij är optimalt. ĉ ij > 0 Båge (i, j) dyr. Skicka så lite som möjligt. Minska x ij. x ij = l ij är optimalt. Optimalitetsvillkor ĉ ij < 0 x ij = u ij, (billig ickebas) ĉ ij > 0 x ij = l ij (dyr ickebas) samt l ij < x ij < u ij ĉ ij = 0 (bas). (Används för att räkna ut y.) Kaj Holmberg (LiU) TAOP Optimering september 0 / Simplexmetoden för minkostnadsflöde: Exempel Simplexmetoden för minkostnadsflödesproblemet 0. Finn tillåten startbas (träd).. Sätt y = 0. Beräkna resterande y via basträdet. (c ij = y j y i för alla basbågar.). Beräkna reducerade kostnader ĉ ij = c ij + y i y j för alla icke-basbågar.. Kontrollera optimalitet. Om optimum: Stopp.. Välj mest lovande variabel som inkommande.. Finn cykeln som bildas.. Ändra flödet i cykeln maximalt i önskad riktning.. Välj den variabel som begränsar ändringen som utgående variabel.. Gå till. Kaj Holmberg (LiU) TAOP Optimering september 0 / Simplexmetoden för minkostnadsflödesproblemet Indata:,,0,, Startlösning Bågdata: c,u,x,,,,,,,,,,0 Känslighetsanalys Ändring av kostnad för icke-basbåge eller införande av ny båge: Beräkna ny reducerad kostnad, ĉ ij = c ij + y i y j och kontrollera optimalitet.,, Kaj Holmberg (LiU) TAOP Optimering september 0 / Kaj Holmberg (LiU) TAOP Optimering september 0 /
Tillordningsproblemet Varje person i skall göra en uppgift och varje uppgift j ska göras en gång. Variabeldefinition: x ij = om person i gör uppgift j. min z = i= j= x ij = j= x ij = i= i =,... n j =,... n Metod: Formulera och lös LP-dualen. Arbeta med dualvariabler och reducerade kostnader. Kaj Holmberg (LiU) TAOP Optimering september 0 / Ungerska metoden för tillordningsproblemet Tillordningsproblemet: Lös LP-dualen min z = LP-dual: max v = α i + i= Komplementaritetsvillkor: i= j= x ij = j= x ij = i= i =,... n j =,... n β j α i + β j c ij för alla (i, j). j= x ij (α i + β j c ij ) = 0 för alla (i, j). Metod: Lös dualen: Öka α och β, utan att överskrida duala bivillkoren. Försök sedan finna en tillåten primallösning som uppfyller komplementaritetsvillkoren. Ändra α och β om det inte går. Kaj Holmberg (LiU) TAOP Optimering september 0 / Ungerska metoden för tillordningsproblemet Arbeta med reducerade kostnader: ĉ ij = c ij α i β j för alla (i, j). Duala bivillkoren (primal optimalitet): ĉ ij 0 för alla (i, j) Komplementaritetsvillkoren: ĉ ij x ij = 0 för alla (i, j) Optimalitetsvillkor: ĉ ij > 0 x ij = 0, x ij > 0 ĉ ij = 0 Tillåtna positioner: där ĉ ij = 0. Mål: Placera exakt en etta i varje rad och i varje kolumn på de tillåtna positionerna. Lös dualen. Sätt α i = 0 för alla i och β j = 0 för alla j (vilket ger ĉ ij = c ij ). Öka enstaka α i och β j så mycket som möjligt (utan att ĉ ij blir negativt). Kan en etta placeras i varje rad och kolumn på de tillåtna positionerna? Om ja, stopp. Om inte, ändra dualvariablerna i par: Öka α i och minska β j så att inget ĉ ij blir negativt. Gör detta så att nya tillåtna positioner, ĉ ij = 0, bildas, samtidigt som ĉ ij 0. Upprepa tills tillåten lösning fås. Kaj Holmberg (LiU) TAOP Optimering september 0 9 / Kaj Holmberg (LiU) TAOP Optimering september 0 0 /
Ungerska metoden för tillordningsproblemet Matris av reducerade kostnader, Ĉ. Stryk alla tillåtna positioner med minsta möjliga antal streck. Sats Högsta antalet ettor som kan placeras ut är lika med minsta antalet streck som behövs. Öka α i för ostrukna rader, och minska β j för strukna kolumner. Effekt: Ostrukna element minskas, enkelt strukna element oförändrade, dubbelt strukna element ökas. ĉ ij minskas inte för någon tillåten position. Inget ĉ ij blir negativt. Minst en ny tillåten position bildas. Kaj Holmberg (LiU) TAOP Optimering september 0 / Ungerska metoden: Exempel β ĉ ij = c ij α i β j 0 0 0 0 0 0 0 0 0 0 Till slut återstår bara en nolla. α Ungerska metoden för tillordningsproblemet 0. Starta med de ursprungliga kostnaderna (α = 0, β = 0).. Dra bort det minsta elementet i varje rad från alla elementen i raden (öka α).. Dra bort minsta elementet i varje kolumn från alla elementen i kolumnen (öka β).. Stryk alla nollor med minsta möjliga antal streck. Om antalet streck är lika med n, finn tillåten lösning, och sluta.. Dra bort minsta ostrukna element från alla ostrukna element och addera till alla dubbelt strukna element. (Öka α i för ostrukna rader, och minska β j för strukna kolumner.) Gå till. Kaj Holmberg (LiU) TAOP Optimering september 0 / Ungerska metoden: Exempel Optimallösning: x = 0 0 0 0 0 0 0 0 0 0 0 0 Person gör uppgift, person gör uppgift, person gör uppgift, person gör uppgift. Total kostnad: Duallösning: α = (,,, ) β = (0,,, ) Kolla gärna starka dualsatsen: v = α i + Summan av dualvarialerna ska vara lika med totala kostnaden. i= j= β j Kaj Holmberg (LiU) TAOP Optimering september 0 / Kaj Holmberg (LiU) TAOP Optimering september 0 /