Malliratkaisut Demot 2.2.217 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, x, jotta se voidaan ratkaista parannetulla Simplex-algoritmilla (.19). Parannetun Simplexalgoritmin toiminta on esitetty alla olevassa taulokossa, ja esimerkiksi taulukon 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) missä x π(3) = x on kannasta poistuva muuttuja. 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 1
Taulukko 1: Parannetun Simplex-algoritmin kulku x 1 x 2 x 3 x 4 x 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 x = B 1 a 2 24 ( 3) 17 ( 4) 3 λ = 3 ( 1) 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 x = B 1 a 1 1 ( 7) λ = 1 ( ) t = 2 2 3 1 N N x 2 1 3 8 c T x 2 = 1 1 7 13 B 1 1 4 = v T = (, 3, 8 )T (****) 1 c j 3 8 STOP 2
Redusoidut kustannukset (***) ovat 7 c 1 = c 1 v T a 1 = 3 (,, 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 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 v 1, v 2, v 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. 8 3
Tehtävä 2 Tavoitteena on muodostaa tehtävän max 2x 1 + x 2 duaali. Muodostetaan duaali seuraavasti: a) Luentomonisteen taulukon säännöillä: 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. 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. 4
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 löytyy kurssin kotisivuilta) 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 epäyhtälörajoitukset eivät ole aktiivisia. Poimitaan matriisiin B ne pystyrivit, jotka vastaavat kannassa olevia muuttujia. Nyt siis 1 1 1 1 B = 1.2 ja (c B ) T = (2,,,, ). 1 2 1 1 1 Yhtälöryhmä v T B = (c B ) T on muotoa v 1 + v 3 + 1v 4 + 1v = 2 v 2 +.2v 3 + 2v 4 + v = v 1 = v 2 = v 4 =. Sen ensimmäisestä yhtälöstä saadaan v 3 + 1v = 2 v 3 = 2 1v. Sijoittamalla tämä toisena olevaan yhtälöön tulee.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, joka löytyy kurssin kotisivuilta. Tehtävä 4 Kolmea erilevyistä paperilaatua tarvitaan seuraavasti: paperin leveys (cm) tarvittava määrä (m) 3 2 4 4 62 3 Pituussuunnassa paperirullasta on mahdollista leikata paperia yhdeksällä eri tavalla. Valitaan päätösmuuttujat x i, missä i = 1,..., 9, jotka osoittavat kullakin tavalla leikattavan paperin määrän metreinä. Saadaan optimointitehtävä mahdolliset leikkaustavat hukkaan (cm) metriä 3 2 x 1 4 3 + 1 4 x 2 3 3 + 1 62 18 x 3 2 3 + 2 4 2 x 4 2 3 + 1 4 + 1 62 3 x 1 3 + 3 4 x 6 1 3 + 2 62 16 x 7 1 4 + 2 62 1 x 8 2 4 + 1 62 18 x 9 min 2x 1 + x 2 + 18x 3 + 2x 4 + 3x + x 6 + 16x 7 + x 8 + 18x 9 (hukkapalojen pinta-ala) s. t. x 1 + 4x 2 + 3x 3 + 2x 4 + 2x + x 6 + x 7 2 (3 cm) x 2 + 2x 4 + x + 3x 6 + x 8 + 2x 9 4 x 3 + x + 2x 7 + 2x 8 + x 9 3 x i, i = 1,..., 9. (4 cm) (62 cm) Ratkaisemalla tehtävä numeerisesti LINGOlla ja CPLEXillä havaitaan, ettei tehtävällä ole yksikäsitteistä ratkaisua. Kohdefunktion arvo on kuitenkin sama molemmilla 6
ohjelmilla ratkaistaessa. LINGO Optimiratkaisu on leikata 1 m tavalla x ja 3 m tavalla x 8. Saatavat paperimäärät ovat 2 1 = 2 m (3 cm levyistä), 1 + 3 = 4 m (4 cm levyistä) ja 3 2+1 1 = 7 m (62 cm levyistä). Hukkaan menee.3 1+.1 3 = 6 m 2 paperia. CPLEX Optimiratkaisu on leikata m tavalla x 2 ja 3 m tavalla x 8. Saatavat paperimäärät ovat 4 = 2 m (3 cm levyistä), 1 + 3 1 = 4 m (4 cm levyistä) ja 3 2 = 7 m (62 cm levyistä). Hukkaan menee. +.1 3 = 6 m 2 paperia. Tehtävä 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. 7