Malliratkaisut Demot 5 2.2.28 Tehtävä a) Tehtävä voidaan sieventää muotoon max 5x + 9x 2 + x 3 s. t. 2x + x 2 + x 3 x 3 x 2 3 x 3 3 x, x 2, x 3 Tämä on tehtävän kanoninen muoto, n = 3 ja m =. b) Otetaan käyttöön apumuuttujat x, x 5, x 6 ja x 7, jolloin tehtävän standardimuodoksi saadaan Nyt n = 7 ja m =. max 5x + 9x 2 + x 3 s. t. 2x + x 2 + x 3 + x = x + x 5 = 3 x 2 + x 6 = 3 x 3 + x 7 = 3 x, x 2, x 3, x, x 5, x 6, x 7 Tehtävä 2 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ä. 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ä 3 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. 2
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 + λ }{{} Tehtävä x }{{} i ( ) x i + < Tarkastellaan seuraavaa Simplex-taulukkoa. x i x i x i = x i x i =. Tästä seuraa, että x S. 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 3 = 2 = x = 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 = 3 = = + + x 3 x = 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 3 x = x =, saadaan suunta x 2 = (,,, ) T. Redusoidut kustannukset näissä kahdessa suunnassa ovat c = c T x = (8, 5,, ) 3 = 8 = > (ei parantava, koska minimoidaan) c 2 = c T x 2 = (8, 5,, ) = 5 + = < (parantava). 3
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ä 5 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.
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. 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. 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 = 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. 6