Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen Jos sallittuja kokonaislukuratkaisuja ei ole kovin paljon, ne voidaan käydä kaikki läpi yksitellen Käytännössä tämä ei kuitenkaan ole yleensä mahdollista Ei ole olemassa ratkaisumenetelmää, joka toimisi aina hyvin ja tehokkasti kaikille kokonaislukuoptimointitehtäville (vrt. simplex lineaarisille jatkuville tehtäville) 1
Yleinen ratkaisuperiaate: Muodostetaan vastaava jatkuva optimointitehtävä: x j N = x j 0 ja x j = 0 tai 1 = 0 x j 1 Ratkaistaan jatkuva tehtävä ja jatketaan sen optimoimista Lisätään tehtävään erityisrajoituksia, jotka pakottavat iteratiivisesti kokonaislukurajoitteet voimaan Erityisrajoitusten päätyypit: leikkaustaso (cutting plane) haarautuminen (branch-and-bound) 2
Täysin unimodulaarinen kerroinmatriisi Matriisi A on täysin unimodulaarinen, jos sen jokaisen neliöalimatriisin determinantti on 0, +1 tai 1 = Täysin unimodulaarisen matriisin alkioina voi olla vain 0, +1 tai 1 3
Yhtälörajoitteet matriisimuodossa: Ax = b Olkoon A = [B, N], missä B sisältää perusmuuttujien joukkoa B vastaavat sarakkeet ja N muut sarakkeet Olkoon x = [x B,x N ] = Ax = b Bx B + Nx N = b x B = B 1 b B 1 Nx N 4
= Perusmuoto: x B = B 1 b B 1 Nx N Vastaava perusratkaisu: x B = B 1 b x N = 0 5
Cramerin sääntö: B 1 = B / B, missä B on B:n liittomatriisi ja B on B:n determinatti Jos A on täysin unimodulaarinen ja kaikki b:n alkiot ovat kokonaislukuja = Kaikki B :n alkiot ovat joko 0, +1 tai 1 ja B on joko +1 tai 1 = Kaikki B 1 :n alkiot ovat joko 0, +1 tai 1 = Kaikki x B :n alkiot ovat kokonaislukuja = Kokonaislukuoptimointitehtävällä ja vastaavalla jatkuvalla tehtävällä on sama optimiratkaisu 6
Esimerkki: Kolmen henkilön ja kolmen työn kohdistusongelma Jokainen henkilö suorittaa yhden työn, ja jokaisen työn suorittaa yksi henkilö Kun henkilö i suorittaa työn j, siitä aiheutuu kustannus c ij Tavoite: Kohdista henkilöt töihin siten, että kokonaiskustannukset minimoituvat 7
x ij = 1, jos henkilö i suorittaa työn j 0, muuten min c 11 x 11 + c 12 x 12 + c 13 x 13 + c 21 x 21 + c 22 x 22 + c 23 x 23 + c 31 x 31 + c 32 x 32 + c 33 x 33 kun x 11 + x 12 + x 13 = 1 x 21 + x 22 + x 23 = 1 x 31 + x 32 + x 33 = 1 x 11 + x 21 + x 31 = 1 x 12 + x 22 + x 32 = 1 x 13 + x 23 + x 33 = 1 x 11, x 12, x 13, x 21, x 22, x 23, x 31, x 32, x 33 = 0 tai 1 8
= A = 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 Induktio = Matriisi A on täysin unimodulaarinen 9
Ratkaisun pyöristäminen Esimerkki: Kapsäkkiongelma max 5x 1 + 3x 2 + 4x 3 kun 3x 1 + 2x 2 + 4x 3 6 x 1, x 2, x 3 = 0 tai 1 Vastaavan jatkuvan tehtävän ratkaisu: (x 1, x 2, x 3 ) = (1,1,1/4) Kokonaislukuoptimointitehtävän ratkaisu: (x 1, x 2, x 3 ) = (1,1,0) = Tässä tapauksessa pyöristäminen toimii 10
Sijoitusongelma Olkoon m paikkaa, joihin voidaan perustaa tuotantolaitos, ja olkoon n asiakasta Asiakas j tarvitsee tuotetta määrän d j Paikkaan i perustettavasta tuotantolaitoksesta aiheutuu kiinteä kustannus f i Tuotantolaitoksen i kapasiteetti on M i Jos paikassa i valmistettu tuote kuljetetaan asiakkaalle j, siitä aiheutuu kustannus c ij Tavoite: Määrää ne paikat, joihin laitos perustetaan sekä tuotteen kuljetusmäärät asiakkaille siten, että kokonaiskustannukset minimoituvat 11
x ij = laitoksesta i asiakkaalle j kuljetettava määrä x i = 1, jos paikkaan i perustetaan laitos 0, jos paikkaan i ei perusteta laitosta min kun m n i=1 j=1 m i=1 n j=1 c ij x ij + x ij = d j x ij M i x i m i=1 f i x i j = 1,..., n i = 1,..., m x ij 0 i = 1,..., m, j = 1,..., n x i = 0 tai 1 i = 1,..., m 12
Esimerkki: Sijoitusongelma max 93x 11 + 70x 12 + 48x 13 + 68x 14 + 81x 15 + 45x 21 + 89x 22 + 97x 23 + 85x 24 + 96x 25 + 92x 31 + 93x 32 + 58x 33 + 37x 34 + 99x 35 + 55x 41 + 103x 42 + 55x 43 + 57x 44 + 38x 45 + 74x 51 + 60x 52 + 78x 53 + 54x 54 + 52x 55 kun x 11 + x 21 + x 31 + x 41 + x 51 = 1 x 12 + x 22 + x 32 + x 42 + x 52 = 1 x 13 + x 23 + x 33 + x 43 + x 53 = 1 x 14 + x 24 + x 34 + x 44 + x 54 = 1 x 15 + x 25 + x 35 + x 45 + x 55 = 1 x 11 + x 12 + x 13 + x 14 + x 15 = 2x 1 x 21 + x 22 + x 23 + x 24 + x 25 = 3x 2 x 31 + x 32 + x 33 + x 34 + x 35 = 2x 3 x 41 + x 42 + x 43 + x 44 + x 45 = 3x 4 x 51 + x 52 + x 53 + x 54 + x 55 = 2x 5 x ij N, x i = 0 tai 1 i = 1,...,5, j = 1,...,5 13
Vastaavan jatkuvan tehtävän ratkaisu: (x 1, x 2, x 3, x 4, x 5 ) = (1/2,1/3,1/2,1/3,1/2) Kokonaislukuoptimointitehtävän sallitut ratkaisut: (x 1, x 2, x 3, x 4, x 5 ) = (1,1,0,0,0) (x 1, x 2, x 3, x 4, x 5 ) = (1,0,0,1,0) (x 1, x 2, x 3, x 4, x 5 ) = (0,1,1,0,0) (x 1, x 2, x 3, x 4, x 5 ) = (0,1,0,0,1) (x 1, x 2, x 3, x 4, x 5 ) = (0,0,1,1,0) (x 1, x 2, x 3, x 4, x 5 ) = (0,0,0,1,1) = Tässä tapauksessa pyöristäminen ei toimi 14
Leikkaustasomenetelmä Ratkaistaan vastaava jatkuva tehtävä Jos ratkaisu on kokonaislukuratkaisu, lopetetaan Muuten lisätään tehtävään leikkaustasorajoite siten, että se pienentää sallittua aluetta, mutta säilyttää siinä kokonaislukupisteet Ratkaistaan saatu uusi tehtävä Näin jatketaan kunnes saadaan kokonaislukuratkaisu (tai kunnes ratkaisu osoittautuu rajoittamattomaksi) 15
Oletetaan, että jatkuva tehtävä on ratkaistu simplex-algoritmilla, jolloin ratkaisu on perusmuodossa x j + a jk x k = b j j B k/ B Pyöritys alaspäin: Olkoon y suurin kokonaisluku siten, että se on y Koska x j 0 kaikilla j = x j + k/ B a jk x k b j Koska x j kokonaisluku kaikilla j = x j + a jk x k b j k/ B 16
Vähennetään yhtälöt toisistaan: x j + = k/ B x j + k/ B a jk x k = b j a jk x k b j ( ajk a jk ) x k b j b j k/ B Merkitään f jk = a jk a jk ja f j = b j b j, jolloin 0 f jk < 1 ja 0 f j < 1 17
Saadaan leikkaustasorajoite k/ B f jk x k f j Tämä lisätään tehtävään muodossa missä s on puutemuuttuja k/ B f jk x k + s = f j Koska f j 0, perusratkaisu ei ole sallittu (paitsi jos f j = 0) = tarvitaan duaali-simplex-iteraatioita 18
Esimerkki: max x 2 kun 3x 1 + 2x 2 6 3x 1 + 2x 2 0 x 1, x 2 N Vastaava jatkuva tehtävä: max x 2 kun 3x 1 + 2x 2 6 3x 1 + 2x 2 0 x 1, x 2 0 19
Muunnetaan minimointitehtäväksi ja lisätään puutemuuttujat: min x 2 kun 3x 1 + 2x 2 + x 3 = 6 3x 1 + 2x 2 + x 4 = 0 x 1, x 2, x 3, x 4 0 Aloitusperusmuodon simplex-taulukko: x 1 x 2 x 3 x 4 0 1 0 0 0 3 2 1 0 6 3 2 0 1 0 20
Simplex-iteraatiot: 0 1 0 0 0 3 2 1 0 6 3 2 0 1 0 3/2 0 0 1/2 0 6 0 1 1 6 3/2 1 0 1/2 0 0 0 1/4 1/4 3/2 1 0 1/6 1/6 1 0 1 1/4 1/4 3/2 21
Optimaalinen simplex-taulukko: x 1 x 2 x 3 x 4 0 0 1/4 1/4 3/2 1 0 1/6 1/6 1 0 1 1/4 1/4 3/2 Ratkaisu: (x 1, x 2, x 3, x 4 ) = (1,3/2,0,0) Objektifunktion arvo: 3/2 22
Ratkaisu ei ole kokonaislukuratkaisu, joten lisätään leikkaustasorajoite: Objektifunktioriviltä saadaan z + 1 4 x 3 + 1 4 x 4 = 3 2 = 1 4 x 3 + 1 4 x 4 1 2 Lisätään tämä simplex-taulukkoon muodossa 1 4 x 3 1 4 x 4 + s 1 = 1 2 23
= x 1 x 2 x 3 x 4 s 1 0 0 1/4 1/4 0 3/2 1 0 1/6 1/6 0 1 0 1 1/4 1/4 0 3/2 0 0 1/4 1/4 1 1/2 Taulukon perusratkaisu muunnetaan sallituksi duaali-simplex-algoritmilla 24
Yksi duaali-simplex-iteraatio: 0 0 1/4 1/4 0 3/2 1 0 1/6 1/6 0 1 0 1 1/4 1/4 0 3/2 0 0 1/4 1/4 1 1/2 0 0 0 0 1 1 1 0 0 1/3 2/3 2/3 0 1 0 0 1 1 0 0 1 1 4 2 25
Optimaalinen simplex-taulukko: x 1 x 2 x 3 x 4 s 1 0 0 0 0 1 1 1 0 0 1/3 2/3 2/3 0 1 0 0 1 1 0 0 1 1 4 2 Ratkaisu: (x 1, x 2, x 3, x 4, s 1 ) = (2/3,1,2,0,0) Objektifunktion arvo: 1 26
Ratkaisu ei ole kokonaislukuratkaisu, joten lisätään leikkaustasorajoite: Ensimmäiseltä rajoiteriviltä saadaan x 1 1 3 x 4 + 2 3 s 1 = 2 3 = 2 3 x 4 + 2 3 s 1 2 3 Lisätään tämä simplex-taulukkoon muodossa 2 3 x 4 2 3 s 1 + s 2 = 2 3 27
= x 1 x 2 x 3 x 4 s 1 s 2 0 0 0 0 1 0 1 1 0 0 1/3 2/3 0 2/3 0 1 0 0 1 0 1 0 0 1 1 4 0 2 0 0 0 2/3 2/3 1 2/3 Taulukon perusratkaisu muunnetaan sallituksi duaali-simplex-algoritmilla 28
Yksi duaali-simplex-iteraatio: 0 0 0 0 1 0 1 1 0 0 1/3 2/3 0 2/3 0 1 0 0 1 0 1 0 0 1 1 4 0 2 0 0 0 2/3 2/3 1 2/3 0 0 0 0 1 0 1 1 0 0 0 1 1/2 1 0 1 0 0 1 0 1 0 0 1 0 5 3/2 1 0 0 0 1 1 3/2 1 29
Optimaalinen simplex-taulukko: x 1 x 2 x 3 x 4 s 1 s 2 0 0 0 0 1 0 1 1 0 0 0 1 1/2 1 0 1 0 0 1 0 1 0 0 1 0 5 3/2 1 0 0 0 1 1 3/2 1 Ratkaisu: (x 1, x 2, x 3, x 4, s 1, s 2 ) = (1,1,1,1,0,0) Objektifunktion arvo: 1 30
Ratkaisu on kokonaislukuratkaisu = Alkuperäisen maksimointitehtävän ratkaisu on (x 1, x 2 ) = (1,1), jossa objektifunktion arvo on 1 31
Haarautumismenetelmä Ratkaistaan vastaava jatkuva tehtävä Jos ratkaisu on kokonaislukuratkaisu, lopetetaan Muuten jaetaan sallittu alue uusilla rajoitteilla kahteen osaan siten, että jatkuva ratkaisu ei kuulu kumpaankaan Saadaan kaksi uutta tehtävää, jotka ratkaistaan Näin jatketaan kunnes uusia ratkaistavia tehtäviä ei enää ole 32
Maksimointitehtävä: Jos löydetään sallittu kokonaislukuratkaisu, saadaan alaraja kokonaislukuoptimointitehtävän objektifunktion arvolle = Niitä tehtäviä, joissa objektifunktion arvo on pienempi, ei enää tarvitse jakaa uusiksi tehtäviksi Minimointitehtävä: Jos löydetään sallittu kokonaislukuratkaisu, saadaan yläraja kokonaislukuoptimointitehtävän objektifunktion arvolle = Niitä tehtäviä, joissa objektifunktion arvo on suurempi, ei enää tarvitse jakaa uusiksi tehtäviksi 33
Esimerkki: max 5x 1 + 8x 2 kun x 1 + x 2 6 5x 1 + 9x 2 45 x 1, x 2 N Vastaava jatkuva tehtävä, tehtävä 0 : max 5x 1 + 8x 2 kun x 1 + x 2 6 5x 1 + 9x 2 45 x 1, x 2 0 34
Tehtävän 0 ratkaisu: (x 1, x 2 ) = (9/4,15/4) = (2.25,3.75) Objektifunktion arvo: 165/4 = 41.25 Ratkaisu ei ole kokonaislukuratkaisu, joten jaetaan sallittu alue kahteen osaan muuttujan x 2 suhteen = x 2 3 ja x 2 4 Saadaan kaksi uutta tehtävää, tehtävät 1 ja 2 : max 5x 1 + 8x 2 max 5x 1 + 8x 2 kun x 1 + x 2 6 kun x 1 + x 2 6 5x 1 + 9x 2 45 5x 1 + 9x 2 45 x 2 3 x 2 4 x 1, x 2 0 x 1, x 2 0 35
Tehtävän 1 ratkaisu: (x 1, x 2 ) = (3,3) Objektifunktion arvo: 39 Ratkaisu on kokonaislukuratkaisu, joten tätä tehtävää ei enää jaeta Alaraja kokonaislukuoptimointitehtävän objektifunktion arvolle on 39 Tehtävän 2 ratkaisu: (x 1, x 2 ) = (9/5,4) = (1.8,4) Objektifunktion arvo: 41 Ratkaisu ei ole kokonaislukuratkaisu, ja objektifunktion arvo on suurempi kuin alaraja 39, joten jaetaan sallittu alue kahteen osaan muuttujan x 1 suhteen = x 1 1 ja x 1 2 36
Tehtävä 0: x 1 = 9/4 x 2 = 15/4 z = 165/4 x 2 3 x 2 4 Tehtävä 1: x 1 = 3 x 2 = 3 z = 39 Tehtävä 2: x 1 = 9/5 x 2 = 4 z = 41 x 1 1 x 1 2 37
Jaetaan tehtävä 2 tehtäviksi 3 ja 4 : max 5x 1 + 8x 2 max 5x 1 + 8x 2 kun x 1 + x 2 6 kun x 1 + x 2 6 5x 1 + 9x 2 45 5x 1 + 9x 2 45 x 2 4 x 2 4 x 1 1 x 1 2 x 1, x 2 0 x 1, x 2 0 Tehtävän 3 ratkaisu: (x 1, x 2 ) = (1,40/9) (1,4.44) Objektifunktion arvo: 365/9 40.56 Ratkaisu ei ole kokonaislukuratkaisu, ja objektifunktion arvo on suurempi kuin alaraja 39, joten jaetaan sallittu alue kahteen osaan muuttujan x 2 suhteen = x 2 4 ja x 2 5 Tehtävällä 4 ei ole ratkaisua, joten tätä tehtävää ei enää jaeta 38
Tehtävä 2: x 1 = 9/5 x 2 = 4 z = 41 x 1 1 x 1 2 Tehtävä 3: x 1 = 1 x 2 = 40/9 z = 365/9 Tehtävä 4: Ei ratkaisua x 2 4 x 2 5 39
Jaetaan tehtävä 3 tehtäviksi 5 ja 6 : max 5x 1 + 8x 2 max 5x 1 + 8x 2 kun x 1 + x 2 6 kun x 1 + x 2 6 5x 1 + 9x 2 45 5x 1 + 9x 2 45 x 2 4 x 2 4 x 1 1 x 1 1 x 2 4 x 2 5 x 1, x 2 0 x 1, x 2 0 40
Tehtävän 5 ratkaisu: (x 1, x 2 ) = (1,4) Objektifunktion arvo: 37 Ratkaisu on kokonaislukuratkaisu, joten tätä tehtävää ei enää jaeta Objektifunktion arvo on pienempi kuin alaraja 39, joten tämä ratkaisu ei ole optimaalinen Tehtävän 6 ratkaisu: (x 1, x 2 ) = (0,5) Objektifunktion arvo: 40 Ratkaisu on kokonaislukuratkaisu, joten tätä tehtävää ei enää jaeta Uusi alaraja kokonaislukuoptimointitehtävän objektifunktion arvolle on 40 41
Tehtävä 3: x 1 = 1 x 2 = 40/9 z = 365/9 x 2 4 x 2 5 Tehtävä 5: x 1 = 1 x 2 = 4 z = 37 Tehtävä 6: x 1 = 0 x 2 = 5 z = 40 42
Ratkaistavia tehtäviä ei enää ole = lopetetaan Paras löydetty kokonaislukuratkaisu on alkuperäisen kokonaislukuoptimointitehtävän ratkaisu: Tehtävä 6 = Ratkaisu on (x 1, x 2 ) = (0,5), jossa objektifunktion arvo on 40 43
Huomautuksia haarautumismenetelmästä Selvästi algoritmi konvergoi: Pahimmassa tapauksessa kaikille kokonaislukumuuttujille tulee rajoitteet x j a j ja x j a j Se, missä järjestyksessä uudet tehtävät käsitellään, vaikuttaa menetelmän nopeuteen ja muistitilan tarpeeseen Seuraavaksi jaettavan tehtävän valinta: Valitaan esimerkiksi se, jossa objektifunktion arvo on paras (maksimointitehtävässä suurin, minimointitehtävässä pienin) Haaroittavan muuttujan valinta: Valitaan esimerkiksi se, jonka murto-osa on kauimpana kokonaislukuarvosta Tehtävät voidaan jakaa myös useammaksi kuin kahdeksi uudeksi tehtäväksi 44
Kapsäkkiongelman ratkaisu haarautumismenetelmällä Esimerkki: max 12x 1 + 12x 2 + 9x 3 + 15x 4 + 90x 5 + 26x 6 + 112x 7 kun 3x 1 + 4x 2 + 3x 3 + 3x 4 + 15x 5 + 13x 6 + 16x 7 35 x 1, x 2, x 3, x 4, x 5, x 6, x 7 = 0 tai 1 Numeroidaan muuttujat uudelleen siten, että ne ovat suhteen c j /a j mukaan laskevassa järjestyksessä: max 112y 1 + 90y 2 + 15y 3 + 12y 4 + 9y 5 + 12y 6 + 26y 7 kun 16y 1 + 15y 2 + 3y 3 + 3y 4 + 3y 5 + 4y 6 + 13y 7 35 y 1, y 2, y 3, y 4, y 5, y 6, y 7 = 0 tai 1 45
Kun muuttujat on numeroitu tällä tavoin, vastaavan jatkuvan tehtävän (missä 0 y j 1 kaikilla j) ratkaisu löytyy seuraavasti: Asetetaan järjestyksessä y 1 = = y k 1 = 1 niin pitkälle kuin rajoitteen takia on mahdollista Asetetaan seuraavan muuttujan y k arvoksi sellainen murtoluku, että rajoite toteutuu yhtäsuurudella Asetetaan loput muuttujat y k+1 = = y n = 0 46
Tehtävä 1: max 112y 1 + 90y 2 + 15y 3 + 12y 4 + 9y 5 + 12y 6 + 26y 7 kun 16y 1 + 15y 2 + 3y 3 + 3y 4 + 3y 5 + 4y 6 + 13y 7 35 0 y j 1 j = 1,...,7 Tehtävän 1 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,1,1/3,0,0,0) Objektifunktion arvo: 221 Ratkaisu ei ole kokonaislukuratkaisu, joten jaetaan sallittu alue kahteen osaan muuttujan y 4 suhteen = y 4 = 0 ja y 4 = 1 47
Saadaan kaksi uutta tehtävää, tehtävä 2... : max 112y 1 + 90y 2 + 15y 3 + 12y 4 + 9y 5 + 12y 6 + 26y 7 kun 16y 1 + 15y 2 + 3y 3 + 3y 4 + 3y 5 + 4y 6 + 13y 7 35 y 4 = 0 0 y j 1 j = 1,...,7 Tehtävän 2 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,1,0,1/3,0,0) Objektifunktion arvo: 220 Ratkaisu ei ole kokonaislukuratkaisu, joten jaetaan sallittu alue kahteen osaan muuttujan y 5 suhteen = y 5 = 0 ja y 5 = 1 48
... ja tehtävä 3 : max 112y 1 + 90y 2 + 15y 3 + 12y 4 + 9y 5 + 12y 6 + 26y 7 kun 16y 1 + 15y 2 + 3y 3 + 3y 4 + 3y 5 + 4y 6 + 13y 7 35 y 4 = 1 0 y j 1 j = 1,...,7 Tehtävän 3 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,1/3,1,0,0,0) Objektifunktion arvo: 219 Ratkaisu ei ole kokonaislukuratkaisu, joten jaetaan sallittu alue kahteen osaan muuttujan y 3 suhteen = y 3 = 0 ja y 3 = 1 49
Tehtävä 1: y 1 = y 2 = y 3 = 1 y 4 = 1/3 z = 221 y 4 = 0 y 4 = 1 Tehtävä 2: y 1 = y 2 = y 3 = 1 y 5 = 1/3 z = 220 Tehtävä 3: y 1 = y 2 = y 4 = 1 y 3 = 1/3 z = 219 y 5 = 0 y 5 = 1 y 3 = 0 y 3 = 1 50
Jakamatta on tehtävät 2 ja 3, joista tehtävässä 2 on paras objektifunktion arvo = Jaetaan tehtävä 2 tehtäväksi 4 (y 5 = 0) ja tehtäväksi 5 (y 5 = 1) Tehtävän 4 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,1,0,0,1/4,0) Objektifunktion arvo: 220 Ratkaisu ei ole kokonaislukuratkaisu, joten jaetaan sallittu alue kahteen osaan muuttujan y 6 suhteen = y 6 = 0 ja y 6 = 1 Tehtävän 5 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,1/3,0,1,0,0) Objektifunktion arvo: 216 Ratkaisu ei ole kokonaislukuratkaisu, joten jaetaan sallittu alue kahteen osaan muuttujan y 3 suhteen = y 3 = 0 ja y 3 = 1 (myöhemmin osoittautuu, että tätä jakoa ei tarvitse tehdä) 51
Tehtävä 2: y 1 = y 2 = y 3 = 1 y 5 = 1/3 z = 220 y 5 = 0 y 5 = 1 Tehtävä 4: y 1 = y 2 = y 3 = 1 y 6 = 1/4 z = 220 Tehtävä 5: y 1 = y 2 = y 5 = 1 y 3 = 1/3 z = 216 y 6 = 0 y 6 = 1 52
Jakamatta on tehtävät 3, 4 ja 5, joista tehtävässä 4 on paras objektifunktion arvo = Jaetaan tehtävä 4 tehtäväksi 6 (y 6 = 0) ja tehtäväksi 7 (y 6 = 1) Tehtävän 6 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,1,0,0,0,1/13) Objektifunktion arvo: 219 Ratkaisu ei ole kokonaislukuratkaisu, joten jaetaan sallittu alue kahteen osaan muuttujan y 7 suhteen = y 7 = 0 ja y 7 = 1 Tehtävän 7 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,0,0,0,1,0) Objektifunktion arvo: 214 Ratkaisu on kokonaislukuratkaisu, joten tätä tehtävää ei enää jaeta Alaraja kokonaislukuoptimointitehtävän objektifunktion arvolle on 214 53
Tehtävä 4: y 1 = y 2 = y 3 = 1 y 6 = 1/4 z = 220 y 6 = 0 y 6 = 1 Tehtävä 6: y 1 = y 2 = y 3 = 1 y 7 = 1/13 z = 219 Tehtävä 7: y 1 = y 2 = y 6 = 1 z = 214 y 7 = 0 y 7 = 1 54
Jakamatta on tehtävät 3, 5 ja 6, joista tehtävässä 6 on paras objektifunktion arvo = Jaetaan tehtävä 6 tehtäväksi 8 (y 7 = 0) ja tehtäväksi 9 (y 7 = 1) Tehtävän 8 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,1,0,0,0,0) Objektifunktion arvo: 217 Ratkaisu on kokonaislukuratkaisu, joten tätä tehtävää ei enää jaeta Uusi alaraja kokonaislukuoptimointitehtävän objektifunktion arvolle on 217 = Tehtävää 5 ei jaeta, koska siinä objektifunktion arvo on huonompi Tehtävän 9 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,2/5,0,0,0,0,1) Objektifunktion arvo: 174 Ratkaisu ei ole kokonaislukuratkaisu, mutta objektifunktion arvo on huonompi kuin alaraja 217, joten tätä tehtävää ei enää jaeta 55
Tehtävä 6: y 1 = y 2 = y 3 = 1 y 7 = 1/13 z = 219 y 7 = 0 y 7 = 1 Tehtävä 8: y 1 = y 2 = y 3 = 1 z = 217 Tehtävä 9: y 1 = y 7 = 1 y 2 = 2/5 z = 174 56
Jakamatta on tehtävä 3 = Jaetaan tehtävä 3 tehtäväksi 10 (y 3 = 0) ja tehtäväksi 11 (y 3 = 1) Tehtävän 10 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,0,1,1/3,0,0) Objektifunktion arvo: 217 Ratkaisu ei ole kokonaislukuratkaisu, mutta objektifunktion arvo on sama kuin alaraja 217, joten tätä tehtävää ei enää jaeta Tehtävän 11 ratkaisu: (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,13/15,1,1,0,0,0) Objektifunktion arvo: 217 Ratkaisu ei ole kokonaislukuratkaisu, mutta objektifunktion arvo on sama kuin alaraja 217, joten tätä tehtävää ei enää jaeta 57
Tehtävä 3: y 1 = y 2 = y 4 = 1 y 3 = 1/3 z = 219 y 3 = 0 y 3 = 1 Tehtävä 10: y 1 = y 2 = y 4 = 1 y 5 = 1/3 z = 217 Tehtävä 11: y 1 = y 3 = y 4 = 1 y 2 = 13/15 z = 217 58
Ratkaistavia tehtäviä ei enää ole = lopetetaan Paras löydetty kokonaislukuratkaisu on alkuperäisen kokonaislukuoptimointitehtävän ratkaisu: Tehtävä 8 = Ratkaisu on (y 1, y 2, y 3, y 4, y 5, y 6, y 7 ) = (1,1,1,0,0,0,0), jossa objektifunktion arvo on 217 59
Huomautus rajoitteiden lukumäärästä Optimointiohjelmistoissa, jotka käyttävät haarautumismenetelmää, kannattaa yleensä rajata sallittua aluetta mahdollisimman paljon = Silloin tehtävä ratkeaa yleensä nopeammin Esimerkiksi, jos y on 0 1-kokonaislukumuuttuja, niin rajoite x 1 + + x n Ty 0 missä T = T 1 + + T n kannattaa kirjoittaa muodossa x 1 T 1 y 0. x n T n y 0 60