min c 1 x 1 + c 2 x 2 då x 1 + x 2 = 1, x 1 {0, 1}, x 2 {0, 1} plus andra bivillkor. Vi måste göra k st av n alternativ:

Relevanta dokument
Speciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler

min c 1 x 1 + c 2 x 2 då x 1 + x 2 = 1, x 1 {0, 1}, x 2 {0, 1} plus andra bivillkor. Vi måste göra k st av n alternativ:

Flöde i nätverk. Flöde i nätverk. Specialfall av minkostnadsflödesproblemet

Flöde i nätverk. Flöde i nätverk. Specialfall av minkostnadsflödesproblemet

Flöde i nätverk. Flöde i nätverk. Specialfall av minkostnadsflödesproblemet. Specialfall av minkostnadsflödesproblemet. Slutsats.

Optimeringslära Kaj Holmberg

Optimeringslära Kaj Holmberg

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.

Optimeringslära Kaj Holmberg

Optimeringslära Kaj Holmberg

LP-problem. Vårt första exempel. Baslösningar representerar extrempunkter. Baslösningar representerar extrempunkter

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Sats: Varje anslutningsmatris ar fullstandigt unimodular. Bevis: Lat m beteckna antalet rader i anslutningsmatrisen.

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Optimeringslära Kaj Holmberg

Eulercykel. Kinesiska brevbärarproblemet. Kinesiska brevbärarproblemet: Metod. Kinesiska brevbärarproblemet: Modell. Definition. Definition.

Optimalitetsvillkor. Optimum? Matematisk notation. Optimum? Definition. Definition

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Optimeringslära Kaj Holmberg

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C

Olinjär optimering med bivillkor: KKT min f (x) då g i (x) 0 för alla i

z = min 3x 1 2x 2 + y Fixera y, vilket ger subproblemet

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C. Tentamensinstruktioner. När Du löser uppgifterna

Algoritmkomplexitet. Komplexitet Teoretisk bas för frågorna: Är en viss metod bra eller dålig? Är ett visst problem lätt eller svårt?

Optimeringslära Kaj Holmberg

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP07/TEN1 OPTIMERINGSLÄRA GRUNDKURS för Y. Antal uppgifter: 7 Uppgifterna är inte ordnade efter svårighetsgrad.

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Tentamensinstruktioner. När Du löser uppgifterna

Dynamisk programmering. Dynamisk programmering. Dynamisk programmering. Dynamisk programmering

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

Tentamensinstruktioner. När Du löser uppgifterna

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C. Tentamensinstruktioner. När Du löser uppgifterna

Examinator: Torbjörn Larsson Jourhavande lärare: Torbjörn Larsson, tel Tentamensinstruktioner. När Du löser uppgifterna

Linjärprogramming. EG2205 Föreläsning 7, vårterminen 2015 Mikael Amelin

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Tentamensinstruktioner. När Du löser uppgifterna

Flöde i nätverk. Flöde i nätverk. Specialfall av minkostnadsflödesproblemet. Specialfall av minkostnadsflödesproblemet. Slutsats.

Laboration 2 - Heltalsoptimering

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

Lösningar/svar. Uppgift 1. Tekniska Högskolan i Linköping Optimering av realistiska sammansatta system. Optimeringslära Kaj Holmberg

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TNK049 Optimeringslära

Tentamensinstruktioner. När Du löser uppgifterna

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

1 Minkostnadsflödesproblem i nätverk

TNSL05 Optimering, Modellering och Planering. Föreläsning 10

Optimeringslära Kaj Holmberg. Lösningar/svar. Iteration 2: x 2 s

Vårt första exempel. LP-dualitet: Exempel. LP-dualitet: Generellt. LP-dualitet: Relationer

Tentamensinstruktioner. När Du löser uppgifterna

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Optimering. Optimering

LP-dualitet: Exempel. Vårt första exempel. LP-dualitet: Relationer. LP-dualitet: Generellt

1(8) x ijt = antal mobiltelefoner av typ i=1,,m, Som produceras på produktionslina 1,, n, Under vecka t=1,,t.

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM. Tentamensinstruktioner. När Du löser uppgifterna

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Optimering. TAOP88 Optimering för ingenjörer. När inte intuitionen räcker till... Långsiktiga mål med kursen. Vad är optimering?

Tentamensinstruktioner. När Du löser uppgifterna

Tentamensinstruktioner

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

Extrempunkt. Polyeder

Laboration 1 - Simplexmetoden och Modellformulering

Föreläsning 6: Nätverksoptimering

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Optimering. TAOP86 Kombinatorisk optimering med miljötillämpningar. När inte intuitionen räcker till... Långsiktiga mål med kursen. Vad är optimering?

Föreläsning 10/11! Gruppuppgifter: Gruppuppgift 1: Alla har redovisat. Gruppuppgift 2: Alla har redovisat Gruppuppgift 3: På gång.

Lösningsförslag till tentamen i SF1861 Optimeringslära för T. Torsdag 28 maj 2010 kl

Tentamensinstruktioner. När Du löser uppgifterna

tentaplugg.nu av studenter för studenter

1 Duala problem vid linjär optimering

Transkript:

Heltalsprogrammering Speciell användning av heltalsvariabler max z = då c j x j a ij x j b i x j 0 x j heltal i =,..., m j =,..., n j =,..., n ofta x j u j j =,..., n Oftast c, A, b heltal. Ibland u j =. Obs: Tillåtna mängden ej konvex. Logiska beslut: x = om vi väljer alternativ, x 2 = om vi väljer alternativ 2. Alternativ kostar c, alternativ 2 kostar c 2. Vi måste göra ett av dem. min c x + c 2 x 2 då x + x 2 =, x {0, }, x 2 {0, } plus andra bivillkor. Vi måste göra minst ett av dem: x + x 2. Vi får göra högst ett av dem: x + x 2. Vi måste göra k st av n alternativ: x j = k. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 / 47 Speciell användning av heltalsvariabler Antingen-eller-villkor: Ex: I ord: Antingen 2x + 3x 2 5 eller 5x + 2x 2 6. Formulera som följer (med M >> x) 2x + 3x 2 5 + M( y ), 5x + 2x 2 6 + M( y 2 ), y + y 2 =, y {0, }, y 2 {0, }. Utvidgning: minst k av m bivillkor skall gälla. y j = k. j Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 2 / 47 Antingen-eller-villkor: Exempel Antingen 2x + 3x 2 5 eller 5x + 2x 2 6. M = 5: 2x + 3x 2 5 + 5( y ), 5x + 2x 2 6 + 5( y 2 ), y + y 2 =, y {0, }, y 2 {0, }. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 3 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 4 / 47

Speciell användning av heltalsvariabler Speciell användning av heltalsvariabler Icke-konvexa tillåtna områden, t ex villkorliga undre gränser: I ord: x = 0 eller x L. Formulera som Ly x My, y {0, }. Ett icke-konvext område. (Unionen av två konvexa områden.) y + y 2 =, y {0, }, y 2 {0, } ger x X X 2 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 5 / 47 Speciell användning av heltalsvariabler Logik: x = betyder sant, x = 0 betyder falskt. Icke : x blir ( x). Eller : x x 2 blir x + x 2 ( betyder också sant). Och : x x 2 blir x, x 2 (båda bivillkoren måste ju gälla). Satisfieringsproblemet: Ex: Finns det värden på x så att följande blir sant: (x x 2 ) (x x 3 ) ( x x 2 ) ( x 2 x 3 )? Finn tillåten lösning till: (x + x 2 ) x + x 2 (x + ( x 3 )) x x 3 0 ( x ) + x 2 ) x + x 2 0 ( x 2 ) + x 3 ) x 2 + x 3 0 (Vi återkommer till lösningen.) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 7 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 6 / 47 Speciell användning av heltalsvariabler Fasta kostnader: I ord: Kostnaden är 0 om x = 0, men K + cx om x > 0. f(x) K x { 0 om x = 0 I ord: Fast kostnad: f (x) = K + cx om x > 0 Modellera som: f (x) = cx + Ky där x My, y {0, } Förutsätter minimering. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 8 / 47

Heltalsprogrammering: Speciella problem Kappsäcksproblemet: max z = då c j x j a j x j b 0 x j u j, heltal j =,..., n Ett bivillkor. (Ickenegativa koefficienter.) LP-relaxationen kan lösas med en greedy-metod: Sortera enligt max j (c j /a j ). Fyll på bäst först. (Härled med LP-dualitet.) Övertäckningsproblemet Vilka åtgärder skall göras för att varje effekt skall erhållas? { om effekt i ges av åtgärd j Indata: a ij = 0 om inte Åtgärd j kostar c j. Minimera totalkostnaden. { om åtgärd j utförs Variabeldefinition: x j = 0 om inte min z = c j x j då a ij x j x j {0, } i =,..., m j =,..., n Uppdelningsproblemet (partioneringsproblemet): Likhet i bivillkoren. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 9 / 47 Lokaliseringsproblemet Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 0 / 47 Lokaliseringsproblemet Anläggning i: Fast kostnad f i, kapacitet s i. Kund j: Efterfrågan d j. Transportkostnad från anläggning i till kund j: c ij per enhet. Vilka anläggningar skall byggas? Hur mycket ska varje anläggning skicka till varje kund? Minimera totala byggkostnader och transportkostnader. Variabeldefinition: { om anläggning i byggs y i = 0 om inte. x ij = antal enheter som skickas från anläggning i till kund j min då m i= c ij x ij + m f i y i i= x ij s i y i för alla i () m x ij = d j för alla j (2) i= x ij s i y i 0 för alla i, j (3) x ij 0 för alla i, j (4) y i {0, } för alla i (5) Behövs bivillkor 3? (se lab 4) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 2 / 47

Nätverksdesignproblemet Noder: N. Möjliga länkar: A. Trafikbehov k: startnod o(k), slutnod d(k), behov r k. Kostnad för länk (i, j): Fast kostnad: f ij, rörlig kostnad: cij k. Maxkapacitet för länk (i, j): u ij. Uppfyll trafikbehoven till minsta kostnad. Variabeldefinition: xij k = flöde från o(k) till d(k) i länk (i, j), { om länk (i, j) används y ij = 0 om inte. Nätverksdesignproblemet min då k C (i,j) A j:(j,i) A x k ji c k ij x k ij + j:(i,j) A (i,j) A f ij y ij x k ij = b k i för alla i N, k C () xij k u ij y ij för alla (i, j) A (2) k C där dij k = min(r k, u ij ) och r k om i = o(k) bi k = r k om i = d(k) 0 annars. xij k dij ky ij för alla (i, j) A, k C (3) xij k 0 för alla (i, j) A, k C (4) y ij {0, } för alla (i, j) A (5) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 3 / 47 Heltalsprogrammering: Exempel max z = 30x +8x 2 då 8x +5x 2 3 (A) x +2x 2 6 (B) x, x 2 0 x, x 2 heltal x 2 5 4 3 2 A B Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 4 / 47 Heltalsprogrammering: Exempel LP-relaxationen: x = 3.875, x 2 = 0 och z LP = 6.25. Sats LP-relaxationen ger en optimistisk uppskattning av z. För max-problem: z LP z. Alltså z 6.25 Alla koefficienter i målfunktionen är heltal. Alla variabler skall vara heltal. z heltal. Avrunda z LP neråt. z 6 2 3 4 5 x LP-relaxationen: x = 3.875, x 2 = 0 och z LP = 6.25. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 5 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 6 / 47

Heltalsprogrammering: Exempel Heltalsprogrammering: Exempel x 2 5 4 3 2 A B 2 3 4 5 x LP-relaxationen: x = 3.875, x 2 = 0 och z LP = 6.25. Avrundning: x = 4, x 2 = 0. Ej tillåten. Avrundning till närmaste tillåtna punkt: x = 3, x 2 = 0. z = 90. Sats Varje tillåten lösning ger en pessimistisk uppskattning av z. För maxproblem: z z. 90 z 6 x 2 A B 5 4 3 2 2 3 4 5 x Förbättra gränserna: Enkel lokal sökning: Ändra en variabel i taget. Tillåtet att öka x 2 till. z = 08. Ingen enkel ändring ger förbättring: Lokalt optimum. 08 z 6 (Optimum: x = 2, x 2 = 3 och z = 4.) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 7 / 47 Heltalsprogrammering: Vägval Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 8 / 47 Heltalsprogrammering: Metodprinciper Optimerande metod: Finner garanterat optimum (och bevisar det). Optimerande / heuristisk? LP-baserad / kombinatorisk? Trädsökning / plansnittning? Fullständig uppräkning av alla möjliga lösningar: Nej! Ofullständig uppräkning kan vara bra. Kan dock aldrig garantera polynomisk lösningstid. Heuristik: Snabbare. Inga garantier. Bevisar ej optimalitet. Konstruktiva metoder. Sökmetoder. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 9 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 20 / 47

Heltalsprogrammering: Metodprinciper LP-baserad metod: Lös LP-relaxationen. Modifiera LP-problemet. Lös om. Kombinatorisk metod: Utgå från problemets kombinatoriska struktur. (0/) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 2 / 47 Heltalsprogrammering: LP-baserad trädsökning Heltalsprogrammering: Metodprinciper Trädsökning: Relaxation. Förgrening: Dela upp problemet i flera (disjunkta) problem. Rekursivt. Kapa grenar. Avsöka hela trädet. Övre och undre gränser (för z ). Branch-and-bound Plansnittning: Lägg till bivillkor som skär bort LP-optimum, men inte någon tillåten heltalslösning. Ett LP-problem. Ökande storlek. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 22 / 47 Heltalsprogrammering: Land-Doig-Dakins metod Land-Doig-Dakins metod: Relaxation: LP-relaxationen. Förgrening: Skapa två nya problem: Ett där x j x j och ett där x j x j = x j +. Kapa grenar som: Inte kan ge någon tillåten lösning. Inte kan ge någon bättre lösning. Ger heltalslösning. Varje ny förgrening innebär ytterligare begränsningar. Optimistiska uppskattningen z LP kan ej bli bättre, när vi går djupare i trädet. Undersökning av LP-problem: Om tillåten lösning saknas: Kapa grenen. Om z LP är sämre än känd lösning z: Kapa grenen. Om lösningen är heltalig och z LP är bättre än känd lösning z: Spara lösningen. Kapa grenen. Om lösningen inte är heltalig och z LP är bättre än känd lösning z: Förgrena. Varje tillåten lösning ger en pessimistisk uppskattning, z, som gäller i hela trädet. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 23 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 24 / 47

Heltalsprogrammering: Land-Doig-Dakins metod Algoritm (max):. Om inget oavsökt problem återstår: Stopp. Annars välj ett oavsökt problem. 2. Lös LP-relaxationen (simplexmetoden). Om den saknar tillåten lösning: Kapa grenen. Gå till. 3. Om z LP z: Kapa grenen. Gå till. 4. Om lösningen är heltalig: Spara lösningen och kapa grenen. Gå till. 5. Förgrena: Välj en variabel, x j, som ej är heltal, x j. Skapa två nya problem: Ett där x j x j och ett där x j x j = x j +. Gå till. Heltalsprogrammering: Land-Doig-Dakins metod Specificera: Förgreningsstrategi (vilken variabel först). Nodavsökningsstrategi (vilken nod/problem först). Exempel: Djup-först. Förgrena över variabeln med störst fraktionell del först. Gå ner i ( )-grenen först. Förgrena över variabeln med minst fraktionell del först. Gå ner i ( )-grenen först. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 25 / 47 Land-Doig-Dakins metod: Exempel max z = 30x + 8x 2 då 8x + 5x 2 3 (A) x + 2x 2 6 (B) x, x 2 0 heltal LP-relaxationen P0: x = 3.875, x 2 = 0 och z LP = 6.25. z = 6. Valfritt: Avrunda neråt: x = 3, x 2 = 0 och z = 90. z = 90. Förgrena: Skapa P: P0 + (x 3) och P2: P0 + (x 4). Lös P: x = 3, x 2 =.4 och z = 6. z = 6. Förgrena: Skapa P3: P + (x 2 ) och P4: P + (x 2 2). Lös P3: x = 3, x 2 = och z = 08. Heltal. z = 08. Kapa. Lös P4: x = 2.625, x 2 = 2 och z = 4.75. z = 4. Förgrena: Skapa P5: P4 + (x 2) och P6: P4 + (x 3). Lös P5: x = 2, x 2 = 3 och z = 4. Heltal. z = 4. Kapa. P6 har z = 4. Kapa. (Saknar tillåten lösning.) Lös P2: Saknar tillåten lösning. Kapa. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 26 / 47 Land-Doig-Dakins metod: Exempel x2 <= P3 _ z=08 x <=3 P <=2 P5 _ z=6 P0 (z=90) _ x2>=2 P4 x x _ z=4 _ z=6 >=4 P2 Ingen _ z=4 x >=3 P6 Dålig Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 27 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 28 / 47

Kombinatoriskt baserad trädsökning Kombinatoriskt baserad trädsökning: Bivillkorsfixering Balas metod för 0/-problem: (Constraint Programming) Relaxera kopplingen mellan bivillkoren, inte heltalskraven. Undersök ett bivillkor i taget. Observation: Det som är förbjudet i ett bivillkor är inte tillåtet. Ta bort förbjudna möjligheter (variabelvärden), genom att fixera variabler. Kapa grenar som inte kan ge någon tillåten lösning. Gör om målfunktionen till ett bivillkor: Kräv bättre lösning, för max-problem: c T x z +. Förgrening: Skapa två problem: Ett med x j = 0 och ett med x j =. Undersökning av delproblem (bivillkor): Om tillåten lösning saknas: Kapa grenen. Om tillåten lösning saknas då x j = : Fixera x j till 0. Om tillåten lösning saknas då x j = 0: Fixera x j till. Om inget av ovanstående för något bivillkor: Förgrena. Fixering av variabel innebär att vi slipper en av två grenar. Constraint Programming: Samma princip, krångligare bivillkor. (Bivillkor = subrutin.) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 29 / 47 Bivillkorsfixering: Exempel 3x + 4x 2 + 8x 3 5x 4 0 () 5x + 6x 2 + 5x 3 + 0x 4 4 (2) 2x 4x 2 3x 3 + 3x 4 2 (3) Inga fixeringar. Förgrena över x. P: x = : (): 3 + 4x 2 + 8x 3 5x 4 0: 4x 2 + 8x 3 5x 4 7. Ger inget. (2): 5 + 6x 2 + 5x 3 + 0x 4 4: 6x 2 + 5x 3 + 0x 4 9. Fixera x 4 = 0. (3): 2 4x 2 3x 3 2: 4x 2 3x 3 4. Fixera x 2 =. (): 3 + 4 + 8x 3 0: 8x 3 3. Fixera x 3 = 0. Allt fixerat. Kolla alla bivillkor en gång till. (2): 5 + 6 4: OK. (3): 2 4 2: OK. (): 3 + 4 0: OK. Tillåten lösning funnen: x =, x 2 =, x 3 = 0, x 4 = 0. (Nu har vi grenen med x = 0 kvar.) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 30 / 47 Bivillkorsfixering: Exempel Satisfieringsproblemet: Finns det värden på x så att följande blir sant: (x x 2 ) (x x 3 ) ( x x 2 ) ( x 2 x 3 )? Finn tillåten lösning till: x + x 2 () x x 3 0 (2) x + x 2 0 (3) x 2 + x 3 0 (4) Antag x = 0. () ger x 2 =. (2) ger x 3 = 0. (3) ger inget. (4) kan ej uppfyllas. Kapa grenen. Antag x =. () ger inget. (2) ger inget. (3) ger x 2 =. (4) ger x 3 =. () är uppfylld. (2) är uppfylld. (3) är uppfylld. (4) är uppfylld. Färdig: Lösning funnen: x =, x 2 =, x 3 = (alla sanna). Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 3 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 32 / 47

Bivillkorsfixering: Exempel Fler än man skulle tro använder bivillkorsfixering... Bivillkorsfixering: Exempel: Sudoku Variabeldefinition: x ijk = om siffran k ska stå i position (i, j). Bivillkor: x ijk = för alla i, k (siffra k en gång i rad i) j x ijk = för alla j, k (siffra k en gång i kolumn j) i x ijk = för alla i, j (en siffra i position (i, j)) k x ijk = för p =,..., 3, q =,..., 3, alla k 3p 2 i 3p, 3q 2 j 3q x ijk {0, } för alla i, j, k. x ijk = x ijk för vissa givna i, j, k. (siffra k en gång i mindre kvadrat (p, q)) Ingen målfunktion. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 33 / 47 Bivillkorsfixering: Exempel: Sudoku Givna siffror: Om x i j k = så fixeras alla andra variabler i samma bivillkor till noll. Ingen mer siffra k i rad i. Ingen mer siffra k i kolumn j. Ingen annan siffra i position (i, j ). Ingen mer siffra k i mindre kvadrat (p, q). När siffra k bara har en möjlighet kvar i en rad/kolumn/mindre kvadrat: Lås den och fixera på ovanstående sätt. När position (i, j) bara har en möjlighet kvar: Lås den och fixera på ovanstående sätt. För lätt sudoku ger detta alltid en unik lösning. Metod: Låt X ij vara alla siffror som kan placeras i position (i, j). Först X ij = {, 2, 3, 4, 5, 6, 7, 8, 9}. Ta sedan bort de som inte kan vara där. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 35 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 34 / 47 Bivillkorsfixering: Utvidgade tester för speciella strukturer Utvidgade tester för Sudoku: Två siffror ska vara i två positioner, men vi vet inte vilken. T.ex. x + x 32 = 2 (siffra och 2 ska vara i pos (,) och (,3)). Eliminera siffra och 2 från alla andra positioner i rad, och lilla kvadrat (,), samt eliminera alla andra siffror från pos (,) och (,3). Bygger på strukturen hos problemet. Övertäckningsproblemet: min c T x då Ax, x binär. Reduktionstester: En rad endast nollor: Ingen tillåten lösning. Kolumn j endast nollor: Sätt x j = 0 och stryk kolumn j. Rad i endast en etta, i kolumn j: Sätt x j =, stryk kolumn j. Stryk alla rader med ettor i kolumn j. Rad i dominerar rad k (dvs. a ij a kj för alla j): Stryk rad i. Kolumn j dominerar kolumn k (dvs. a ij a ik för alla i och c j c k ): Sätt x k = 0 och stryk kolumn k. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 36 / 47

Kombinatoriskt baserad trädsökning för TSP Kombinatoriskt baserad trädsökning för TSP Relaxation : Billigaste uppspännande -träd. Motsvarar relaxation av valensvillkoren för alla noder utom en, samt av vissa subtursförbjudande villkor. Ger en cykel genom nod som kan vara för liten. Nod får rätt valens, alla andra noder kan få fel. Finn billigaste uppspännande träd för noderna 2 - n. Addera de två billigaste bågarna till nod. Relaxation 2: Tillordningsproblemet. Motsvarar relaxation av subtursförbjudande/sammanhängande villkoren. Alla noder får rätt valens. Lösningen ej säkert sammanhängande/kan innehålla mindre cykler. Lös med ungerska algoritmen. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 37 / 47 Kombinatoriskt baserad trädsökning för TSP Förgrening : Syftar till att ge alla noder rätt valens. Förbjud en av de bågar som går in till en nod med för hög valens. Förgrening: För varje båge som ansluter till noden: Skapa ett problem där bågen är förbjuden (x ij = 0). Minst en av grenarna måste innehålla optimum. För att få optimum i exakt en, tvinga med tidigare förbjudna bågar. Valensen skall vara 2, vilket ger följande tre möjligheter. Gren : Förbjud första bågen. Gren 2: Förbjud andra bågen och tvinga med första bågen. Gren 3: Tvinga med första och andra bågarna samt förbjud alla andra bågar till noden. (Fungerar ej med tillordningsrelaxationen.) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 39 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 38 / 47 Kombinatoriskt baserad trädsökning för TSP Förgrening 2: Syftar till att förbjuda för små cykler. Förbjud en båge i cykeln. Förgrening: För varje båge i cykeln: Skapa ett problem där bågen är förbjuden (x ij = 0). Gren : Förbjud första bågen. Gren 2: Förbjud andra bågen och tvinga med första bågen. Gren 3: Förbjud tredje bågen och tvinga med första och andra bågarna. Gren 4:... Många grenar. (Kan ej användas för TSPr.) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 40 / 47

Kombinatoriskt baserad trädsökning för TSP Förgrening 3: Kombinatoriskt baserad trädsökning för TSP: Exempel VINEOPT Syftar till att göra lösningen sammanhängande. 5 Tvinga med en båge mellan separata delar. 2 32 6 Förgrening: För varje båge i snittet mellan två separata delar: Skapa ett problem där bågen är med (x ij = ). 22 3 3 2 7 Minst en av dessa grenar måste innehålla optimum. För att få optimum i exakt en, förbjud tidigare medtvingade bågar. 34 2 23 27 8 Gren : Tvinga med första bågen. Gren 2: Tvinga med andra bågen och förbjud första bågen. Gren 3: Tvinga med tredje bågen och förbjud första och andra bågarna. Gren 4:... (Fungerar ej med -trädsrelaxationen.) 8 6 -träd, kostnad: 08. 33 4 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 4 / 47 Plansnittning Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 42 / 47 Plansnittning Övergång från icke-konvext problem till konvext: Skapa konvexa höljet. 2 5 4 B 3 2 A 0 0 2 3 4 x Algoritm:. Lös LP-relaxationen. 2. Om lösningen är heltal: Stopp. Optimum. 3. Konstruera ett linjärt bivillkor som skär bort LP-optimum, men inga tillåtna heltalspunkter. Gå till. Hur konstruera bivillkor? Helst fasetter. Gomorys metod (simplextablå). Problemspecifikt: Kappsäcksproblem: Minimala övertäckningar. TSP: (forskning) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 43 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 44 / 47

Gomorysnitt Plocka en rad ur optimala simplextablån: j a ij x j = b i Minimala övertäckningar Minsta mängden som är för stor. Bivillkor: a j x j b, x j {0, } för alla j. j Avrunda alla koefficienter i vänsterledet neråt. Vänsterledet blir mindre och heltal. Avrunda högerledet neråt. En övertäckning, S, är för stor, a j > b. j S Giltigt bivillkor: x j S. (Alla i S får inte plats.) j S Resulterande bivillkor, Gomorysnitt: j a ij x j b i Välj helst den minsta mängd som inte får plats. Exempel: 0.3x + 4.5x 2 3.2x 3 + x 4 = 6.7 Gomorysnitt: 4x 2 4x 3 + x 4 6 Baslösning: x = 0, x 2 = 0, x 3 = 0,x 4 = 6.7. Den lösningen skärs bort. Exempel: 7x + 5x 2 + 6x 3 + 3x 4 2. Minimala övertäckningar: 7x + 5x 2 + 6x 3 + 3x 4 2, {, 3}: x + x 3. 7x + 5x 2 + 6x 3 + 3x 4 2, {2, 3, 4}: x 2 + x 3 + x 4 2. 7x + 5x 2 + 6x 3 + 3x 4 2, {, 2, 4}: x + x 2 + x 4 2. Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 45 / 47 Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 46 / 47 Heltalsprogrammering Kombinerade metoder: Trädsökning + plansnittning + förbehandling. För att lösa riktigt stora problem, måste man utnyttja flera verktyg. Förbehandling: Försök reducera problemstorleken eller omformulera problemet på ett bättre sätt. Avlägsna redundanta bivillkor: Jämför möjliga värden på vänsterledet med högerledet. (Mindre LP.) Fixera variabler: Balas metod, constraint programming. (Mindre LP, mindre träd.) Modifiera koefficienter: Minska övre gränser, anpassa bivillkorskoefficienter. (Mindre träd.) Addera logiska bivillkor: T ex minimala övertäckningar. (Mindre träd.) Kaj Holmberg (LiU) TAOP33 Optimering 25 november 206 47 / 47