JYVÄSKYLÄN YLIOPISTO 4. Luennon sisältö Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä kevät 2012 TIEA382 Lineaarinen ja diskreetti optimointi
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
JYVÄSKYLÄN YLIOPISTO Simplex-menetelmä Simplex-menetelmä: Kuljetaan sallitun alueen reunalla Pienissä tehtävissä käytännössä paras ja luotettavin menetelmä (jos koodattu tehokkaasti) Ratkaisuaika pahimmassa tapauksessa eksponentiaalinen George B. Dantzig, 1947 (U.S. Air Force Office of Statistical Control) Computing in Science and Engineering -lehti listasi sen yhdeksi 10:stä 1900-luvun merkittävimmistä algoritmeista (2000) kevät 2012 TIEA382 Lineaarinen ja diskreetti optimointi
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