Luento 7: Kokonaislukuoptimointi



Samankaltaiset tiedostot
Luento 7: Kokonaislukuoptimointi

Kokonaislukuoptimointi

Esimerkkejä kokonaislukuoptimointiongelmista

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

Talousmatematiikan perusteet: Luento 11. Lineaarinen optimointitehtävä Graafinen ratkaisu Ratkaisu Excel Solverilla

Harjoitus 8: Excel - Optimointi

Talousmatematiikan perusteet: Luento 12. Lineaarinen optimointitehtävä Graafinen ratkaisu Ratkaisu Excel Solverilla

Luetteloivat ja heuristiset menetelmät. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Harjoitus 6 ( )

Mat Lineaarinen ohjelmointi

Demo 1: Branch & Bound

Malliratkaisut Demot

Kokonaislukuoptiomointi Leikkaustasomenetelmät

Demo 1: Simplex-menetelmä

Mat Investointiteoria Laskuharjoitus 4/2008, Ratkaisut

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

8. Ensimmäisen käyvän kantaratkaisun haku

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Luento 2: Optimointitehtävän graafinen ratkaiseminen. LP-malli.

Luento 4: Lineaarisen tehtävän duaali

Malliratkaisut Demot

Harjoitus 4: Matlab - Optimization Toolbox

Mat Lineaarinen ohjelmointi

Lineaarinen optimointitehtävä

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Luento 2: Optimointitehtävän graafinen ratkaiseminen. LP-malli.

Harjoitus 5 ( )

Malliratkaisut Demot

Malliratkaisut Demot

Malliratkaisut Demot

4. Kokonaislukutehtävän ja LP:n yhteyksiä

Duaalisuus kokonaislukuoptimoinnissa. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Harjoitus 6 ( )

min x x2 2 x 1 + x 2 1 = 0 (1) 2x1 1, h = f = 4x 2 2x1 + v = 0 4x 2 + v = 0 min x x3 2 x1 = ± v/3 = ±a x 2 = ± v/3 = ±a, a > 0 0 6x 2

Kombinatorinen optimointi

Malliratkaisut Demot

Johdatus verkkoteoriaan 4. luento

Optimoinnin sovellukset

1 Rajoitettu optimointi I

Ovatko seuraavat väittämät oikein vai väärin? Perustele vastauksesi.

1 Johdanto LP tehtävän luonteen tarkastelua Johdanto herkkyysanalyysiin Optimiarvon funktio ja marginaalihinta

Algoritmit 2. Luento 13 Ti Timo Männikkö

Luento 11: Rajoitusehdot. Ulkopistemenetelmät

Harjoitus 3 ( )

Talousmatematiikan perusteet: Luento 14. Rajoitettu optimointi Lagrangen menetelmä: yksi yhtälörajoitus Lagrangen menetelmä: monta yhtälörajoitusta

Malliratkaisut Demot

30A01000 Taulukkolaskenta ja analytiikka Luku 8: Lineaarinen optimointi ja sen sovellukset

Talousmatematiikan perusteet: Luento 15. Rajoitettu optimointi Lagrangen menetelmä Lagrangen kerroin ja varjohinta

Harjoitus 5 ( )

Tentissä on viisi tehtävää, jotka arvosteellaan asteikolla 0-6. Tehtävien alakohdat ovat keskenään samanarvoisia ellei toisin mainita.

Luento 3: Simplex-menetelmä

1. Lineaarinen optimointi

Piiri K 1 K 2 K 3 K 4 R R

Malliratkaisut Demo 1

Malliratkaisut Demo 4

Luento 12: Duaalitehtävä. Tarkennuksia Lagrangen kertoimen tulkintaan. Hajautettu optimointi.

Harjoitus 3 ( )

Lineaarinen optimointi. Harjoitus 6-7, Olkoon A R m n, x, c R ja b R m. Osoita, että LP-tehtävän. c T x = min!

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä

Luento 12: Duaalitehtävä. Tarkennuksia Lagrangen kertoimen tulkintaan. Hajautettu optimointi.

b 1. b m ) + ( 2b Ax) + (b b)

Malliratkaisut Demo 4

Operatioanalyysi 2011, Harjoitus 3, viikko 39

Algoritmit 2. Luento 11 Ti Timo Männikkö

Kuljetustehtävä. Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan. Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij

Trimmitysongelman LP-relaksaation ratkaiseminen sarakkeita generoivalla algoritmilla ja brute-force-menetelmällä

Simplex-algoritmi. T Informaatiotekniikan seminaari , Susanna Moisala

Mat Lineaarinen ohjelmointi

Lineaarinen optimointitehtävä

Johdatus verkkoteoriaan luento Netspace

Implementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely)

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Algoritmit 2. Luento 13 Ti Timo Männikkö

Luento 6: Monitavoiteoptimointi

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

Demo 1: Lineaarisen tehtävän ratkaiseminen graafisesti ja Solverilla

MS-C2105 Optimoinnin perusteet Malliratkaisut 4

Projektiportfolion valinta

Luento 6: Monitavoitteinen optimointi

Kimppu-suodatus-menetelmä

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

Search space traversal using metaheuristics

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

Harjoitus 7: vastausvihjeet

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Talousmatematiikan perusteet

Kokonaislukuoptimointi hissiryhmän ohjauksessa

Kokonaislukuoptimointi

Lineaaristen monitavoiteoptimointitehtävien

Uolevin reitti. Kuvaus. Syöte (stdin) Tuloste (stdout) Esimerkki 1. Esimerkki 2

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Algoritmit 1. Luento 10 Ke Timo Männikkö

12. Hessen matriisi. Ääriarvoteoriaa

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Harjoitus 1 ( )

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Mat Lineaarinen ohjelmointi

73125 MATEMAATTINEN OPTIMOINTITEORIA 2

Transkriptio:

Luento 7: Kokonaislukuoptimointi Lineaarisessa optimointitehtävässä (LP) kaikki muuttujat ovat jatkuvia. Kokonaislukuoptimoinnin (ILP = Integer LP) tehtävässä kaikilla muuttujilla on kokonaislukurajoitus (x i Z, i). Sekalukutehtävässä kokonaislukurajoitus on osalla muuttujista. Binääritehtävässä (BILP) kaikki muuttujat saavat arvon joko nolla tai yksi. Yleisimmin käytetty ja luotettavin menetelmä ILP-tehtävän ratkaisuun on branch-and-bound algoritmi. Leikkaavien tasojen menetelmät (cutting-plane methods) ovat myös käytettyjä, mutta vaikeampia ja epävarmempia. Niiden käytössä esiintyy myös ongelmallisia pyöristysvirheitä. Valintamuuttuja Binäärimuuttujan yleinen käyttökohde on binäärinen valinta, jossa tehdään valinta kahden päätösvaihtoehdon välillä. Tämä valinta voidaan mallintaa binäärimuuttujalla x x = {, päätös 0, päätös eli asetetaan x joko nollaksi tai yhdeksi riippuen päätösvaihtoehdosta. Tässä päätösvaihtoehto voi tarkoittaa melkein mitä tahansa. Päätösmuuttujien riippuvuuksia Binääriset päätösvaihtoehdot voivat olla riippuvaisia toisistaan. Rajoitteella () voidaan rajata, että päätösmuuttujista x i enintään a kappaletta saa arvon. Jos halutaan, että muutttujista x i täsmälleen a kappaletta saa arvon, muutetaan epäyhtälö yhtälörajoitteeksi. n x i a, a {0,,...,n} () i=

Olkoon riippuvuussuhde sellainen, että joko molemmat tai ei kumpikaan vaihtoehdoista x ja y voi tapahtua. Riippuvuussuhde voidaan mallintaa rajoitusehdolla () x y = 0 () Toisin sanoen tämä on ekvivalenssirelaatio, (x y). Esimerkiksi, jos x = 0, niin y = 0 ja jos x =, niin y =. Vastaavasti implikaatio (x y) voidaan mallintaa rajoitusehdolla (3) x y (3) Esimerkiksi, jos x = 0, niin y = 0 tai y = ja jos x =, niin y =. Olkoon z riippuvainen binäärimuuttujasta x:stä siten, että jos x = 0 z = 0, muutoin 0 z,u R. Tämä suhde voidaan esittää seuraavan epäyhtälöryhmän avulla z ux 0 z 0 (4) Esitellään nyt muutamia kokonaislukuoptimoinnin sovelluksia. Selkärepun täyttöongelma Selkärepun täyttöongelma (Knapsack Problem) kuvaa erämaavaeltajan vaikeutta valita tarpeellisimmat esineet reppuunsa vaellusta varten. Vaeltaja voi kantaa vain K kilogramman kuorman. Hänen on valittava mukaansa osa esineistä kaikkiaan n esineen joukosta, joista jokaisella esineellä j on massa m j ja hyöty c j matkan aikana. Vaeltajan tarkoitus on maksimoida esineistä saatava kokonaishyöty. Binäärimuuttuja x i saa arvon yksi, jos esine i otetaan mukaan, muuten nolla. Vaeltajan ongelma voidaan esittää binääritehtävänä muodossa

max x s.e. n c j x j (a) n m j x j K (b) j= j= x j {0, } j (c) (5) Työnjako-ongelma Työnjako-ongelmassa (AP = Assignment Problem) yhtiöllä on m työtehtävää ja n työntekijää tai konetta, missä n m. Jokainen työ tehdään yhden työntekijän voimin ja jokainen työntekijä voi suorittaa korkeintaan yhden työtehtävän. Kaikki työtehtävät on suoritettava. Jos työntekijä i tekee työtehtävän j, siitä aiheutuu kustannus c ij. Tarkoituksena on minimoida kokonaiskustannus. Binäärimuuttuja x ij saa arvon yksi, mikäli työtehtävän j suorittaa työntekijä i, muuten nolla. Tehtävä on kokonaisuudessaan muotoa min x s.e. m n c ij x ij (a) n x ij = j =,...,m (b) i= m x ij i =,...,n (c) i= j= j= x ij {0, } i,j (d) (6) Rajoiteella (b) saadaan varmistettua, että jokainen työtehtävä j tulee suoritetuksi ja rajoitteella (c) saadaan huomioitua, että jokainen työntekijä i voi suorittaa korkeintaa yhden työtehtävän. Täydellinen sovitusongelma Sovitusongelmassa (Perfect Matching Problem) yrityksellä on työntekijöitä parillinen määrä n ja tehtävänä on muodostaa työntekijöistä työpareja kokonaistehokkuus maksimoiden. Olkoon c ij työntekijöiden i ja j välinen yhteistyötehokkuus. ja binäärimuuttuja x ij saa arvon yksi, kun työntekijät i ja j muodostavat työparin, muuten nolla. Tehtävä on muotoa 3

max x s.e. n n i= j=i+ i k= c ij x ij k=i+ (a) x ki + n x ik = i =,..., n (b) x ij {0, } i,j (c) (7) Rajoitteella (b) saadaan varmistettua, että jokaisella työntekijällä on vain yksi pari. Tehtaan sijoitusongelma Tehtaan sijoitusongelmassa (Facility Location Problem) on joukko asiakkaita I = {,...,m} ja joukko mahdollisia tehtaan sijoituspaikkoja J = {,...,n}. Tehtaan sijoittaminen paikkaan j tuottaa kustannuksen c j,j J ja asiakkaan i kysynnän tyydyttäminen paikasta j tuottaa kustannuksen d ij. Tarkoituksena on valita sopiva osajoukko sijoituspaikoista tehtaita varten kokonaiskustannuksen minimoiden. Binäärimuuttuja x j saa arvon yksi, jos tehdas sijoitetaan paikkaan j, muuten nolla. Olkoon paikkaan j sijoitetun tehtaan kapasiteetti u j ja asiakkaan i kysyntä b i. Määritellään lisäksi jatkuva muuttuja y ij, joka osoittaa toimitusten määrää paikasta j asiakkaalle i. Tehtävä on muotoa min x,y s.e. n c j x j + m j= i= j= n d ij y ij (a) n y ij = b i, i I (b) j= m y ij u j x j, j J (c) i= y ij 0, i,j (d) x j {0, } j (e) (8) Rajoitteella (b) varmistetaan että asiakkaiden kysynnät tulee tyyydytettyä. Tehtaan kapasiteetin ylittyminen saadaan estettyä rajoitteella (c). Se myös kertoo sen, että jos paikkaan j ei tule tehdasta (x j = 0), tavaravirtaus paikasta j on nolla. 4

Kauppamatkustajan ongelma Kauppamatkustajan ongelma (TSP = Traveling Salesman Problem) on ehkä tunnetuin kombinatorinen optimointitehtävä. Kauppamatkustaja aloittaa matkustamisen kotipaikkakunnalta, vierailee etukäteen määritellyissä kaupungeissa ja palaa takaisin lähtöpaikkaan. TSP:ssä on tarkoitus löytää kokonaiskustannuksen minimoiva reitti siten, että jokaisessa kaupungissa on vierailtu vain kerran. Olkoon kaupunkien lukumäärä N ja c ij kaupunkien i ja j välisen kaaren, esimerkiksi tien tai lentoreitin kustannus. Kustannuksena voi olla etäisyys, raha, aika tai näiden kombinaatio. Jos c ij = c ji, tehtävä on symmetrinen, muuten ei-symmetrinen. Olkoon binäärimuuttuja x ij yksi, jos kauppamatkustaja jatkaa kaupungista i kaupungiin j, muuten nolla. Olkoon kauppamatkustajan kotipaikkakunta kaupunki nro.. Tehtävän formulointi on min x s.e. N N c ij x ij i= j= (a) N x ij =, j =,...,n (b) i= N x ij =, i =,...,n (c) j= x ij S, S N, S N, (d) i,j σ(s) x ij {0, } (e) (9) Rajoitteilla (b) ja (c) huolehditaan siitä, että jokaiseen kaupunkiin saavutaan ja sieltä poistutaan. Alireittien muodostuminen estetään rajoitteella (d), missä joukko S on kaupungeista N valittu ei-tyhjä osajoukko ja itseisarvolla tarkoitetaan tässä yhteydessä S:n alkioiden lukumäärää. σ(s) määritellään seuraavasti: σ(s) = {(i,j) i S,j S } (0) Jos kaupunkien joukossa S pätee i,j σ(s) x ij > S, on joukossa S kehä, jolloin on siis muodostunut alireitti. Ilman rajoitetta (d) ratkaisu voisi olla kuvan mukainen. 5

Kuva : Esimerkki kahdesta alireitistä 9-kaupungin TSP:ssä Joukon peitto-, pakkaus- ja ositustehtävät. Huutokauppatehtävä Olkoon M = {,...,m} ja N = {,...,n}. Olkoon M,M,...,M n kokoelma joukon M osajoukkoja. Jokaiselle osajoukolle M j on liitetty kustannus, tai arvo, c j. Joukon N osajoukko F on peite (cover) M:lle, jos F on pakkaus (packing), jos j F M j = M. M j M k =, j,k F, j k. F on M:n ositus (partition), jos se on sekä peite että pakkaus M:lle. Osajoukon F kokonaiskustannus on j F c j. Kuvassa on havainnollistus peitteestä, osituksesta ja pakkauksesta. Peite Ositus Pakkaus Kuva : Peite, ositus ja pakkaus 6

Joukon peittotehtävässä (set-covering problem, SCP) etsitään kokonaiskustannuksen minimoiva peite F, pakkaustehtävässä (set-packing problem, SPP) kokonaiskustannuksen maksimoiva pakkaus F ja ositustehtävässä (set-partitioning problem, SPP) kokonaiskustannuksen minimoiva (maksimoiva) ositus F. Olkoon a ij =, jos i M j, muuten nolla ja x j =, jos j F. Määritellään vektorit x = (x,...,x n ), ja e = (,...,), jonka dimensio on m, sekä matriisi A, (A) ij = a ij. F on peite, pakkaus tai ositus jos ja vain jos Ax e, Ax e, Ax = e. Huutokauppatehtävä Olkoon internetissä toimivalla huutokauppiaalla M tuotetta (esim. jonkin asuinkiinteistön huonekalut). Huutokaupan periaate on seuraava: jokainen asiakas tekee M:n osajoukosta (osajoukoista) M j tarjouksen tietämättä toisten tekemistä tarjouksista. Olkoon b(m j ) korkein osajoukolle M j tehdyistä tarjouksista ja N osajoukkojen M j lukumäärä. Keille asiakkaille huutokauppiaan kannattaa myydä tuotteet tarjouksien jälkeen, jotta voitto maksimoituisi? Tämä tehtävä on joukon pakkakkaustehtävä. Olkoon a ij =, jos i M j, muuten nolla ja x j = jos osajoukko M j myydään. Huutokauppiaan tehtävä on siten: max b(m j )x j (a) jen s.e. a ij x j i M (b) () j N x j {0, } j N (c) Esimerkkejä Esimerkki Budjetointi. Kyllä - ei -rajoitus. Pääoma budjetoidaan viiteen projektiin, joista kunkin kesto on 3 vuotta. Projektien odotetut tuotot ja kustannukset sekä käytössä oleva pääoma ovat ao. taulukossa. Yritys maksimoi kokonaistuottoaan. 7

kustannukset (ME)/vuosi projekti 3 tuotto (ME) 5 8 0 4 7 0 40 3 3 9 0 4 7 4 5 5 8 6 0 30 käytettävä pääoma (ME) 5 5 5 Mitkä projektit tulisi toteuttaa? Määritellään binäärimuuttujat x j seuraavasti: x j = {, jos projekti j toteutetaan 0, jos projektia j ei toteuteta Kyllä - ei -rajoitus toteutetaan siis 0 tai arvoisilla muuttujilla. Nyt ILP-tehtävä saa muodon max z = 0x + 40x + 0x 3 + 5x 4 + 30x 5 s.t. 5x + 4x + 3x 3 + 7x 4 + 8x 5 5 x + 7x + 9x 3 + 4x 4 + 6x 5 5 8x + 0x + x 3 + x 4 + 0x 5 5 x, x, x 3, x 4, x 5 {0, } Tämä tehtävä voidaan ratkaista esim. Excel in solverilla. Ratkaisuksi saadaan x = x = x 3 = x 4 =, x 5 = 0 ja kohdefunktiolle arvo z = 95 (milj. E). Eli projektit -4 toteutetaan. ILP-tehtävän ratkaisua on mielenkiintoista verrata vastaavaan jatkuvien muuttujien, 0 x j, j, LP-tehtävään. Ratkaisu on tässä tapauksessa x = 0.5789, x = x 3 = x 4 =, x 5 = 0.7368, ja z = 08.68. Tulos on merkityksetön, koska x ja x 5 ovat desimaalilukuja eivätkä näin ollen vastaa kyllä - ei kysymykseen. Jos taas koitetaan pyöristystä, saadaan x j =, j, joka ei vastaa optimiratkaisua. Esimerkki Joko - tai -rajoitus. Yritys käyttää yhtä konetta kolmen 8

eri työtehtävän suorittamiseen. Tehtävien suoritusajat, eräpäivät ja myöhästymissakot on annettu taulukossa. työ suoritusaika (päivä) eräpäivä (päivä) myöhästymissakko (E/päivä) 5 5 9 0 3 5 35 34 Tehtävänä on määrittää töiden suorituksen aloituspäivät s.e. maksettava myöhästymissakko minimoituu. Käytetään seuraavia merkintöjä: p j = d j = tehtävän j suoritusaika tehtävän j eräpäivä Määritellään päätösmuuttujat: x j = tehtävän j aloituspäivä Tehtävässä tarvitaan kahdenlaisia rajoitusehtoja:. On estettävä töiden yhtäaikainen suorittaminen.. Eräpäivärajoitus. Töitä i ja j ei suoriteta yhtäaikaa, jos pätee: joko x i x j + p j, tai x j x i + p i Matemaattisiin algoritmeihin ei tällaista joko - tai -ehtoa voi tällaisenaan syöttää. Se on muunnettava kahdeksi aina voimassa olevaksi rajoitukseksi. Tähän tarvitaan seuraavia apumuuttujia: {, jos i suoritetaan ennen j:tä y ij = 0, jos j suoritetaan ennen i:tä Nyt voidaan muodostaa rajoitukset My ij + (x i x j ) p j, ja M( y ij ) + (x j x i ) p i, 9

missä M on riittävän suuri luku. Nyt pätee: Jos j on ennen i:tä y ij = 0, joten x i x j p j ; mutta myös M + x j x i p i, kunhan M on riittävän suuri luku. Eräpäivää vastaava rajoitus on x j + p j + s j = d j. Jos s j 0, saadaan työ valmiiksi ennen eräpäivää. Jos taas s j 0, joudutaan sakkoa maksamaan s j :n ilmoittamalta määrältä päiviä. Muuttujanvaihdolla s j = s + j s j ; s+ j, s j 0 rajoitusehto saadaan muotoon: x j + s + j s j = d j p j Koska tavoiteena on minimoida myöhästymissakoista muodostuvat kustannukset, voidaan muodostaa seuraava ILP-tehtävä. minz = 9s + s + 34s 3 s.t. x x +My 0 x x My 5 M x x 3 +My 3 5 x +x 3 My 3 5 M x x 3 +My 3 5 x +x 3 My 3 0 M x +s + s = 5 5 x +s + s = 0 x 3 +s + 3 s 3 = 35 5 x,x,x 3,s +,s,s +,s,s + 3,s 3 0 y,y 3,y 3 {0, } Valitsemalla M:n arvoksi esimerkiksi M = 000, voidaan tehtävä ratkaista jollain kokonaislukuohjelmoinnin algoritmilla. Optimiratkaisu on x = 0, x = 0, x 3 = 5, eli työ aloitetaan heti, työ päivänä 0 ja työ 3 päivänä 5. Myöhästymissakkoja joudutaan tällöin maksamaan 5 34E = 70E. 0

Branch-and-bound menetelmä (B &B - menetelmä) Branch and bound menetelmä on luotettava menetelmä ILP-tehtävien ratkaisemiseen. Siinä alkuperäisen kokonaislukutehtävän käypä joukko, joka siis muodostuu kokonaislukuvektoreista, muutetaan jatkumoksi, jolloin saadaan ILP:n sisältävä LP-tehtävä, ns. ILP:n LP-relaksaatio. Ko. LP-tehtävä ratkaistaan. Jos ratkaisu ei ole kokonaislukuvektori, tehtävään lisätään erityisrajoitukset, jolloin LP-tehtävä muutetaan kahdeksi uudeksi LP-tehtäväksi, jotka kuitenkin sisältävät alkuperäisen ILP-tehtävän käyvät kokonaislukupisteet. Ko. LP-tehtävät ratkaistaan ja menetelmää toistetaan kunnes ILPtehtävän ratkaisu löytyy. Menetelmän toiminta kuvataan seuraavan esimerkin avulla. Esimerkki Olkoon ratkaistava ILP-tehtävä max z = 5x +4x s.t. x +x 5 0x +6x 45 x,x Z + Kuvaan merkityt pisteet ovat ILP-tehtävän käypä joukko. ILP-tehtävästä muodostetaan LP-relaksaatio poistamalla kokonaislukurajoitukset. Olkoon LP0 alkuperäisen tehtävän LP-relaksaatio. LP0:n ratkaisu on x = 3.75, x =.5, z = 3.75. Tämä ratkaisu ei ole kokonaislukuarvoinen. Valitaan jokin luku x j, joka ei ole kokonaisluku, esimerkiksi x. Alueella 3 < x < 4 LP0:n käyvässä joukossa ei ole yhtään kokonaislukuratkaisua, joten ko. aluetta ei tarvitse huomioida ILP-tehtävän ratkaisua haettaessa. Seuraavaksi muodostetaan LP0:sta kaksi alitehtävää LP ja LP seuraavasti: LP:n rajoituehdot = LP0:n rajoituehdot + (x 3) LP:n rajoituehdot = LP0:n rajoituehdot + (x 4) LP:n ja LP:n käyvät joukot on esitetty kuvassa. LP:tä ja LP:ta tutkitaan erillisinä tehtävinä.

8 x 7 6 Käypiä kokonaislukupisteitä 5 4 3 Optimipiste ilman kokonaislukurajoitusta x =3.75, x =.5, z=3.75 0 3 4 5 6 x Kuva 3: Alkuperäisen ILP-tehtävän käypä joukko, sekä LP-relaksaation LP0 optimiratkaisu. x 6 5 LP x < 3 x > 4 4 3 LP 0 3 4 5 x Kuva 4: LP0:sta muodostetaan relaksaatiot LP ja LP lisäämällä rajoitukset x 3 ja x 4. Valitaan sattumanvaraisesti ensin tutkittavaksi LP. Tehtävä on max z = 5x + 4x s.t. x + x 5 0x + 6x 45 x 3 x,x 0

Tehtävän ratkaisuksi saadaan x = 3x =, z = 3, mikä täyttää myös kokonaislukurajoitukset. Nyt LP:n käypää joukkoa ei enää tarvitse tutkia, sillä sieltä ei voi löytyä tätä parempaa kokonaislukuratkaisua. Emme kuitenkaan voi vielä pitää löydettyä ratkaisua alkuperäisen ILP-tehtävän ratkaisuna, sillä LP:n käyvästä joukosta saattaa löytyä vielä parempi kokonaislukuratkaisu. Saatu ratkaisu on kuitenkin eräs alaraja (lower bound) ILP-tehtävän kohdefunktion optimiarvolle. Alarajaa päivitetään algoritmin edetessä sitä mukaa, kun parempia kokonaislukuratkaisuja löytyy. Nyt on tutkittava, löytyykö LP:n käyvästä joukosta parempaa kokonaislukuratkaisua. Havaitaan, että tehtävän LP0 optimiratkaisussa z=3.75, kohdefunktion kertoimet ovat kokonaislukuja. Näin ollen z=3 on suurin kohdefunktion arvo, mitä kokonaislukuratkaisulla voidaan saavuttaa. Voimme siis todeta, tutkimatta tehtävää LP, että piste x = 3, x =, z = 3 on alkuperäisen ILP-tahtävän ratkaisu. Jos olisimme alkaneet tutkia LP:ta ennen LP:tä, ja jakaneet LP:ta aliongelmiin kunnes löytyy kokonaislukuratkaisu ja vastaava alaraja, olisi algoritmi edennyt kuvassa 3 esitetyn puun mukaan. B & B-algoritmin vaiheet: Maksimointitehtävä, alaraja alussa. (minimoinnissa alaraja korvataan ylärajalla, yläraja alussa ) Askel : Muodostetaan ILP-tehtävästä LP-tehtävä poistamalla kokonaislukurajoitukset. Siirrytään askeleeseen. Askel : Ratkaistaan tutkittava LP-tehtävä. Mikäli ratkaisu on kokonaislukuvektori, on kaksi vaihtoehtoa. Jos ratkaisu on parempi kuin voimassa oleva alaraja, korvataan alaraja tällä kohdefunktion arvolla.. Jos ratkaisu on huonompi kuin voimassa oleva alaraja, säilytetään vanha alaraja. Jos kaikki alitehtävät on tutkittu, on voimassa olevaa alarajaa vastaava piste ILP-tehtävän optimi ja algoritmi päättyy. Jos alitehtäviä on vielä tutkimatta, valitaan niistä yksi tutkittavaksi ja siirrytään askeleen alkuun. Mikäli löydetty ratkaisu ei toteuta kokonaislukurajoituksia, on myös kaksi 3

LP 0 x =3.75, x =.5, z=3.75 x <3 x >4 7 LP x = 3, x =, z = 3 Alaraja (optimi) 4 x <0 LP x = 4, x =0.83, z=3.33 x > 3 LP 3 x =4.5, x =0, z=.5 LP 4 Ei käypää ratkaisua 6 x <4 x >5 5 LP 5 x = 4, x = 0, z = 0 Alaraja LP 6 Ei käypää ratkaisua Kuva 5: Algoritmin muodostama puu, kun tarkastellaan ensin aliongelmaa LP. Numerot laatikoiden yllä kertovat tehtävien ratkaisujärjestyksen. vaihtoehtoa. Jos ratkaisu on parempi kuin voimassa oleva alaraja, siirrytään askeleeseen 3.. Jos ratkaisu on huonompi kuin voimassa oleva alaraja, valitaan uusi tutkimaton alitehtävä ja siirrytään askeleen alkuun. Jos kaikki alitehtävät on tutkittu, on voimassa olevaa alarajaa vastaava piste ILPtehtävän optimi ja algoritmi päättyy. Askel 3: Valitaan yksi muuttuja x i, jonka arvo tutkittavan LP-tehtävän optimissa ei ole kokonaisluku. Muodostetaan LP-tehtävästä kaksi alitehtävää lisäämällä tätä muuttujaa koskevat rajoitukset x i a ja x i a +, 4

missä a Z ja muuttujan x i arvolle LP-tehtävän optimissa x i pätee a < x i < a +. Valitaan alitehtävistä toinen tutkittavaksi ja siirrytään askeleeseen. 5