Harjoitus 5 (24.4.2014) Tehtävä 1 Kuva 1: Tehtävän 1 sallittu joukko S. Optimointitehtävän sallittu alue S on pisteiden (0, 0), (0, 7), (4, 3), (9, 8) ja (9, 0) määräämä viisikulmio. Kyseinen alue saadaan seuraavien rajoitusten avulla: x 1 0 x 2 0 x 1 9 x 1 + x 2 7 tai x 1 + x 2 1. (1) Ylläoleva tehtävä ei ole standardimuotoa olevan optimointitehtävän rajoitejoukko johtuen siitä että kahdesta viimeisestä rajoituksesta vain toisen tarvitsee olla voimassa (standardimuotoa olevassa ongelmassa vaaditaan että kaikki rajoitteet ovat aina voimassa). Rajoitteiden muuntamiseksi standardimuotoon otamme käyttöön muuttujan y {0, 1} ja korvaamme kaksi viimeistä rajoitetta ehdoilla x 1 + x 2 7 + My x 1 + x 2 1 + M(1 y). Perustelu on seuraava: Jos y = 0, niin ylläolevista yhtälöistä saamme x 1 + x 2 7 x 1 + x 2 1 + M. (2) Jos taas y = 1, niin saamme x 1 + x 2 7 + M (3) x 1 + x 2 1. Ylläolevasta havaitsemme, että kun y = 0 ja M > 0 on riittävän suuri, saamme rajoitteet joista vain ensimmäinen rajoittaa sallittua joukkoa (toinen toteutuu joka tapauksessa muiden rajoitteiden määrittämässä joukossa joten se vastaa tyhjää rajoitetta). 1
Toisaalta kun y = 1 ja M on riittävän suuri, saamme rajoitteet joista vain jälkimmäinen rajoittaa sallittua joukkoa (ensimmäinen toteutuu joka tapauksessa muiden rajoitteiden määrittämässä joukossa joten se vastaa tyhjää rajoitetta). Toisin sanoen, muunnetut rajoitteet määrittävät saman joukon kuin yhtälöt (1) kun M on riittävän suuri. Jos y = 0, niin piste (0, 7) S ja tällöin sijoittamalla piste (0, 7) yhtälöistä (2) jälkimmäiseen saamme x 1 + x 2 1 + M 7 1 + M M 8. Jos taas y = 1, niin piste (9, 8) S ja sijoittamalla piste (9, 8) yhtälöistä (3) ensimmäiseen saamme x 1 + x 2 7 + M 17 7 + M M 10. Jos nyt valitaan M:n arvoista suurempi eli M = 10, niin tehtävässä pyydetyt rajoitteet voidaan kirjoittaa muotoon x 1 + x 2 7 + 10y x 1 + x 2 9 10y x 1 9 x 1, x 2 0 y {0, 1}. Tehtävä 2 Valitaan seuraavat päätösmuuttujat: x i = toimittajalta i (i = 1, 2, 3) ostettavien tietokoneiden määrä 1, jos ostetaan toimittajalta i (eli x i > 0) y i = 0, jos ei osteta toimittajalta i (eli x i = 0). 2
Kirjoitetaan sitten annettujen tietojen perusteella kokonaislukuoptimointitehtävä min 2500x 1 + 2500y 1 + 1750x 2 + 2000y 2 + 1250x 3 + 3000y 3 s. t. x 1 + x 2 + x 3 = 1100 x 1 500y 1 x 2 900y 2 x 3 400y 3 x i 0 x i N y i {0, 1}. Kohdefunktiossa päätösmuuttujien x i kertoimet vastaavat laitteiden kappalehintaa ja päätösmuuttujien y i kertoimet kiinteitä toimituskustannuksia. CPLEX antaa tehtävän ratkaisuksi x 1 = 0 x 2 = 700 x 3 = 400 y1 = 0 y2 = 1 y3 = 1 f(x ; y ) = 1 730 000. Tehtävä 3 Tehtävä on job shop -tyyppiä. Luonteeltaan tehtävä on jatkuva, joten kohdefunktioksi voisi olla hyvä valita keskimääräinen käsittelyaika eli keskimääräinen valmistusaika. Valitaan päätösmuuttujat x jk = työn j aloitushetki koneella k 1, jos työ j tehdään ennen työtä l koneella k y jlk = 0, muuten. Valitsemme kohdefunktion siten että minimoimme töiden myöhäisintä keskimääräistä valmistumisaikaa (eli keskimääräistä aikaa jolloin työ tulee viimeiseltä koneelta ulos). 3
Seuraten luentomonisteen lukua 3.7 saamme optimointitehtävän min 1 3 (x 13 + 14 + x 22 + 4 + x 33 + 8) s. t. x 11 + 10 x 12, x 12 + 3 x 13 x 21 + 2 x 23, x 23 + 1 x 22 x 32 + 6 x 31, x 31 + 12 x 33 x 11 + 10 x 21 + M(1 y 121 ), x 21 + 2 x 11 + My 121 x 11 + 10 x 31 + M(1 y 131 ), x 31 + 12 x 11 + My 131 x 21 + 2 x 31 + M(1 y 231 ), x 31 + 12 x 21 + My 231 x 12 + 3 x 22 + M(1 y 122 ), x 22 + 4 x 12 + My 122 x 12 + 3 x 32 + M(1 y 132 ), x 32 + 6 x 12 + My 132 x 22 + 4 x 32 + M(1 y 232 ), x 32 + 6 x 22 + My 232 x 13 + 14 x 23 + M(1 y 123 ), x 23 + 1 x 13 + My 123 x 13 + 14 x 33 + M(1 y 133 ), x 33 + 8 x 13 + My 133 x 23 + 1 x 33 + M(1 y 233 ), x 33 + 8 x 23 + My 233 x ij 0 y ijk {0, 1}. Kaikkien töiden yhteiskesto antaa M:lle alarajan, joten voimme valita M 3 3 p ik = 60. j=1 k=1 CPLEXillä saadaan tehtävän ratkaisun, jonka x-muuttujat ovat x 11 = 2, x 12 = 13, x 13 = 16 x 21 = 0, x 22 = 3, x 23 = 2 x 31 = 18, x 32 = 7, x 33 = 30, ja kohdefunktion arvoksi tulee f(x ) = 25. Tehtävä 4 Valitaan päätösmuuttujat 1, jos laatikko i pinoon j x ij = 0, muuten, missä i = 1,..., n ja j = 1,...,m. Pinon j korkeus on tällöin n h i x ij. i=1 4
Nyt voidaan kirjoittaa optimointitehtävä { n } min h i x ij s. t. max j=1,...,m i=1 m x ij = 1, i = 1,...,n (jokainen laatikko tasan yhteen pinoon) j=1 x ij {0, 1}, i, j. Optimointitehtävän linearisoitu muoto on min s. t. u n h i x ij u, j = 1,...,m i=1 m x ij = 1, j=1 x ij {0, 1} i, j. i = 1,..., n Tehtävä 5 A 1 2 4 B 3 C D 5 Tarkastellaan peitto-ongelmaa, jossa museoon pitää sijoitella vartijoita. Olkoon ylin huone A, sen alapuolella vasemmalla huone B ja oikealla C sekä vasemmassa alakulmassa huone D. Numeroidaan oviaukot luvuilla 1, 2,..., 5 järjestyksessä vasemmalta oikealle ja ylhäältä alas. Valitaan sitten päätösmuuttujiksi 1, jos ovella i on vartija (i = 1, 2,..., 5) x i = 0, muuten, 5
jolloin voidaan kirjoittaa optimointitehtävä min x 1 + x 2 + x 3 + x 4 + x 5 s. t. x 1 + x 2 1 (huone A) x 1 + x 3 + x 4 1 (huone B) x 2 + x 3 + x 5 1 (huone C) x 4 + x 5 1 (huone D) x i {0, 1}. CPLEXillä tehtävän ratkaisuksi saadaan joko x 2 = x 4 = 1, x 1 = x 3 = x 5 = 0 tai x 1 = x 5 = 1, x 2 = x 3 = x 4 = 0. Kummassakin tapauksessa kohdefunktion arvo f(x ) = 2, joten tarvitaan kaksi vartijaa. 6