8 4. Kokonaislukutehtävän ja LP:n yhteyksiä Minkowskin esityslauseen avulla voidaan osoittaa, että jos P on rationaalinen monitahokas ja S sen sisällä olevien kokonaislukupisteiden joukko, niin co(s) on rationaalinen monitahokas. Tällöin siis luvun 2 tehtävällä (2) on suppein eli paras mahdollinen IP-formulaatio co(s) = { R n A ' b ' } Z n,, 0, missä A ' ja b ' ovat monitahokkaan co(s) määrittelevät matriisit. Koska kokonaislukupistejoukon S konveksin verhon kärkipisteet ovat kokonaislukupisteitä, antaa tämän ratkaisu tavallisena lineaarisen optimoinnin tehtävänä (ilman kokonaislukuvaatimuksia) automaattisesti IP:n ratkaisun. Siis kokonaislukuprobleema S Z n +, joka oli muotoiltu IP:nä P = { R n A b} Z n +,, 0, voidaan ratkaista (jatkuvamuuttujaisena) LP:nä co(s) = { R n + A b}. Tähän ratkaisemiseen voidaan käyttää esimerkiksi simple-algoritmia. Tämä havainto on kuitenkin vain periaatteellinen: edellä mainitun konveksin verhon monitahokasmuodon co(s) = { R n A ' b ' } löytäminen on laskennallisesti hyvin työläs.
9 Ratkaisun olemassaolon kannalta kokonaislukuprobleemalla IP on kolme vaihtoehtoa: käypiä ratkaisuja ei ole, kohdefunktio saa rajoittamattoman suuria arvoja ("ma z = ") tai löytyy äärellinen (mahdollisesti useampikin) optimikohta co(s):n kärkipisteistä. (Tässä edellytetään, että IP:n muotoilussa oleva monitahokas on rationaalinen. Irrationaalidatan tapauksessa voi käydä niin, että sup z ei ole saavutettavissa käyvässä joukossa.) Jos kokonaislukutehtävästä IP P = { R n + A b} Z n "unohdetaan" muuttujien kokonaislukuvaatimukset pois, saadaan relaksoitu tehtävä, IP:n LP-relaksaatio P = { R n + A b}. Jos merkitään näiden optimiarvoja z * IP ja z * LP, niin aina pätee z * IP z * LP. Mikäli P = co(s), niin edellä pätee yhtäsuuruus eli tilanne on kokonaislukuoptimoinnin kannalta ihanteellinen, koska LP-relaksaatio ratkaisee IP:n. Eräissä tapauksissa tilanne P = co(s) nähdään matriisin A kertoimista. Matriisi A on totaalisesti unimodulaarinen, jos sen jokainen alideterminantti on 0, 1 tai -1. Tällöin voidaan todistaa: Jos P on rajoitettu, niin sen kärkipisteet ovat kokonaislukupisteitä täsmälleen silloin kun A on totaalisesti unimodulaarinen matriisi ja b on kokonaislukuvektori. Heti nähdään, että A:n alkioina voi olla vain lukuja 0, 1 ja -1 (1-rivisinä determinantteina). Ehto on siis varsin rajoittava, mutta kuitenkin moni erityisesti binäärioptimointiin kuuluva probleema on sitä muotoa (esim. assignment ). Totaalinen unimodulaarisuus säilyy transponoinnissa, rivin tai sarakkeen poistossa, rivien tai sarakkeiden paikan vaihdossa ja rivien tai sarakkeiden monistamisessa. Samoin jos A on totaalisesti unimodulaarinen, niin myös [A I] ja rref(a) ovat sitä. Edellisten tulosten todistukset perustuuvat oleellisesti Cramerin sääntöön sovellettuna yhtälöryhmään B B = b, missä B on kärkipisteen eli kantaratkaisun määrittelevä eisingulaarinen kantamatriisi (ks. Matemaattinen optimointiteoria 1).
10 5. Verkon virtausprobleemat Verkkoihin ja graafeihin liittyvät optimointitehtävät tarjoavat monia kokonaislukuoptimoinnin malleja. Niiden parista löytyy myös suurin osa totaalista unimodulaarisuutta hyödyntävistä kokonaislukumalleista. Verkko (network) koostuu solmuista (node, verte) ja niitä yhdistävistä kaarista (arc, edge). Kaareen liittyy aina suunta, josta syystä sitä sanotaan myös nuoleksi. Verkon rakenne voidaan antaa parilla (V,E), missä V on solmujen joukko ja E on solmuparien avulla ilmaistujen kaarien multijoukko. Multijoukko eroaa tavallisesta joukon käsitteestä siten, että alkio voi esiintyä siinä monta kertaa, alkion multiplisiteetin mukaisesti. Esimerkki 1. Viiden solmun verkko, jossa V={1,2,3,4,5} ja E = {(1,3), (1,4), (1,4), (3,2),(2,5),(5,2),(5,5),(5,1)}. Tässä (i,j) tarkoittaa kaarta solmusta i solmuun j. Siis kaari (1,4) esiintyy kahteen kertaan eli solmusta 1 solmuun 4 menee kaksi rinnakkaista kaarta, kaaren (1,4) multiplisiteetti on 2. Kaarella (i,j) on suunta i:stä j:hin eli (2,5) ja (5,2) ovat eri kaaria, vastakkaissuuntaisia. Verkon rakenne voidaan määrittää myös vierussolmumatriisilla A = (a ij ), missä a ij = solmusta i solmuun j menevien kaarien lukumäärä. Siis a ij = 0, jos kaarta ei ole, a ij = 1, jos kaaria on yksi, ja a ij = k, jos rinnakkaisia kaaria solmusta i solmuun j on k. Mikä on edellisen esimerkin vieruspistematriisi? Verkkoon liitetään virtaus (flow), joka kulkee solmusta toiseen kaaria pitkin kaaren suuntaan. Virtausta voi syntyä solmussa, jolloin solmu on lähdesolmu tai sitä voi upota solmuun, jolloin solmu on kohdesolmu. Lähdesolmun j tarjonta (supply) on annetulla välillä [s j1,s j2 ] joka voi olla yksi pistekin (s j1 =s j2 ) tai mitä hyvänsä: [0, ). Samoin kohdesolmun j kysyntä (demand) on annetulla välillä [d j1,d j2 ], joka sekin voi olla määrätty täsmälliseksi arvoksi (d j1 =d j2 ) tai olla määrittelemätön: [0, ). Jos solmu ei ole kumpaakaan edellä mainittua tyyppiä, sitä voidaan sanoa kauttakulkusolmuksi. (Solmu ei voi olla samanaikaisesti lähde- ja kohdesolmu, mutta voi olla samalla lähde- ja kauttakulkusolmu tai kohde- ja kauttakulkusolmu.) Virtausta ei synny eikä häviä verkossa muuten kuin lähde- ja kohdesolmuissa, ja virtauksen säilymislaki vaatii kussakin solmussa, että tuleva virtaus = lähtevä virtaus (jolloin tulevaan virtaukseen luetaan mahdollinen lähdesolmun tuotto ja lähtevään virtaukseen mahdollinen kohdesolmun kulutus). Kaaren (i,j) kannalta virtauksella voi olla ala - ja yläraja, joka ilmaistaan välinä [l ij,u ij ]. Tämä väli voi olla myös yksi piste, jolloin se pakottaa virtauksen kaarella luvuksi l ij = u ij tai virtaus voi olla vapaa: [0, ). Virtaus, joka toteuttaa virtauksen säilymislain ja kaarien rajoitukset, on käypä virtaus. Sen arvot ij kullakin kaarella (i,j) kertovat virtausongelman käyvän ratkaisun. Kun kaariin (i,j) liitetään vielä virtauskustannus c ij, saadaan verkon minimikustannusvirtausmalli (Minimal Cost Network Flow Model), jossa haetaan virtausta, joka minimoi kokonaiskustannukset. Hyvin moni optimoinnin ja
11 operaatiotutkimuksen ongelma voidaan pukea verkon minimikustannusvirtausmalliksi. Esimerkki 2. Klassinen kuljetusongelma (transportation problem) on virtausongelma luontevimmillaan. Kuljetuskustannukset minimoiva verkkomalli saadaan kun tehtaat otetaan lähdesolmuiksi ja asiakkaat kohdesolmuiksi. Esimerkki 3. Sijoitteluprobleema eli Assignment Problem Verkkomallissa voidaan nyt virtaavaksi suureeksi valita vaikka työntekijät, jotka menevät ("virtaavat") siihen työhön, johon heidät valitaan. Verkon rakenne ja siihen liittyvä virtaus voidaan kuvata lineaarisina yhtälöinä ja epäyhtälöinä, jolloin virtauksiin liittyvät optimointitehtävät muotoutuvat matemaattisen optimoinnin malleiksi lineaarisin rajoitusehdoin. Erityisesti minimikustannusvirtausmalli on silloin lineaarisen optimoinnin tehtävä ja kokonaislukuoptimointiin kuuluva, jos virtauksen ainoa sallittu muoto on kokonaisluku. Verkon (V,E) algebrallisen mallin muuttujat ovat kaarien virtaukset ij, (i,j) sekä lähdesolmujen i tarjontamuuttujat i ja kohdesolmujen j kysyntämuuttujat j. Jokaista verkon solmua i V kohti saadaan virtauksen säilymislain johdosta säilymisyhtälö, jossa tuleva virtaus + solmussa syntyvä virtaus (jos lähdesolmu) - lähtevä virtaus - solmussa kulutettava virtaus (jos kohdesolmu) = 0. Koska mikään solmu ei voi olla samalla lähde- ja kohdesolmu, on siis säilymisyhtälössä solmusta lähtevien ja sinne tulevien kaarien virtausmuuttujat ja joko tarjontamuuttuja tai kysyntämuuttuja (mutta ei molempia). Säilymisyhtälöiden tyypit ovat siis seuraavat: Lähdesolmun i yhtälö ji ( j, i) ij j) + i = 0 Kohdesolmun j yhtälö ij j) ji ( j, i) j = 0 Kauttakulkusolmun k yhtälö ik k ) ki ( k, i) = 0 Virtausmuuttujille ij on lisäksi mahdolliset ala- ja ylärajat: Kaaren (i,j) virtauksen rajat l ij ij u ij Lisäksi lähdesolmun s tarjonnalle on tarjontarajat ja kohdesolmulle j kysyntärajat:
12 Lähdesolmun i tarjonnan rajat s i1 s s i2 Kohdesolmun j kysynnän rajat d j1 j d j2 Koska virtaus oletetaan aina ei-negatiiviseksi (virtauksen suuntaan), niin edellä olevat rajat ovat virheettömässä datassa ei-negatiivisia. Jos rajoja ei ole erikseen annettu, niiden oletusarvona on alaraja 0 ja yläraja. Edellä mainitut säilymisyhtälöt ja rajat toteuttavat virtaukset ij muodostavat verkon virtausongelman käyvän ratkaisun. Optimivirtausmalliin liittyy vielä lineaarinen kohdefunktio. Kuhunkin kaareen (i,j) liittyy luku c(i,j), joka on luonteeltaan kustannus (minimointitehtävät) tai hyöty (maksimointitehtävät). Kohdefunktio f() = c ij ij j) Minimikustannusvirtausmallissa kohdefunktio ilmoittaa yhteenlasketut virtauskustannukset jota minimoidaan. Muuttujavektori sisältää kaikki virtaukset ij yhdessä pystyvektorissa siten, että toinen indeksi kulkee nopeammin kuin ensimmäinen (sanakirjajärjestys 11, 12, 13,, 21, 22, ). Kun muuttujat ryhmitellään säilymisyhtälöissä siten, että samaan kaareen liittyvät muuttujat ovat samalla kohdalla, tulevat yhtälöryhmän kerroinmatriisissa sarakkeet (pystyrivit) kertomaan, mihin solmuun kaari on tulossa (+1) ja mistä solmusta lähdössä (-1). Koska jokaisella kaarella on täsmälleen yksi alku- ja loppusolmu, on siis jokaisella sarakkeella täsmälleen yksi 1 ja -1. Vaakarivit taas vastaavat solmuja, ja niillä voi olla pelkästään 1:siä, pelkästään (-1):siä tai yleisimmin molempia vaihtelevin lukumäärin siitä riippuen, kuinka moni kaari solmuun tulee ja siitä lähtee. Kyseisen yhtälöryhmän kerroinmatriisi on verkon solmu-kaari-matriisi eli (ns. täysi) insidenssimatriisi. Minimikustannusvirtausmalli on siis matriisimuodossa min f() = c T A + s - d = 0 l u s 1 s s 2 d 1 d d 2 Tässä A on verkon insidenssimatriisi (kokoa mn, kun verkossa on m solmua ja n kaarta), s on tarjontavektori, m1-vektori, jossa on solmujen tuotannot, d on kysyntävektori, m1-vektori, jossa on solmujen kysynnät, on virtausvektori, n1- vektori, jossa on kaarien virtaukset ja c on kustannusvektori, n1-vektori, jossa on
13 kaarien kustannukset. Kyseessä on siis lineaarisen optimoinnin probleema, muuttujina vektorit, s ja d (joiden komponenteista osa voi olla vakioitakin). Huomattakoon, että tässä mallissa s ja d eivät ole suoraan kaariin liittyviä virtauksia eikä niihin siitä syystä liity kustannuskertoimia. Jos niihin halutaan liittää kustannuksia, lisätään malliin niitä varten tarpeelliset solmut ja kaaret. Minimikustannusvirtausmalli sopii hyvin moneen tilanteeseen, varsinkin jos "virtaava" suure valitaan sopivasti. Esimerkki 4. Tieverkosta on haettava lyhin reitti kahden paikan välille. Miten mallintaisit probleemaa minimikustannusvirtauksella? Edellä määritelty insidenssimatriisi A on totaalisesti unimodulaarinen, joten mikäli kysyntä ja tarjonta ovat kokonaislukuja, niin optimivirtaus on automaattisesti kokonaislukuarvoista.