Malliratkaisut Demot 3.2.27 Tehtävä. Valmisohjelmistolla voidaan ratkaista tehtävä min c T x s. t. Ax b x, missä x, c ja b R n ja A R m n. Muunnetaan tehtävä max x + 2x 2 + 3x 3 + x s. t. x + 3x 2 + 2x 3 + x 8 x + 2x 2 + 3x 3 + x = x, x 2, x, x 3 R sellaiseksi, että sen voi ratkaista kyseisellä ohjelmistolla. Lisäksi määrätään luvut n ja m, vektorit c ja b sekä matriisi A. Yhtälörajoitteen perusteella nähdään, että x 3. Muutetaan ensin maksimointi minimoinniksi kertomalla luvulla ( ), jolloin saadaan min x 2x 2 3x 3 x. Käännetään sitten ensimmäisen rajoitteen epäyhtälö kertomalla luvulla ( ), jolloin x 3x 2 2x 3 x 8. Yhtälörajoite voidaan korvata kahdella epäyhtälörajoitteella x + 2x 2 + 3x 3 + x x 2x 2 3x 3 x. Lopuksi korvataan rajoittamaton muuttuja x 3 kahden ei-negatiivisen muuttujan erotuksella x 3 = x + 3 x 3, missä x + 3, x 3. Edellisten muutosten jälkeen optimointitehtävä saa muodon min x 2x 2 3x + 3 + 3x 3 x s. t. x 3x 2 2x + 3 + 2x 3 x 8 x + 2x 2 + 3x + 3 3x 3 + x x 2x 2 3x + 3 + 3x 3 x x, x 2, x + 3, x 3, x. Merkitään sitten x = (x, x 2, x + 3, x 3, x ) T, jolloin n = 5. Lisäksi m = 3. Pyydetyt vektorit ja matriisi ovat nyt 2 8 3 2 2 c = 3, b =, A = 2 3 3. 3 2 3 3
Tehtävä 2. Tarkastellaan ylimääriteltyä yhtälöryhmää x 2y = 5 x + y = 8 x + y = 5. Kertoimien perusteella saadaan matriisi A ja vektori b seuraavasti: 2 5 A = R 3 2 b = 8. 5 Yhtälöryhmä ratkaistaan minimoimalla residuaalia Ax b = r, toisin sanoen kohdefunktiona on min Ax b. a) Muodostetaan ensin optimointitehtävä -normia käyttäen. Merkitsemällä seuraavassa x = x ja x 2 = y saadaan min 3 2 x x 2 a ij x j b i = {}}{{}}{ x 2 y +5 + x + y 8 + x + y 5 i= j= s. t. x, y R. b) Muodostetaan sitten optimointitehtävä -normia käyttäen seuraavasti: min 2 max i=,2,3 j= a ij x j b i = min max{ x 2y + 5, x + y 8, x + y 5 } s. t. x, y R. Tehtävän linearisoimiseksi otetaan käyttöön apumuuttujat s + i = itseisarvon i sisällä olevan lausekkeen positiiviosa, i =, 2, 3 s i = itseisarvon i sisällä olevan lausekkeen negatiiviosa, i =, 2, 3. a) Normia käyttäen laadittu tehtävä muuttuu näiden avulla muotoon min s + + s + s + 2 + s 2 + s + 3 + s 3 s. t. x 2y + 5 = s + s x + y 8 = s + 2 s 2 x + y 5 = s + 3 s 3 s + i, s i, i =, 2, 3. Tehtävän numeeriseksi ratkaisuksi saadaan x = 2. ja y = 2.6. Kohdefunktion arvo on 2.2. Lisäksi s + = 2.2 ja s = s + 2 = s 2 = s + 3 = s 3 =. 2
b) Normia käyttäen laaditussa tehtävässä korvataan ensin itseisarvolausekkeet summilla, jolloin tehtävä saa muodon min max {s + + s, s + 2 + s 2, s + 3 + s 3 } s. t. x 2y + 5 = s + s x + y 8 = s + 2 s 2 x + y 5 = s + 3 s 3 s + i, s i, i =, 2, 3. Korvataan vielä kohdefunktio päätösmuuttujalla z ja lisätään uusia rajoiteita, jolloin tehtävä on linearisoitu muotoon min z s. t. z s + i + s i, i =, 2, 3 x 2y + 5 = s + s x + y 8 = s + 2 s 2 x + y 5 = s + 3 s 3 s + i, s i, i =, 2, 3. Tehtävän numeeriseksi ratkaisuksi saadaan x =.3 ja y = 2.6. Kohdefunktion arvo on.. Lisäksi z = s + = s + 2 = s 3 =. ja s = s 2 = s + 3 =. Tehtävä 3. Tarkastellaan optimointitehtävää max c T x s. t. Ax = b x. a) Väite: Optimointitehtävän sallittujen ratkaisujen joukko S := {x R n Ax = b, x } on konveksi. Todistus. Oletetaan, että x, x 2 S ja λ [, ], jolloin Ax = Ax 2 = b, missä x, x 2. Nyt ja A(λx + ( λ)x 2 ) = λax + ( λ)ax 2 = λb + ( λ)b = b }{{} λ }{{} x + ( λ) }{{} }{{} x 2 eli λx + ( λ)x 2 S. Tästä seuraa, että joukko S on konveksi. Huom! Täällä voitaisiin myös määritellä λ (, ) ja vast. yhtäsuuruudet pois ylläolevista yhtälöistä. 3
b) Oletus. Optimointitehtävällä on yksikäsitteinen ratkaisu pisteessä x. Väite: Piste x on kärkipiste. Todistus. Tehdään vastaoletus, että x ei ole kärkipiste. Silloin on olemassa x, x 2 S ja λ (, ) siten, että x x 2 ja x = λx + ( λ)x 2. Oletuksen nojalla c T x > cx kaikilla x S. Nyt c T x = c T (λx + ( λ)x 2 ) = λ c} T {{ x } +( λ) c} T {{ x 2 } <c T x <c T x < λc T x + ( λ)c T x = c T x, mikä on ristiriita. Siis vastaoletus on väärin ja väite oikein. Tehtävä. Simplex-algoritmissa käytetään merkintöjä B : = {i x i on kantamuuttuja} N : = {i x i ei ole kantamuuttuja}. Nyt x = x + λ x, missä x on Simplex-suunta eli, i = j N x i =, i N, i j, missä puolestaan j on uusi kantamuuttuja. Lisäksi A x = ja askelpituus { } x λ = min i x i <, i B. ( ) x i Olkoon jälleen S := {x R n Ax = b, x } optimointitehtävän sallittujen ratkaisujen joukko. Oletus: Piste x on edellisen tehtävän sallittu kantaratkaisu. Väite: Simplex-algoritmilla tuotettu uusi kärkipiste x on sallittu. Todistus. Oletuksen nojalla x S eli Ax = b, x. Väitteen osoittamiseksi on näytettävä, että x S. Ensinnäkin Ax = A(x + λ x) = Ax }{{ } =b +λ A x }{{} = b. = Toiseksi on vielä on osoitettava, että x. Tarkastellaan ensin tapausta, jossa kyseessä on ei-kantamuuttuja eli i N. Silloin x i = x i + }{{}}{{} λ x i ja x i kaikilla i N, josta seuraa x i kaikilla i N. Tarkastellaan sitten tapausta, jossa kyseessä on kantamuuttuja eli i B. Silloin x i = x i + λ x i > kaikilla i B, joilla x i. Jos i B siten, että x i <, niin x i = x i + λ }{{} x }{{} i ( ) x i + < x i x i x i = x i x i =. Tästä seuraa, että x S.
Tehtävä 5. Tarkastellaan seuraavaa Simplex-taulukkoa. x x 2 x 3 x min c 8 5 b A 3 2 3 7 N N B B Taulukon mukaan kanta B = {3, }, josta seuraa 3x 3 + x = 7 x = = x 3 = 2 x =. Nyt x = x 2 =, jolloin aloituspiste (ensimmäinen sallittu kantaratkaisu) x = (,, 2, ) T. Jos valitaan x kantaan, niin x = x 2 =, jolloin suunta x = (,, x 3, x ) T. Ratkaisemalla yhtälöpari A x 3 + 2 + 3 x 3 + x = = + + x 3 x = saadaan suunta x = (,, 3, ) T. Jos valitaan x 2 kantaan, niin x = x 2 =, = jolloin suunta x 2 = (,, x 3, x ) T. Ratkaisemalla yhtälöpari A x 2 3 + 2 + 3 x 3 + x = = + + x 3 x = saadaan suunta x 2 = (,,, ) T. Redusoidut kustannukset näissä kahdessa suunnassa ovat c = c T x = (8, 5,, ) 3 = 8 = > c 2 = c T x 2 = (8, 5,, ) = 5 + = < (parantava). = x 3 = 3 x =, x 3 = x =, (ei parantava, koska minimoidaan) 5
Kun kantaan on valittu x, niin suurin sallittu askelpituus ja seuraava kantaratkaisu ovat { 2 λ = min 3, = } (x poistuu kannasta) x = x + λ x = (,, 2, ) T + ( (,, 3, )T =,, 5 ) T,. Vastaavasti kun kantaan on valittu x 2, niin suurin sallittu askelpituus ja seuraava kantaratkaisu ovat { 2 λ 2 = min = 2 (x 3 poistuu kannasta) } x 2 = x + λ 2 x 2 = (,, 2, ) T + 2(,,, ) T = (, 2,, 3) T Kohdefunktion arvo aloituspisteessä on c T x = (8, 5,, ) 2 =. Valitsemalla kantaan x saadaan kohdefunktion arvoksi c T x = (8, 5,, ) 5 = 2. Jos taas valitaan kantaan x 2, niin kohdefunktion arvoksi tulee c T x 2 2 = (8, 5,, ) = 7. 3 Tehtävä 6. Valitaan päätösmuuttujiksi x = Mox (litraa) x 2 = Mux (litraa) jolloin optimointitehtäväksi saadaan max 3x + x 2 s. t. 7x + 3x 2 2 5x + x 2 7 x 2 3 x, x 2. 6
Simplex-algoritmia varten kirjoitetaan tehtävä ensin standardimuotoon. Kohdefunktio voidaan skaalata (jakamalla tuhannella). Otetaan käyttöön apumuuttujat x 3, x ja x 5. max 3x + x 2 s. t. 7x + 3x 2 + x 3 = 2 5x + x 2 + x = 7 x 2 + x 5 = 3 x, x 2, x 3, x, x 5. Ratkaistaan tehtävä Simplex-algoritmilla ja laaditaan taulukko algoritmin vaiheista. x x 2 x 3 x x 5 max c 3 b 7 3 2 A 5 7 3 t = N N B B B x 2 7 3 c T x = x : x 7 5 c = 3 x : x 2 3 c 2 = 2 7 3 ( 3) ( ) ( ) λ = 3 t = N B B B N x 3 5 5 c T x = 2 x : x 7 5 c = 3 x : x 5 3 c 2 = 5 5 ( 7) ( 5) λ = t = 2 B B B N N x 2 3 8 c T x = 5 x : x 5 7 5 c = 3 5 x : x 5 5 3 5 c 2 = 8 5 Vaiheessa t = 2 redusoidut kustannukset ovat negatiivisia molemmissa suunnissa. Koska kyseessä on maksimointitehtävä, kumpikaan suunta ei ole parantava. Eli lopetetaan algoritmi. Löydettiin maksimi, joka saavutetaan pisteessä x 2 = (, 3) T. Kohdefunktio saa arvon 5kJ. Kyseessä on globaali yksikäsitteinen maksimi. 7
Kun rahaa on käytettävissä kaksinkertainen määrä, tehtävä muuttuu muotoon max 3x + x 2 s. t. 7x + 3x 2 + x 3 = 8 5x + x 2 + x = 7 x 2 + x 5 = 3 x, x 2, x 3, x, x 5. Huomataan, että apumuuttuja x 3 kuuluu kantaan, kun Simplex-algoritmi pysähtyy edellä. Rahaa vastaava epäyhtälö ei siis ole aktiivinen. Toisin sanoen, raha ei ole rajoittava tekijä, vaan rajoittavia ovat Muxin saatavuus sekä lisäaineelle annettu maksimimäärä. Näin ollen, tehtävän ratkaisu ei muutu, vaikka rahaa olisi käytettävissä enemmän. Simplex-algoritmilla laskettaessa käytettyjä aputuloksia: Vaihe t = Valitsemalla kantaan x saadaan suunta x = (,, x 3, x, x 5 ) T, joka toteuttaa yhtälön (yhtälöryhmän) A x = 7 + 3 + x 3 = A x = 5 + + x = = x 3 = 7, x = 5, x 5 = + x 5 = Yhtälöryhmän ratkaisu antaa suunnan x = (,, 7, 5, ) T. Redusoitu kustannus on tällöin c = c T x = (3,,,, ) 7 = 3. 5 Jos kantaan valitaan x 2, niin saadaan suunta joka toteuttaa yhtälöryhmän 7 + 3 + x 3 = A x = 5 + + x = + x 5 = x = (,, x 3, x, x 5 ) T, = x 3 = 3, x =, x 5 = Ratkaisemisen jälkeen suunta x = (,, 3,, ) T. Redusoitu kustannus on tällöin c 2 = c T x = (3,,,, ) 3 = 8
Valitaan kantaan x 2. Tällöin λ = min { 2 poistuu kannasta. Seuraava kantaratkaisu on, 7, 3 ( 3) ( ) ( )} = 3 ja apumuuttuja x5 x = x + λ x = (,, 2, 7, 3) T + 3 (,, 3,, ) T = (, 3, 5, 5, ) T. Vaiheet t = ja t = 2 lasketaan samaan tapaan. Algoritmi päättyy, kun parantavia suuntia ei enää löydy. 9