Harjoitus 6 (21.4.2015) Tehtävä 1 Määritelmän (ks. luentomoniste s. 109) mukaan yleisen, muotoa min f(x) s. t. g(x) 0 h(x) = 0 x X olevan optimointitehtävän Lagrangen duaali on missä max θ(u, v) s. t. u 0, θ(u, v) = inf x X {f(x) + ut g(x) + v T h(x)}. (3) Tarkastellaan optimointitehtävää min Tämä on muotoa (1) oleva tehtävä, jossa f(x) = c T x c T x s. t. Ax b x 0. g(x) = b Ax X = {x R n x 0}. Nyt määritelmän (3) ja vektorien x X alkioiden ei-negatiivisuuden nojalla saadaan (1) (2) θ(u) = inf x 0 {ct x + u T (b Ax)} = inf x 0 {ut b + (c T u T A)x} u T b, kun c T u T A 0 eli A T u c =, kun c T u T A 0. Sijoittamalla funktion θ lauseke duaalitehtävään (2) ja ottamalla huomioon että epäyhtälörajoitetta vastaavan duaalimuuttujan u on oltava ei-negatiivinen saadaan vaadittua muotoa oleva optimointitehtävä. max u T b s. t. A T u c u 0 1
Tehtävä 2 Tarkastellaan optimointitehtävää min 3x 11 + 6x 12 + 5x 21 + 2x 22 + 250y 1 + 300y 2 s. t. 30x 11 + 20x 12 50y 1 30x 21 + 20x 22 50y 2 x 11 + x 21 = 1 (4) x 12 + x 22 = 1 0 x ij 1 y i {0, 1}. Suoritetaan ensin täydellinen luettelointi seuraavan taulukon mukaisesti: y 1 y 2 x 11 x 12 x 21 x 22 f 0 0 0 1 0 0 1 1 307 1 0 1 1 0 0 259 1 1 1 0 0 1 555 Taulukossa on kullakin muuttujien y 1 ja y 2 sallitulla yhdistelmällä ratkaistu optimaaliset x-muuttujat sekä laskettu kohdefunktion arvo. Taulukossa olevat viivat tarkoittavat, ettei sallittua ratkaisua ole olemassa. Tehtävän optimiratkaisu on siis x 11 = x 12 = 1 x 21 = x 22 = 0 y 1 = 1, y 2 = 0, ja kohdefunktio saa tällöin arvon 259. Sovelletaan Lagrangen relaksaatiota dualisoimalla kolmas ja neljäs rajoite. Tällöin saadaan tehtävä min 3x 11 + 6x 12 + 5x 21 + 2x 22 + 250y 1 + 300y 2 + v 1 (1 x 11 x 21 ) + v 2 (1 x 12 x 22 ) s. t. 30x 11 + 20x 12 50y 1 30x 21 + 20x 22 50y 2 0 x ij 1 y i {0, 1}. (5) Relaksoitu tehtävä on helpompi ratkaista, sillä rajoituksia on vähemmän ja jokainen muuttuja esiintyy tarkalleen yhdessä rajoitteessa. Tehtävä voidaan nyt jakaa kahdeksi 2
riippumattomaksi osatehtäväksi, joista ensimmäisessä on muuttujat x 11, x 12 ja y 1 ja toisessa muuttujat x 21, x 22 ja y 2. Osatehtävät ovat min (3 v 1 )x 11 + (6 v 2 )x 12 + 250y 1 s. t. 30x 11 + 20x 12 50y 1 0 x ij 1 y 1 {0, 1} ja min (5 v 1 )x 21 + (2 v 2 )x 22 + 300y 2 s. t. 30x 21 + 20x 22 50y 2 0 x ij 1 y 2 {0, 1}. Ratkaisemalla osatehtävät tehtäväpaperissa annetuilla muuttujien v 1 ja v 2 arvoilla saamme optimaaliset x-muuttujien arvot sekä vastaavat tehtävän (5) kohdefunktion arvot v 1 v 2 x 11 x 12 x 21 x 22 y 1 y 2 f 0 0 0 0 0 0 0 0 0 100 100 0 0 0 0 0 0 200 153 106 1 1 0 0 1 0 259 Havaitsemme että relaksoidun tehtävän (5) optimiratkaisun kohdefunktion arvo antaa alarajan alkuperäisen optimointitehtävän (4) kohdefunktion optimiarvolle. Tiukin alaraja saadaan ylläolevan taulukon suurimmasta kohdefunktion arvosta. Tämä alaraja on 259, joka on sama kuin alkuperäisen tehtävän (4) kohdefunktion optimiarvo. Tavallisella relaksaatiolla (jossa korvataan rajoitteet y i {0, 1} rajoitteilla 0 y i 1) saadaan x 11 = x 12 = y 1 = 1 ja x 21 = x 22 = y 2 = 0. Tällöin kohdefunktion arvoksi tulee 259, eli sattumalta saamme saman ratkaisun kuin täydellisellä luetteloinnilla sekä Lagrangen relaksaatiolla. Tehtävä 3 Ratkaistaan Branch and Bound -menetelmällä tehtävä max 3x 1 + 3x 2 + 13x 3 s. t. 3x 1 + 6x 2 + 7x 3 8 6x 1 3x 2 + 7x 3 8 x i {0, 1, 2,... }. (6) Koska tässä tehtävässä on binääristen rajoitteiden sijaan kokonaislukurajoitteet, ei luentomonisteessa esitetty branch and bound -menetelmä ole sellaisenaan sovellettavissa. 3
Kokonaislukutehtäville soveltuvan menetelmän saamme muuttamalla haarautumisehtoja. Muunnetussa menetelmässä kunkin solmun t vasempaan alipuuhun tulee rajoite x p x (t) p ja oikeaan alipuuhun rajoite x p x (t) p + 1, missä p on solmun t ratkaisuvektorin x (t) käsiteltäväksi valittavan ei-kokonaislukukomponentin indeksi ja x (t) p tarkoittaa alaspäin pyöristystä. Käytetään syvyyshakua. Toisin sanoen, kullakin askeleella valitaan tutkittavaksi solmuksi se joka on käsittelemättömistä solmuista syvimmällä puussa. Haarautumista lukuunottamatta algoritmi on sama kuin luentomonisteessa esitetty algoritmi 4.10. Algoritmin toimintaa esittävä puu on piirretty kuvaan 1, ja siinä olevat merkinnät ovat samat kuin luentomonisteessa. Käsiteltäväksi valittava vektorin x (t) komponentti kussakin solmussa t on alleviivattu. Tehtävän ratkaisu saadaan solmusta 8, ja se on x (8) = (0, 0, 1) ṽ = 13. Selkeyden vuoksi kaikkia algoritmin läpikäymiä alipuita ei ole piirretty kuvaan 1: Puusta puuttuu solmun 0 alipuu joka vastaa vektorin x (0) toista komponenttia. Tämän alipuun paras ratkaisu on sama kuin solmussa 8 saatu. Solmusta 5 on valittu käsiteltäväksi alipuu joka vastaa vektorin x (5) toista komponenttia. Ensimmäistä komponenttia vastaavaa alipuuta ei ole piirretty näkyviin. Tämän alipuun paras ratkaisu on sama kuin solmussa 8 saatu. Jotta varmistumme siitä että solmussa 8 saatu ratkaisu on optimaalinen, on kaikki alipuut tietenkin käytävä läpi. Algoritmin toimintaperiaate selvinnee kuitenkin kuvan 1 puusta. Periaatteessa branch and bound -algoritmin toimintaa voi tehostaa pyöristämällä kussakin käsiteltävässä solmussa t relaksaatiosta saadun ratkaisun x (t) komponentit alaspäin lähimpiin kokonaislukuarvoihin. Jos pyöristetystä ratkaisusta käytetään merkintää x (t), niin pyöristyksiä käyttävä menetelmä eroaa luentomonisteen algoritmissa 4.10. esitetystä menetelmästä kahdella tavalla: Askeleella 4 verrataan pyöristetyllä ratkaisulla x (t) laskettua kohdefunktion arvoa parhaaseen tunnettuun kohdefunktion arvoon ˆv. Koska x (t) on kussakin solmussa t sallittu, voidaan parasta tunnettua kohdefunktion arvoa ˆv päivittää myös välisolmuissa eikä vain päätesolmuissa kuten alkuperäisessä algoritmissa (ks. luentomonisteen kuva 43). Usein pyöristysten käyttö antaa parempia rajoja kohdefunktion optimiarvolle, mutta ainakaan tässä tehtävässä siitä ei ole merkittävää hyötyä. Pyöristyksiä käyttävän algoritmin etenemispuuta ei ole piirretty tähän. 4
0 1 2 5 3 4 6 11 7 10 8 9 Kuva 1: Optimointitehtävän (6) ratkaisu branch and bound-menetelmällä. 5
Tehtävä 4 Sorvin alustusajat ovat epäsymmetriset. Jotta aloitusajat saadaan mukaan, lisätään taulukkoon tuote 0, jolloin taulukoksi tulee c ij 0 1 2 3 4 5 0 3 4 7 8 5 1 0 7 12 10 9 2 0 6 10 14 11 3 0 10 11 12 10 4 0 7 8 15 7 5 0 12 9 8 16 Ajatellaan tehtävää kuuden kaupungin epäsymmetrisenä kauppamatkustajaongelmana. Lähdetään liikkeelle reitistä 0 5 4 3 2 1 0, jolloin reitin pituus (tai pikemminkin kesto) on 53 minuuttia. Etsitään lokaali optimi parittaisilla vaihdoilla, joita tarvitaan n n 1 2 = 6 5 2 = 15 kappaletta. Tuloksista saadaan seuraava taulukko: 1 vaihdetut reitti vaihdon jälkeen pituus (1, 2) 5 0 4 3 2 1 49 (1, 3) 4 5 0 3 2 1 41 (1, 4) 3 5 4 0 2 1 48 (1, 5) 2 5 4 3 0 1 52 (1, 6) 1 5 4 3 2 0 54 (2, 3) 0 4 5 3 2 1 40 (2, 4) 0 3 4 5 2 1 41 (2, 5) 0 2 4 3 5 1 55 (2, 6) 0 1 4 3 2 5 50 (3, 4) 0 5 3 4 2 1 39 (3, 5) 0 5 2 3 4 1 43 (3, 6) 0 5 1 3 2 4 54 (4, 5) 0 5 4 2 3 1 49 (4, 6) 0 5 4 1 2 3 46 (5, 6) 0 5 4 3 1 2 53 Ylläolevassa taulukossa vaihdot on tehty alkuperäiseen reittiin 0 5 4 3 2 1 0. Vaihdetut alkiot on selkeyden vuoksi alleviivattu. Ensimmäisten vaihtojen jälkeen parast tulos on 39 minuuttia. Tähän reittiin, kun sovelletaan uudelleen parittaisia vaihtoja, ei saavuteta parempaa tulosta. Reitti 0 5 3 4 2 1on siis lokaali optimi. 1 Taulukon merkinnät tarkoittavat suljettuja reittejä joissa oikeanpuolimmaisesta alkiosta palataan vasemmanpuolimmaiseen. Esimerkiksi rivin 1 reitti kulkee alkiosta 1 alkioon 5. 6
Yllä saatu optimi ei välttämättä ole paras mahdollinen, koska parittaiset vaihdot kattavat vain pienen osan koko hakuavaruudesta. Paras reitti eli globaali optimi 0 2 1 4 5 3 0 saadaan käymällä kaikki sallitut kombinaatiot läpi, jolloin reitin pituus on 4 + 6 + 10 + 7 + 8 + 0 = 35 minuuttia. Tehtävä 5 Ratkaistaan edellinen tehtävä konstruktiivisilla heuristiikoilla. a) Lähimmän naapurin menetelmä Aloitetaan 0-solmusta, ja tarkastellaan, mikä solmu on lähin. Taulukon ylimmältä riviltä huomataan, että solmuun 1 on matkaa vain 3 minuuttia, joten lisätään se reittiin 0 1. Tämän jälkeen tarkastellaan, mikä solmu on lähinnä olemassa olevaa reittiä, ja huomataan, että solmuun 2 on matkaa vain 7 minuuttia. Saadaan reitti 0 1 2. Näin jatkaen saadaan 0 1 2 3, jonka jälkeen jäljellä on enää solmut 4 ja 5. Solmu 5 on lähempänä olemassa olevaa reittiä (10 < 12), joten lopullinen reitti on 0 1 2 3 5 4, johon kuluu aikaa 46 minuuttia. b) Lähimmän lisäyksen menetelmä Aloitetaan suljetusta reitistä 0 0 ja tarkastellaan minkä solmun lisääminen olemassa olevaan reittiin tuottaa pienimmän lisäyksen. Käydään kaikki vaihtoehdot läpi, ja huomataan, että solmu 1 tuottaa vain 3 minuutin lisäyksen. Saadaan reitti 0 1 0. Nyt käydään läpi kaikki vaihtoehdot sovittaen jäljellä olevia solmuja väliin 0 1 sekä väliin 1 0. Esimerkiksi solmun 3 asettaminen väliin 0 1 tuottaisi reitin 0 3 1 0, ja lisäys olisi 7 + 10 3 = 14. Huomaa, että kuljettaessa solmun 3 kautta, ei reittiä 0 1 enää käytetä, joten se on vähennettävä. Solmun 2 asettaminen samaiseen väliin tuottaa ainoastaan lisäyksen 4 + 6 3 = 7, ja on näin ollen parempi. Kun kaikki vaihtoehdot käydään läpi, huomataan, että solmun 2 lisääminen reittiin tuottaa pienimmän lisäyksen. Saadaan rettti 0 2 1 0. Myös reitti 0 1 2 0 tuottaa saman lisäyksen ja olisi siis myös mahdollinen valinta tässä heuristisessa algoritmissa. Seuraavaksi sovitetaan jäljellä olevia solmuja (3,4 ja 5) olemassa olevan reitin väleihin (0 2, 2 1 ja 1 0). Käydään kaikki vaihtoehdot läpi, ja huomataan, että solmun 5 lisäys reittiin tuottaa pienimmän lisäyksen +9. Saadaan reitti 0 2 1 5 0. Näin jatketaan, ja lopulta saadaan reitti 0 2 1 4 5 3 0, jonka pituus on 35 minuuttia. Tämä on sattumoisin myös globaali optimi. c) Kaukaisimman lisäyksen menetelmä Aloitetaan jälleen samasta suljetusta reitistä 0 0. Samaan tapaan kuin edellisessä kohdassa sovitetaan olemassa olevan reitin väleihin kaikkia jäljellä olevia solmuja. Nyt valitaan solmu, joka tuottaa suurimman lisäyksen, kun b-kohdassa valittiin solmu, joka tuotti pienimmän lisäyksen. 7
Ensimmäisellä kierroksella saadaan reitti 0 4 0, jonka jälkeen 0 4 3 0. Kolmas lisäys tuottaa reitin 0 5 4 3 0. Solmun 5 lisääminen väliin 0 4 tuottaa 5 + 16 8 = 13 lisäyksen. Jäljellä olevia solmuja (1 ja 2) sovitetaan kaikkiin suljetun reitin väleihin, jonka seurauksena lisätään solmu 2 väliin 3 0 lisäyksellä +11. Lopullinen reitti on 0 1 5 4 3 2 0, jonka kesto on 54 minuuttia. Tässä tehtävässä huomataan, että lähimmän lisäyksen menetelmä tuotti parhaan tuloksen. Sattumoisin tämä oli vieläpä globaali optimi. b)-kohdan ahne algoritmi ei kaikissa ongelmissa kuitenkaan tuota parasta tulosta, koska viimeiset lisäykset saattavat olla suhteettoman suuria. Silloin päinvastainen heuristiikka saattaisi olla toimivampi, eli aloitetaan lisäämällä kaukaisimpia solmuja. 8