Harjoitus 6 (30.4.2014) 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 (1) olevan optimointitehtävän Lagrangen duaali on max θ(u,v) s.t. u 0, (2) missä θ(u,v) = inf x X {f(x)+ut g(x)+v T h(x)}. (3) Tarkastellaan ensin optimointitehtävää min c T x s.t. Ax = b x 0. (4) Tämä on muotoa (1) oleva tehtävä, jossa f(x) = c T x h(x) = b Ax X = {x R n x 0}. Nyt määritelmän (3) ja vektorien x X alkioiden ei-negatiivisuuden nojalla saadaan θ(v) = inf x X {ct x+v T (b Ax)} = inf x X {vt b+(c T v T A)x} v T b, kun c T v T A 0 eli A T v c =, kun c T v T A 0. (5) Koska tehtävässä (4) ei ole epäyhtälörajoitteita, duaalitehtävän kohdefunktio ei riipu muuttujasta u. Ylläolevan nojalla asetamme duaalitehtävälle rajoitteen A T v c, koska jos tämä ehto ei ole voimassa niin θ(v) = eikä v siis voi olla duaalitehtävän ratkaisu. Sijoittamalla yllä saatu funktion θ lauseke sekä rajoite A T v c duaalitehtävään (2) saadaan vaadittua muotoa max v T b s.t. A T v c 1
oleva optimointitehtävä. Tarkastellaan sitten optimointitehtävää min c T x s.t. Ax b x 0. Tämä on muotoa (1) oleva tehtävä, jossa f(x) = c T x g(x) = b Ax X = {x R n x 0}. Samoin perusteluin kuin johdettaessa lauseketta (5) saamme duaalitehtävän kohdefunktioksi θ(u) = u T b (erona on että nyt kohdefunktio riippuu vain epäyhtälörajoitetta vastaavasta duaalimuuttujasta u). Sijoittamalla funktion θ lauseke duaalitehtävään (2) ja ottamalla huomioon että epäyhtälörajoitetta vastaavan duaalimuuttujan u on oltava einegatiivinen saadaan vaadittua muotoa 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 (6) x 12 +x 22 = 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 2
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 y i {0,1}. (7) 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 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 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 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 (7) 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 3
Havaitsemme että relaksoidun tehtävän (7) optimiratkaisun kohdefunktion arvo antaa alarajan alkuperäisen optimointitehtävän (6) 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 (6) kohdefunktion optimiarvo. Tavallisella relaksaatiolla (jossa korvataanrajoitteet 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 harjoitusten 2 tehtävän 5 selkäreppuformulaatio (joka tehtiin harjoitusten 4 tehtävässä 2) Branch and Bound -menetelmällä. Kyseinen optimointitehtävä oli max 40x 1 +15x 2 +20x 3 +10x 4 s.t. 4x 1 +2x 2 +3x 3 +x 4 7 x 1,x 2,x 3,x 4 {0,1}. Relaksoidaan tehtävä ensin muuttamalla päätösmuuttujat binäärisistä jatkuviksi. Toisin sanoen, korvaamme neljä viimeistä rajoitetta rajoitteilla 0 x i 1, i = 1,2,...,4. Alkusolmuksi 0 valitaan relaksoidun tehtävän optimiratkaisu joka on (1, 1, 0, 1) optimiarvolla 65, eli valitaan x (0) = (1,1,0,1) ṽ = 65 ˆv =. Havaitsemme, että ratkaisussa on vain kokonaislukuja, joten alkusolmu on loppuunkäsitelty. Koska käsiteltäviä haaroja ei ole, päättyy branch and bound -algoritmin suoritus jo alkusolmuun. Koska relaksoidusta tehtävästä saatu ratkaisu on myös alkuperäisen tehtävän sallittu ratkaisu, olemme ratkaisseet alkuperäisen tehtävän. Tehtävä 4 Ratkaistaan Branch and Bound -menetelmällä tehtävä max 3x 1 +3x 2 +13x 3 s.t. 3x 1 +6x 2 +7x 3 8 (8) 6x 1 3x 2 +7x 3 8 x i {0,1,2,...}. Koska tässä tehtävässä on binääristen rajoitteiden sijaan kokonaislukurajoitteet, ei luentomonisteessa esitetty branch and bound -menetelmä ole sellaisenaan sovellettavissa. Kokonaislukutehtäville soveltuvan menetelmän saamme muuttamalla haarautumisehtoja. Muunnetussa menetelmässä kunkin solmun t vasempaan alipuuhun tulee rajoite 4
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 valittavanei-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) onkussakin 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. Tehtävä 5 Sorvin alustusajat ovat epäsymmetriset. Jotta aloitusajat saadaan mukaan, lisätään taulukkoon tuote 0, jolloin taulukoksi tulee 5
0 1 2 5 3 4 6 11 7 10 8 9 Kuva 1: Optimointitehtävän (8) ratkaisu branch and bound-menetelmällä. 6
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 = 6 5 2 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. Tulos 39 minuuttia ei enää parane vaihdoilla, joten se on lokaali optimi. Yllä saatu optimi ei tietenkään 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. 1 Taulukon merkinnät tarkoittavat suljettuja reittejä joissa oikeanpuolimmaisesta alkiosta palataan vasemmanpuolimmaiseen. Esimerkiksi rivin 1 reitti kulkee alkiosta 1 alkioon 5. 7