TAOP14: Föreläsning 2 Problemställning i ord matematisk modell AMPL-modell CPLEX resultatutskrift svar på den givna problemställningen TAOP14: Föreläsning 2 2 Föreläsning 2: A/ modellera och lösa LP-problem Problemställning i ord matema=sk modell AMPL-modell CPLEX resultatutskrid svar på den givna problemställningen 1
TAOP14: Föreläsning 2 3 Verkligt problem Iden=fiering, avgränsningar, förenklingar, antaganden Verifiering Validering Förenklat problem Op=meringsmodell Lösning Formulering Lösningsmetod Resultat TAOP14: Föreläsning 2 4 Problemställning i ord matematisk modell Beslut Variabler Mål Målfunk=on Begränsningar Bivillkor 2
TAOP14: Föreläsning 2 5 Exempel: Produk=onsplanering Produk=on av två olika produkter. Maximera den totala vinsten. Resurs=llgång vid de två =llverkningsavdelningarna: avd 1: 240h; avd 2: 140h Produkt 1 vinst/enhet: 30 kr resursåtgång avd 1: 4h resursåtgång avd 2: 2h begränsad ederfrågan: 40 st Produkt 2 vinst/enhet: 20 kr resursåtgång avd 1: 3h resursåtgång avd 2: 2h TAOP14: Föreläsning 2 6 Modellformulering Variabeldefini=on: x i = antalet =llverkade av produkt i, i = 1, 2 Matema=sk modell: max z = 30x 1 + 20x 2 då 4x 1 + 3x 2 apple 240 2x 1 + 2x 2 apple 140 x 1 apple 40 x 1, x 2 0 [målfunk)on] [resurs, avd. 1] [resurs, avd. 2] [maxproduk)on] [variabelbegränsningar] 3
TAOP14: Föreläsning 2 7 Vid modellering Parametrar: Givna data, beskriver problemet. Resursbegränsningar, priser, =llgångar, ederfrågan Variabler: Det man ska fa/a e/ beslut om / vill ha svar på. Produk=on, försäljning, inköp, lager, transport, blandning Bivillkor: Kopplar samman variabler och parametrar som behöver kommunicera med varandra. Resursbegränsningar, lagerbalans, ederfrågekrav Målfunk=on: Maximera vinst / minimera kostnader Försäljning gånger intäkt minus inköp gånger inköpspris TAOP14: Föreläsning 2 8 Parametrar Alla siffror som är kända, givna från början, beskriver förutsä/ningarna för problemet. Till exempel: Resurser - Tillgångar b kt ( råvara k, =d t ) - Åtgång a kj ( råvara k, produkt j ) Priser - Inköpspriser p kt ( råvara k, =d t ) - Försäljningspriser c jt ( produkt j, =d t ) EDerfrågan - Krav på produk=on d jt ( produkt j, =d t ) Kan vara minimumkrav ( ), maximumkrav ( ) eller exakt ederfrågan (=). 4
TAOP14: Föreläsning 2 9 Variabler Det man ska bestämma / kan påverka / vill ha svar på: Produk=on x jt hur mycket ska produceras av produkt j under =dsperiod t Inköp y kt hur mycket ska köpas in av råvara k under =dsperiod t Lager L kt hur mycket finns i lager av råvara k i slutet (början) av =dsperiod t Transport T mnt hur mycket ska transporteras från plats m =ll plats n under =dsperiod t TAOP14: Föreläsning 2 10 Bivillkor Reglerar så a/ ställda krav tvingas a/ uppfyllas : Resursbegränsningar Lagerbalans j J a kj x jt b kt k, t Lk, t 1 + ykt akj x jt = Lkt k, t j J Transportkrav (från varje m) Variabelbegränsningar (=ll varje n) n N T T mnt mnt m M x jt s d mt nt m, t n, t 0 j, t 5
TAOP14: Föreläsning 2 11 Målfunk=on Ska minimeras eller maximeras Kan bestå av flera komponenter (intäkter / kostnader). Ska bestå av all=ng som man tjänar på, och allt som kostar Koppla samman varje kostnad / intäkt med en lämplig variabel. Exempelvis: Inköpskostnad (parameter) & inköpsmängd (variabel) p kt * y kt Försäljningspris (parameter) & försäljning (variabel) c jt * x jt Om en viss intäkt / kostnad inte verkar passa ihop med någon av variablerna: Fundera över om någon variabel saknas! TAOP14: Föreläsning 2 12 Formulering av bivillkor Produk=onsplaneringsproblem: I råvaror används ( i = 1,,20 ) J produkter ska =llverkas ( j = 1,...,10 ) T =dsperioder ( t = 1,...,5 ) Förutsä/ningar: Råvarubegränsning: b ijk enheter per vecka Total =llgång av varje enskild råvara: c i Total =llgång av samtliga råvaror: b total EDerfrågekrav på varje produkt: minst d j enheter Total produk=onsmängd: som mest d total enheter 6
TAOP14: Föreläsning 2 13 Formulering av bivillkor Variabeldefini=on: x ijt = Mängd råvara i som ska blandas i produkt j i =dsperiod t, i = 1,,20 j = 1,...,10 t = 1,...,5 Formulera följande bivillkor: a) Användningen av råvara i =ll produkt j får inte övers=ga =llgången b ijt enheter per vecka t b) Användningen av råvara i får inte övers=ga den totala =llgången c i enheter c) Den totala användningen av råvaror får inte övers=ga b total enheter T 2.1 TAOP14: Föreläsning 2 14 Formulering av bivillkor d) Den totala mängden av produkt j ska vara minst d j enheter e) Den totala mängden av produkter får högst vara d total under varje vecka t f) Mängden av råvara i = 2 ska vara densamma som råvara i = 3 =ll produkt j under vecka t = 4 g) Varje enskild produkt som =llverkas får innehålla som mest 30% av råvara i = 8 7
TAOP14: Föreläsning 2 15 Exempel: produk=onsplanering II De kommande tre veckorna, t = 1,2,3, är ederfrågan av en viss produkt d 1, d 2, respek=ve d 3. EDerfrågan i vecka t =llgodoses an=ngen genom produk=on eller a/ ta från befintligt lager. Kostnaden a/ =llverka en enhet i vecka t är c t. Vid produk=on används en maskin vars kapacitet är M =mmar varje vecka. För a/ =llverka en enhet vecka t så går det åt h t =mmar. Behöver man y/erligare maskin=mmar kan man leasa en maskin för k kr/=mme. Lagret har en kapacitet på S produkter och det kostar p kronor a/ lagra en enhet från en vecka =ll nästa. Ini=allagret (det som finns kvar i slutet av vecka t=0) betecknas L_init. Formulera problemet som e/ linjärt op=meringsproblem T 2.2 TAOP14: Föreläsning 2 16 LP-modell, produk=onsplanering II min z = 3 c t x t + p L t + k t=1 t=1 t=1 3 3 y t då L t S, t =1,2,3 h t x t M + y t, t =1,2,3 L t 1 + x t d t = L t, t =1,2,3 L 0 = L _init x t, y t 0, t = 1,2,3 L t 0, t = 0,1,2,3 8
TAOP14: Föreläsning 2 17 LP-modell, matrisform max z = c T x då Ax b x 0 OBS: I denna modell finns både = - villkor och - villkor x = ( x 1 x 2 x 3 L 0 L 1 L 2 L 3 y 1 y 2 y 3 ) T c = ( c 1 c 2 c 3 0 p p p k k k ) T b = ( S S S M M M d 1 d 2 d 3 L _init ) T TAOP14: Föreläsning 2 18 LP-modell, matrisform A = 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 h 1 0 0 0 0 0 0 1 0 0 0 h 2 0 0 0 0 0 0 1 0 0 0 h 3 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 9
TAOP14: Föreläsning 2 19 Kom ihåg! Skilj på parametrar (numerisk data) och variabler (det vi ska fa>a beslut om). I en LP-modell får variabler inte mul=pliceras eller divideras med varandra! I bivillkoren, skilj på: - e/ villkor för varje index ( ) - summera över index ( ) TAOP14: Föreläsning 2 20 Matema=sk modell AMPL-modell AMPL = modelleringsspråk som används för a/ formulera en matema=sk modell så a/ e/ datorprogram, tex CPLEX, kan förstå den. Skrivs i en vanlig texpil. Två strategier: Alterna=v 1: Modell och data =llsammans Alterna=v 2: Modell och data var för sig 10
TAOP14: Föreläsning 2 21 AMPL Alterna=v 1: Alterna=v 2: max z = 30x 1 + 20x 2 max z = X j2j c j x j då 4x 1 + 3x 2 apple 240 2x 1 + 2x 2 apple 140 x 1 apple 40 x 1, x 2 0 då X a ij x j apple b i, i 2 I j2j x j 0, j 2 J Modell och data =llsammans. Enkelt för små problem. Modell och data var för sig. Smidigare för stora problem, mer generellt. TAOP14: Föreläsning 2 22 AMPL-modell, alt. 1 # Variabeldefinition var x1 >= 0; var x2 >= 0; Tecknet # används framför kommentarer # Målfunktion maximize z : 30*x1 + 20*x2; # Bivillkor subject to Avd_tid1 : 4*x1 + 3*x2 <= 240; Avd_tid2 : 2*x1 + 2*x2 <= 140; Maxproduktion : x1 <= 40; 11
TAOP14: Föreläsning 2 23 AMPL-modell, alt. 2, modell set PRODUKTER; set AVDELNING; # Har olika produkter # Har olika avdelningar param Vinst{ PRODUKTER }; # Täckningsbidraget param Maxtid{ AVDELNING }; # Tidstillgång, avd. param a{ PRODUKTER, AVDELNING }; # Tidsåtgång param Maxprod{ PRODUKTER }; # Maxtillverkning var x{ PRODUKTER } >= 0; # Variabeldefinition TAOP14: Föreläsning 2 24 AMPL-modell, alt. 2, modell maximize z : sum{ i in PRODUKTER } Vinst[i]*x[i]; subject to Namn på villkoret För varje... Avd_tid{ j in AVDELNING }: sum{ i in PRODUKTER } a[i,j]*x[i] <= Maxtid[j]; Maxproduktion{i in PRODUKTER}: x[i] <= Maxprod[i]; Summera över... 12
TAOP14: Föreläsning 2 25 AMPL-modell, alt. 2, data set PRODUKTER := p1 p2; set AVDELNING := m1 m2; param : Vinst Maxprod := p1 30 40 p2 20 1000 ; param : Maxtid := m1 240 m2 140 ; Här specificeras: 2 produkter 2 avdelningar M=1000, ett tillräckligt stort tal param a : m1 m2 := p1 4 2 p2 3 2 ; TAOP14: Föreläsning 2 26 AMPL-modell CPLEX Vi har en modell- och en datafil som beskriver vårt problem. Hur få datorn a/ lösa det? modellfil: mi/problem.mod kommandofil: mi/problem.run datafil: mi/problem.dat 13
TAOP14: Föreläsning 2 27 Kommandofil reset; # nollställer tidigare beräkningar options solver cplex ; # väljer lösare model exempel1.mod ; # väljer modell data exempel1.dat ; # väljer data solve; # löser problemet # skriver resultatet till fil display x > exempel1.res; display Avd_tid.slack > exempel1.res; TAOP14: Föreläsning 2 28 CPLEX resultatutskrid Alt. 1, modell och data i samma fil z = 1733.33 x1 = 40 x2 = 26.67 Avd_tid1.slack = 0 Avd_tid2.slack = 6.67 Alt. 2, separata filer z = 1733.33 x [ * ] := p1 40 p2 26.67; Avd_tid.slack [ * ] := m1 0 m2 6.67; 14
TAOP14: Föreläsning 2 29 resultatutskrid svar på den givna problemställningen Läs av resultatet och gör en rimlighetsbedömning: Är variabelvärdena rimliga...... i rela=on =ll vad som är lönsamt?... i rela=on =ll de villkor och krav som finns? Är målfunk=onsvärdet rimligt? Om möjligt, gör en överslagsräkning Jämför med en op=mis=sk ska/ning Jämför med en pessimis=sk ska/ning TAOP14: Föreläsning 2 30 Op=mis=sk ska/ning Måste all=d, med säkerhet, ge e/ värde som är bä/re än det op=mala målfunk=onsvärdet. Strategi: Använd enkel papper och penna räkning Ska/a variablerna så a/ de blir för bra Förenkla målfunk=onen så a/ den ger e/ för bra värde max z = 30x 1 + 20x 2 då 4x 1 + 3x 2 apple 240 2x 1 + 2x 2 apple 140 x 1 apple 40 x 1, x 2 0 T 2.3 15
TAOP14: Föreläsning 2 31 Op=mis=sk ska/ning Finns flera olika ska/ningar. Ju fler villkor man tar hänsyn =ll, desto bä/re (starkare) blir ska/ningen. En möjlighet: Ändra c 2 från 20 =ll 30, nu är x 1 och x 2 likvärdiga. Dessutom kräver x 2 mindre resurser än x 1.. Tillverka endast x 2 => x = (0,70) T, z opt = 30*70 = 2100 :- Eller: Ändra koefficient 4 =ll 3 i första bivillkoret: 3x 1 + 3x 2 <= 240 Bivillkoren 3*(x 1 +x 2 ) <= 240 och 2*(x 1 +x 2 ) <= 140 ger a/ vi kan =llverka totalt 70 enheter, och som mest 40 st av x 1 Ger en ska/ning: x = (40,30) T, z opt = 30*40 + 20*30 = 1800 :- TAOP14: Föreläsning 2 32 Pessimis=sk ska/ning Måste all=d, med säkerhet, ge en lösning som är =llåten med avseende på bivillkoren. Strategi: Använd enkel papper och penna räkning Förenkla problemet utan a/ fler lösningar än de ursprungliga blir =llåtna, troligen fås då färre =llåtna lösningar max z = 30x 1 + 20x 2 då 4x 1 + 3x 2 apple 240 2x 1 + 2x 2 apple 140 x 1 apple 40 x 1, x 2 0 Förenkla målfunk=onen så a/ den ger e/ för dåligt värde T 2.4 16
TAOP14: Föreläsning 2 33 Pessimis=sk ska/ning De finns återigen olika ska/ningar. Kom ihåg a/ varje =llåten lösning all=d ger en pessimis=sk ska/ning: x = ( 0, 0) T, z pess = 30*0 + 20*0 = 0 :- x = (40,0) T, z pess = 30*40 + 20*0 = 1200 :- Eller: Ändra koefficient 3 =ll 4 i första bivillkoret: 4x 1 + 4x 2 <= 240 Bivillkoren 4*(x 1 +x 2 ) <= 240 och 2*(x 1 +x 2 ) <= 140 ger a/ vi kan =llverka totalt 60 enheter, och som mest 40 st av x 1 Ger en ska/ning: x = (40,20) T, z pess = 30*40 + 20*20 = 1600 :- Slutsats: 1600 <= z* <= 1800 TAOP14: Föreläsning 2 34 Labora=on 1 SyDar =ll a/ ni ska komma igång med AMPL Gå från problemställning i ord =ll resultatutskrid Byggs upp stegvis Förberedelse inför projektuppgiden där ni ska lösa e/ något större problem 17
TAOP14: Föreläsning 2 35 Uppsummering Fö. 2 Modellering Parametrar, variabler, bivillkor, målfunk=on AMPL, modelleringsspråk för op=meringsproblem Sista sidorna på dagens föresläsning visar AMPLmodellen för problemet Produk=onsplanering II Upörliga exempel Modellering på Lisam: E/ dokument som försöker beskriva vad man bör tänka på vid modellering Work in progress, kom gärna med feedback och förslag på förbä/ringar TAOP14: Föreläsning 2 36 Produk=onsplanering II min z = 3 c t x t + p L t + k t=1 t=1 t=1 3 3 y t då L t S, t =1,2,3 h t x t M + y t, t =1,2,3 L t 1 + x t d t = L t, t =1,2,3 L 0 = L _init x t, y t 0, t = 1,2,3 L t 0, t = 0,1,2,3 Behöver skapa tre filer. kommandofil: exempel2.run modellfil: exempel2.mod datafil: exempel2.dat 18
TAOP14: Föreläsning 2 37 modellfil, del 1 set produkter; # Olika produkter param T; # Antal veckor param c{produkter}; # Produktionskostnad param Efterfrågan{1..T} # Efterfrågan varje vecka param p; # Lagerkostnad param k; # Leasingkostnad param M; # Maskinkapacitet param h{1..t}; # Åtgång vid tillverkning param S; # Lagerkapacitet param L_init; # Initiallager TAOP14: Föreläsning 2 38 modellfil, del 2 # Antal producerade produkter vecka t: var x{1..t} >= 0; # Antal produkter i lager vecka t: Var L{0..T} >= 0; # Antal leasingtimmar vecka t: Var y{1..t} >=0; 19
TAOP14: Föreläsning 2 39 modellfil, del 3 minimize z: sum{t in 1..T} (c[t]*x[t] + sum{t in 1..T} p*l[t] + sum{t in 1..T} k*y[t]); subject to Lagerkapacitet{t in 1..T} : L[t] <= S; Maskintid{t in 1..T} : h[t]*x[t] <= M + y[t]; Lagerbalans{t in 1..T}: L[t-1] + x[t] - d[t] = L[t]; Init_lager : L[0] = L_init; 20