Lineaarinen optimointitehtävä Minimointitehtävä yhtälörajoittein: min kun n j=1 n j=1 c j x j a ij x j = b i x j 0 j = 1,..., n i = 1,..., m Merkitään: z = alkuperäisen objektifunktion arvo käsiteltävänä olevassa perusratkaisussa 1
Tehtävä taulukkomuodossa: x 1 x 2... x n c 1 c 2... c n z a 11 a 12... a 1n b 1 a 21 a 22... a 2n b 2.... a m1 a m2... a mn b m 2
Tehtävän muokkaaminen Yhtälörajoitteet: a i1 x 1 + a i2 x 2 +... + a in x n = b i = a j1 x 1 + a j2 x 2 +... + a jn x n = b j (d) (a i1 + da j1 )x 1 + (a i2 + da j2 )x 2 + + (a in + da jn )x n = (b i + db j ) 3
Taulukkomuodossa: a i1 a i2... a in b i a j1 a j2... a jn b j (d) = a i1 + da j1 a i2 + da j2... a in + da jn b i + db j a j1 a j2... a jn b j 4
Objektifunktio: = c 1 x 1 + c 2 x 2 +... + c n x n a j1 x 1 + a j2 x 2 +... + a jn x n b j = 0 (d) (c 1 + da j1 )x 1 + (c 2 + da j2 )x 2 + + (c n + da jn )x n db j Objektifunktion arvo muuttuu vakiotermillä: db j 5
Taulukkomuodossa: c 1 c 2... c n z a j1 a j2... a jn b j (d) = c 1 + da j1 c 2 + da j2... c n + da jn (z db j ) a j1 a j2... a jn b j Myös nyt objektifunktion arvo muuttuu vakiotermillä: db j 6
Simplex-algoritmi George B. Dantzig 1947 Lineaarisen optimointitehtävän sallittu alue on konveksi monitahokas Optimointitehtävän ratkaisu löytyy sallittujen perusratkaisujen joukosta Sallitut perusratkaisut ovat sallitun alueen kärkipisteitä = Käydään läpi sallitun alueen kärkipisteitä, kunnes optimi löytyy 7
Simplex-algoritmi aloitusperusmuodosta 1. (a) Oletetaan, että optimointitehtävä on perusmuodossa: Jokaista yhtälörajoitetta vastaa perusmuuttuja, jonka kerroin kyseisessä yhtälössä on 1 ja kaikissa muissa yhtälöissä ja objektifunktiossa 0. (b) Oletetaan, että oikean puolen vakiot ovat ei-negatiivisia: Vastaava perusratkaisu on sallittu. 8
2. Jos kaikki objektifunktion kertoimet ovat ei-negatiivisia, niin vastaava perusratkaisu on optimiratkaisu. Lopetetaan. 3. (a) Valitaan jokin ei-perusmuuttuja, joka lisätään perusmuuttujien joukkoon: Valinta tehdään siten, että muunnoksessa objektifunktion arvo ei kasva. (b) Poistetaan perusmuuttujien joukosta jokin toinen muuttuja: Valinta tehdään siten, että muunnoksessa oikean puolen vakiot pysyvät ei-negatiivisina. (c) Muunnetaan tehtävä uusia perusmuuttujia vastaavaan perusmuotoon. (d) Toistetaan kohdasta 2. 9
Aloitusperusmuoto Tehtävä aloitusperusmuodossa: min c j x j + j B kun j / B a ij x j + j B j / B c j x j a ij x j = b i x j 0 j = 1,..., n i = 1,..., m missä c j = 0 ja a ij = 1 i = j 0 i j kun j B b i 0 kun i = 1,..., m 10
Esimerkiksi: min c 1 x 1 + c 3 x 3 + c 6 x 6 kun a 11 x 1 + a 13 x 3 + x 5 + a 16 x 6 = b 1 a 21 x 1 + x 2 + a 23 x 3 + a 26 x 6 = b 2 a 31 x 1 + a 33 x 3 + x 4 + a 36 x 6 = b 3 missä perusmuuttujat ovat x 2, x 4 ja x 5 11
Esimerkki taulukkomuodossa: x 1 x 2 x 3 x 4 x 5 x 6 c 1 0 c 3 0 0 c 5 0 a 11 0 a 13 0 1 a 15 b 1 a 21 1 a 23 0 0 a 25 b 2 a 31 0 a 33 1 0 a 35 b 3 Huomaa, että aloitusperusmuodossa z = 0 12
Lisättävän perusmuuttujan valinta Objektifunktio: c j x j j B }{{} + c j x j j / B }{{} = 0 = 0 koska c j = 0 koska x j = 0 kaikilla j B kaikilla j / B Voiko objektifunktion arvo pienentyä, jos jokin ei-perusmuuttuja x q siirretään perusmuuttujien joukkoon? c q 0 = ei voi c q < 0 = kyllä voi 13
= Valitaan lisättävä x q siten, että x q ei ole perusmuuttuja ja c q < 0 Jos sellaista muuttujaa ei ole, niin ratkaisu on löydetty = lopetetaan (normaali lopetus) Jos sellaisia muuttujia on useita, valitaan niistä jokin, esimerkiksi se, jota vastaava c q on pienin 14
Poistettavan perusmuuttujan valinta Yhtälörajoitteet: a ij x j + j B j / B }{{} a ij x j = b i = x i koska a ij = 1 kun i = j ja a ij = 0 kun i j i = 1,..., m = x j = b j k/ B a jk x k j B 15
= x j = b j k/ B k q a jk x k }{{} = 0 koska x k = 0 kaikilla k / B a jq x q j B x q lisätään joukkoon B = x j = b j a jq x q j B 16
Oltava voimassa: x j = b j a jq x q 0 j B Kuinka suureksi x q voi kasvaa ilman, että jokin x j muuttuu negatiiviseksi? a jq 0 = vaikka kuinka suureksi a jq > 0 = korkeintaan arvoon b j /a jq asti = Suurin mahdollinen arvo muuttujalle x q on: min {b j/a jq a jq > 0} j B 17
Siis: x j = b j a jq x q 0 j B x q voi olla korkeintaan min j B {b j/a jq a jq > 0} Olkoon p siten, että b p / = min j B {b j/a jq a jq > 0} Silloin, jos x q = b p /, niin x p = b p x q = 0 = Muuttuja x p voidaan poistaa perusmuuttujien joukosta 18
= Valitaan poistettava x p siten, että p on se indeksi jolla minimi saavutetaan min {b j/a jq a jq > 0} j B Jos minimiä ei voi laskea, eli jos a jq 0 kaikilla j B, niin sallittu alue on rajoittamaton ja tehtävällä ei ole äärellistä ratkaisua = lopetetaan (epänormaali lopetus) Jos minimi saavutetaan useammalla indeksillä, valitaan niistä jokin, esimerkiksi satunnaisesti 19
Muunnos vastaavaan perusmuotoon Lisätään x q joukkoon B Poistetaan x p joukosta B Muunnetaan tehtävä uusia perusmuuttujia vastaavaan perusmuotoon Muunnos toteutetaan taulukkomuodossa 20
Taulukko ennen muunnosta: x q... x p... x j c q... 0... c j z....... 1... a pj b p.... a iq... 0... a ij b i.... q / B p B 21
Jaetaan rivi p pivot-alkiolla > 0 : c q... 0... c j z... 1... a pj b p a iq... 0... a ij b i = c q... 0... c j z 1... 1... a pj b p a iq... 0... a ij b i 22
Vähennetään rivi p kerrottuna vakiolla c q objektifunktiorivistä: c q... 0... c j z 1... 1... a pj b p a iq... 0... a ij b i = 0... c q... c j c q a pj 1... 1... a pj z c q b p b p a iq... 0... a ij b i 23
Vähennetään rivi p kerrottuna vakioilla a iq rajoiteriveistä i : 0... c q... c j c q a pj 1... 1... a pj z c q b p b p a iq... 0... a ij b i = 0... c q... c j c q a pj 1... 1... a pj 0... a iq... a ij a iq a pj z c q b p b p b i a iq b p 24
Taulukko muunnoksen jälkeen: x q... x p... x j 0... c q... c j c q a pj z c q b p.... 1... 1... a pj b p.... 0... a iq... a ij a iq a pj b i a iq b p.... q B p / B 25
Indeksi p valittiin siten, että Oikean puolen vakiot: b p / = min j B {b j/a jq a jq > 0} b p 0 ja > 0 = b p 0 a iq 0 = b i a iq b p 0 a iq > 0 = b p b i a iq = b i a iq b p 0 = Oikean puolen vakiot säilyvät ei-negatiivisina muunnoksessa 26
Indeksi q valittiin siten, että c q < 0 Objektifunktion arvo: c q < 0 ja b p 0 = z + c q b p z = Objektifunktion arvo ei ainakaan kasva muunnoksessa 27
Simplex-algoritmin toimivuus Yhdessä simplex-iteraatiossa: tehtävä pysyy ekvivalenttina alkuperäisen tehtävän kanssa oikean puolen vakiot pysyvät ei-negatiivisina objektifunktion arvo ei kasva = Jos algoritmi pysähtyy normaalisti (c j 0 kaikilla j / B), niin vastaava perusratkaisu on optimointitehtävän ratkaisu 28
Jos optimissa c j = 0 jollain j / B, niin tehtävällä on useita ratkaisuja Jos algoritmi pysähtyy epänormaalisti (c q < 0 ja a jq 0 kaikilla j B), niin sallittu alue on rajoittamaton ja tehtävällä ei ole äärellistä ratkaisua Jos algoritmi jää jumiin (sama perusratkaisu toistuu uudestaan), niin satunnaisuus indeksin p valinnassa (kun min j B {b j /a jq a jq > 0} ei ole yksikäsitteinen) voi auttaa 29
Tehtävän muuntaminen aloitusperusmuotoon Tarvittaessa muunnetaan maksimointi minimoinniksi kertomalla objektifunktio 1:llä Tarvittaessa muunnetaan oikean puolen vakiot ei-negatiivisiksi kertomalla vastaavat rajoitteet 1:llä Muunnetaan epäyhtälörajoitteet yhtälörajoitteiksi lisäämällä tarvittavat puute- ja ylijäämämuuttujat Jos tehtävä on nyt aloitusperusmuodossa, voidaan aloittaa simplex-algoritmi 30
Esimerkki Maksimointitehtävä ja epäyhtälörajoitteet: max 30x 1 + 20x 2 kun x 1 + x 2 80 2x 1 + x 2 100 x 1 40 x 1, x 2 0 31
Muunnetaan maksimointi minimoinniksi ja epäyhtälörajoitteet yhtälörajoitteiksi: min 30x 1 20x 2 kun x 1 + x 2 + s 1 = 80 2x 1 + x 2 + s 2 = 100 x 1 + s 3 = 40 x 1, x 2, s 1, s 2, s 3 0 Nyt tehtävä on aloitusperusmuodossa, perusmuuttujina puutemuuttujat s 1, s 2 ja s 3 32
Aloitusperusmuodon simplex-taulukko: x 1 x 2 s 1 s 2 s 3 30 20 0 0 0 0 1 1 1 0 0 80 2 1 0 1 0 100 1 0 0 0 1 40 33
30 20 0 0 0 0 1 1 1 0 0 80 2 1 0 1 0 100 1 0 0 0 1 40 = 0 20 0 0 30 1200 0 1 1 0 1 40 0 1 0 1 2 20 1 0 0 0 1 40 34
0 20 0 0 30 1200 0 1 1 0 1 40 0 1 0 1 2 20 1 0 0 0 1 40 = 0 0 0 20 10 1600 0 0 1 1 1 20 0 1 0 1 2 20 1 0 0 0 1 40 35
0 0 0 20 10 1600 0 0 1 1 1 20 0 1 0 1 2 20 1 0 0 0 1 40 = 0 0 10 10 0 1800 0 0 1 1 1 20 0 1 2 1 0 60 1 0 1 1 0 20 36
Optimaalinen simplex-taulukko: x 1 x 2 s 1 s 2 s 3 0 0 10 10 0 1800 0 0 1 1 1 20 0 1 2 1 0 60 1 0 1 1 0 20 Ratkaisu: (x 1, x 2 ) = (20,60) ja (s 1, s 2, s 3 ) = (0,0,20) Minimointitehtävän objektifunktion arvo: 1800 = alkuperäisen maksimointitehtävän objektifunktion arvo: 1800 37
Tehtävän muuntaminen aloitusperusmuotoon (jatkoa) Jos tehtävää ei saada edellä esitetyillä muunnoksilla aloitusperusmuotoon: lisätään keinotekoinen muuttuja w j jokaiselle rajoiteriville, jolla ei muuten ole perusmuuttujaksi kelpaavaa muuttujaa keinotekoisen muuttujan kerroin muilla rajoiteriveillä asetetaan nollaksi, jolloin se voidaan asettaa perusmuuttujaksi lisätään tehtävään keinotekoinen objektifunktio min j w j eliminoidaan perusmuuttujat keinotekoiselta objektifunktioriviltä 38
ratkaistaan saatu tehtävä simplex-algoritmilla alkuperäinen objektifunktio pidetään mukana simplex-muunnoksissa Jos saadaan ratkaisu, jossa kaikki w j = 0, on löydetty sallittu perusratkaisu alkuperäiselle tehtävälle = alkuperäinen tehtävä on aloitusperusmuodossa 39
Yleinen simplex-algoritmi I vaihe: muodostetaan keinotekoisilla muuttujilla laajennettu tehtävä ratkaistaan laajennettu tehtävä simplex-algoritmilla alkuperäistä objektifunktioriviä ei valita pivot-riviksi Jos optimissa keinotekoisen objektifunktion arvo on positiivinen, niin alkuperäisellä tehtävällä ei ole sallittuja perusratkaisuja = lopetetaan Jos optimissa keinotekoisen objektifunktion arvo on nolla, niin siirrytään II vaiheeseen 40
II vaihe: poistetaan keinotekoinen objektifunktiorivi ja kaikki sellaiset keinotekoiset muuttujat, jotka eivät ole perusmuuttujia ratkaistaan alkuperäinen tehtävä simplex-algoritmilla mahdollisia keinotekoisia muuttujia ei valita uusiksi perusmuuttujiksi 41
Esimerkki min x 1 + 6x 2 7x 3 + x 4 + 5x 5 kun 5x 1 4x 2 + 13x 3 + 2x 4 + x5 = 20 x 1 x 2 + 5x 3 x 4 + x 5 = 80 x 1, x 2, x 3, x 4, x 5 0 Kummaltakaan rajoiteriviltä ei löydy perusmuuttujaksi kelpaavaa muuttujaa = lisätään keinotekoiset muuttujat w 1 ja w 2 ja keinotekoinen objektifunktio w 1 +w 2 42
Laajennetun tehtävän simplex-taulukko: x 1 x 2 x 3 x 4 x 5 w 1 w 2 0 0 0 0 0 1 1 0 1 6 7 1 5 0 0 0 5 4 13 2 1 1 0 20 1 1 5 1 1 0 1 8 Eliminoidaan perusmuuttujat w 1 ja w 2 keinotekoiselta objektifunktioriviltä: 6 5 18 3 2 0 0 28 43
I vaiheen aloitusperusmuodon simplex-taulukko: x 1 x 2 x 3 x 4 x 5 w 1 w 2 6 5 18 3 2 0 0 28 1 6 7 1 5 0 0 0 5 4 13 2 1 1 0 20 1 1 5 1 1 0 1 8 44
6 5 18 3 2 0 0 28 1 6 7 1 5 0 0 0 5 4 13 2 1 1 0 20 1 1 5 1 1 0 1 8 = 12/13 7/13 0 3/13 8/13 18/13 0 4/13 48/13 50/13 0 1/13 72/13 7/13 0 140/13 5/13 4/13 1 2/13 1/13 1/13 0 20/13 12/13 7/13 0 3/13 8/13 5/13 1 4/13 45
12/13 7/13 0 3/13 8/13 18/13 0 4/13 48/13 50/13 0 1/13 72/13 7/13 0 140/13 5/13 4/13 1 2/13 1/13 1/13 0 20/13 12/13 7/13 0 3/13 8/13 5/13 1 4/13 = 0 0 0 0 0 1 1 0 12 1 0 2 0 4 9 8 1/2 3/8 1 1/8 0 1/8 1/8 3/2 3/2 7/8 0 3/8 1 5/8 13/8 1/2 46
I vaiheen optimaalinen simplex-taulukko: x 1 x 2 x 3 x 4 x 5 w 1 w 2 0 0 0 0 0 1 1 0 12 1 0 2 0 4 9 8 1/2 3/8 1 1/8 0 1/8 1/8 3/2 3/2 7/8 0 3/8 1 5/8 13/8 1/2 Saatiin optimi, jossa w 1 = w 2 = 0, joten siirrytään II vaiheeseen 47
II vaiheen aloitusperusmuodon simplex-taulukko: x 1 x 2 x 3 x 4 x 5 12 1 0 2 0 8 1/2 3/8 1 1/8 0 3/2 3/2 7/8 0 3/8 1 1/2 48
12 1 0 2 0 8 1/2 3/8 1 1/8 0 3/2 3/2 7/8 0 3/8 1 1/2 = 72/7 0 0 11/7 8/7 60/7 1/7 0 1 2/7 3/7 12/7 12/7 1 0 3/7 8/7 4/7 49
II vaiheen optimaalinen simplex-taulukko: x 1 x 2 x 3 x 4 x 5 72/7 0 0 11/7 8/7 60/7 1/7 0 1 2/7 3/7 12/7 12/7 1 0 3/7 8/7 4/7 Ratkaisu: (x 1, x 2, x 3, x 4, x 5 ) = (0,4/7,12/7,0,0) Objektifunktion arvo: 60/7 50