TW2020 Optimalisering Hoorcollege 10 Leo van Iersel Technische Universiteit Delft 23 november 2016 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 1 / 40
Vraag Ik heb het deeltentamen niet gehaald. Heeft het nog zin om het tentamen te maken? Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 2 / 40
Vraag Ik heb het deeltentamen niet gehaald. Heeft het nog zin om het tentamen te maken? Vraag Ik heb het deeltentamen niet gehaald. Moet ik nu harder gaan werken om het vak te halen? Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 2 / 40
Vandaag Oplossen van ILP problemen: Branch & Bound Cutting Planes Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 3 / 40
Branch & Bound Stel we willen het volgende ILP probleem oplossen. z IP = min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 (1) x 2 3 (2) 2 x 1 2 x 2 3 (3) x 1, x 2 0 x 1, x 2 Z Hoe kunnen we dat aanpakken? Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 4 / 40
Los eerste de LP-relaxatie op. z LP = min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 (1) x 2 3 (2) 2 x 1 2 x 2 3 (3) x 1, x 2 0 Dit kan met de Simplex methode. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 5 / 40
(2) x z 2 (1) min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 (1) x 2 3 (2) 2 x 1 2 x 2 3 (3) x 1, x 2 0 x 1, x 2 Z (3) x 1 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 6 / 40
x z 2 (1) min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 (1) x 2 3 (2) 2 x 1 2 x 2 3 (3) x 1, x 2 0 x 1, x 2 Z (2) X LP =(20/7,3) (3) x 1 z LP = 8 3 7 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 7 / 40
x z 2 (1) min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 (1) x 2 3 (2) 2 x 1 2 x 2 3 (3) x 1, x 2 0 x 1, x 2 Z (2) X LP =(20/7,3) (3) x 1 z LP = 8 3 7 dus z IP 8 3 7 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 7 / 40
x z 2 (1) min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 (1) x 2 3 (2) 2 x 1 2 x 2 3 (3) x 1, x 2 0 x 1, x 2 Z (2) X LP =(20/7,3) (3) x 1 z LP = 8 3 7 dus z IP 8 3 7 en alle coëfficiënten geheeltallig, dus z IP 8 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 7 / 40
We hebben dus de ondergrens (lower bound) z IP 8 = z. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 8 / 40
We hebben dus de ondergrens (lower bound) z IP 8 = z. Nu is het tijd om te branchen (vertakken). Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 8 / 40
We hebben dus de ondergrens (lower bound) z IP 8 = z. Nu is het tijd om te branchen (vertakken). In de oplossing van de LP-relaxatie is x 1 = 20 7 = 2 6 7. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 8 / 40
We hebben dus de ondergrens (lower bound) z IP 8 = z. Nu is het tijd om te branchen (vertakken). In de oplossing van de LP-relaxatie is x 1 = 20 7 = 2 6 7. Maar in de ILP moet x 1 geheeltallig zijn, dus x 1 2 of x 1 3. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 8 / 40
We hebben dus de ondergrens (lower bound) z IP 8 = z. Nu is het tijd om te branchen (vertakken). In de oplossing van de LP-relaxatie is x 1 = 20 7 = 2 6 7. Maar in de ILP moet x 1 geheeltallig zijn, dus x 1 2 of x 1 3. Dus we branchen in twee deelproblemen: x 1 2 0 z = -8 x 1 3 z = 1 2 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 8 / 40
Los de LP-relaxatie op voor elk deelprobleem: x 1 2 0 z = -8 x 1 3 z = 1 2 z 1 LP = min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 x 2 3 2 x 1 2 x 2 3 x 1 2 x 1, x 2 0 z 2 LP = min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 x 2 3 2 x 1 2 x 2 3 x 1 3 x 1, x 2 0 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 9 / 40
Deelprobleem 1: x 2 x 1 2 z min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 x 2 3 2 x 1 2 x 2 3 x 1 2 x 1, x 2 0 X 1 LP= (2,1/2) x 1 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 10 / 40
Deelprobleem 1: x 2 x 1 2 z min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 x 2 3 2 x 1 2 x 2 3 x 1 2 x 1, x 2 0 X 1 LP= (2,1/2) x 1 [ ] 2 xlp 1 = 1/2 z 1 LP = 7 1 2 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 10 / 40
Deelprobleem 2: x 2 x 1 3 min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 x 2 3 2 x 1 2 x 2 3 x 1 3 x 1, x 2 0 x 1 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 11 / 40
Deelprobleem 2: x 2 x 1 3 min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 x 2 3 2 x 1 2 x 2 3 x 1 3 x 1, x 2 0 x 1 Geen toegelaten oplossing Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 11 / 40
x 1 2 0 z = -8 x 1 3 z = 1 2 [ ] 2 xlp 1 = 1/2 z 1 LP = 7 1 2 Niet toegelaten Snoeien (Prune) Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 12 / 40
x 1 2 0 z = -8 x 1 3 z = 1 2 [ ] 2 xlp 1 = 1/2 z 1 LP = 7 1 2 Niet toegelaten Snoeien (Prune) z 1 = 7 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 12 / 40
x 1 2 0 z = -8 x 1 3 z = 1 2 [ ] 2 xlp 1 = 1/2 z 1 LP = 7 1 2 Niet toegelaten Snoeien (Prune) z 1 = 7 z i is de ondergrens in knoop i. Deze geldt voor de deelboom onder deze knoop. z is de bovengrens. Deze is geldig voor de hele boom. Snoeien (pruning) betekent dat we de knoop niet verder hoeven op te splitsen. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 12 / 40
In deelprobleem 1 is x 2 = 1 2. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 13 / 40
In deelprobleem 1 is x 2 = 1 2. Splits deelprobleem 1 verder op in twee nieuwe deelproblemen: z 1 = -7 x 2 0 0 z = -8 x 1 2 x 1 3 1 2 x 2 1 3 4 z = niet toegelaten snoeien Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 13 / 40
Deelprobleem 4: x 2 z min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 x 2 3 2 x 1 2 x 2 3 x 1 2 x 2 1 x 1, x 2 0 x 4 LP= (2,1) x 2 1 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 14 / 40
Deelprobleem 4: x 2 z min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 x 2 3 2 x 1 2 x 2 3 x 1 2 x 2 1 x 1, x 2 0 x 4 LP= (2,1) x 2 1 x 4 LP = [ 2 1 ] z 4 LP = z4 IP = 7 Geheeltallige oplossing Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 14 / 40
Deelprobleem 4: x 2 z min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 x 2 3 2 x 1 2 x 2 3 x 1 2 x 2 1 x 1, x 2 0 x 4 LP= (2,1) x 2 1 x 4 LP = [ 2 1 ] z 4 LP = z4 IP = 7 Geheeltallige oplossing Dus z = 7 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 14 / 40
0 x 1 2 x 1 3 z = -8 z = -7 z 1 = -7 x 2 0 1 2 x 2 1 niet toegelaten snoeien 3 4 ] x 4 LP = [ 2 1 z 4 LP = z4 IP = 7 geheeltallige oplossing Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 15 / 40
Nu kunnen we knoop 3 snoeien want z 3 z 1 = 7 = z. z 1 = -7 x 2 0 0 x 1 2 x 1 3 1 2 x 2 1 z = -8 z = -7 niet toegelaten snoeien 3 4 ] z 3 7 = z x 4 LP = [ 2 1 snoeien z 4 LP = z4 IP = 7 geheeltallige oplossing snoeien Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 16 / 40
We hebben alle takken van de boom gesnoeid. De beste gevonden geheeltallige oplossing is dus optimaal. De optimale oplossing is x 1 = 2, x 2 = 1 met waarde z IP = 7. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 17 / 40
We hebben alle takken van de boom gesnoeid. De beste gevonden geheeltallige oplossing is dus optimaal. De optimale oplossing is x 1 = 2, x 2 = 1 met waarde z IP = 7. x z 2 (1) (2) (3) X IP =(2,1) x 1 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 17 / 40
Samenvatting Branch & Bound methode (voor een min-probleem): Los steeds de LP-relaxaties van deelproblemen op. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 18 / 40
Samenvatting Branch & Bound methode (voor een min-probleem): Los steeds de LP-relaxaties van deelproblemen op. De optimale waarde van de LP-relaxatie is een ondergrens (lower bound) op de optimale waarde van het deelprobleem. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 18 / 40
Samenvatting Branch & Bound methode (voor een min-probleem): Los steeds de LP-relaxaties van deelproblemen op. De optimale waarde van de LP-relaxatie is een ondergrens (lower bound) op de optimale waarde van het deelprobleem. Als de optimale oplossing geheetallig is dan is de optimale waarde een bovengrens (upper bound) op de optimale waarde van het originele ILP probleem. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 18 / 40
Samenvatting Branch & Bound methode (voor een min-probleem): Los steeds de LP-relaxaties van deelproblemen op. De optimale waarde van de LP-relaxatie is een ondergrens (lower bound) op de optimale waarde van het deelprobleem. Als de optimale oplossing geheetallig is dan is de optimale waarde een bovengrens (upper bound) op de optimale waarde van het originele ILP probleem. Als we een deelprobleem niet kunnen snoeien, vertak (branch) over een niet-geheeltallige variabele. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 18 / 40
Samenvatting Branch & Bound methode (voor een min-probleem): Los steeds de LP-relaxaties van deelproblemen op. De optimale waarde van de LP-relaxatie is een ondergrens (lower bound) op de optimale waarde van het deelprobleem. Als de optimale oplossing geheetallig is dan is de optimale waarde een bovengrens (upper bound) op de optimale waarde van het originele ILP probleem. Als we een deelprobleem niet kunnen snoeien, vertak (branch) over een niet-geheeltallige variabele. Voor max-problemen gaat het op dezelfde manier maar worden bovengrenzen ondergrenzen en vice versa. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 18 / 40
Wanneer kunnen we een knoop snoeien (in een min-probleem)? Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 19 / 40
Wanneer kunnen we een knoop snoeien (in een min-probleem)? 1 De LP-relaxatie heeft geen toegelaten oplossing. Prune by infeasibility. (Zie knoop 2) Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 19 / 40
Wanneer kunnen we een knoop snoeien (in een min-probleem)? 1 De LP-relaxatie heeft geen toegelaten oplossing. Prune by infeasibility. (Zie knoop 2) 2 De gevonden optimale oplossing van de LP-relaxatie is geheeltallig. Prune by optimality. (Zie knoop 4). Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 19 / 40
Wanneer kunnen we een knoop snoeien (in een min-probleem)? 1 De LP-relaxatie heeft geen toegelaten oplossing. Prune by infeasibility. (Zie knoop 2) 2 De gevonden optimale oplossing van de LP-relaxatie is geheeltallig. Prune by optimality. (Zie knoop 4). Als de waarde van de gevonden geheeltallige oplossing kleiner is dan z, pas dan de bovengrens z aan. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 19 / 40
Wanneer kunnen we een knoop snoeien (in een min-probleem)? 1 De LP-relaxatie heeft geen toegelaten oplossing. Prune by infeasibility. (Zie knoop 2) 2 De gevonden optimale oplossing van de LP-relaxatie is geheeltallig. Prune by optimality. (Zie knoop 4). Als de waarde van de gevonden geheeltallige oplossing kleiner is dan z, pas dan de bovengrens z aan. 3 De gevonden ondergrens z k is groter of gelijk aan de huidige bovengrens z. Prune by bound. (Zie knoop 3). Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 19 / 40
Wanneer kunnen we een knoop snoeien (in een min-probleem)? 1 De LP-relaxatie heeft geen toegelaten oplossing. Prune by infeasibility. (Zie knoop 2) 2 De gevonden optimale oplossing van de LP-relaxatie is geheeltallig. Prune by optimality. (Zie knoop 4). Als de waarde van de gevonden geheeltallige oplossing kleiner is dan z, pas dan de bovengrens z aan. 3 De gevonden ondergrens z k is groter of gelijk aan de huidige bovengrens z. Prune by bound. (Zie knoop 3). De ondergrens z k is gelijk aan de optimale waarde van de LP-relaxatie. Indien alle doelstellingscoëfficiën geheeltallig zijn, kan z k naar boven afgerond worden. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 19 / 40
Implementatieaspecten Op welke variabele branchen we? Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 20 / 40
Implementatieaspecten Op welke variabele branchen we? Typische regel: kies variabele met fractionele deel het dichtst bij 1 2. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 20 / 40
Implementatieaspecten Op welke variabele branchen we? Typische regel: kies variabele met fractionele deel het dichtst bij 1 2. Welke niet-gesnoeide knoop gaan we verder vertakken? Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 20 / 40
Implementatieaspecten Op welke variabele branchen we? Typische regel: kies variabele met fractionele deel het dichtst bij 1 2. Welke niet-gesnoeide knoop gaan we verder vertakken? (a) Depth-first search: ga zo snel mogelijk naar beneden in de boom in de hoop dat er snel een goede toegelaten oplossing gevonden wordt. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 20 / 40
Implementatieaspecten Op welke variabele branchen we? Typische regel: kies variabele met fractionele deel het dichtst bij 1 2. Welke niet-gesnoeide knoop gaan we verder vertakken? (a) Depth-first search: ga zo snel mogelijk naar beneden in de boom in de hoop dat er snel een goede toegelaten oplossing gevonden wordt. (b) Best-node-first: kies een knoop met beste waarde van de LP-relaxatie. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 20 / 40
Implementatieaspecten Op welke variabele branchen we? Typische regel: kies variabele met fractionele deel het dichtst bij 1 2. Welke niet-gesnoeide knoop gaan we verder vertakken? (a) Depth-first search: ga zo snel mogelijk naar beneden in de boom in de hoop dat er snel een goede toegelaten oplossing gevonden wordt. (b) Best-node-first: kies een knoop met beste waarde van de LP-relaxatie. (c) Gebruik (a) totdat een geheeltallige oplossing gevonden is en daarna (b). Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 20 / 40
Implementatieaspecten Op welke variabele branchen we? Typische regel: kies variabele met fractionele deel het dichtst bij 1 2. Welke niet-gesnoeide knoop gaan we verder vertakken? (a) Depth-first search: ga zo snel mogelijk naar beneden in de boom in de hoop dat er snel een goede toegelaten oplossing gevonden wordt. (b) Best-node-first: kies een knoop met beste waarde van de LP-relaxatie. (c) Gebruik (a) totdat een geheeltallige oplossing gevonden is en daarna (b). Vraag Wat is de looptijd van het Branch & Bound algoritme? Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 20 / 40
CUTTING PLANES Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 21 / 40
Cutting Planes Cutting planes of geldige ongelijkheden zijn restricties die aan de ILP formulering kunnen worden toegevoegd zonder geheeltallige punten weg te snijden. Cutting planes worden vaak in combinatie met Branch & Bound gebruikt om de kwaliteit van de LP-relaxatie te verbeteren. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 22 / 40
Beschouw een ILP probleem: z IP = min c T x o.d.v. Ax b x 0 x Z n Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 23 / 40
Beschouw een ILP probleem: z IP = min c T x o.d.v. Ax b x 0 x Z n De optimale waarde van de LP-relaxatie geeft een ondergrens op de optimale waarde van het ILP probleem. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 23 / 40
Beschouw een ILP probleem: z IP = min c T x o.d.v. Ax b x 0 x Z n De optimale waarde van de LP-relaxatie geeft een ondergrens op de optimale waarde van het ILP probleem. Door cutting planes aan het ILP toe te voegen kunnen we proberen deze ondergrens te verbeteren. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 23 / 40
P = {x R n Ax b, x 0} is het bijbehorende polyeder en S = P Z n de verzameling toegelaten oplossingen van het ILP. P Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 24 / 40
P = {x R n Ax b, x 0} is het bijbehorende polyeder en S = P Z n de verzameling toegelaten oplossingen van het ILP. P Definitie Een polyeder Q is een formulering voor S als Q Z n = S. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 24 / 40
P = {x R n Ax b, x 0} is het bijbehorende polyeder en S = P Z n de verzameling toegelaten oplossingen van het ILP. P Definitie Een polyeder Q is een formulering voor S als Q Z n = S. Dus P is een formulering voor S. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 24 / 40
P = {x R n Ax b, x 0} is het bijbehorende polyeder en S = P Z n de verzameling toegelaten oplossingen van het ILP. P Definitie Een polyeder Q is een formulering voor S als Q Z n = S. Dus P is een formulering voor S. Maar er bestaan oneindig veel formuleringen voor S. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 24 / 40
Definitie Een ongelijkheid a T x b is geldig voor S als a T x b voor alle x S. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 25 / 40
Definitie Een ongelijkheid a T x b is geldig voor S als a T x b voor alle x S. P a T x b Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 25 / 40
Definitie Een ongelijkheid a T x b is geldig voor S als a T x b voor alle x S. P a T x b Ongelijkheid a T x b toevoegen aan P geeft een formulering P van S die minstens zo sterk is, d.w.z. P P. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 25 / 40
Definitie Een ongelijkheid a T x b is geldig voor S als a T x b voor alle x S. P' a T x b Ongelijkheid a T x b toevoegen aan P geeft een formulering P van S die minstens zo sterk is, d.w.z. P P. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 26 / 40
Definitie Een ongelijkheid a T x b is geldig voor S als a T x b voor alle x S. P' a T x b Ongelijkheid a T x b toevoegen aan P geeft een formulering P van S die minstens zo sterk is, d.w.z. P P. Vraag Wat is de sterkst mogelijke formulering van S? Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 26 / 40
Vraag Wat is de sterkst mogelijke formulering van S? Het convex omhulsel (convex hull) van S: de kleinste convexe verzameling die alle punten in S bevat. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 27 / 40
Vraag Wat is de sterkst mogelijke formulering van S? Het convex omhulsel (convex hull) van S: de kleinste convexe verzameling die alle punten in S bevat. We kunnen het convex omhulsel van S niet vinden in polynomiale tijd, dus proberen we het zo goed mogelijk te benaderen. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 27 / 40
Gomory s Cutting Planes Beschouw weer hetzelfde ILP probleem. z IP = min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 (1) x 2 3 (2) 2 x 1 2 x 2 3 (3) x 1, x 2 0 x 1, x 2 Z Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 28 / 40
Gomory s Cutting Planes Beschouw weer hetzelfde ILP probleem. z IP = min 4 x 1 + x 2 o.d.v. 7 x 1 2 x 2 14 (1) x 2 3 (2) 2 x 1 2 x 2 3 (3) x 1, x 2 0 x 1, x 2 Z Het optimale tableaux van de LP-relaxatie: basis b x 1 x 2 s 1 s 2 s 3 x 1 20/7 1 0 1/7 2/7 0 x 2 3 0 1 0 1 0 s 3 23/7 0 0-2/7 10/7 1 z 59/7 0 0 4/7 1/7 0 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 28 / 40
Definitie Laat a R. Dan is a het grootste gehele getal n Z met n a. We noemen a het geheeltallige deel van a en a a het fractionele deel van a. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 29 / 40
Definitie Laat a R. Dan is a het grootste gehele getal n Z met n a. We noemen a het geheeltallige deel van a en a a het fractionele deel van a. Merk op dat voor het fractionele deel van een getal a geldt dat 0 a a < 1. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 29 / 40
Neem bijvoorbeeld de eerste rij van het Simplex tableaux: x 1 + 1 7 s 1 + 2 7 s 2 = 2 6 7 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 30 / 40
Neem bijvoorbeeld de eerste rij van het Simplex tableaux: x 1 + 1 7 s 1 + 2 7 s 2 = 2 6 7 Splits elke coëfficiënt a in het geheeltallige deel a en het fractionele deel a a. 1x 1 + (0 + 1 7 )s 1 + (0 + 2 7 )s 2 = 2 + 6 7 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 30 / 40
Neem bijvoorbeeld de eerste rij van het Simplex tableaux: x 1 + 1 7 s 1 + 2 7 s 2 = 2 6 7 Splits elke coëfficiënt a in het geheeltallige deel a en het fractionele deel a a. 1x 1 + (0 + 1 7 )s 1 + (0 + 2 7 )s 2 = 2 + 6 7 Herschrijf zodanig dat de geheeltallige delen links en de fractionele delen rechts staan. x 1 2 = 6 7 1 7 s 1 2 7 s 2 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 30 / 40
Neem bijvoorbeeld de eerste rij van het Simplex tableaux: x 1 + 1 7 s 1 + 2 7 s 2 = 2 6 7 Splits elke coëfficiënt a in het geheeltallige deel a en het fractionele deel a a. 1x 1 + (0 + 1 7 )s 1 + (0 + 2 7 )s 2 = 2 + 6 7 Herschrijf zodanig dat de geheeltallige delen links en de fractionele delen rechts staan. x 1 2 = 6 7 1 7 s 1 2 7 s 2 Omdat de linkerzijde geheeltallig is, moet de rechterzijde ook geheeltallig zijn. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 30 / 40
De rechterzijde 6 7 1 7 s 1 2 7 s 2 moet geheeltallig zijn. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 31 / 40
De rechterzijde 6 7 1 7 s 1 2 7 s 2 moet geheeltallig zijn. Omdat 6 7 < 1 en s 1, s 2 0, zijn de enige mogelijke geheeltallige waardes voor de rechterzijde 0, 1, 2,... Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 31 / 40
De rechterzijde 6 7 1 7 s 1 2 7 s 2 moet geheeltallig zijn. Omdat 6 7 < 1 en s 1, s 2 0, zijn de enige mogelijke geheeltallige waardes voor de rechterzijde 0, 1, 2,..., dus: 6 7 1 7 s 1 2 7 s 2 0 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 31 / 40
De rechterzijde 6 7 1 7 s 1 2 7 s 2 moet geheeltallig zijn. Omdat 6 7 < 1 en s 1, s 2 0, zijn de enige mogelijke geheeltallige waardes voor de rechterzijde 0, 1, 2,..., dus: 6 7 1 7 s 1 2 7 s 2 0 1 7 s 1 2 7 s 2 6 7 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 31 / 40
De rechterzijde 6 7 1 7 s 1 2 7 s 2 moet geheeltallig zijn. Omdat 6 7 < 1 en s 1, s 2 0, zijn de enige mogelijke geheeltallige waardes voor de rechterzijde 0, 1, 2,..., dus: 6 7 1 7 s 1 2 7 s 2 0 1 7 s 1 2 7 s 2 6 7 s 1 2s 2 6 Dit is een Gomory snede (Gomory cutting plane). Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 31 / 40
De Gomory snede, in de originele variabelen, is: x 1 2: x x 1 2 2 (1) (2) (3) x 1 Het gele deel van het polyeder is weggesneden. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 32 / 40
Om de nieuwe LP-relaxatie op te lossen, breng de Gomory snede, uitgedrukt in de basisvariabelen, in standaard vorm: s 1 2s 2 + s 4 = 6 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 33 / 40
Om de nieuwe LP-relaxatie op te lossen, breng de Gomory snede, uitgedrukt in de basisvariabelen, in standaard vorm: s 1 2s 2 + s 4 = 6 en voeg toe aan het huidige Simplex tableaux van de LP relaxatie: basis b x 1 x 2 s 1 s 2 s 3 s 4 x 1 20/7 1 0 1/7 2/7 0 0 x 2 3 0 1 0 1 0 0 s 3 23/7 0 0-2/7 10/7 1 0 s 4-6 0 0-1 -2 0 1 z 59/7 0 0 4/7 1/7 0 0 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 33 / 40
Om de nieuwe LP-relaxatie op te lossen, breng de Gomory snede, uitgedrukt in de basisvariabelen, in standaard vorm: s 1 2s 2 + s 4 = 6 en voeg toe aan het huidige Simplex tableaux van de LP relaxatie: basis b x 1 x 2 s 1 s 2 s 3 s 4 x 1 20/7 1 0 1/7 2/7 0 0 x 2 3 0 1 0 1 0 0 s 3 23/7 0 0-2/7 10/7 1 0 s 4-6 0 0-1 -2 0 1 z 59/7 0 0 4/7 1/7 0 0 De oplossing blijft duaal toegelaten maar is niet meer primaal toegelaten. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 33 / 40
Om de nieuwe LP-relaxatie op te lossen, breng de Gomory snede, uitgedrukt in de basisvariabelen, in standaard vorm: s 1 2s 2 + s 4 = 6 en voeg toe aan het huidige Simplex tableaux van de LP relaxatie: basis b x 1 x 2 s 1 s 2 s 3 s 4 x 1 20/7 1 0 1/7 2/7 0 0 x 2 3 0 1 0 1 0 0 s 3 23/7 0 0-2/7 10/7 1 0 s 4-6 0 0-1 -2 0 1 z 59/7 0 0 4/7 1/7 0 0 De oplossing blijft duaal toegelaten maar is niet meer primaal toegelaten. Pas de duale Simplex methode toe. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 33 / 40
Herhaling: Duale Simplex Methode voor minimaliseringsproblemen: 1 Initialisatie: vind een (primale) basisoplossing, niet noodzakelijk toegelaten, met c j 0 voor alle j. 2 Als b i 0 voor alle i dan is de huidige basisoplossing toegelaten en optimaal. Stop! 3 Kies uittredende basisvariabele behorende bij rij i met b i < 0. 4 Als ā i j 0 voor alle j dan heeft het probleem geen toegelaten oplossing. Stop! 5 Kies intredende variabele x j waarvoor c j ā i j { cj = max j ā i j } ā i j < 0. 6 Pas elementaire rijoperaties toe zodanig dat kolom j een 1 krijgt in rij i en verder alleen 0 en. Ga naar (2). Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 34 / 40
basis b x1 x 2 s 1 s 2 s 3 s 4 x 1 20/7 1 0 1/7 2/7 0 0 x 2 3 0 1 0 1 0 0 s 3 23/7 0 0-2/7 10/7 1 0 s 4-6 0 0-1 -2 0 1 z 59/7 0 0 4/7 1/7 0 0 max{ 4/7 1, 1/7 2 } = 1/7 2 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 35 / 40
basis b x1 x 2 s 1 s 2 s 3 s 4 x 1 20/7 1 0 1/7 2/7 0 0 x 2 3 0 1 0 1 0 0 s 3 23/7 0 0-2/7 10/7 1 0 s 4-6 0 0-1 -2 0 1 z 59/7 0 0 4/7 1/7 0 0 max{ 4/7 1, 1/7 2 } = 1/7 2 Dus s 2 komt de basis in voor s 4. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 35 / 40
Pas rijoperaties toe: basis b x1 x 2 s 1 s 2 s 3 s 4 x 1 2 1 0 0 0 0 1 x 2 0 0 1-1/2 0 0 7/2 s 3-1 0 0-1 0 1 5 s 2 3 0 0 1/2 1 0-7/2 z 8 0 0 1/2 0 0 1/2 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 36 / 40
Nieuwe duale pivot: basis b x 1 x 2 s 1 s 2 s 3 s 4 x 1 2 1 0 0 0 0 1 x 2 0 0 1-1/2 0 0 7/2 s 3-1 0 0-1 0 1 5 s 2 3 0 0 1/2 1 0-7/2 z 8 0 0 1/2 0 0 1/2 Nu komt s 1 de basis in voor s 3. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 37 / 40
basis b x1 x 2 s 1 s 2 s 3 s 4 x 1 2 1 0 0 0 0 1 x 2 1/2 0 1 0 0-1/2 1 s 1 1 0 0 1 0-1 -5 s 2 5/2 0 0 0 1 1/2-1 z 15/2 0 0 0 0 1/2 3 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 38 / 40
De huidige oplossing, x LP = optimaal. basis b x1 x 2 s 1 s 2 s 3 s 4 x 1 2 1 0 0 0 0 1 x 2 1/2 0 1 0 0-1/2 1 s 1 1 0 0 1 0-1 -5 s 2 5/2 0 0 0 1 1/2-1 z 15/2 0 0 0 0 1/2 3 [ ] 2, is duaal en primaal toegelaten, en dus 1/2 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 38 / 40
De optimale oplossing van de LP-relaxatie na toevoegen van de eerste Gomory snede. x 2 (1) (2) z (3) X LP =(2,1/2) x 1 Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 39 / 40
Laatste opmerkingen Voor elke rij van het Simplex tableaux, inclusief de doelfunctierij, kan een Gomory snede geformuleerd worden. Deze kunnen allemaal tegelijk aan de LP-relaxatie worden toegevoegd. Niet elke snede zal een deel van het polyeder wegsnijden. Ook in de Branch & Bound methode wordt steeds een restrictie aan de LP-relaxatie toegevoegd. Hier kan ook goed de Duale Simplex methode gebruikt worden om het nieuwe deelprobleem op te lossen. Leo van Iersel (TUD) TW2020 Optimalisering 23 november 2016 40 / 40