Malliratkaisut Demot 6, 19.2.21 Tehtävä 1 Edellisten demojen tehtävä oli muotoa max 3x 1 + 4x 2 s.t. 7x 1 + 3x 2 24 : v 1 x 1 + 4x 2 17 : v 2 x 2 3 : v 3 x 1, x 2. Kohdefunktio voitiin kirjoittaa myös muotoon max 3x 1 + 4x 2, skaalaamalla kilojoulet megajouleiksi. Lisäksi tehtävä kirjoitetaan standardimuotoon: max 3x 1 + 4x 2 s. t. 7x 1 + 3x 2 + x 3 = 24 x 1 + 4x 2 + x 4 = 17 x 2 + x = 3 x 1, x 2, x 3, x 4, jotta se voidaan ratkaista parannetulla Simplex-algoritmilla (.19). 1
x 1 x 2 x 3 x 4 x huom. max c 3 4 b 7 3 1 24 A 4 1 17 1 1 3 t = N N 1 2 3 muuttujien järj. kannassa x 24 17 3 c T x = 1 B 1 = 1 v T = (,, ) T (*) 1 c j 3 4 c j = c j v T a j x : x 2 1 3 4 1 24 17 3 ( 3) ( 4) ( 1) λ = 3 t = 1 N 3 1 2 N x 1 3 1 c T x 1 = 12 1 3 B 1 = 1 4 v T = (,, 4) T (**) 1 c j 3-4 c j = c j v T a j (***) x : x 1 1 7 1 ( 7) ( ) λ = 1 t = 2 2 3 1 N N x 2 1 3 8 c T x 1 = 1 1 7 13 B 1 1 4 = v T = (, 3, 8 )T (****) c j 3 8 STOP Taulukossa kohdassa (*) on laskettu 1 1 B = 1, B 1 = 1, v T = (c B ) T B 1 = T B 1 = (,, ). 1 1 Kohdassa (**) taas on laskettu 1 x π(1) x π(3) E = 1 x 1 3 π(2) x π(3) = 1 1 4 1, 1 1 x 1 π(3) 2
missä x π(3) = x on kannasta poistuva vektori. Lisäksi lasketaan 1 3 1 1 3 B 1 = EB 1 old = 1 4 1 = 1 4 1 1 1 1 3 v T = (c B ) T B 1 = (,, 4) 1 4 = (,, 4). 1 ja Redusoidut kustannukset (***) ovat 7 c 1 = c 1 v T a 1 = 4,, 4) = 3 c = c v T a =,, 4) = 4. 1 Edelleen kohdassa (****) on laskettu 1 7 B 1 = EB 1 old = 1 3 1 7 13 1 1 4 1 4 =. 1 1 ( v T = (c B ) T B 1 = (, 3, 4)B 1 =, 3, 8 ). ja Tällöin redusoidut kustannukset ovat c 4 = c 4 v T a 4 = c = c v T a = joten algoritmi pysähtyy. Standardimuotoisen primääritehtävän duaali on (, 3, 8 ) 1 = 3 (, 3, 8 ) = 8, 1 min 24v 1 + 17v 2 + 3v 3 s. t. 7v 1 + v 2 3 3v 1 + 4v 2 + v 3 4 Huomaa, että yhtäsuuruusrajoitteiden vuoksi duaalimuuttujat ovat rajoittamattomia. Kanonisen muodon duaali olisi muotoa: min 24v 1 + 17v 2 + 3v 3 s. t. 7v 1 + v 2 3 3v 1 + 4v 2 + v 3 4 v i, i = 1, 2, 3. 3
Jos (ja kun) parannettu Simplex-algoritmi tuottaa optimiratkaisun, niin viimeksi saatu pricing-vektori on duaalitehtävän ratkaisu. Tämän tehtävän tapauksessa 3 v =, jolloin duaali saa arvon 1 megajoulea eli 1kJ. Vahvan duaalisuuslauseen mukaan näin tulee ollakin. Tehtävä 2 Tavoitteena on muodostaa tehtävän max 2x 1 + x 2 duaali. Muodostetaan duaali seuraavasti: a) Luentomonisteen taulukon säännöillä: 8 s. t. x 1 : v 1 x 2 2 : v 2 x 1 +,2x 2 72 : v 3 1x 1 + 2x 2 1 : v 4 1x 1 + x 2 : v x 1 min v 1 + 2v 2 + 72v 3 + 1 v 4 + v s. t. v 1 + v 3 + 1v 4 + 1v 2 (x 1 ) v 2 +,2v 3 + 2v 4 + v = (x 2 R) v 1, v 2, v 3, v 4, v (rajoitteista) b) Luentomonisteessa annetun määritelmän perusteella. Koska x 2 ei ole rajoitettu ja voi olla negatiivinen, niin merkitään ensin x 2 = x + 2 x 2, jolloin tehtävä voidaan kirjoittaa muotoon Määritelmän mukaan duaali on nyt max 2x 1 + x + 2 x 2 s. t. x 1 x + 2 x 2 2 x 1 +,2x + 2,2x 2 72 1x 1 + 2x + 2 2x 2 1 1x 1 x + 2 + x 2 x 1, x + 2, x 2. min v 1 + 2v 2 + 72v 3 + 1 v 4 v s. t. v 1 + v 3 + 1v 4 1v 2 v 2 +,2v 3 + 2v 4 v v 2,2v 3 2v 4 + v v 1, v 2, v 3, v 4, v. 4
Sijoitetaan lopuksi muuttujan v paikalle v ja yhdistetään kaksi viimeistä rajoitetta, jolloin saadaan eli sama kuin a-kohdassa. min v 1 + 2v 2 + 72v 3 + 1 v 4 + v s. t. v 1 + v 3 + 1v 4 + 1v 2 v 2 +,2v 3 + 2v 4 + v = v 1, v 2, v 3, v 4, v. Tehtävä 3 Standardimuotoon kirjoitettuna tehtävä 2 on max 2x 1 + x 2 s. t. x 1 + x 3 = x 2 + x 4 = 2 x 1 +,2x 2 + x = 72 1x 1 + 2x 2 + x 6 = 1 1x 1 + x 2 x 7 = x 1, x 3, x 4, x, x 6, x 7. Ratkaistaan tehtävä CPLEXillä (tuloste liitteenä) ja saadaan ratkaisu x 1 = 38 ja x 2 = 17, jolloin kohdefunktio saa arvon 188. CPLEXin antama duaalitehtävän ratkaisu on v 1 = v 2 = v 3 = 3 v 4 = v =. Duaalitehtävän vektorin v voi ratkaista käsin ehdosta v T B = (c B ) T. Tässä c B tarkoittaa vektorin c kannassa olevia indeksejä. Kantamuuttujat saadaan esim. CPLEXin ratkaisusta, jonka mukaan sallittu kantaratkaisu on {x 1, x 2, x 3, x 4, x 6 }. Standardimuotoisen tehtävän apumuuttujat ovat kannassa, mikäli niitä vastaavat epäyhtälörajoitukset ovat ali- tai ylijäämäisiä, eli mitkä eivät ole aktiivisia. Poimitaan matriisiin B ne pystyrivit, jotka vastaavat kannassa olevia muuttujia. Nyt siis 1 1 1 1 B = 1,2 1 2 1 1 1 ja (c B ) T = (2,,,, ).
Yhtälöryhmästä v T B = (c B ) T saadaan v 1 + v 3 + 1v 4 + 1v = 2 v 2 +,2v 3 + 2v 4 + v = v 1 = v 2 = v 4 = v 3 + 1v = 2 v 3 = 2 1v,2(2 1v ) + v = v = v =, joten duaalitehtävän ratkaisu on v 1 = v 2 = v 3 = 3 v 4 = v =. Ratkaisu on sama kuin CPLEXillä saatu. Päätellään sitten duaalitehtävän ratkaisun avulla kohdefunktion arvon muuttuminen. a) Kasvatetaan vakiota arvoon 6, joka on viidennen epäyhtälörajoitteen vakio. Tätä rajoitetta vastaa duaalimuuttuja v, joka saa arvon v =. Sallitut rajat, joiden puitteissa voidaan liikkua ovat [2, 6] (CPLEX). Kohdefunktio vähenee (6 ) = verran arvosta 18 8 arvoon 18 8 + ( ) }{{} 1 = 18 8. muutos b) Kasvatetaan vakiota arvoon (1. rajoite). Tätä rajoitetta vastaa duaalimuuttuja v 1, joka saa arvon v 1 =. Sallitut rajat ovat nyt [38, ) (CPLEX). Kohdefunktion arvo ei muutu, sillä 18 8 + = 18 8. Tähän tehtävään liittyy lisäksi CPLEXistä otettu tuloste. 6
Tehtävä 4 Laaditaan tehtävässä annetuista tiedoista seuraava taulukko: työaika rubiineja safiireja hinta vähintään x 1 perusmalli 1 2 3 4 2 x 2 Luxus-malli 2 3 2 2 käytettävissä 7 1 12 Lisäksi on mahdollista hankkia ylimääräisiä rubiineja hintaan 1 euroa kappale. Olkoon x 3 ylimääräisten rubiinien määrä. Muodostetaan tietojen perusteella optimointitehtävä max 4x 1 + x 2 1x 3 s. t. 2x 1 + 3x 2 x 3 1 (rubiinit) : v 1 3x 1 + 2x 2 12 (safiirit) : v 2 x 1 + 2x 2 7 (työtunnit) : v 3 x 1 2 (perusmallisia vähintään) : v 4 x 2 2 (Luxus-mallisia vähintään) : v x 1, x 2, x 3. Ratkaisemalla tehtävä CPLEXillä ratkaisuksi tulee x 1 = 2, x 2 = 2, x 3 = 1, f = 19,. Duaalitehtävä on muotoa (tätä ei tehtävän annossa pyydetty) min 1v 1 + 12v 2 + 7v 3 + 2v 4 + 2v s. t. 2v 1 + 3v 2 + v 3 + v 4 4 3v 1 + 2v 2 + 2v 3 + v v 1 1 v 1 1 v 1, v 2, v 3, v 4, v. Tähän tehtävään liittyy lisäksi CPLEXistä otettu tuloste. Tehtävä Tähän tehtävään liittyy lisäksi edellisen tehtävän CPLEXistä otettu tuloste. a) Jos rubiinit maksaisivatkin 19 euroa kappale, niin kustannusfunktio muuttuisi muotoon max 4x 1 + x 2 19x 31. Koska 19 [ 2, ], niin lisärubiineja kannattaa ostaa tällöinkin ostaa. Ratkaisu pysyy samana, mutta kohdefunktion arvo pienenee 19 eurosta: 19 9 1 = 17 6. Tässä siis c 3 x 3 = 9 1 = 13. b) Yhdestä lisätyötunnista kannattaa maksaa enintään 2 euroa, sillä v 3 = 2. 7
c) Oletetaan, että Luxus-mallisia sormuksia pitäisikin valmistaa vähintään 21 kpl. Tätä vastaava duaalimuuttuja on v = 2 ja 21 / [22., 2]. Saatava voitto olisi enintään (2 21) 2 = 4 2 = 8 euroa ja vähintään (2 22,) 2 = 2, 2 = euroa. min max kk 2 21 22. 2 Figure 1: Tehtävän kuva d) Safiiriehtoa vastaava duaalimuuttuja v 2 =, joten ratkaisu ei muutu välillä [11, ). Koska (121 12) =, niin lisäsafiireista ei kannata maksaa mitään. e) Oletetaan, että uusi sormusmalli x 4 vaatii 4 rubiinia, 2 safiiria ja 1 työtunnin. Uutta muuttujaa vastaava duaalirajoitus on muotoa 4v 1 + 2v 2 + v 3 c, missä duaalimuuttuja v 1 vastaa rubiineja, v 2 safiireja ja v 3 työtunteja. Sijoitetaan tähän optimiratkaisun arvot 4 1 + 2 + 2 c 6 c. Nähdään, että uuden mallin valmistus ei kannata, kun myyntihinta c 6. Valmistus ehkä kannattaa, kun c > 6. Nyt x 4 tulee ratkaisuun, mutta se saa kyseessä olevassa degeneroituneessa kärjessä arvon, koska x 1 2 ja x 2 2 ovat jo kuluttaneet kaikki 7 aikaresurssia. 8