LP. Leksjon 1 Kapittel 1 og 2: eksempel og simpleksmetoden et eksempel fra produksjonsplanlegging simpleksalgoritmen, noen begreper algoritmen LP. Leksjon 1: #1 of 14
Eksempel: produksjonsplanlegging Produkter: glassdør vindu Produksjonsanlegg: Anlegg 1: alum. ramme produksjon Anlegg 2: treramme produksjon Anlegg 3: glassproduksjon og montering Produksjon (av hvert produkt) foregår i serier på 200 stk. Data: Timer/serie Timer disp. dør vindu Anlegg 1 1 0 4 Anlegg 2 0 2 12 Anlegg 3 3 2 18 Fortjeneste/serie 3000 5000 Problem: Hvor mye bør vi produsere av hvert produkt for å maksimere fortjenesten? LP. Leksjon 1: #2 of 14
Produksjonsplan som LP problem maksimer 3x 1 + 5x 2 forutsatt at x 1 4 2x 2 12 3x 1 + 2x 2 18 x 1 0, x 2 0. Vi vil finne en optimal løsning, dvs. en vektor (x 1,x 2 ) som oppfyller alle begrensningene og som har maksimal verdi på funksjonen 3x 1 + 5x 2. En vektor som oppfyller alle begrensningene kalles en tillatt løsning. Funksjonen vil ønsker å maksimere kalles objektivfunksjonen. Simpleksmetoden: metode for å løse alle LP problemer. Skal etterhvert skille mellom simpleksmetoden og simpleksalgoritmen, men behøver ikke tenke på dette nå. Metoden ble utviklet av George B. Dantzig rundt 1947 i forbindelse med transportproblemer i U.S. Air Force. Arbeidet ble publisert i 1951. LP. Leksjon 1: #3 of 14
Simpleksalgoritmen, eksempel Andre tidlige bidragsytere var T.J.Koopmans og L.V.Kantorovich, og disse to fikk Nobel prisen i økonomi for dette arbeidet i 1975. Eksempel: Vil løse maksimer 5x 1 + 4x 2 + 3x 3 forutsatt at (i) 2x 1 + 3x 2 + x 3 5 (ii) 4x 1 + x 2 + 2x 3 11 (iii) 3x 1 + 4x 2 + 2x 3 8 x 1,x 2,x 3 0. Konverterer til likninger ved å innføre slakkvariable for hver -ulikhet: f.eks. erstattes (i) av w 1 = 5 2x 1 3x 2 x 3 og w 1 0. LP. Leksjon 1: #4 of 14
Simpleksalgoritmen, eksempel Får da problemet på basislisteform (dictionary): maksimer η = 5x 1 + 4x 2 + 3x 3 forutsatt at (i) w 1 = 5 2x 1 3x 2 x 3 (ii) w 2 = 11 4x 1 x 2 2x 3 (iii) w 3 = 8 3x 1 4x 2 2x 3 x 1,x 2,x 3,w 1,w 2,w 3 0. Venstre side: avhengige variable = basisvariable. Høyre side: uavhengige variable = ikkebasisvariable. Startløsning: Lar x 1 = x 2 = x 3 = 0ogdermedfår vi w 1 = 5,w 2 =11,w 3 =8. Vi lar alltid ikkebasisvariable være 0. Basisvariablene blir bestemt entydig, nemlig lik konstantene på høyre side. LP. Leksjon 1: #5 of 14
Simpleksalgoritmen, eksempel Har vi optimal løsning? Nei!! Vi kan f.eks. øke x 1 mens vi fortsatt lar x 2 = x 3 = 0. Da vil η øke vi får nye verdier på basisvariablene som blir bestemt fra x 1 jo mer vi øker x 1 jo mer øker η! men pass på: w j -ene nærmer seg null! Maksimal økning av x 1 : vil unngå at basisvariable blir negative. Fra w 1 = 5 2x 1, w 2 = 11 4x 1 og w 3 = 8 3x 1 får vi at x 1 5/2, x 1 11/4, x 1 8/3 så vi kan øke x 1 til den minste verdien, nemlig 5/2. Dette gir den nye løsningen x 1 = 5/2, x 2 = x 3 = 0 og dermed w 1 = 0,w 2 =1,w 3 =1/2. Og nå er η=25/2. Altså: en mye bedre løsning!! Hvordan komme videre? Basislisteform er fin for å teste optimalitet, så vi vil komme over i neste basisliste! LP. Leksjon 1: #6 of 14
Simpleksalgoritmen, eksempel Vi ønsker at x 1 og w 1 skal bytte side. Altså: x 1 skal gå inn i basis, mens w 1 går ut av basis. Dette kan gjøres ved åbrukew 1 -likningen til å eliminere x 1 fra alle andre likninger. Ekvivalent: bruker elementære radoperasjoner på systemet for å eliminere x 1 : (i) løser for x 1 : x 1 = 5/2 (1/2)w 1 (3/2)x 2 (1/2)x 3, og (ii) adderer passende multippel av denne likningen til de andre slik at x 1 forsvinner og erstattes av ledd med w 1. Husk: elementære radoperasjoner endrer ikke løsningsmengden. Resultat: η = 12.5 2.5w 1 3.5x 2 + 0.5x 3 x 1 = 2.5 0.5w 1 1.5x 2 0.5x 3 w 2 = 1 + 2w 1 + 5x 2 w 3 = 0.5 + 1.5w 1 + 0.5x 2 0.5x 3 Vi har nå gjennomført en pivotering: bruk av elem. radoperasjoner for å bytte to variable (en inn og en ut av basis). LP. Leksjon 1: #7 of 14
Simpleksalgoritmen, eksempel Gjentar prosessen! Optimal? Nei: kan øke η ved åøkex 3 fra null! Kan øke til x 3 = 1 for da blir w 3 = 0 (mens de andre basisvariablene er ikkenegative). Gjennomfører en ny pivotering: x 3 inn i basis, og w 3 ut av basis. Får den nye basislisten: η = 13 w 1 3x 2 w 3 x 1 = 2 2w 1 2x 2 + w 3 w 2 = 1 + 2w 1 + 5x 2 x 3 = 1 + 3w 1 + x 2 2w 3 Her ser vi at alle koeffisientene foran ikkebasisvariable er ikkepositive (faktisk negative) i likningen for η. Da vil enhver økning av en eller flere ikkebasisvariable gi en løsning med η 13. Men enhver tillatt løsning kan finnes ved passende verdier på ikkebasisvariablene! Hvorfor? Konklusjon: vi har funnet en optimal løsning! Den er w 1 = x 2 = w 3 = 0ogx 1 =2,w 2 =1,x 3 =1. Verdien på η er da 13, og dette kalles optimal verdi. LP. Leksjon 1: #8 of 14
Simpleksmetoden, generelt maksimer n j=1 c jx j forutsatt at n j=1 a i,j x j b i for i = 1,...,m x j 0 for j = 1,...,n. der vi antar at b i 0 for alle i. Innfører slakkvariable: η w i = n j=1 c j x j = b i n j=1 a i,j x j for i = 1,...,m Behøver ikke skille slakkvariable og opprinnelige variable og får basislisten: η x n+i = n j=1 c j x j = b i n j=1 a i,j x j for i = 1,...,m der vi har erstattet w i med x n+i.såx IR n+m. LP. Leksjon 1: #9 of 14
Simpleksmetoden, generelt Algoritmen starter med basislisten foran der x n+1,...,x n+m er basisvariable og x 1,...,x n er ikkebasisvariable. La B være indeksmengden til basisvariablene N være indeksmengden til ikkebasisvariablene. Så, i starten er B ={n+1,...,n+m}, N ={1,...,n}. Initiell tillatt løsning er x j = 0 for j = 1,...,n x n+i = b i for i = 1,...,m og tilhørende verdi er η = 0. En slik løsning kalles en basisløsning. Hver iterasjon er en pivotering (eller basisskifte) der en indeks k flyttes fra N til B (x k er inngående variabel; ny basisvariabel fordi den øker η), en annen indeks l flyttes fra B til N (x l er utgående variabel; variabel går ut av basis fordi den blir 0) og vi finner en ny basisliste fra den gamle vha. radoperasjoner til den nye basislisten hører en ny tillatt basisløsning. LP. Leksjon 1: #10 of 14
Simpleksmetoden, generelt Ved starten av hver pivotering har vi basislisten (med b i 0): η = η + j N c j x j x i = b i j N ā i,j x j for i B. Valg av inngående variabel: velg en k N med c k > 0. Hvis ingen slik fins, er nåværende løsning optimal og vi stopper. Ofte er mange c j er positive. Da finnes flere prinsipper for valg, men et enkelt, mye brukt prinsipp er å velge k = j med c j størst mulig. Hvorfor? Valg av utgående variabel: Også her kan vi ha valgmuligheter. Må først bestemme maksimal økning av inngående variabel x k.fra x i =b i ā i,k x k for i B ser vi at hvis ā i,k 0, vil x i øke når x k økes. Slike basisvariable vil altså ikke kunne bli null (vi antar foreløpig at b i > 0) hvis derimot ā i,k > 0, vil x i avta og blir null når x k = b i /ā i,k. LP. Leksjon 1: #11 of 14
Simpleksmetoden, generelt Valg av utgående variabel, forts. Altså: vi kan øke x k til verdien θ := min{b i /ā i,k : ā i,k > 0}. Hva skjer når x k = θ? Jo, alle variable er stadig ikkenegative. Bra! Og minst en basisvariabel er blitt 0, faktisk blir x i = 0 for alle i B som oppfyller b i /ā i,k = θ. Konklusjon: Utgående variabel x l velges slik at b l /ā l,k = min{b i /ā i,k : ā i,k > 0}. Pivotregel: en regel som sier hvilken inngående variabel og hvilken utgående variabel som skal velges når det fins valgmuligheter. Dette gir en lang rekke varianter av simpleksmetoden. LP. Leksjon 1: #12 of 14
Simpleksmetoden, generelt Pivoteringen avsluttes med radoperasjonene: anta at x k er inngående og x l er utgående variabel. Da er altså x l på venstre side i likning nr. l : x l = b l j N ā l,j x j For hver likning i l adderer vi ā i,k /ā l,k ganger likning l til likning i. Videre brukes likning l til å uttrykke x k som funksjon av de andre variablene. Resultat: et ekvivalent likningssystem (samme løsninger) med koeffisient 0 foran x k i hver likning i l. Videre er nye basisbariable på venstre side! Dette er den nye basislisten. LP. Leksjon 1: #13 of 14
Avsluttende kommentarer Noen spørsmål som gjenstår: hvordan finne en tillatt startløsning hvis det finnes negative b i er? i en basisliste: hva skjer hvis noen b i er 0? Ødelegger dette for pivoteringen? er det sikkert at algoritmen terminerer? og, hvis ikke, hvordan kan vi eventuelt reparere dette? Skal se på dette i Leksjon 2! LP. Leksjon 1: #14 of 14