Luento 7: Kokonaislukuoptimointi

Samankaltaiset tiedostot
Luento 7: Kokonaislukuoptimointi

Kokonaislukuoptimointi

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

Esimerkkejä kokonaislukuoptimointiongelmista

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

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

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

Demo 1: Branch & Bound

Kokonaislukuoptiomointi Leikkaustasomenetelmät

Harjoitus 6 ( )

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

Demo 1: Simplex-menetelmä

Mat Lineaarinen ohjelmointi

Malliratkaisut Demot

Harjoitus 8: Excel - Optimointi

Mat Investointiteoria Laskuharjoitus 4/2008, Ratkaisut

Mat Lineaarinen ohjelmointi

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

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

Malliratkaisut Demot

Luento 4: Lineaarisen tehtävän duaali

Harjoitus 5 ( )

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

Lineaarinen optimointitehtävä

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

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

Malliratkaisut Demot

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Johdatus verkkoteoriaan 4. luento

Harjoitus 6 ( )

Malliratkaisut Demot

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

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Malliratkaisut Demot

Kombinatorinen optimointi

Malliratkaisut Demot

Harjoitus 5 ( )

Harjoitus 3 ( )

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

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

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

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

Optimoinnin sovellukset

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

Luento 3: Simplex-menetelmä

Piiri K 1 K 2 K 3 K 4 R R

Harjoitus 4: Matlab - Optimization Toolbox

Algoritmit 2. Luento 13 Ti Timo Männikkö

1 Rajoitettu optimointi I

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

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

Malliratkaisut Demot

Algoritmit 2. Luento 11 Ti Timo Männikkö

Malliratkaisut Demo 4

Harjoitus 3 ( )

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

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

1. Lineaarinen optimointi

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

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

Luento 11: Rajoitusehdot. Ulkopistemenetelmät

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

Simplex-algoritmi. T Informaatiotekniikan seminaari , Susanna Moisala

Mat Lineaarinen ohjelmointi

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

Johdatus verkkoteoriaan luento Netspace

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

Malliratkaisut Demo 1

Kokonaislukuoptimointi

Malliratkaisut Demo 4

Kimppu-suodatus-menetelmä

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

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

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

Projektiportfolion valinta

MS-C2105 Optimoinnin perusteet Malliratkaisut 4

Lineaarinen optimointitehtävä

Kokonaislukuoptimointi hissiryhmän ohjauksessa

Operatioanalyysi 2011, Harjoitus 3, viikko 39

Search space traversal using metaheuristics

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

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

Liittomatriisi. Liittomatriisi. Määritelmä 16 Olkoon A 2 M(n, n). Matriisin A liittomatriisi on cof A 2 M(n, n), missä. 1) i+j det A ij.

Algoritmit 1. Luento 10 Ke Timo Männikkö

Luento 6: Monitavoitteinen optimointi

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

Totaalisesti unimodulaariset matriisit voidaan osoittaa olevan rakennettavissa oleellisesti verkkomalleihin liittyvistä matriiseista

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

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!

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

Jälki- ja herkkyysanalyysi. Tutkitaan eri kertoimien ja vakioiden arvoissa tapahtuvien muutosten vaikutusta optimiratkaisuun

Luento 6: Monitavoiteoptimointi

Harjoitus 7: vastausvihjeet

Mat Lineaarinen ohjelmointi

Numeeriset menetelmät

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 = { 1, päätös 1 0, päätös 2, eli asetetaan x joko nollaksi tai ykköseksi riippuen päätösvaihtoehdosta. Päätösmuuttujien riippuvuuksia Binääriset päätösvaihtoehdot voivat olla riippuvaisia toisistaan. Rajoitteella (1) voidaan rajata, että päätösmuuttujista x i enintään a kappaletta saa arvon 1. Jos halutaan, että muutttujista x i täsmälleen a kappaletta saa arvon 1, muutetaan epäyhtälö yhtälörajoitteeksi. x i a, a {0, 1,..., n} (1) i=1 1

Olkoon riippuvuussuhde sellainen, että joko molemmat tai ei kumpikaan vaihtoehdoista x ja y voivat tapahtua. Riippuvuussuhde voidaan mallintaa rajoitusehdolla (2) x y = 0 (2) Toisin sanoen tämä on päätösmuuttujien välinen ekvivalenssirelaatio, x y: jos x = 0, niin y = 0 ja jos x = 1, niin y = 1. Vastaavasti implikaatio (x y) voidaan mallintaa rajoitusehdolla (3) x y (3) Jos x = 0, niin y = 0 tai y = 1, ja jos x = 1, niin y = 1. Olkoon z riippuvainen binäärimuuttujasta x:stä siten, että jos x = 0 z = 0, muutoin 0 z u, 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 2

max x s.e. c j x j (a) m j x j K (b) j=1 j=1 x j {0, 1} j (c) (5) Työnjako-ongelma Työnjako-ongelmassa (AP = Assignment Problem) yhtiöllä on n työtehtävää ja m 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 c ij x ij (a) m x ij = 1 j = 1,..., n (b) i=1 x ij 1 i = 1,..., m (c) i=1 j=1 j=1 x ij {0, 1} 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ä 2n 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. 2n 1 2 i=1 j=i+1 i 1 2n k=1 x ki + c ij x ij k=i+1 (a) x ik = 1 i = 1,..., 2n (b) x ij {0, 1} 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 = {1,..., m} ja joukko mahdollisia tehtaan sijoituspaikkoja J = {1,..., 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 sopivat tehtaiden sijoituspaikat s.e. kokonaiskustannus minimoituu. 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. c j x j + m j=1 i=1 j=1 d ij y ij (a) y ij = b i, i I (b) j=1 m y ij u j x j, j J (c) i=1 y ij 0, i, j (d) x j {0, 1} 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 täsmälleen kerran. Olkoon kaupunkien joukko N = {1,..., 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 1. Tehtävän formulointi on min x s.e. c ij x ij (a) x ij = 1, j = 1,..., n (b) i=1 x ij = 1, i = 1,..., n (c) j=1 x ij S 1, S N, S N, (d) i=1 j=1 i,j σ(s) x ij {0, 1} (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 } (10) Jos kaupunkien joukossa S pätee (i,j) σ(s) x ij > S 1, on joukossa S kehä, jolloin on siis muodostunut alireitti. Ilman rajoitetta (d) ratkaisu voisi olla kuvan 1 mukainen. 5

Kuva 1: Esimerkki kahdesta alireitistä 9-kaupungin TSP:ssä. Joukon peitto-, pakkaus- ja ositustehtävät. Huutokauppatehtävä Olkoon M = {1,..., m} ja N = {1,..., n}. Olkoon M 1, M 2,..., 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 j F M j = M. F on pakkaus (packing), jos 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 2 on havainnollistus peitteestä, osituksesta ja pakkauksesta. 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 = 1, jos i M j, ja muuten nolla; ja x j = 1, jos j F. Määritellään vektorit x = (x 1,..., x n ), ja e = (1,..., 1), 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. 6

Kuva 2: Peite, ositus ja pakkaus. 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 indeksijoukko. Keille asiakkaille huutokauppiaan kannattaa myydä tuotteet tarjouksien jälkeen, jotta voitto maksimoituisi? Tämä tehtävä on joukon pakkaustehtävä. Olkoon a ij = 1, jos i M j, muuten nolla; ja x j = 1, jos osajoukko M j myydään. Huutokauppiaan tehtävä on siten: max s.e. jen b(m j )x j (a) a ij x j 1 i M (b) j N x j {0, 1} j N (c) (11) Esimerkkejä Esimerkki 1 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 1 2 3 tuotto (ME) 1 5 1 8 20 2 4 7 10 40 3 3 9 2 20 4 7 4 1 15 5 8 6 10 30 käytettävä pääoma (ME) 25 25 25 seuraa- Mitkä projektit tulisi toteuttaa? Määritellään binäärimuuttujat x j vasti: x j = { 1, jos projekti j toteutetaan 0, jos projektia j ei toteuteta Kyllä - ei -rajoitus toteutetaan siis 0 tai 1 arvoisilla muuttujilla. Nyt ILP-tehtävä saa muodon max z = 20x 1 + 40x 2 + 20x 3 + 15x 4 + 30x 5 s.t. 5x 1 + 4x 2 + 3x 3 + 7x 4 + 8x 5 25 x 1 + 7x 2 + 9x 3 + 4x 4 + 6x 5 25 8x 1 + 10x 2 + 2x 3 + x 4 + 10x 5 25 x 1, x 2, x 3, x 4, x 5 {0, 1} Tämä tehtävä voidaan ratkaista esim. Excelin solverilla. Ratkaisuksi saadaan x 1 = x 2 = x 3 = x 4 = 1, x 5 = 0 ja kohdefunktiolle arvo z = 95 (milj. E). Eli projektit 1-4 toteutetaan. ILP-tehtävän ratkaisua on mielenkiintoista verrata vastaavaan jatkuvien muuttujien, 0 x j 1, j, LP-tehtävään. Ratkaisu on tässä tapauksessa x 1 = 0.5789, x 2 = x 3 = x 4 = 1, x 5 = 0.7368, ja z = 108.68. Tulos on merkityksetön, koska x 1 ja x 5 ovat desimaalilukuja eivätkä näin ollen vastaa kyllä - ei kysymykseen. Jos taas koitetaan pyöristystä, saadaan x j = 1, j, joka ei vastaa optimiratkaisua. Esimerkki 2 Joko - tai -rajoitus. Yritys käyttää yhtä konetta kolmen eri 8

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ä) 1 5 25 19 2 20 22 12 3 15 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: 1. On estettävä töiden yhtäaikainen suorittaminen. 2. 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: { 1, 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(1 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 :na päivänä. 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ä. min z = 19s 1 + 12s 2 + 34s 3 s.e. x 1 x 2 +My 12 20 x 1 x 2 My 12 5 M x 1 x 3 +My 13 15 x 1 +x 3 My 13 5 M x 2 x 3 +My 23 15 x 2 +x 3 My 23 20 M x 1 +s + 1 s 1 = 25 5 x 2 +s + 2 s 2 = 22 20 x 3 +s + 3 s 3 = 35 15 x 1, x 2, x 3, s + 1, s 1, s + 2, s 2, s + 3, s 3 0 y 12, y 13, y 23 {0, 1} Valitsemalla M:n arvoksi esimerkiksi M = 1000, voidaan tehtävä ratkaista jollain kokonaislukuohjelmoinnin algoritmilla. Optimiratkaisu on x 1 = 20, x 2 = 0, x 3 = 25, eli työ 2 aloitetaan heti, työ 1 päivänä 20 ja työ 3 päivänä 25. Myöhästymissakkoja joudutaan tällöin maksamaan 5 34e = 170e. 10

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 1 +4x 2 s.t. x 1 +x 2 5 10x 1 +6x 2 45 x 1, x 2 Z + Kuva 3: Alkuperäisen ILP-tehtävän käypä joukko, sekä LP-relaksaation LP0 optimiratkaisu. 11

Kuvaan 3 merkityt pisteet muodostavat ILP-tehtävän käyvän joukon. ILPtehtävästä muodostetaan LP-relaksaatio poistamalla kokonaislukurajoitukset. Olkoon LP0 alkuperäisen tehtävän LP-relaksaatio. LP0:n ratkaisu on x 1 = 3.75, x 2 = 1.25, z = 23.75. Tämä ratkaisu ei ole kokonaislukuarvoinen. Valitaan jompikumpi luvuista x j, joka ei ole kokonaisluku, esimerkiksi x 1. Alueella 3 < x 1 < 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ää LP1 ja LP2 seuraavasti: LP1:n rajoituehdot = LP0:n rajoituehdot + (x 1 3) LP2:n rajoituehdot = LP0:n rajoituehdot + (x 1 4) LP1:n ja LP2:n käyvät joukot on esitetty kuvassa 4. LP1:tä ja LP2:ta tutkitaan erillisinä tehtävinä. Kuva 4: LP0:sta muodostetaan relaksaatiot LP1 ja LP2 lisäämällä rajoitukset x 1 3 ja x 1 4. Valitaan sattumanvaraisesti ensin tutkittavaksi LP1. Tehtävä on 12

max z = 5x 1 + 4x 2 s.t. x 1 + x 2 5 10x 1 + 6x 2 45 x 1 3 x 1, x 2 0 Tehtävän ratkaisuksi saadaan x 1 = 3, x 2 = 2, z = 23, mikä täyttää myös kokonaislukurajoitukset. Nyt LP1: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ä LP2: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ö LP2:n käyvästä joukosta parempaa kokonaislukuratkaisua. Havaitaan, että tehtävän LP0 optimiratkaisussa z=23.75, kohdefunktion kertoimet ovat kokonaislukuja. Näin ollen z=23 on suurin kohdefunktion arvo, mitä kokonaislukuratkaisulla voidaan saavuttaa. Voimme siis todeta, tutkimatta tehtävää LP2, että piste x 1 = 3, x 2 = 2, z = 23 on alkuperäisen ILP-tahtävän ratkaisu. Jos olisimme alkaneet tutkia LP2:ta ennen LP1:tä, ja jakaneet LP2:ta aliongelmiin kunnes löytyy kokonaislukuratkaisu ja vastaava alaraja, olisi algoritmi edennyt kuvassa 5 esitetyn puun mukaan. B & B-algoritmin vaiheet: Maksimointitehtävä, alaraja alussa (minimoinnissa alaraja korvataan ylärajalla, yläraja alussa ). 1. Muodostetaan ILP-tehtävästä LP-tehtävä poistamalla kokonaislukurajoitukset. Siirrytään vaiheeseen 2. 2. Ratkaistaan tutkittava LP-tehtävä. Mikäli ratkaisu on kokonaislukuvektori, on kaksi vaihtoehtoa 1. Jos ratkaisu on parempi kuin voimassa oleva alaraja, korvataan alaraja tällä kohdefunktion arvolla. 2. Jos ratkaisu on huonompi kuin voimassa oleva alaraja, säilytetään van- 13

Kuva 5: Algoritmin muodostama puu, kun tarkastellaan ensin aliongelmaa LP2. Numerot laatikoiden yllä kertovat tehtävien ratkaisujärjestyksen. ha 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 vaiheen 2 alkuun. Mikäli löydetty ratkaisu ei toteuta kokonaislukurajoituksia, on myös kaksi vaihtoehtoa 1. Jos ratkaisu on parempi kuin voimassa oleva alaraja, siirrytään vaiheeseen 3. 2. Jos ratkaisu on huonompi kuin voimassa oleva alaraja, valitaan uusi tutkimaton alitehtävä ja siirrytään vaiheen 2 alkuun. Jos kaikki alitehtävät on tutkittu, on voimassa olevaa alarajaa vastaava piste ILPtehtävän optimi ja algoritmi päättyy. 3. Valitaan yksi muuttuja x i, jonka arvo tutkittavan LP-tehtävän optimissa ei 14

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 + 1, missä a Z ja muuttujan x i arvolle LP-tehtävän optimissa x i pätee a < x i < a + 1. Valitaan alitehtävistä toinen tutkittavaksi ja siirrytään vaiheeseen 2. 15