Malliratkaisut Demot 6 24.4.2017 Tehtävä 1 Määritelmän (ks. luentomonisteen s. 107) mukaan yleisen muotoa min f(x) s.t. g(x) 0 h(x) = 0 x X (1) olevan optimointitehtävän Lagrangen duaali on min θ(u,v) s.t. u 0, (2) missä Tarkastellaan optimointitehtävää Tämä on muotoa (1) oleva tehtävä, jossa { θ(u,v) = inf f(x)+u T g(x)+v T h(x) }. (3) x X min c T x f(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 θ(u) = inf x X {ct x+u T (b Ax)} = inf x X {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. (4) 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 1
max u T b s.t. A T u c u 0 oleva optimointitehtävä. 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 (5) 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 salitulla 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. 2
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}. (6) 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 riippumattomaksi osatehtäväksi, joista ensimmäisessä on muuttujatx 11,x 12,y 1 ja toisessa muuttujat x 21,x 22,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 saadaan optimaaliset x-muuttujien arvot sekä vastaavat tehtävän (6) kohdefuktion 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 Havaitaan että relaksoidun tehtävän (6) optimiratkaisun kohdefunktion arvo antaa alarajan alkuperäisen optimointitehtävän (5) kohdefunktion optimiarvolle. Tiukin alaraja saadaan ylläolevan taulukon suurimmmasta kohdefunktion arvosta. Tämä alaraja on 259, joka on sama kuin alkuperäisen tehtävän (5) kohdefunktion optimiarvo. 3
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 saadaan sama ratkaisu kuin täydellisellä luettoloinnilla 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,...}. (7) Koska tehtävässä on binääristen rajoitteiden sijaan kokonaislukurajoitteet, ei luentomonisteessa esitetty branch and bound -menetelmä ole sellaisenaan sovellettavissa. Kokonaislukutehtäville soveltuva menetelmä saadaan 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 suurinta kokonaislukua, joka on pienempi tai yhtäsuuri kuin x (t) p. Käytetään syvyyshakua. Toisin sanoen, kullakin askeleella valitaan tutkittavaksi solmuksi se joka on käsittelemättömistä solmuista syvimmällä puussa. Haarautumista lukuun ottamatta 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 9 ja se on x (9) = (0,0,1) ṽ = 13. Algoritmin tuottama puu kuvassa 1 ei ole yksikäsitteinen, vaan haarautuminen olisi voitu tehdä parissa kohtaa myös eri tavalla: Solmussa 0 olisi voitu haarautua käyttäen vektorin x (0) toista komponenttia. Solmussa 6 olisi voitu tehdä haarautuminen vektorin x (5) ensimmäistä komponenttia käyttäen. 4
v 0 x 0 2.667, 2.667, 0 v 16, pyöristys: x 2,2,0 x 1 2 x 1 3 v 12 x 3 0 2 x 2 2, 2, 0.286 v 15.714, p: 2,2,0 x 3 1 1 x 3 x 6 0.333,0.333,1 2, 2.333, 0 3 6 v v 15, p: 0,0,1 13, p: 2,2,0 v 13 x 2 2 x 2 3 x 2 0 x 2 1 x 4 2,2,0 4 v 12 v rajalopetus 5 x 3 1 7 x 7 0, 0, 1.143 v 14.857, p: 0,0,1 12 x 3 2 x 1 0 8 x 8 0.167, 0, 1 v 13.5, p: 0,0,1 x 1 1 11 x 9 0,0,1 9 v 13 v rajalopetus 10 Kuva 1: Optimointitehtävän (7) ratkaisu branch and bound -menetelmällä Valittu haarautumistapa muuttaa ainoastaan saatua puuta, mutta ei vaikuta saatuun optimaaliseen ratkaisuun. Näin ollen haarautumistavasta riippumatta ratkaisu on sama kuin kuvan 1 solmussa 9. Algoritmin toimintaperiaate selviää kuvan 1 puusta. Periaatteessa branch and bound -algoritmin toimintaa voi tehostaa pyöristämällä kussakin käsiteltävässä solmussa t relaksaatiosta saatu ratkaisun x (t) komponentit alaspäin lähimpiin kokonaislukuarvoihin. Jos pyöristetystä ratkaisusta käytetään merkintää x (t), niin pöyristyksiä käyttävä menetelmä eroaa luentomonisteen algoritmissa 4.10 esitetystä menetelmästä kahdella tavalla: Askeleessa 4 verrataan pyöristetyllä ratkaisulla x (t) laskettua kohdefunktion arvoa parhaaseen tunnettuun kohdefunktion arvoon ˆv. 5
Koska x (t) on kussakin solmussa t sallittu, voidaan parasta tunnettua kohdefunktion arvoa ˆv päivittää myös välisolmuissa eikä vain päätesolmussa 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ä. 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 Taulukko 1: Alustusasetuksien kestot sorvissa Ajatellaan tehtävää kuuden kaupungin epäsymmetrisenä kauppamatkustajaongelmana. Kun valitaan päätösmuuttujat { 1, jos k:nneksi tehtävä työ on i y ki = 0, muuten, niin saadaan kauppamatkustajaongelma kirjoitettua kvadraattiseksi järjestelyongelmaksi min s.t. 5 5 6 c ij y ki y k+1,j i=0 j=0 k=1 5 y ki = 1, k = 1,...,6 i=0 6 y ki = 1, i = 0,...,5 k=1 y ki {0,1}, k = 1,...,6; i = 0,..,5. Tässä arvo y 7j merkitsee arvoa y 1j. 6
Ratkaisua etsittäessä 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 on kappaletta erilaista. n n 1 2 = 6 5 2 = 15 Tuloksista saadaan taulukko 2. Kyseisessä taulukossa vaihdot on tehty alkuperäiseen 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 Taulukko 2: Mahdolliset parittaiset vaihdot ensimmäisessä vaiheessa reittiin 0 5 4 3 2 1 0. Taulukon merkinnät tarkoittavat suljettuja reittejä, joissa oikeanpuolimmaisesta alkiosta palataan vasemmanpuolimmaiseen. Esimerkiksi rivin 1 reitti kulkee alkiosta 1 alkioon 5. Vaihdetut alkiot on selkeyden vuoksi alleviivattu. Ensimmäisen vaihdon jälkeen paras tulos on 39 minuuttia. Kun tähän reittiin sovelletaan uudelleen parittaisia vaihtoja tulos ei enää parane, joten reitti 0 5 3 4 2 1 0 on lokaali optimi. Yllä saatu optimi ei välttämättä ole paras mahdollinen, koska parittaiset vaihdot kattavat vai pienen osan 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. 7
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 1 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. Tämän jäljeen 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. Kaikki vaihtoehdot on käyty läpi alla olevassa taulukossa ja siitä huomataan, että solmun 2 lisääminen reittiin tuottaa pienimmän lisäyksen. Saadaan reitti 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. Väli Lisätty solmu Reitti lisäyksen jälkeen Lisäys 0 1 2 0 2 1 0 7 1 0 2 0 1 2 0 7 0 1 3 0 3 1 0 14 1 0 3 0 1 3 0 12 0 1 4 0 4 1 0 12 1 0 4 0 1 4 0 10 0 1 5 0 5 1 0 14 1 0 5 0 1 5 0 9 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 8
5 lisäys väliin 1 0 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. 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 ja nyt solmun 5 lisääminen väliin 0 4 antaa 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. 9