Dynamisk programmering. Dynamisk programmering. Dynamisk programmering. Dynamisk programmering

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

Optimeringslära Kaj Holmberg

Optimeringslära Kaj Holmberg

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

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

Optimeringslära Kaj Holmberg

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

Optimeringslära Kaj Holmberg

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:

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

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

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

Optimeringslära Kaj Holmberg

Vinsten (exklusive kostnaden för inköp av kemikalier) vid försäljning av 1 liter fönsterputs är 2 kr för F1 och 3 kr för F3.

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:

Vinsten (exklusive kostnaden för inköp av kemikalier) vid försäljning av 1 liter fönsterputs är 2 kr för F1 och 3 kr för F3.

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

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Tentamensinstruktioner. När Du löser uppgifterna

Billigaste väg: Matematisk modell i vektor/matrisform. Billigaste väg: Matematisk modell i vektor/matrisform

Optimeringslära Kaj Holmberg

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

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

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

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

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

TAOP61 Projekt 2. Kaj Holmberg (LiU) TAOP61 Optimering 28 oktober / 14

Tentamensinstruktioner. När Du löser uppgifterna

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

Tentamensinstruktioner

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

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

Tekniska Högskolan i Linköping Optimering av realistiska sammansatta system. Optimeringslära Kaj Holmberg.

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

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

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

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

Tentamensinstruktioner. När Du löser uppgifterna

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

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

Tentamensinstruktioner

Tentamensinstruktioner. När Du löser uppgifterna

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

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

Laboration 1 - Simplexmetoden och Modellformulering

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

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

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

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

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

1 LP-problem på standardform och Simplexmetoden

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Optimeringslara = matematik som syftar till att analysera och. Optimeringslara ar en gren av den tillampade matematiken.

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

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Tentamensinstruktioner. När Du löser uppgifterna

TNK049 Optimeringslära

Föreläsning 5: Dynamisk programmering

Tentamensinstruktioner

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Tentamensinstruktioner. När Du löser uppgifterna

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Optimering. Optimering

MICROECONOMICS Mid Sweden University, Sundsvall (Lecture 2) Peter Lohmander &

Hemuppgift 2, SF1861 Optimeringslära för T, VT-10

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

MIO310 OPTIMERING OCH SIMULERING, 4 p

Laboration 1 - Simplexmetoden och modellformulering

Tentamensinstruktioner

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Linjärprogrammering (Kap 3,4 och 5)

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

Transkript:

Betrakta ett lagerhållningsproblem i flera tidsperioder. Vi har tillverkning och försäljning av produkter i varje tidsperiod. Dessutom kan vi lagra produkter mellan tidsperioder, för att utnyttja stordriftsfördelar i produktionen. Antag att försäljningen är given i varje period. Variabler blir då hur mycket vi ska tillverka varje period, och (som följd av det) hur mycket vi ska lagerhålla mellan perioderna. Beteckningar: d k är försäljningen i period k. Variabler: är antal tillverkade produkter i period k. s k är antal enheter som lagerhålls från tidsperiod k till tidsperiod k + 1. Vi får bivillkor som säger att: ingående lager + tillverkad mängd = försäljning + utgående lager: s k 1 + = d k + s k för alla k Om man har många tidsperioder, kan det bli svårt att lösa hela problemet på en gång. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 1 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 2 / 33 Utnyttja tidsstrukturen: Tiden går bara framåt. Betrakta en viss tidsperiod: Optimeringen handlar om hur mycket vi ska tillverka den perioden. Om man inte tillåter något lager, har vi ett lätt optimeringsproblem för varje tidsperiod. Likaså, om lagernivåerna är givna, har vi ett lätt optimeringsproblem för varje tidsperiod. Slutsats: Lös för alla värden på lagernivåerna. Antag att s 0 = 0, dvs. att vi inte har något i lager innan första tidsperioden. Då kan vi lösa optimeringsproblemet i period 1 för alla möjliga värden på s 1, dvs. beroende på önskat lager efter period 1. Alltså: Finn optimal produktion om s 1 = 0. Finn optimal produktion om s 1 = 1. Finn optimal produktion om s 1 = 2. Finn optimal produktion om s 1 = 3. osv. upp till s 1 = maximalt lager. Detta ger en optimal kostnad för varje lagernivå. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 3 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 4 / 33

I period 2 har vi inget givet värde på s 1. Det kan då finnas flera sätt att uppnå en viss lagernivå s 2. Välj det billigaste av dessa. Kostnaden blir tillverkningskostnaden aktuell period plus kostnaden för tidigare perioder. Man behöver inte veta exakt hur kostnaden för föregående perioder uppstod. Nya beteckningar: Låt s k, lagernivån efter period k, kallas tillstånd. Vi ska bestämma optimal styrning ( ) för varje tillstånd. Låt f k (s k ) vara kostnaden för att uppnå tillstånd s k i tidsperiod k. Låt c k (, s k ) vara kostnaden för att tillverka enheter i period k och att lagerhålla s k enheter till nästa period. När vi ska optimera i steg k, vill vi alltså lösa f k (s k ) = min (c k (, s k ) + f k 1 (s k 1 )) där s k 1 = s k + d k (ty s k = s k 1 + d k ). (Så s k 1 beror på.) Vi fixerar alltså s k och beräknar det bästa värdet på. Detta görs för varje möjligt värde på s k. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 5 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 6 / 33 Man kan rita upp det som en nivåindelad acyklisk graf. För varje tidsperiod k görs följande: För varje möjligt värde på s k beräknas f k (s k ), vilket är det billigaste sättet att uppnå tillstånd s k. Detta ger ett optimalt värde på för varje värde på s k. Kopplingen till föregående tidsperioder sker via överföringsfunktionen : s k 1 = s k + d k. När man är färdig, nystas optimal lösning upp bakifrån. Det får bara finnas ett tillåtet sluttillstånd. Varje nivå motsvarar starten på en tidsperiod. I varje nivå ges varje tillstånd av en nod. sk = 2 s k = 1 sk = 0 Bågarna går alla framåt i tiden, och avspeglar möjliga förändringar i lagernivån. Optimallösningen är helt enkelt en väg genom detta nätverk. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 7 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 8 / 33

Detta angreppssätt kan användas på allt som kan beskrivas med ett acykliskt nivåindelat nätverk. Vi kallar nivåerna steg, de olika noderna i varje steg tillstånd och optimala variabelvärdet styrning. Man gör följande: Dela upp problemet i steg. Ta ett steg i taget. Bestäm bästa sättet (styrningen) att uppnå varje tillstånd i steget. Notera den optimala styrningen och den optimala kostnaden för att uppnå varje tillstånd. Gå till nästa steg. När sista steget nåtts, nysta upp lösningen m.h.a. de noterade styrningarna. För att metoden skall fungera krävs följande. Definition (Optimalitetsprincipen i dynamisk programmering) Valet av efterföljande styrningar från ett visst tillstånd får inte bero på hur tillståndet uppnåtts, utan bara på kostnaden att uppnå det. är ett sätt att göra implicit uppräkning av alla möjliga lösningar. Man undviker att räkna upp alla möjliga vägar från startnod till slutnod, genom att utnyttja nodpriserna för noderna i det föregående steget. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 9 / 33 Billigaste väg-problem i acyklisk nivåindelad graf. 2 5 8 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 10 / 33 : Begrepp I steg k: Nod j i S k kallas tillstånd, s k. 1 3 6 9 11 Noden man kommer från, l, kallas styrning,. 4 7 10 Nodmärkningsmetod: Ta en nivå i taget: y 1 = 0. För k = 1,..., N: För varje j S k : Sätt y j = c lj + y l = min i (c ij + y i ) och p j = l. Ordningen inom ett steg oviktig. Vägen kommer att passera en av noderna i varje steg. Vet ej vilken. Möjliga målfunktioner: min, max, min, max, min max, max min. Överföringsfunktion: kopplingen mellan olika steg, s k 1 = T k (, s k ). (föregångare) Målfunktionsvärde, f k (s k ). (nodpris) Rekursiv målfunktion: f k (s k ) = min (c k (, s k ) + f k 1 (s k 1 )) = min (c k (, s k ) + f k 1 (T k (, s k ))) Begränsningar på tillstånd, s k S k, och styrning, X k. Randvillkor på s 0, s N, samt f 0 (s 0 ). Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 11 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 12 / 33

Det får inte vara möjligt att hoppa mellan olika tillstånd i samma steg. Man får heller inte hoppa över en nivå. f k (s k ) får endast vara en funktion av s k, dvs. inte av eller s k 1. Målfunktionen måste vara separabel i stegen, k, och monotont växande i argumenten. Sluttillståndet ska vara unikt, annars kan inte lösningen nystas upp. Man kan notera att dynamisk programmering ger optimal styrning till samtliga tillstånd. Detta är s.k. framåtrekursion, då man finner den bästa styrningen till alla tillstånd. En annan möjlighet är bakåtrekursion, då man finner den bästa styrningen från alla tillstånd. Man börjar då i det sista steget och arbetar sig baklänges mot starttillståndet, för att sedan nysta upp framåt. Typproblem för dynamisk programmering Tre huvudtyper: Lagerhållnings- och produktionsproblem i flera tidsperioder (vilket även inkluderar bytespolicyproblem). Bästa väg-problem, med olika målfunktioner (dvs. problemet att finna en väg med vissa egenskaper i ett givet acykliskt nätverk). Kappsäcksproblem, med olika målfunktioner (dvs. problem med ett övergripande bivillkor, vilket ofta motsvarar fördelning av en begränsad resurs). Men angreppssättet betyder att alla problem görs om till väg-problem. Det är ingen stor skillnad mellan lager- och kappsäcksproblem: Nivån i kappsäcken är lagernivån (men den minskar vanligtvis aldrig). Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 13 / 33 för lagerhållningsproblem Stegindelning: Tidsperiod k motsvarar steg k. Tillstånd: s k = antal enheter i lager efter period k. Styrning: = antal enheter som köps/produceras/säljs i period k. Överföringsfunktion: s k 1 = s k + d k. Målfunktionsvärde: f k (s k ) = minimal kostnad för de k första tidsperioderna, om s k enheter skall finnas i lager efteråt. Rekursivt målfunktionsuttryck: f k (s k ) = min xk (c k (, s k ) + f k 1 (s k 1 )) där c k (, s k ) är produktionskostnaden för enheter och lagerhållningskostnaden för period k om s k enheter finns i lager efteråt. Randvillkor: f 0 (s 0 ) = 0, s 0 är antal enheter i lager vid start av period 1, s N är det antal enheter som skall vara i lager efter sista tidsperioden. Begränsningar: 0 x s k + d k och heltal, s k 0. Ytterligare villkor och kostnader som är uppdelade i tidsperioder går bra att ta med, medan villkor eller kostnader som ger kopplingar mellan tidsperioderna inte går bra. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 15 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 14 / 33 för vägproblem Tillstånd: s k = slutnod i steg k. Styrning: = startnod i steg k. Överföringsfunktion: s k 1 =. Målfunktionsvärde: f k (s k ) = kostnad för billigaste väg från startnoden till nod s k. Rekursivt målfunktionsuttryck: f k (s k ) = min (c k (, s k ) + f k 1 (s k 1 )) där c k (, s k ) är kostnaden för bågen från nod till nod s k. Randvillkor: f 0 (s 0 ) = 0, s 0 = startnoden, s N = slutnoden. Begränsningar: (, s k ) B (dvs. endast befintliga bågar får användas). Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 16 / 33

: Kappsäcksproblem v = max då n c j x j j=1 n a j x j b (1) j=1 0 x j u j heltal j (2) Observera: Ett bivillkor (förutom gränser). Varje variabel ses som en nivå. Dvs. man bestämmer en variabel i taget. Högerledet b kan ses som en typ av lagernivå som binder ihop variablerna. Varje nivå innebär ett (möjligt) ökat utnyttjande av den gemensamma resursen b. Tillstånd: s k = den del av högerledet b som får användas till de k första variablerna. för kappsäcksproblem max c j x j då j j En variabel i varje steg. a j x j b, 0 x j u j heltal j Tillstånd: s k = den del av högerledet b som får användas till de k första variablerna. Överföringsfunktion: s k 1 = s k a k Målfunktionsvärde: f k (s k ) = maximalt värde av de k första sorterna, om vi får använda s k enheter av kappsäcken. Rekursivt målfunktionsuttryck: f k (s k ) = max (c k + f k 1 (s k 1 )). Randvillkor: f 0 (s 0 ) = 0, s 0 0, s N = b. Begränsningar: 0 u k och heltal, 0 s k b, s k /a k. Slacket i kappsäcken ges av s 0. För likhetsvillkor sätts s 0 = 0. Problemets svårighetsgrad beror på b, antalet tillstånd i varje steg. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 17 / 33 : Kappsäcksproblem: Exempel max 7x 1 + 2x 2 + 4x 3 då 2x 1 + 3x 2 + 2x 3 4, x 1 {0, 1}, x 2 {0, 1}, x 3 {0, 1, 2} 7 4 b = 4 b = 3 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 18 / 33 : Kappsäcksproblem: Exempel max 3x 1 + 4x 2 + 2x 3 + 5x 4 + 6x 5 + 5x 6 då 2x 1 + 3x 2 + 5x 3 + 2x 4 + 3x 5 + 4x 6 9, x j {0, 1, 2} j f 0 (s 0 ) = 0, s 0 0, s 6 = 9. Steg 1 (x 1 ): 0 s 1 9, x 1 {0, 1, 2}. f 1 (s 1 ) = max(c 1 x 1 + f 0 (s 0 )) = max(3x 1 ) då x 1 s 1 /a 1 = s 1 /2 x 1 x 1 dvs. x 1 = 0 om s 1 < 2 och x 1 1 om s 1 < 4. 7 7 2 2 8 b = 2 b = 1 b = 0 Gör optimeringen i en tabell: x 1 s 1 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 0 1 - - 3 3 3 3 3 3 3 3 2 - - - - 6 6 6 6 6 6 f 1 (s 1 ) 0 0 3 3 6 6 6 6 6 6 ˆx 1 (s 1 ) 0 0 1 1 2 2 2 2 2 2 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 19 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 20 / 33

: Kappsäcksproblem: Exempel Steg 2 (x 2 ): 0 s 2 9, x 2 {0, 1, 2}. Det enda som behöver sparas från förra steget är f 1 (s 1 ). s 1 = s 2 a 2 x 2 = s 2 3x 2. f 2 (s 2 ) = max(c 2 x 2 + f 1 (s 1 )) = max(4x 2 + f 1 (s 2 3x 2 )) x 2 x 2 då x 2 s 2 /a 2 = s 2 /3 dvs. x 2 = 0 om s 2 < 3 och x 2 1 om s 2 < 6. Om x 2 = 0 fås f 1 (s 2 ). Om x 2 = 1 fås 4 + f 1 (s 2 3) (flytta 3 steg åt höger och addera 4). Om x 2 = 2 fås 8 + f 1 (s 2 6) (flytta 6 steg åt höger och addera 8). x 2 s 2 0 1 2 3 4 5 6 7 8 9 0 0 0 3 3 6 6 6 6 6 6 1 - - - 4 4 7 7 10 10 10 2 - - - - - - 8 8 11 11 f 2 (s 2 ) 0 0 3 4 6 7 8 10 11 11 ˆx 2 (s 2 ) 0 0 0 1 0 1 2 1 2 2 : Kappsäcksproblem: Exempel Steg 3 (x 3 ): 0 s 3 9, x 3 {0, 1, 2}. s 2 = s 3 a 3 x 3 = s 3 5x 3. f 3 (s 3 ) = max(c 3 x 3 + f 2 (s 2 )) = max(2x 3 + f 2 (s 3 5x 3 )) x 3 x 3 då x 3 s 3 /a 3 = s 3 /5 dvs. x 3 = 0 om s 3 < 5 och x 3 <= 1 om s 3 < 10. Om x 3 = 0 fås f 2 (s 3 ). Om x 3 = 1 fås 2 + f 2 (s 3 5) (flytta 5 steg åt höger och addera 2). Om x 3 = 2 fås 4 + f 2 (s 3 10) (flytta 10 steg åt höger och addera 4). x 3 s 3 0 1 2 3 4 5 6 7 8 9 0 0 0 3 4 6 7 8 10 11 11 1 - - - - - 2 2 5 6 8 2 - - - - - - - - - - f 3 (s 3 ) 0 0 3 4 6 7 8 10 11 11 ˆx 3 (s 3 ) 0 0 0 0 0 0 0 0 0 0 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 21 / 33 : Kappsäcksproblem: Exempel Steg 4 (x 4 ): 0 s 4 9, x 4 {0, 1, 2}. s 3 = s 4 a 4 x 4 = s 4 2x 4. f 4 (s 4 ) = max(c 4 x 4 + f 3 (s 3 )) = max(5x 4 + f 3 (s 4 2x 4 )) x 4 x 4 då x 4 s 4 /a 4 = s 4 /2 dvs. x 4 = 0 om s 4 < 2 och x 4 1 om s 4 < 4. Om x 4 = 0 fås f 3 (s 4 ). Om x 4 = 1 fås 5 + f 3 (s 4 2) (flytta 2 steg åt höger och addera 5). Om x 4 = 2 fås 10 + f 3 (s 4 4) (flytta 4 steg åt höger och addera 10). x 4 s 4 0 1 2 3 4 5 6 7 8 9 0 0 0 3 4 6 7 8 10 11 11 1 - - 5 5 8 9 11 12 13 15 2 - - - - 10 10 13 14 16 17 f 4 (s 4 ) 0 0 5 5 10 10 13 14 16 17 ˆx 4 (s 4 ) 0 0 1 1 2 2 2 2 2 2 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 22 / 33 : Kappsäcksproblem: Exempel Steg 5 (x 5 ): 0 s 5 9, x 5 {0, 1, 2}. s 4 = s 5 a 5 x 5 = s 5 3x 5. f 5 (s 5 ) = max(c 5 x 5 + f 4 (s 4 )) = max(6x 5 + f 4 (s 5 3x 5 )) x 5 x 5 då x 5 s 5 /a 5 = s 5 /3 dvs. x 5 = 0 om s 5 < 3 och x 5 1 om s 5 < 6. Om x 5 = 0 fås f 4 (s 5 ). Om x 5 = 1 fås 6 + f 1 (s 2 3) (flytta 3 steg åt höger och addera 6). Om x 5 = 2 fås 12 + f 1 (s 2 6) (flytta 6 steg åt höger och addera 12). x 5 s 5 0 1 2 3 4 5 6 7 8 9 0 0 0 5 5 10 10 13 14 16 17 1 - - - 6 6 11 11 16 16 19 2 - - - - - - 12 12 17 17 f 5 (s 5 ) 0 0 5 6 10 11 13 16 17 19 ˆx 5 (s 5 ) 0 0 0 1 0 1 0 1 2 1 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 23 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 24 / 33

: Kappsäcksproblem: Exempel Steg 6 (x 6 ): s 6 = 9, x 6 {0, 1, 2}. s 5 = s 6 a 6 x 6 = s 6 4x 2. f 6 (s 6 ) = max(c 6 x 6 + f 5 (s 5 )) = max(5x 6 + f 5 (s 6 4x 6 )) x 6 x 6 då x 6 s 6 /a 6 = s 6 /4 dvs. x 6 = 0 om s 6 < 4 och x 6 1 om s 6 < 8. Om x 6 = 0 fås f 5 (s 6 ). Om x 6 = 1 fås 5 + f 5 (s 6 4) (flytta 4 steg åt höger och addera 5). Om x 6 = 2 fås 10 + f 5 (s 6 8) (flytta 8 steg åt höger och addera 10). x 6 s 6 0 1 2 3 4 5 6 7 8 9 0 0 0 5 6 10 11 13 16 17 19 1 - - - - 5 5 10 11 15 16 2 - - - - - - - - 10 10 f 6 (s 6 ) 0 0 5 6 10 11 13 16 17 19 ˆx 6 (s 6 ) 0 0 0 0 0 0 0 0 0 0 : Kappsäcksproblem: Exempel Nysta upp lösningen. Nu behövs ˆ (s k ) och överföringsfunktionen s k 1 = s k a k. s k 0 1 2 3 4 5 6 7 8 9 a k ˆx 1 (s 1 ) 0 0 1 1 2 2 2 2 2 2 2 ˆx 2 (s 2 ) 0 0 0 1 0 1 2 1 2 2 3 ˆx 3 (s 3 ) 0 0 0 0 0 0 0 0 0 0 5 ˆx 4 (s 4 ) 0 0 1 1 2 2 2 2 2 2 2 ˆx 5 (s 5 ) 0 0 0 1 0 1 0 1 2 1 3 ˆx 6 (s 6 ) 0 0 0 0 0 0 0 0 0 0 4 Börja bakifrån: s 6 = 9, ˆx 6 (9) = 0, s 5 = s 6 = 9, ˆx 5 (9) = 1, s 4 = s 5 3 = 6, ˆx 4 (6) = 2, s 3 = s 4 2 2 = 2, ˆx 3 (2) = 0, s 2 = s 3 = 2, ˆx 2 (2) = 0, s 1 = s 2 = 2, ˆx 1 (2) = 1, s 0 = s 1 2 = 0. Optimal lösning: x 1 = 1, x 2 = 0, x 3 = 0, x 4 = 2, x 5 = 1, x 6 = 0. Optimala målfunktionsvärdet ges av f 6 (9) = 19. Inget slack i bivillkoret, ty s 0 = 0. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 25 / 33 : Kappsäcksproblem Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 26 / 33 : Variationer Detta angreppssätt kan användas på många typer av kappsäckar. Dvs. där man har ett lager som fylls på eller töms vid olika tidpunkter. Även på kontinuerliga kappsäckar, om man diskretiserar. Man inför då ett tillstånd för varje möjlig nivå i kappsäcken/lagret. Och bågar, framåt i tiden, för varje möjlig ändring. Flera tillståndsvariabler. T.ex. flera kappsäcksvillkor. Måste undersöka samtliga kombinationer av tillstånden. Flera styrvariabler. Även här måste samtliga kombinationer av de möjliga styrningarna undersökas. Båda jobbigare än att öka antalet steg. Tillståndsvariabeln måste vara diskret, men styrvariabeln kan vara kontinuerlig. Ibland kan optimeringen göras analytiskt i ett steg. Strukturen i beror inte på hur delproblemen löses för ett steg. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 27 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 28 / 33

: Slump Ibland hamnar man inte alltid i det tillstånd man vill komma till, utan kan med viss sannolikhet hamna i ett annat. Exempelvis kanske försäljningen inte blir exakt vad man förväntade sig. Detta kan hanteras av stokastisk dynamisk programmering. Man måste då använda bakåtrekursion. I framåtrekursion står man i ett visst tillstånd, och vill finna bästa vägen dit (från förra steget). I bakåtrekursion står man i ett visst tillstånd, och vill finna bästa vägen därifrån (till nästa steg). Om man vet vilket tillstånd man befinner sig i, och vet vart man vill gå, kan man räkna ut sannolikheten att man hamnar där man vill, eller i något annat tillstånd i nästa steg. : Framåtrekursion I steg k: Noden i S k kallas tillstånd, s k. Noden man kommer från kallas styrning,. Överföringsfunktion: kopplingen mellan olika steg, s k 1 = T k (, s k ). Målfunktionsvärde, f k (s k ). (Kostnaden från startnod till s k.) Rekursiv målfunktion: f k (s k ) = min (c k (, s k ) + f k 1 (s k 1 )) Begränsningar på tillstånd, s k S k, och styrning, X k. Randvillkor på s 0, s N, samt f 0 (s 0 ). (Detta fungerar inte åt andra hållet.) Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 29 / 33 : Bakåtrekursion Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 30 / 33 : Stokastisk bakåtrekursion I steg k: Noden i S k kallas tillstånd, s k. Noden man går till kallas styrning,. Överföringsfunktion: kopplingen mellan olika steg, s k+1 = T k (, s k ). Målfunktionsvärde, f k (s k ). (Kostnaden från s k till slutnod.) Rekursiv målfunktion: f k (s k ) = min (c k (, s k ) + f k+1 (s k+1 )) Begränsningar på tillstånd, s k S k, och styrning, X k. Randvillkor på s 0, s N, samt f N (s N ). Vi står i nod i S k och siktar mot nod j S k+1 dvs. vill använda båge (i, j). Var hamnar vi? I nod j med sannolikhet p ij (som beror på tillstånd och styrning). Exempel: Vi står i nod 1. I nästa steg finns noderna 2, 3, och 4. Vi siktar mot nod 2, och hamnar i nod 2 med sannolikhet 0.7, i nod 3 med sannolikhet 0.2, och i nod 4 med sannolikhet 0.1. Den förväntade kostnaden för att komma till nästa steg blir då 0.7c 12 + 0.2c 13 + 0.1c 14. Det betyder också att vägen ska fortsätta från nod 2 med sannolikhet 0.7, från nod 3 med sannolikhet 0.2 och från nod 4 med sannolikhet 0.1. Vi ska därför addera 0.7f 2 (2) + 0.2f 2 (3) + 0.1f 2 (4) till f 1 (s 1 ). Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 31 / 33 Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 32 / 33

: Stokastisk bakåtrekursion Vi använder alltså väntevärden: f k (s k ) = min (E(c k (, s k ) + f k+1 (s k+1 ))) I exemplet: f 1 (s 1 ) = min ((0.7(c 12 + f 2 (2)) + 0.2(c 13 + f 2 (3)) + 0.1(c 14 + f 2 (4))),...). Uppnystningen av lösningen blir osäker. Vi kanske inte hamnar där vi vill. Det räcker inte att ta fram den mest sannolika vägen, vi måste även veta hur vi ska fortsätta om vi hamnar fel. Slutsats: Ta fram optimal styrning från alla tillstånd. Jämför billigaste väg-träd. Kaj Holmberg (LiU) TAOP61 Optimering 30 oktober 2015 33 / 33