Malliratkaisut Demot 5 10.4.2017 Tehtävä 1 x 2 7 0,7 9,8 6 5 4 x 1 x 2 7 x 1 x 2 1 3 2 x 1 0 4,3 x 1 9 1 0,0 x 2 0 9,0 1 2 3 4 5 6 7 8 9 x 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, koska kahdesta viimeistä rajoituksesta vain toisen tarvitsee olla voimassa (standardimuotoa olevassa ongelmassa vaaditaan että kaikki rajoitukset ovat voimassa). Rajoitteiden muuntamiseksi standardimuotoon otetaan käyttöön muuttuja y {0,1} ja korvataan kaksi viimeistä rajoitetta ehdolla x 1 +x 2 7+My x 1 +x 2 1+M(1 y), missä M on riittävän suuri luku. Perustelu edelliselle on seuraava: Jos y = 0 niin ylläolevista yhtälöistä saadaan x 1 +x 2 7 (2) x 1 +x 2 1+M. 1
Jos taas y = 1, niin saadaan x 1 +x 2 7+M x 1 +x 2 1. (3) Ylläolevasta havaitaan, että kun y = 0 ja M > 0 on riittävän suuri, saadaan rajoitteet, joista vain ensimmäinen rajoittaa sallittua joukkoa (toinen toteutuu joka tapauksessa muiden rajoitteiden määrittämässä joukossa joten se vastaa tyhjää rajoitetta). Toisaalta kun y = 1 ja M on riittävän suuri, saadaan 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. Mutta miten suuri arvon M pitää olla? Jos y = 0, niin piste (0,7) S ja tällöin sijoittamalla piste (0,7) yhtälöistä (2) jälkimmäiseen saadaan x 1 +x 2 1+M 7 1+M M 8. Jos taasy = 1, niin piste (9,8) S ja sijoittamalla piste(9,8) yhtälöistä (3) ensimmäiseen saadaan 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}. Huomaa että lineaarisen optimointitehtävän rajoitejoukko (sallittu alue) on konveksi. Tässä tehtävässä käsitelty viisikulmio ei ole konveksi. 2
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). 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ösmuuttujienx 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 y 1 = 0 y 2 = 1 y 3 = 1 f(x ;y ) = 1 730 000. 3
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. Valitaan lisäksi kohdefunktio siten, että minimoidaan töiden myöhäisintä keskimääräistä valmistusaikaa (eli keskimääräistä aikaa jolloin työ tulee viimeiseltä koneelta ulos). Tällöin saadaan kokonaislukuoptimointitehtävä (ks. luentomonisteen luku 3.7) 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 x ij N y ijk {0,1}. Kaikkien töiden yhteiskesto antaa M:lle alarajan, joten voidaan valita M 3 3 p jk = 60. j=1 k=1 4
CPLEXillä saadaan tehtävän ratkaisuksi x 11 = 3, 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. Ratkaisua on havainnollistettu kuvassa 2. Tehtävän täsmällinen muotoilu on melko työläs, mutta sen ratkaisu on optimaalinen. Tämän tyyppisessä ongelmassa on mahdollista käyttää myös erilaisia heuristisia menetelmiä kuten LPT (longest process time) tai SPT (shortest process time), joka on ahne algoritmi. Näillä heuristiikoilla ei välttämättä löydetä optimia. k 1 t 2 t 1 t 3 k 2 t 2 t 3 t 1 t 2 t 1 t 3 k 3 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 x 21 x 23 x 11 x 22 x 32 x 12 x 13 x 31 x 33 Kuva 2: Tehtävän 3 työaikataulu 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 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 j=1 x ij {0,1}, i,j. n h i x ij. i=1 (jokainen laatikko tasan yhteen pinoon) 5
Optimointitehtävän linearisoitu muoto on min u n s.t. h i x ij u, j = 1,...,m i=1 m x ij = 1, i = 1,...,n j=1 x ij {0,1} i,j. Tehtävä 5 A 1 2 B D 3 4 5 C Kuva 3: Tehtävän 5 kuva 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,..., 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, 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}. 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 kohdefunktio f(x ) = 2, joten tarvitaan kaksi vartijaa. 6