Esimerkkejä kokonaislukuoptimointiongelmista (eli mitä kaikkea kokonaisluvuilla voi mallintaa) 27. marraskuuta 2013
Pääoman budjetointiongelma Kulut Projekti Vuosi 1 Vuosi 2 Vuosi 3 Tuotto 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 Varat 25 25 25 Tavoite: Määrää, mitkä projektit toteutetaan, jotta tuotot maksimoituvat
x j = { 1, jos projekti j toteutetaan 0, jos projektia j ei toteuteta max 20x 1 + 40x 2 + 20x 3 + 15x 4 + 30x 5 kun 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 tai 1
Kapsäkkiongelma Valittavana on n eri tavaraa Tavaran j hyöty on c j ja paino on a j Tavaroiden yhteispaino saa olla korkeintaan b Tavoite: Valitse mukaan otettavat tavarat siten, että niiden yhteishyöty maksimoituu
x j = { 1, jos tavara j otetaan mukaan 0, jos tavaraa j ei oteta mukaan max kun c j x j a j x j b x j = 0 tai 1
Kohdistusongelma Olkoon n eri henkilöä ja n eri työtä 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
x ij = { 1, jos henkilö i suorittaa työn j 0, muuten min c ij x ij kun i=1 x ij = 1 x ij = 1 i=1 x ij = 0 tai 1 i = 1,..., n i = 1,..., n,
Osajoukko-ongelmat Perusjoukko M = {1,..., m} ja tämän osajoukot M j M, Osajoukkojen joukko F peittää perusjoukon, jos j F M j = M Jokaiseen osajoukkoon M j liittyy kustannus c j Minimipeitto-ongelma: Etsi sellainen F, joka peittää perusjoukon ja jonka kokonaiskustannus on mahdollisimman pieni
{ 1, jos osajoukko j otetaan mukaan x j = 0, jos osajoukkoa j ei oteta mukaan { 1, jos i M j a ij = 0, jos i / M j min kun c j x j a ij x j 1 x j = 0 tai 1 i = 1,..., m
Ositusongelma: Etsi sellainen F, joka peittää perusjoukon siten, että jokainen perusjoukon alkio on mukana täsmälleen kerran, ja jonka kokonaiskustannus on mahdollisimman pieni min kun c j x j a ij x j = 1 x j = 0 tai 1 i = 1,..., m
Jokaiseen osajoukkoon M j liittyy hyöty c j Pakkausongelma: Etsi sellainen F, jossa jokainen perusjoukon alkio saa olla mukana korkeintaan kerran, ja jonka kokonaishyöty on mahdollisimman suuri max kun c j x j a ij x j 1 x j = 0 tai 1 i = 1,..., m
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
x ij = laitoksesta i asiakkaalle j kuljetettava määrä { 1, jos paikkaan i perustetaan laitos x i = 0, jos paikkaan i ei perusteta laitosta m m min c ij x ij + f i x i kun i=1 m x ij = d j i=1 x ij M i x i x ij 0 x i = 0 tai 1 i=1 i = 1,..., m i = 1,..., m, i = 1,..., m
Kauppamatkustajan ongelma Olkoon n paikkakuntaa Etäisyys paikkakunnalta i paikkakunnalle j on d ij Käydään kerran jokaisella paikkakunnalla ja palataan takaisin lähtöpaikkaan Tavoite: Määrää paikkakuntien järjestys siten, että kokonaismatka minimoituu
x ij = { 1, jos mennään paikkakunnalta i paikkakunnalle j 0, muuten min kun i=1 d ij x ij x ij = 1 x ij = 1 i=1 x ij = 0 tai 1 i = 1,..., n i = 1,..., n, Tässä on kuitenkin mahdollista, että ratkaisu muodostuu useammasta erillisestä renkaasta
Tarvitaan lisärajoite, esimerkiksi: x ij 1 i S j S kaikilla joukon N = {1,..., n} epätyhjillä osituksilla (S, S), missä S = N \ S
Kiinteät kustannukset Tuotantokustannukset, missä on mukana kiinteät kustannukset k j > 0 : { 0, jos x j = 0 f j (x j ) = k j + c j x j, jos x j > 0 Vastaava optimointitehtävä on epälineaarinen: min kun f j (x j ) a ij x j b i x j 0 i = 1,..., m
Olkoon u j suurin mahdollinen arvo muuttujalle x j, ja y j = { 0, jos x j = 0 1, jos x j > 0 Saadaan lineaarinen kokonaislukuoptimointitehtävä: min kun (c j x j + k j y j ) a ij x j b i x j u j y j 0 x j 0 y j = 0 tai 1 i = 1,..., m
Jokotai-rajoitteet Tuotetta joko ei valmisteta lainkaan tai sitä valmistetaan tietty vähimmäismäärä, ts. joko x j = 0 tai l j x j u j Lisätään muuttujat: { 0, jos x j = 0 y j = 1, jos x j > 0 ja rajoitteet: x j u j y j 0 x j l j y j 0
Töidenjärjestelyongelma Olkoon n työtä, jotka suoritetaan yhdellä koneella Koneella voi olla vain yksi työ kerrallaan Työn j vaatima aika on a j Työn j on oltava valmis hetkellä d j Tavoite: Määrää töiden suoritusjärjestys siten, että kokonaisaika minimoituu
Olkoon x j hetki, jolloin työ j aloitetaan Joko työ i suoritetaan ennen työtä j tai työ j suoritetaan ennen työtä i, ts. joko x i + a i x j tai x j + a j x i Lisätään muuttujat: { 1, jos työ i edeltää työtä j y ij = 0, jos työ j edeltää työtä i ja rajoitteet: M(1 y ij ) + x j x i a i i = 1,..., n, My ij + x i x j a j i = 1,..., n, missä M on riittävän suuri vakio
Optimointitehtävä: min t kun x j + a j t M(1 y ij ) + x j x i a i i = 1,..., n, My ij + x i x j a j i = 1,..., n, x j + a j d j t 0 x j 0 y ij = 0 tai 1 i = 1,..., n,
Ainakin osa rajoitteista oltava voimassa Vaaditaan, että rajoitteista a ij x j b i i = 1,..., m on voimassa ainakin k kappaletta, mutta ei ole väliä mitkä niistä Olkoon u i rajoitteen i yläraja, ts. aina on voimassa n a ij x j u i kaikilla i = 1,..., m
Lisätään muuttujat: y i = ja korvataan rajoitteet seuraavilla: { 1, rajoite i on voimassa 0, rajoite i ei ole voimassa a ij x j b i + u i (1 y i ) m y i k i=1 i = 1,..., m
Muuttujalla tietty määrä mahdollisia arvoja Muuttuja x j voi saada arvokseen yhden k:sta mahdollisesta arvosta d 1,..., d k Lisätään muuttujat:
Paloittain lineaarinen funktio Olkoon funktio f separoituva, ts. f (x 1,..., x r ) = r f j(x j ) Olkoon jokainen f j paloittain lineaarinen siten, että sen kuvaaja kulkee pisteiden (a i, f j (a i )), i = 1,..., p, kautta Jos x j kuuluu osavälille [a i, a i+1 ], niin se voidaan esittää muodossa x j = λ i a i + λ i+1 a i+1 missä 0 λ i 1, 0 λ i+1 1 ja λ i + λ i+1 = 1
Tällöin myös f j (x j ) = λ i f j (a i ) + λ i+1 f j (a i+1 ) = p f j (x j ) = λ i f j (a i ) i=1 p λ i = 1 i=1 0 λ i 1 i = 1,..., p enintään kaksi vierekkäistä λ i :tä on positiivisia
Enintään kaksi vierekkäistä λ i :tä on positiivisia λ 1 y 1 λ i y i 1 + y i i = 2,..., p 1 λ p y p 1 p 1 y i = 1 i=1 y i = 0 tai 1 i = 1,..., p 1
Kvadraattinen kohdistusongelma Olkoon n alkiota joukossa A ja toiset n alkiota joukossa B Jokainen joukon A alkio liitetään yhteen joukon B alkioon, ja jokainen joukon B alkio liitetään yhteen joukon A alkioon Kun alkio i A liitetään alkioon j B ja alkio k A liitetään alkioon l B, siitä aiheutuu kustannus c ijkl Tavoite: Liitä alkiot toisiinsa siten, että kokonaiskustannukset minimoituvat
x ij = { 1, jos alkio i A liitetään alkioon j B 0, muuten min c ijkl x ij x kl kun i=1 k=1 l=1 x ij = 1 x ij = 1 i=1 x ij = 0 tai 1 i = 1,..., n i = 1,..., n,
Esimerkki kvadraattisesta kohdistusongelmasta: Olkoon A joukko tehtaita ja B joukko sijoituspaikkakuntia Tehtävänä on siis sijoittaa n tehdasta n:lle paikkakunnalle Tavoite: minimoida tehtaiden väliset kommunikointikustannukset, jotka riippuvat kommunikoinnin määrästä kunkin tehdasparin välillä sekä tehtaiden välisistä etäisyyksistä Olkoon e ik = tehtaiden i ja k välisen kommunikoinnin määrä ja d jl = kommunikointikustannus yhtä yksikköä kohden paikkakuntien j ja l välillä Tällöin e ik d jl on kommunikoinnin kustannus tehtaiden välillä