Szimplex módszer, szimplex tábla Példaként tekintsük a következ LP feladatot: z = 5x 1 + 4x 2 + 3x 3 2x 1 + 3x 2 + x 3 5 4x 1 + x 2 + 2x 3 11 3x 1 + 4x 2 + 2x 3 8 x 1, x 2, x 3 0 = maximum, feltéve, hogy Vezessük be a s 1, s 2, s 3 hiányváltozókat (a feltételi egyenl tlenségek jobbés baloldalának különbségét (angolul: slack variable, slack=er tlen, laza, pangó, slacks=hosszú nadrág, pantalló). Ezek segítségével az eredetivel ekvivalens probléma: z = 5x 1 + 4x 2 + 3x 3 = maximum, feltéve, hogy s 1 = 5 2x 1 3x 2 x 3 s 2 = 11 4x 1 x 2 2x 3 s 3 = 8 3x 1 4x 2 2x 3 x 1, x 2, x 3, s 1, s 2, s 3 0 Itt a s 1, s 2, s 3 változókat bázisváltozóknak, x 1, x 2, x 3 -at nembázis változóknak nevezük. Induljunk ki az x 1 = x 2 = x 3 = 0 megoldásból, ekkor s 1 = 5, s 2 = 11, s 3 = 8 és a célfüggvény z = 0.Próbáljunk egy jobb megoldást keresni. Mivel a célfüggvényben x 1 együtthatója pozitív, ezért x 1 értékét megnövelve z értéke n. De x 1 értékét nem növelhetjük akármekkorára, mert a hiányváltozóknak nemnegatíveknek kell maradniuk. Ha x 1 0, x 2 = x 3 = 0 akkor az s 1 = 5 2x 1 0 x 1 5 2 = 2, 5 s 2 = 11 4x 1 0 x 1 11 4 = 2, 75 s 3 = 8 3x 1 0 x 1 8 3 = 2, 66.. 1
2 egyenl tlenségek mindegyikének teljesülnie kell ezért 0 x 1 2, 5 azaz x 1 -et legfeljebb 2, 5-re növelhetjük. Legyen tehát z értéke 5 5 2 x 1 = 5 2, x 2 = x 3 = 0 akkor s 1 = 0, s 2 = 1, s 3 = 1 2 = 12, 5-re n tt. Hogyan tovább? Mivel most s 1 = x 2 = x 3 = 0 így x 1 szerepét s 1 veszi át, a célfüggvényt és a feltételeket át kell írnunk ennek megfelel en. A s 1 deníciójából x 1 = 2, 5 0, 5s 1 1, 5x 2 0, 5x 3 ezt a célfüggvénybe, s 2, s 3 -ba helyettesítve kapjuk, hogy z = 5 (2, 5 0, 5s 1 1, 5x 2 0, 5x 3 ) + 4x 2 + 3x 3 = 12, 5 2, 5s 1 3, 5x 2 + 0, 5x 3 s 2 = 11 4 (2, 5 0, 5s 1 1, 5x 2 0, 5x 3 ) x 2 2x 3 = 1 + 2s 1 + 5x 2 s 3 = 8 3 (2, 5 0, 5s 1 1, 5x 2 0, 5x 3 ) 4x 2 2x 3 = 0, 5 + 1, 5s 1 + 0, 5x 2 0, 5x 3 Az új változókkal a problémánk: z = 12, 5 2, 5s 1 3, 5x 2 + 0, 5x 3 = maximum, feltéve, hogy x 1 = 2, 5 0, 5s 1 1, 5x 2 0, 5x 3 s 2 = 1 + 2s 1 + 5x 2 s 3 = 0, 5 + 1, 5s 1 + 0, 5x 2 0, 5x 3 s 1, x 2, x 3, x 1, s 2, s 3 0 Ismét látható, hogy s 1 = x 2 = x 3 = 0 esetén x 1 = 2, 5, s 2 = 1, s 3 = 0, 5 és z = 12, 5. Mivel most a célfüggvényben egyedül x 3 együtthatója pozitív, ennek növelésével növelhetjük a célfüggvényt. Mennyivel növelhetjük? Az x 3
3 0, s 1 = x 2 = 0-nál az x 1, s 2, s 3 0 feltételekb l x 1 = 2, 5 0, 5x 3 0 x 3 5 s 2 = 1 0 ez minden x 3 esetén teljesül s 3 = 0, 5 0, 5x 3 0 x 3 1 ezért x 3 = 1 s 3 = 0 és s 1 = x 2 = 0, a célfüggvény 0, 5 1 = 0, 5-del n, 13-ra. Az új (nembázis, vagy független) változók s 1, x 2, s 3, az x 3 szerepét s 3 veszi át. Mivel a s 3 = 0, 5 + 1, 5s 1 + 0, 5x 2 0, 5x 3 egyenletb l x 3 = 1 + 3s 1 + x 2 2s 3 ezt behelyettítve z, x 1, s 2 -be (végezze el a számításokat!) kapjuk, az új változókkal felírt problémát: z = 13 s 1 3x 2 s 3 = maximum, feltéve, hogy x 1 = 2 2s 1 2x 2 + s 3 s 2 = 1 + 2s 1 + 5x 2 s 3 = 1 + 3s 1 + x 2 2s 3 s 1, x 2, s 3, x 1, s 2, x 3 0 Most már nincs pozitív együttható z képletében, nem tudjuk z-t növelni. Mivel s 1, x 2, s 3 0 ezért z = 13 s 1 3x 2 s 3 13, de s 1 = x 2 = s 3 = 0 (míg x 1, s 2, x 3 értékeit az el z képletekb l számolhatjuk) mellett z = 13 így az optimális megoldás z = 13. Az el z kben tárgyalt feladat szimplex táblája az s 1, s 2, s 2 hiányváltozók bevezetése utáni rendszer 2x 1 + 3x 2 + x 3 + s 1 = 5 4x 1 + x 2 + 2x 3 + s 2 = 11 3x 1 + 4x 2 + 2x 3 + s 3 = 8 5x 1 4x 2 3x 3 + z = 0
4 (ahol x 1, x 2, x 3, s 1, s 2, s 3 0 és a z maximumát keressük) együtthatóinak mátrixából áll: x 1 x 2 x 3 s 1 s 2 s 3 s 1 2 3 1 1 0 0 5 s 2 4 1 2 0 1 0 11 s 3 3 4 2 0 0 1 8 z 5 4 3 0 0 0 0 A táblázat sorainak, oszlopainak jelölését, a célfüggvényt és az egyenletek jobboldalán álló számokat egy-egy vonallal elválasztottuk. 1. lépés. El ször megkeressük a pivot elemet (pivot= forgó ), a belép változót és az elhagyott változót. Kiválasztjuk az alsó sor "legnegativabb" elemét (azaz a legnagyobb abszolút érték negatív elemet) ez példánkban 5. Ha több ilyen is van akkor nem számít melyiket választjuk. Ennek az oszlopa lesz a pivot oszlop. Ezután a az utolsó oszlop minden elemét osztjuk a pivot oszlop megfelel elemével (csak a pozitív elemekkel osztunk, a többi hányadost gyelmen kívül hagyjuk), a hányadosokat az utolsó oszlop után írtuk be: x 1 x 2 x 3 s 1 s 2 s 3 hányados s 1 2 3 1 1 0 0 5 5 2 s 2 4 1 2 0 1 0 11 11 4 s 3 3 4 2 0 0 1 8 8 3 = 2, 5 pivot sor = 2, 75 = 2, 66 z 5 4 3 0 0 0 0 A hányadosok közül megkeressük a legkisebbiket (ha több ilyen is van, akkor mindegy melyiket vesszük) ennek sora a pivot sor nálunk a legkissebb hányados 2,5 az els sorban így a pivot sor az els sor. A pivot elem a pivot sorban és pivot oszlopban lév elem, nálunk 2. A belép
változó a pivot oszlopnak megfelel változó (nálunk x 1 ), a kilép változó a pivot sornak megfelel változó (nálunk s 1 ). 2. lépés. Most a pivotálás következik. A pivot sor elemeit elosztjuk a pivot elemmel: x 1 x 2 x 3 s 1 s 2 s 3 hányados 5 s 1 1 1, 5 0, 5 0, 5 0 0 2, 5 5 2 s 2 4 1 2 0 1 0 11 11 4 = 2, 5 pivot sor = 2, 75 s 3 3 4 2 0 0 1 8 8 3 z 5 4 3 0 0 0 0 = 2, 66 majd e sor alkalmas többszöröseit a többi sorból levonva elérjük, hogy a pivot oszlop többi elemei zérusok legyenek. Nálunk az els sor négyszeresét kell levonni a második sorból, majd az els sor háromszorosát kell levonni a harmadik sorból, végül az els sor ötszörösét kell az utolsó sorhoz hozzáadni. A kilép változó nevét a belép vel kell helyettesíteni. Az így kapott táblázat x 1 x 2 x 3 s 1 s 2 s 3 x 1 1 1, 5 0, 5 0, 5 0 0 2, 5 s 2 0 5 0 2 1 0 1 s 3 0 0, 5 0, 5 1, 5 0 1 0, 5 z 0 3, 5 0, 5 2, 5 0 0 12, 5 Ezután ismételjük az 1. és 2. lépést az új táblázattal mindaddig amíg az utolsó sor elemei nemnegatívak vagy zérusok
6 lesznek. Ekkor az optimális megoldás a jobboldali oszlopból olvasható le. Táblázatunkban a -0,5 oszlopa lesz a pivot oszlop, a pivot sort pedig ismét az utolsó oszlop és a pivot oszlop megfelel elemeinek hányadosai közül a legkisebb hányados sora adja (csak pozitív elemekkel osztunk), esetünkben a harmadik sor. A belép változó a pivot oszlopnak megfelel változó (nálunk x 3 ), a kilép változó a pivot sornak megfelel változó (nálunk s 3 ). x 1 x 2 x 3 s 1 s 2 s 3 hányados x 1 1 1, 5 0, 5 0, 5 0 0 2, 5 2,5 0,5 = 5 s 2 0 5 0 2 1 0 1 s 3 0 0, 5 0, 5 1, 5 0 1 0, 5 0,5 0,5 z 0 3, 5 0, 5 2, 5 0 0 12, 5 = 1 pivot sor A harmadik sort 0,5-tel elosztjuk, majd az így kapott sor 0,5-szeresét az els b l levonjuk és az utolsó sorból is levonjuk. A kapott táblázat (melyb l az utolsó oszlop hányadosait lehagytuk) x 1 x 2 x 3 s 1 s 2 s 3 x 1 1 2 0 2 0 1 2 s 2 0 5 0 2 1 0 1 x 3 0 1 1 3 0 2 1 z 0 3 0 1 0 1 13
Mivel az utolsó oszlopban már nincs negatív elem, ezért a megoldás befejez dött, z maximális értéke 13, és a baloldali oszlopban szerepl változók optimális értékeit a z oszlopból olvashatjuk le azaz most x 1 = 2, s 2 = 1, x 3 = 1 a többi változó optimális értéke zérus, azaz x 2 = s 1 = s 3 = 0. Megjegyzések. A fennt ismertetett un. primál szimplex módszer alkalmazható a standard normál maximumfeladat megoldására. Ez a feladat x 0 Ax b, b 0 c x = z max alakba írható, ahol x = (x 1,..., x n ) R n 1 a keresett n dimenziós oszlopmátrix/vektor 0 = (0,..., 0) R n 1, az n dimenziós oszlop zérusvektor, az x 0 egyenl tlenség koordinátánként (elemenként) értend, A = (a ij ) R k n egy k n típusú (adott) mátrix, b = (b 1,..., b k ) R k 1 adott k dimenziós nemnegatív koordinátákkal rendelkez oszlopmátrix/vektor c = (c 1,..., c n ) R n 1 egy n dimenziós adott sorvektor, c = (c 1,..., c n ) R 1 n. Feltételezhet, hogy c 0, c 0 vagyis a c i értékek között vannak pozitívok, ugyanis ellenkez esetben x = 0 adja az optimális megoldást. 7