3 Simplex-menetelmä Lähdetään jostakin annettuun LP-tehtävään liittyvästä käyvästä perusratkaisusta x (0) ja pyritään muodostamaan jono x (1), x (2),... käypiä perusratkaisuja siten, että eräässä vaiheessa päädyttäisiin optimaaliseen käypään perusratkaisuun. Olkoon A R m n, m < n, r(a) = m, x R n, c 0, b R m Oletetaan että on annettu standardimuotoinen tehtävä c T x = min! Ax = b (x R n ) (3.1) x 0 Tarvittaessa sarakkeiden järjestystä voidaan vaihtaa, joten voidaan oletetaan, että A = [B,N], B R m m, N R m (n m) missä B on säännöllinen ja vektorille x on esitys [ ] x 1 xb x =, x B =. x N Nyt yhtälö Ax = b saa muodon x m, x N = x m+1. x n. Bx B +Nx N = b. (3.2) 1 Simpleksimenetelmän aloitus Lähdetään hajotelman A = [B, N] liittyvästä käyvästä perusratkaisusta [ ] xb x =, x 0 B 0 (3.3) joka toteuttaa yhtälön Ax = b eli Nyt kohdefunktiolla on arvo Bx B = b (eli x B = B 1 b) (3.4) c 1 z = c T x = c T Bx B, c B =. c m. 28
2 Tutkitaan onko minimi löydetty ] [ˆxB Olkoon ˆx R n mielivaltainen käypä ratkaisu ˆx = ja c = ˆx N Kohdefunktiolle tulee ẑ := c Tˆx ] [ˆxB = [c T B,c T N] ˆx N [ cb c N ]. (3.5) = c T Bˆx B +c T Nˆx N Nyt Aˆx = Bˆx B Nˆx {}}{{}} N { m ˆx j A j = ˆx j A j + ˆx j A j j=1 j=1 Koska B on säännöllinen niin = Bˆx B +Nˆx N Aˆx = b Bˆx B +Nˆx N = b (3.4) = Bx B On siis saatu että Aˆx = b on yhtäpitävä yhtälölle Bˆx B +Nˆx N = Bx B eli ˆx B +B 1 Nˆx N = x B eli (3.6) ˆx B = x B B 1 Nˆx N, missä Tällöin saadaan Nˆx N = ˆx j A j (3.7) B 1 Nˆx N = ˆx j B 1 A j ˆx B = x B ˆx j B 1 A j (3.8) 29
Sijoittamalla 3.8 kohdefunktioon 3.5 ja asettamalla z j = c T B B 1 A j saadaan: ẑ = c Tˆx = c T Bˆx B +c T Nˆx N = c T B(x B ˆx j B 1 A j )+c T Nˆx N = c T Bx B = z = z ˆx j c T BB 1 A j +c T Nˆx N (3.9) ˆx j z j +c T Nˆx N ˆx j (z j c j ) Käyville ratkaisuille ˆx on ˆx j 0 kaikille j = 1,...,n. Koska ẑ = z niin x on minimi jos z j c j 0, j = m+1,...,n. ˆx j (z j c j ) (3.10) Huomattakoon että vektori c on annettu ja komponentit z j saadaan kaavasta z j = c T B B 1 A j joten z j c j on laskettavissa. Jos ehto z j c j 0 (m+1 j n) toteutuu, niin minimi on löytynyt: [ ] xb x =, x 0 B = B 1 b ja z = c T Bx B 3 Oletetaan, että x ei ole minimi. Tällöin simpleksimenetelmässä suoritetaan kannanvaihto jonka avulla pyritään löytämään uusi käypä perusratkaisu jolle kohdefunktio saa pienemmän arvon. Koska x ei ole minimi, niin on olemassa m + 1 j n siten, että z j c j > 0. Valitaan indeksi k, m+1 k n, siten, että 0 < z k c k = max{z j c j m+1 j n} (3.11) Käytetään kaavaa (3.8) ˆx B = x B ˆx j B 1 A j ja asetetaan ˆx j = 0, j k ja j = m+1,...,n. Tällöin tulee ˆx B = x B ˆx k B 1 A k 30
missä arvo ˆx k > 0 valitaan vielä sopivasti. Olkoon y k = B 1 A k, y k = y 1k. y mk Katsotaan nyt vektorin ˆx B R m komponentteja ja ˆx B = x B ˆx k y k (ˆx B ) i = (x B ) i ˆx k y ik 1 i m Jos y ik 0, niin (ˆx B ) i (x B ) i 0 Jos y ik > 0, niin (ˆx B ) i = 0 kun ˆx k = (x B) i y ik Oletetaan, että y ik > 0 ainakin yhdelle i. Valitaan ˆx k siten, että (ˆx B ) i = 0 ainakin yhdelle indeksille i. { } (xb ) i ˆx k := min y ik > 0 = (x B) r (eräälle r) 1 i m y ik y rk Olkoon x surkastumaton. Tällöin (ˆx B ) r = 0 ja ˆx k > 0. Vektori ˆx = [ˆx B,ˆx N ] T on annettu kaavoilla ˆx B : ˆx N : { (xb ) i y ik y rk (x B ) r 0, 1 i m, i r ˆx k = (x B) r y rk > 0, i = r { (ˆx B ) r = 0, j = k x j = 0, m+1 j n, j k (3.12) Osoitetaan, että kaavoilla (3.12) määritelty vektori ˆx = (ts. Aˆx = b, ˆx 0). Nyt ˆx B = x B ˆx k y k, missä y k = B 1 A k, joten ] [ˆxB ˆx N on käypä ratkaisu ˆx B = x B ˆx j B 1 A j (ˆx j = 0, m+1 j n, j k) ˆx B = B 1 b B 1 Nˆx N (Nˆx N = ] [ˆxB B 1 [B,N] = B 1 b ˆx N Aˆx = b 31 ˆx j A j )
Edelleen ˆx 0 ( kaava (3.12) ) ˆx on käypä ratkaisu. Osoitetaan, että ˆx on myös perusratkaisu. Ax = b m (x B ) i A i = b i=1 m (x B ) i A i +(x B ) r A r = b ( ) i=1 i r A k = By k = m y ik A i = y rk A r + i=1 A r = 1 y rk A k m i=1 i r Sijoitetaan ( ) kaavaan ( ) m i=1 i r y ik y rk A i ( (xb ) i y ik y rk (x B ) r }{{} (ˆx B ) i ( ) m y ik A i, y rk > 0 i=1 i r ) Ai + (x B) r A k = b y }{{ rk } ˆx k vektorijoukko {A i 1 i m, i r} {A k } on lineaarisesti riippumaton, joten ˆx on perusratkaisu. 3.1 Simplex algoritmi Indeksijoukot P, V (perusmuuttujat ja vapaat muuttujat) 1. Etsi käypä perusratkaisu x = [ ] xb, x 0 B = B 1 b = b z := c T x = c T Bx B. 2. Ratkaise yhtälö wb = c T B eli w = ct B B 1. Laske Valitse k siten, että z j c j = wa j c j, j V z k c k = max j V {z j c j } Jos z k c k 0, niin lopeta. Piste x on optimiratkaisu. 32
3. Ratkaise By k = A k eli y k = B 1 A k. Jos y k 0, niin lopeta: inf x X ct x =. 4. Muuttuja x k siirtyy perusmuuttujaksi ja muuttuja (x B ) r jättää kannan. Indeksi r määräytyy testistä (x B ) r {(x B ) i = min y ik > 0 } y rk i P y ik Päivitä matriisi B ja indeksijoukot P ja V. Mene kohtaan 1. Esimerkki 3.1. Ratkaistaan käyttämällä Simplex algoritmia 3.1. (4x 1 +3x 2 ) = min! 2x 1 +3x 2 18 4x 1 +2x 2 10 x 1,x 2 0. Ratkaisu: A = Tehtävän ratkaisu simpleksialgoritmilla: [ ] 2 3 1 0 = [a 4 2 0 1 1,a 2,a 3,a 4 ]. b = (18,10) T, c T = ( 4, 3,0,0) 1 P = {3,4}, V = {1,2} eli B = [a 3,a 4 ] = I x B = B 1 b = b = b (käypä perusratkaisu). 2 w = c T B B 1 = (0,0) B 1 = (0,0) z 1 c 1 = wa 1 c 1 = 4 z 2 c 2 = wa 2 c 2 = 3 max j=1,2 {z j c j } = 4, siis valitaan k = 1. 3 By 1 = a 1 y 1 = a 1 = [2,4] T. 4 Perusmuuttujaksi siirretään x 1. Lisäksi { b1 min, b } { 2 18 = min y 11 y 21 2, 10 } = 5 4 2 muuttuja (x B ) 2 = x 4 jättää kannan. 33
1 P = {1,3}, V = {2,4} eli B = [a 1,a 3 ] = [ ][ ] [ ] 0 1 18 5 x B = 1 = 4 4 2 10 1 = b. 2 26 2 w = c T B B 1 = ( 4,0) ( 1 4 ) [ 0 1 4 2 [ ] 2 1 B 4 0 1 = 1 4 ] = (0, 1) [ ] 3 z 2 c 2 = (0, 1) ( 3) = 1 2 [ ] 0 z 4 c 4 = (0, 1) 0 = 1 1 [ ] 0 1 4 2 ja max j=2,4 {z j c j } = 1, siis valitaan k = 2. [ ][ ] 0 1 3 3 y 2 = ( 1) = 4 4 2 2 1 2 [1,4]T. 4 Perusmuuttujaksi siirretään x 2. Lisäksi muuttuja (x B ) 1 = x 1 jättää kannan. { 5/2 min 1/2, 13 } = 5 2 1 P = {2,3}, V = {1,4} eli B = [a 2,a 3 ] = [ ][ ] [ ] 0 1 5 5 x B = B 1 b = 1 = = b. 2 2 3 26 3 [ ] 0 1 2 w = c T B B 1 = ( 3,0) ( 1) = 2 2 3 1(0,3) 2 [ ] 3 1 B 2 0 1 = 1 2 z 1 c 1 = 1 [ ] 2 2 (0,3) ( 4) = 2 4 ] [ ] 0 1 2 3 ja z 4 c 4 = 1 2 (0,3) [ 0 1 0 = 3 2 Siis z 1 c 1, z 4 c 4 < 0, joten algoritmi päättyy ja x T = (0,5,3,0) on optimiratkaisu ja c T x = 15. 34
4 Simplex-menetelmän tulkintaa Tarkastellaan tässä kappaleessa hieman yksityiskohtaisemmin(yksinkertaisemmin) simplexmenetelmän johtamista tutkimalla lineaarista yhtälöryhmää joka määrittelee systeemin rajoitteet ja käyvän perusratkaisun. Tämä lähestymistapa on (ehkä) helpompi kuin edellä esitetty matriiseihin perustuva lähestymistapa, mutta sitä ei voida esittää kompaktissa muodossa. Lähestymistapa havainnollistaa kuitenkin hyvin simplex-menetelmää ja antaa hyvän pohjan ymmärtää menetelmän matriisiesitystä. 4.1 Kannan vaihto Käsitellään yhtälöryhmää: a 11 x 1 +a 12 x 2 + +a 1n x n = b 1 a 21 x 1 +a 22 x 2 + +a 2n x n = b 2. a m1 x 1 +a m2 x 2 + +a mn x n = b m misä m < n. Jos yhtälöt ovat lineaarisesti riippumattomia, niin Gaussin redusointimenetelmän avulla yhtälöryhmä voidaan saattaa joko kolmiomaiseen tai kanoniseen muotoon. Oletetaan yhtälöryhmä muokatuksi kanooniseen muotoon: x 1 +y 1,m+1 x m+1 +y 1,m+2 x m+2 + +y 1,n x n = y 1,0 x 2 +y 2,m+1 x m+1 +y 2,m+2 x m+2 + +y 2,n x n = y 2,0.... (4.1) x m +y m,m+1 x m+1 +y m,m+2 x m+2 + +y m,n x n = y m,0 Muuttujatx 1,x 2,...,x m ovatperusmuuttujatjajamuutmuuttujatovatei-perusmuuttujia. Vastaava kantaratkaisu on: x 1 = y 1,0, x 2 = y 2,0,...,x m = y m,0, x m+1 = 0,...,x n = 0, tai vektorimuodossa: x = (y 0,0), missä y 0 on m-ulotteinen ja 0 on (n-m)-ulotteinen vektori. Sanotaan jatkossa, että systeemi on kanonisessa muodossa jos n:n muuttujan joukossa on m perusmuuttujaa joilla on ominaisuus että jokainen niistä esiintyy vain yhdessä yhtälössä ja sen kerroin on 1. Esitetään jatkossa yhtälöryhmä kertoimiensa taulukkona: 35
1 0 0 y 1,m+1 y 1,m+2 y 1,n y 1,0 0 1 0 y 2,m+1 y 2,m+2 y 2,n y 2,0. (4.2) 0 0 1 y m,m+1 y m,m+2 y m,n y m,0 Kannanvaihdossa jostain perusmuuttujasta tehdään ei-perusmuuttuja ja päinvastoin. On ratkaistava uusia perusmuuttujia vastaava kanoninen muoto. Proseduuri on aika yksinkertainen. Oletetaan, että muodossa (4.1) halutaan korvata perusmuuttuja x p, 1 p m ei-kantamuuttujalla x q. Korvaaminen voidaan tehdä mikäli y p,q 0: Jaetaan p:s rivi y p,q :lla (saadaan x q :n kertoimeksi p:llä rivillä 1) ja kerrotaan sitä sopivasti, jotta vähentämällä se yksitellen muista riveistä saadaan niihin x q :n kertoimeksi 0. Merkitselällä uuden kanonisen systeemin kertoimia y i,j saadaan eksplisiittinen kaava: y i,j = y i,j y p,j y p,q y i,q, Huom. Alkiota y p,q sanotaan tukialkioksi. i p y p,j = y p,j y p,q (4.3) 4.2 Mikä vektori jättää kannan Oletetaan, että käypä perusratkaisu x = (x 1,x 2,...,x m,0,0,...,0) ja vastaava esitysmuoto: x 1 A 1 +x 2 A 2 + x m A m = b (4.4) Oletetaan, että x i > 0,i = 1,...,m (ts. perusratkaisu ei ole surkastunut). Oletetaan myös, että olemme päättäneet tuoda kantaan vektorin A q,q > m. Vektori A q voidaan kirjoittaa kantavektoreiden avulla: A q = y 1,q A 1 +y 2,q A 2 + y m,q A m (4.5) Keromalla (4.5) reaaliluvulla ε 0 ja vähentämällä (4.4):stä, saadaan (x 1 εy 1,q )A 1 +(x 2 εy 2,q )A 2 + +(x m εy m,q )A m +εa q = b (4.6) Nyt kaikille ε 0 (4.6) antaa vektorin b enintään m+1:n vektorin lineaarikombinaationa. On ilmeistä, että pienillä ε yhtälö (4.6) antaa käyvän ratkaisun mutta ei perusratkaisua. Kun ε kasvaa, niin kertoimet joko kasvavat tai pienenevät yhtälössä (4.6). 36
Jos jokin kertoimista pienenee, niin asetetaan ε yhtäsuureksi, missä ensimmäinen (tai useita) kertoimista tulee nollaksi. Ts., { xi } ε = min : y i,q > 0. (4.7) i y i,q Nyt uutta käypää perusratkaisua määrättäessä vektori A q korvaa vektorin A p, missä indeksi p on yhtälön (4.7) minimoiva indeksi. Huomautus 1. Jos (4.7):n minimoiva indeksi p ei ole yksikäsitteinen, niin uusi ratkaisu on surkastunut ja mikä tahansa indekseistä voidaan valita. 2. Josyksikääny i,q eiolepositiivinen,niineiuuttaperusratkaisuavoidamuodostaa. Tässä tapauksessa on kuitenkin olemassa käypä ratkaisu jolla on äärettömän suuret kertoimet. Tämä tarkoittaa, että käypä joukko ei ole rajoitettu. 3. Jos on annettu käypä ratkaisu ja mv. vektori A q, niin joko on olemassa uusi käypä kantaratkaisu, missä A q on yhtenä kantavektorina ja yksi alkuperäisistä katavektoreista on poistettu tai käypä joukko on rajoittamaton. Katsotaan asiaa taulukon muodossa. Oletetaan, että rajoitteita Ax = b (4.8) x 0 (4.9) vastaava taulukko on: A 1 A 2 A m A m+1 A m+2 A n b 1 0 0 y 1,m+1 y 1,m+2 y 1,n y 1,0 0 1 0 y 2,m+1 y 2,m+2 y 2,n y 2,0. (4.10) 0 0 1 y m,m+1 y m,m+2 y m,n y m,0 Taulukko voi olla määräytynyt monien askelien jälkeen alkuperäisestä taulukosta, muttajokahetkelläsekuvaaratkaisuakannallea 1,A 1,,A m.oletetaan,ettäy 1,0,y 2,0,,y m,0 ovat ei-negatiivisia, joten kantaratkaisu x 1 = y 1,0,x 2 = y 2,0,,x m = y m,0 on käypä. Kun halutaan tuoda kantaan vektori A q,q > m, ja säilyttää uuden ratkaisun käypyys niin valitaan tukialkio käyttämällä kaavaa (4.7). Ts., laskemalla osamäärät x i /y i,q = y i,0 /y i,q,i = 1,...,m ja valitsemalla niistä pienin ei-negatiivinen (esim. i = p) ja valitsemalla tukialkioksi sitä vastaava y p,q. 37
4.3 Käyvän minimiratkaisun määrittäminen Edellä osoitettiin kuinka on mahdollista muodostaa yhdestä käyvästä kantaratkaisusta toinen valitsemalla mielivaltaisesti kantaan tuotava sarake ja sitten sopivasti valitsemalla tukialkio tästä sarakkeesta (ts. kannasta poistettava sarake). Simpleksi menetelmän ideana on valita kantaan tuotava sarake siten, että uusi sallittu kantaratkaisu tuottaa alhaisemman kustannusfunktion arvon. Nyt esitettävillä laskutoimenpiteillä voidaan määritellä mikä vektori tuodaan kantaan ja edellä esitetyllä laskutoimenpiteillä määritellään mikä vektori poistuu kannasta, jotta ratkaisu säilyisi sallittuna. Oletetaan, että meillä on käypä kantaratkaisu (x B,0) = (y 1,0,y 2,0,,y m,0,0,0,,0) (4.11) ja taulukko, missä on yksikkömatriisi ensimmäisessä m sarakkeessa A 1 A 2 A m A m+1 A m+2 A n b 1 0 0 y 1,m+1 y 1,m+2 y 1,n y 1,0 0 1 0 y 2,m+1 y 2,m+2 y 2,n y 2,0. (4.12) 0 0 1 y m,m+1 y m,m+2 y m,n y m,0 Kustannusfunktion arvo mv. ratkaisulle x on: z = c 1 x 1 +c 2 x 2 + +c n x n, (4.13) ja kantaratkaisulle vastaava arvo on z 0 = c T Bx B, missä c T B = (c 1,c 2,,c m ). Taulun (4.12) nojalla on selvää, että mv. x pätee: x 1 =y 1,0 y 1,j x j x 2 =y 2,0 y 2,j x j. (4.14) x m =y m,0 y m,j x j. 38
Käyttämällä yhtälöä (4.14) voidaan eliminoida x 1,x 2, x m yleisestä muodosta (4.13). Saadaan z = c T x = z 0 +(c m+1 z m+1 )x m+1 +(c m+2 z m+2 )x m+2 + +(c n z n )x n (4.15) missä z j = y 1,j c 1 +y 2,j c 2 + +y m,j c m, m+1 j n, mistä määräytyy kantaan siirtyvä sarake. Yhtälö antaa kustannusfunktion z arvon yhtälöryhmän Ax = b mille tahansa ratkaisulle muuttujien x m+1, x m+2,,x n avulla. Yhtälöstä (4.15) voidaan myös määrittää hyödytäänkö ottamalla kantaan mukaan jokin ei-kantamuuttuja. Jos c j z j on negatiivinen jollekin j, m+1 j n, niin kasvattamalla x j :n arvoa nollasta positiiviseksi voidaan pienentää kustannusfunktion arvoa. Lause 4.1. (Käyvän perusratkaisun parantaminen) Olkoon z 0 käypää perusratkaisua vastaava objektifunktion arvo ja oletetaan, että jollakin j pätee c j z j < 0. Silloin on olemassa käypä ratkaisu jolle objektifunktion arvo z < z 0. Jos sarake A j voidaan sijoittaa alkuperäiseen kantaa jonkin vektorin paikalle siten, että saadaan sallittu kantaratkaisu, niin uudelle ratkaisulle pätee z < z 0. Jos A j :ta ei voida sijoittaa siten että saataisiin aikaa käypä kantaratkaisu, niin ratkaisujoukko on rajoittamaton ja objektifunktion arvo lähestyy :tä. Todistus. Tulos seuraa suoraan ylläolevasta analyysistä. Lause 4.2. Optimaalisuus Jos jollekin käyvälle perusratkaisulle pätee: c j z j 0 kaikilla j, niin tämä ratkaisu on optimaalinen. Todistus. Tulos seuraa välittömästi yhtälöstä (4.15), koska mille tahansa käyvälle ratkaisulle x i 0 kaikilla i ja siten objektifunktion arvolle z pätee z z 0 0. Koska simplex-menetelmässä kertoimilla c j z j on keskeinen merkitys niin merkitään niitä hieman lyhyemmin: r j = c j z j. Kertoimia kutsutaan suhteellisiksi kustannuskertoimiksi(relative cost coefficients) tai redusoiduiksi kustannuskertoimiksi(reduced cost coefficients). Kertoimet mittaavat muuttujan kustannusta annetun kannan suhteen. Esimerkki 4.1. Ruokavalio Tulkitaan suhteellisia kustannuskertoimia esimerkin avulla. Ongelma: Kuinka määritellään edullisin ruokavalio siten, että se toteuttaa hyvälle terveydelle asetetut ravintoaineiden vaatimukset? Ihmisen tulisi saada päivittäin tiettyjä ravintoaineita vähintään tietty määrä. 39
Oletetaan, että markkinoilla on tarjolla n erilaista ruokaa (leipä, mehu, levite,...) ja ruokaa i myydään hintaan c i /yksikkö. Lisäksi on olemassa m eri ravintoainetta (vitamiinit,rasvat...)joitaihmisentulisisaadavähintäänb j yksikköäpäivässä.ruokien ravintoainepitoisuudet tunnetaan, ts. ruoka i sisältää a ji yksikköä ravintoainetta j. Merkitään x i :llä ruuan i määrää henkilön ruokavaliossa. Henkilö haluaa minimoida ruuan hinnan siten, että hän saa kuitenkin ravinnostaan riittävästi tarpeellisia ravintoaineita. Saadaan seuraava LP-ongelma: rajoittein c 1 x 1 +c 2 x 2 + +c n x n min! (4.16) a 11 x 1 +a 12 x 2 + +a 1n x n b 1 a 21 x 1 +a 22 x 2 + +a 2n x n b 2. a m1 x 1 +a m2 x 2 + +a mn x n b m x 0 Tulkitaan LP-ongelmaa (4.16), missä nyt ravintoaine sisällön täytyy toteutua tarkasti: c T x min! Ax = b x 0 Matriisin A sarake antaa ravintoaine sisällön aina tietylle ruualle. Annetulle kannalle, sanotaan m ensimmäistä A:n saraketta, simpleksi taulukko kertoo, kuinka minkä tahansa kantaan kuulumaton ruoka (tark. ruuan ravintoaine sisältö) voidaan konstruoida kantaan kuuluvien ruokien avulla. Jos esim. porkkana ei ole kannassa voimme muodostaa keinotekoisen porkkanan valitsemalla sopivat määrät kannassa olevia ruokia. Kun määritetään kantaratkaisun optimaalisuutta, käsitellään jotain ei-kantaratkaisuun kuuluvaa ruokaa - esim. porkkanaa - ja tutkitaan, että hyödytäänkö sen tuomisesta kantaan. Hyöty on helposti tutkitavissa kun verrataan porkkanan kustannusta c j keinotekoisesti tehdyn porkkanan kustannukseen (olkoon porkkanan indeksi on j). Sen kustannus on: m z j = c i y i,j. i=1 Jos r j = c j z j < 0 niin on edullista käyttää oikeaa porkkanaa keinotekoisen sijaan, ts. porkkana siirretään kantaan. 40
4.4 Taulukkoproseduuri simplex-menetelmälle Lähdetään taulukosta, missä vektori b = Ax on esitetty kanonisessa muodossa vastaten käypää perusratkaisua. Lisätään viimeiseksi rivi, mikä sisältää suhteelliset kustannuskertoimet ja senhetkisen kustannuksen vastaluvun. Tuloksena on simplex-taulukko: A 1 A 2 A m A m+1 A m+2 A n b - 1 0 0 y 1,m+1 y 1,m+2 y 1,n y 1,0 0 1 0 y 2,m+1 y 2,m+2 y 2,n y 2,0. (4.17) 0 0 1 y m,m+1 y m,m+2 y m,n y m,0-0 0 0 r m+1 r m+2 r n z 0 Suhteellinen kustannuskerroin r j, m+1 j n kertoo kasvaako vai laskeeko kustannusfunktion arvo jos muuttuja x j tuodaan kantaan. Simplex taulukkoalgoritmi Step 0. Muodosta simplex taulukko (4.17) mikä vastaa käypää kantaratkaisua. Step 1. Jos kaikki r j 0, lopeta; sen hetkinen käypä perusratkaisu on optimaalinen. Step 2. Valitse q siten, että r q < 0. (ei-kantamuuttuja x q siirtyy kantaan.) Step 3. Laske suhteet y i,0 /y i,q y i,q > 0, i = 1,...,m. Jos yksikään y i,q > 0, lopeta; käypä joukko on rajoittamaton. Muuten valitse indeksi p siten, että se vastaa suhdeluvun minimiä. Step 4. Päivitä kaikki rivit, mukaanlukien viimeinen käyttämällä tukialkiona alkiota y p,q. Mene askeleeseen 1. Esimerkki 4.2. Simplex taulukkoalgoritmi 3x 1 +x 2 +3x 3 max! 2x 1 +x 2 +x 3 2 x 1 +2x 2 +3x 3 5 2x 1 +2x 2 +x 3 6 x 1 0, x 2 0, x 3 0. 41
Muokataan tehtävä standardimuotoon: muutetaan maksimointi minimoinniksi kertomalla objektifunktio -1:llä ja lisätään puutemuuttujat x 4,x 5,x 6. Saadaan taulukko: A 1 A 2 A 3 A 4 A 5 A 6 b 2 1 1 1 0 0 2 1 2 3 0 1 0 5 2 2 1 0 0 1 6 r T : 3 1 3 0 0 0 0 Tehtävä on kanonisessa muodossa jossa puutemuuttujat muodostavat kannan. Mikä tahansa ei kantamuuttujista x 1,x 2,x 3 voidaan siirtää kantaan. Valitaan vaikkapa x 2, siis q=2. Lasketaan suhteet b i /y i2 ja valitaan minimiarvoa vastaava indeksi p=1. Tukialkio on y 1,2 = 1. Päivitetään taulukko kaavoilla: Saadaan: y i,j = y i,j y p,j y p,q y i,q, i 1 y p,j = y p,j y p,q 2 1 1 1 0 0 2 3 0 1 2 1 0 1 2 0 1 2 0 1 2 1 0 2 1 0 0 2 Kustannusfunktion arvo on pienentynyt -2:een. Tukialkioksi saadaan y 2,3 = 1, p=2, q=3. Saadaan uusi taulukko: 5 1 0 3 1 0 1 3 0 1 2 1 0 1 5 0 0 4 1 1 3 7 0 0 3 2 0 4 Kustannusfunktion arvo on pienentynyt -4:ään. Tukialkioksi saadaan y 1,1 = 5, p=1, 42
q=1. Saadaan uusi taulukko: 1 3 1 0 1 1 0 5 5 5 5 3 0 1 1 2 8 0 5 5 5 5 0 1 0 1 0 1 4 7 6 3 27 0 0 0 5 5 5 5 Koska viimeisellä rivillä ei ole negatiivisia alkioita, niin kantaratkaisu x 1 = 1 5,x 2 = 0,x 3 = 8 5,x 4 = 0,x 5 = 0,x 6 = 4 on optimipiste ja optimiarvo on 27 5 Matriisimuoto simplex taulukolle Oletetaan, että matriisi B sisältää matriisin A m ensimmäistä saraketta. Ositetaan A,x ja c T seuraavasti: LP-ongelma saadaan muotoon: A = [B,N] x = (x B,x N ), c T = (c T B,c T N) c T Bx B +c T Nx N min! Bx B +Nx N = b (4.18) x B 0, x N 0 Matriisia B vastaava käypä perusratkaisu x = (x B,0), missä x B = B 1 b on saatu asettamalla x N = 0. Toisaalta mille tahansa x N voidaan kaavan (4.18) nojalla laskea: x B = B 1 b B 1 Nx N Sijoitetaan tämä kustannusfunktion yleiseen lausekkeeseen, saadaan: z = c T B(B 1 b B 1 Nx N )+c T Nx N = c T BB 1 b+(c T N c T BB 1 N)x N mikä kuvaa minkä tahansa ratkaisun kustannusta x N :n funktiona, ts. suhteellinen kustannusvektori on: r T N = c T N c T BB 1 N 43
Simplex taulu tulee nyt muotoon: I B 1 N B 1 b T =... (4.19) 0 c T N ct B B 1 N c T B B 1 b 44