Szimplex módszerek Ujvári Miklós Utolsó módosítás: 2000. december Legyen A = a 1,...,a n R m n. A B = b 1,...,b r R m r ennek bázisa, ha a b 1,...,b r vektorok lineárisan függetlenek és generálják az a 1,...,a n vektorokat. Ez azzal ekvivalens, hogy a b 1,...,b r vektorok az Im A altér bázisát alkotják, speciálisan r = dim Im A. B pontosan akkor bázisa A-nak, ha léteznek egyértelmű τ ij együtthatók, úgy, hogy a j = r i=1 τ ij b i j = 1,...,n legyen, vagyis a T = τ ij R r n jelöléssel A = BT. T ekkor a B bázishoz és a generált A-hoz tartozó bázistábla. Ha r = m, akkor B R m m invertálható mátrix és A = BT-ből T = B 1 A adódik. Ekkor a bázistábla i,j pozícióján álló eleme, τ ij megegyezik B 1 i-edik sorának és A j-edik oszlopának a szorzatával, ugyanis τ ij = e T i B 1 Ae j = e T i B 1 Ae j. Ha A tartalmazza az e i R m egységvektorokat, például a ji = e i i = 1,...,m, akkor B 1 kiolvasható a T táblából: t ji = B 1 A ji = B 1 i i = 1,...,m. A B bázis egy b i vektorát az A egy a j vektorára kicserélve pontosan akkor kapjuk A egy B bázisát, ha τ ij 0. A B -höz tartozó T bázistáblát ekkor úgy nyerjük T-ből, hogy pivotálunk annak i,j pozícióján, azaz: a tábla i-edik sorát a pivot sort leosztjuk a τ ij elemmel a pivot elemmel és a pivot sor megfelelő számú többszöröseit a többi sorhoz adva elérjük, hogy a j-edik oszlopban a pivot oszlopban e i álljon. Ez a transzformáció, elemi sortranszformációk szorzataként, egy invertálható mátrixszal való balról szorzással egyenértékű. A bázistáblák segítségével már igazolt alternatívatételek konstruktív bizonyítását adhatjuk. 1.1. Tétel: Az Ax = b és az A T y = 0,b T y 0 rendszerek közül pontosan az egyik megoldható. Ha az Ax = b rendszer megoldható, akkor olyan x megoldása is létezik, amelyre az a i : x i 0 vektorok lineárisan függetlenek. Bizonyítás: Mindkét rendszer nem lehet megoldható, ekkor ugyanis 0 = x T A T y = Ax T y = b T y 0 lenne. Most megmutatjuk, hogy az egyik rendszer megoldható. Vegyük A-hoz azokat az e i R m egységvektorokat ún. mesterséges bázisvektorokat amelyeket nem tartalmaz. Az így kapott mátrixot jelölje Ã. Ekkor nyilván T 0 := Ã,b a B 0 := e 1,...,e m bázishoz és a Ã,b generátumhoz tartozó bázistábla. Ebből kiindulva hozzunk be a bázisba a mesterséges bázisvektorok helyébe annyi a j vektort, amennyit csak lehetséges, vagyis pivotáljunk a tábla i,j b i mesterséges bázisvektor, a j B pozícióin amíg ez lehetséges. Itt B az aktuális bázist jelöli. Legfeljebb a mesterséges bázisvektorok száma B 0 -ban lépés után elakadunk, ami azt jelenti, hogy az aktuális T táblában τ ij = 0, ha b i mesterséges bázisvektor és a j B. A tábla most T = B 1 Ã,B 1 b alakú, ebből kiolvasható B 1 A,B 1 b és B 1 is. i B 1 A = 0, ha b i mesterséges bázisvektor, speciálisan {i : b i A} = rang B 1 A = rang A, vagyis rang A A B 0 lépés után akadtunk el. Két eset lehetséges: az első, hogy létezik olyan b i mesterséges bázisvektor, amelyre B 1 b i 0. Ekkor y := i B 1 T az A T y = 0,b T y 0 rendszer megoldása. A második lehetőség, hogy B 1 b i = 0 valahányszor b i mesterséges bázisvektor. Ekkor x := x j := { B 1 b i, ha b i = a j A B 0, különben. j = 1,...,n 1
megfelelő tulajdonságú megoldása a B 1 Ax = B 1 b és így az Ax = b rendszernek is. 1.2. Tétel: Az Ax = b,x 0 és az A T y 0,b T y < 0 rendszerek közül pontosan az egyik megoldható. Ha az Ax = b, x 0 rendszer megoldható, akkor olyan x megoldása is létezik, amelyre az a i : x i 0 vektorok lineárisan függetlenek. Ha az A T y 0,b T y < 0 rendszer megoldható, akkor olyan y megoldása is létezik, amelyre rang a i : a T i y = 0,b = rang A,b, vagyis rang a i : a T i y = 0 = rang A,b 1. Bizonyítás: Mindkét rendszer nem lehet megoldható, ekkor ugyanis 0 x T A T y = Ax T y = b T y < 0 lenne. Most megmutatjuk, hogy az egyik rendszer megoldható. Végezzük el az előző tétel bizonyításában leírt vizsgálatot. Ha Ax = b nem megoldható, akkor olyan y vektort kapunk, amelyre A T y = 0,b T y 0, ez plusz, vagy mínusz előjellel megfelelő megoldása az A T y 0,b T y < 0 rendszernek. Ha az Ax = b rendszer megoldható, akkor az utolsó bázisra jelölje ezt B egyelőre teljesül, hogy ib 1 A = 0, B 1 b i = 0 valahányszor b i mesterséges bázisvektor. Jelölje A és b azt a mátrixot, illetve vektort, amelyet B 1 A-ból, illetve B 1 b-ből kapunk a mesterséges bázisvektoroknak megfelelő soraik elhagyásával. Ekkor teljesülnek az alábbi ekvivalenciák: valamint Ax = b,x 0 B 1 Ax = B 1 b,x 0 A x = b,x 0, A T y 0,b T y < 0 B 1 A T ỹ 0,B 1 b T ỹ < 0 A T ỹ 0,b T ỹ < 0, ahogy azt a x :=: x, illetve a y :=: B 1T ỹ és ỹ :=: ỹ,0 változótranszformációk mutatják. Az is könnyen belátható, hogy ha pl. az A x = b,x 0 rendszernek a tételben leírt speciális tulajdonságú megoldását kaptuk vagyis az a i : x i > 0 vektorok lineárisan függetlenek, akkor az Ax = b,x 0 rendszer ebből nyert megoldása is speciális tulajdonságú lesz, vagyis az a i : x i > 0 vektorok lineárisan függetlenek lesznek. Feltehető tehát, hogy A tartalmazza az e i R m egységvektorokat. Ha nem így lenne, áttérünk az A x = b,x 0 rendszerre. Ekkor T 0 := A,b a B 0 := e 1,...,e m bázishoz és az A,b generátumhoz tartozó bázistábla. Általában az aktuális bázist jelölje B, ekkor az aktuális tábla T = B 1 A,B 1 b alakú, amelyből B 1 A,B 1 b mellett kiolvasható B 1 is. Ha B 1 b 0, akkor x := x j := { B 1 b i, ha b i = a j A B 0, különben. j = 1,...,n megfelelő tulajdonságú megoldása a B 1 Ax = B 1 b,x 0 és így az Ax = b,x 0 rendszernek is. a i : x i > 0 B miatt az a i : x i > 0 vektorok lineárisan függetlenek. Ha létezik i úgy, hogy B 1 b i < 0, akkor válasszuk azt, amelyre ji minimális, ahol ji azt az indexet jelöli, amelyre b i = a ji. Ha i B 1 A 0, akkor y := i B 1 T megfelelő tulajdonságú megoldása az A T y 0,b T y < 0 rendszernek. y merőleges rang A,b 1 = m 1 lineárisan független a i vektorra, ugyanis y definíciójából adódóan B T y = e i. Ha létezik j úgy, hogy B 1 A ij < 0, akkor válasszuk ezek közül a legkisebbet és pivotáljunk a tábla i, j pozícióján. Az algoritmus a kedvező esetek egyikénél állhat le, így azt kell megmutatnunk, hogy nem futhat a végtelenségig. Mivel véges sok bázis van legfeljebb n alatt az m, a bázis meghatározza a táblát, a tábla pedig, hogy mi legyen a következő bázis, a végtelen futás csak úgy fordulhatna elő, hogy az algoritmus ciklizál, vagyis valamely bázis után egy már szerepelt bázis következik és attól fogva az algoritmus körbejár. 2
Megmutatjuk, hogy ezt a lehetőséget kizárja a minimális index választási, ún. Bland szabály. Tegyük fel indirekt, hogy az algoritmus ciklizál. Mozgó indexnek nevezzük j-t, ha a j bázisbeli és nem bázisbeli is a ciklus során. A legnagyobb mozgó indexet jelölje r. Legyenek a ciklusbeli bázisok B 1,...,B t = B 1, továbbá B p,b q olyan bázisok, amelyekre a r éppen kilép a B p bázisból, illetve a r éppen belép a B q bázisba. Legyen x p az Ax = b rendszer a T p tábla utolsó oszlopából kiolvasható megoldása, továbbá y q := i Bq 1 T, ahol i az az index, amelyre a r a b i = a ji helyébe lép. Ekkor x p j = 0, ha a j B p, x p r < 0 és az r-nél kisebb j indexekre x p j 0. Teljesül továbbá, hogy yq T b = e T i B 1 q b < 0, yq T a r < 0 és az r-nél kisebb j indexekre yq T a j 0. Megvizsgáljuk az yq T Ax p szorzatot. Ez egyrészt yq T Ax p = yq T b < 0. Másrészt tekinthető, mint yq T Ax p = n j=1 yq T A j x p j. Ez az utóbbi összeg is tovább bontható, mint y T q A j x p j + y T q A j x p j + yq T A j x p j. j:a j B p\b q j:a j B q j:a j B p B q Itt az utolsó tag 0, ugyanis ha a j B p, akkor x p j = 0. A középső tag x p ji, ugyanis yq T B q = e T i. ji mozgó index éppen távozik B q -ból és a r jön a helyébe, így ji < r, tehát x p ji 0. Az első tag maradt. a r B p \ B q és x p r < 0 valamint yq Ta r < 0 is teljesül. A többi a j B p \ B q esetén j mozgó index a nem mozgó indexek végig bázisbeliek, vagy végig nem bázisbeliek a ciklus során, így j < r, tehát x p j 0 valamint yq Ta j 0. Az első tag tehát pozitív, mindent összevéve az yq TAx p összeg pozitív, ami ellentmond annak, hogy yq TAx p negatív volt. Ezzel beláttuk, hogy az algoritmus nem ciklizál, vagyis véges lépésben a kívánt esetek egyikénél áll le. Az esetek többségében az algoritmus akkor is működne, ha a Bland szabályról megfeledkeznénk, tehát nem feltétlenül minimális indexűt választanánk, mikor választunk. Ekkor azonban előfordulhatna ciklizálás. Lássunk erre egy példát, ami egyben az algoritmus geometriájára is rávilágít. Tegyük fel, hogy rang A = m és hogy az a j vektorok és b utolsó m-edik eleme is 1. Az első m 1 elemből álló vektorokat jelölje a j, illetve b. Ekkor az Ax = b,x 0 rendszer megoldhatósága azzal ekvivalens, hogy b benne van az a j vektorok konvex burkában. a j1,...,a jm pontosan akkor bázis, ha az a ji vektorok affin függetlenek, vagyis konvex burkuk szimplex. Az algoritmus nulladik fázisában egy B bázist, azaz egy conv B szimplexet választunk ki és megnézzük, hogy b pos B-e, azaz b a conv B eleme-e. Ha nem, akkor létezik i, amelyre B 1 b i < 0; választunk egy y vektort, amelyre B T y = e i és y T b < 0, vagyis R m 1 -ben egy olyan y vektort, amelyik normálvektora a szimplex m 1 csúcsát tartalmazó, a fennmaradó i-edik csúcsot b -től szigorúan elválasztó hipersíknak. Ekkor megvizsgáljuk, hogy az a j pontok a hipersíknak a b -n túlnani oldalán vannak-e. Ha igen, b nem állhat elő konvex kombinációjukként. Ha nem, egy a hipersíknak a b felőli oldalán levő csúcsot becserélve az előbb fennmaradó csúcsra újabb szimplexet kapunk, amivel folytatjuk az eljárást. Ha nem a Bland szabályt alkalmazzuk ez az eljárás ciklizálhat. Legyenek az a j vektorok rendre a 1 = 6, 1T, a 2 = 4,0T, a 3 = 6,1T, a 4 = 3,3T, a 5 = 3,5T, a 6 = 1,3T, a 7 = 8,1T illetve b := 0,0 T. Az első szimplex most háromszög legyen a 1,a 2,a 3, itt az algoritmus szabályai szerint a 1 kicserélhető a 5 -re, így az a 5,a 2,a 3 szimplexhez jutunk. Hasonlóképpen folytatva az alábbi szimplexekhez juthatunk: a 5,a 2,a 4, a 5,a 6,a 4, a 7,a 6,a 4, a 7,a 6,a 3, a 7,a 1,a 3, a 2,a 1,a 3. Itt az utolsó szimplex megegyezik az elsővel, az algoritmus ciklizál. Ha a Bland szabályt alkalmaztuk volna, akkor a szimplexsorozat az alábbi lett volna: a 1,a 2,a 3, a 4,a 2,a 3, a 4,a 2,a 6, és az utolsó szimplexnél már kiderül, hogy b és conv A elválasztható. 1.3. Tétel: Az A T y c és az Ax = 0,x 0,c T x < 0 rendszerek közül pontosan az egyik megoldható. Ha az A T y c rendszer megoldható, akkor olyan y megoldása is létezik, amelyre rang a i : a T i y = c i = rang A. Ha az Ax = 0,x 0,c T x < 0 rendszer megoldható, akkor olyan x megoldása is létezik, amelyre az a i : x i > 0 vektorok lineárisan függetlenek. 3
Bizonyítás: Alkalmazzuk az előző tételt az Ax = 0,c T x = 1,x 0, illetve az A T ỹ + cµ 0, µ < 0 rendszerekre. Legyen y = ỹ/ µ. 1.4. Tétel: Tekintsük a P := min{c T x : Ax = b,x 0}, D := max{b T y : A T y c} primál-duál programpárt. Ekkor az alábbi esetek fordulhatnak elő: a Az optimumértékek megegyeznek és felvétetnek. b A primál program megoldhatatlan, a duál program korlátlan. c A duál program megoldhatatlan, a primál program korlátlan. d A primál és a duál program is megoldhatatlan. Bizonyítás: A konstruktív besoroláshoz használt algoritmus a szimplex módszer, ennek nulladik, illetve első fázisa az 1.1, illetve az 1.2 bizonyításához használt algoritmus. Először megvizsgáljuk, hogy P megoldható-e 1.2. Ha nem, ennek tanújaként kapunk egy y vektort, amelyre A T y 0,b T y > 0. Megnézzük, hogy D megoldható-e 1.3. Ha D megoldható, akkor megkapjuk egy y 0 megoldását. Ekkor a D program korlátlan ezt a y 0 + R + y félegyenes mutatja és P megoldhatatlan ezt y mutatja, vagyis a b esetnél vagyunk. Ha D megoldhatatlan, akkor egy olyan x vektort kapunk, amelyre Ax = 0,c T x = 1,x 0. Ekkor a d esetnél vagyunk, ezt y és x bizonyítja. Ha P megoldható, jelölje egyelőre a nulladik fázis utolsó bázisát B, az első fázis utolsó bázisát B továbbá A,b legyen ugyanaz, mint 1.2 bizonyításában. Ekkor a következő programok ekvivalensek: valamint P = min{c T x : Ax = b,x 0} min{c T x : B 1 Ax = B 1 b,x 0} min{c T x : A x = b,x 0} min{c T x : B 1 A x = B 1 b,x 0} D = max{b T y : A T y c} max{b 1 b T y : B 1 A T y c} max{b T y : A T y c} max{b 1 b T ỹ : B 1 A T ỹ c}. A fenti ekvivalenciák miatt feltehető, hogy minden e i vektor része A-nak és hogy b 0. A szimplex módszer során a szimplex táblával számolunk. Ez egy speciális bázistábla. Ha B = a j1,...,a jm az A bázisa, akkor az ehhez tartozó ˆT szimplex tábla a ˆB B 0 := c T B 1 A b bázishoz és az  := c T generátumhoz tartozó bázistábla, ahol c 0 B := c j1,...,c jm T. B 1 Mivel ˆB 1 0 = c T, azért B B 1 1 ˆT B = 1 A B 1 b c T B B 1 A c T c T. B B 1 b Kezdetben B 0 = e 1,...,e m, az ehhez tartozó szimplex tábla könnyen kiszámítható A,b,c-ből: A b ˆT 0 = c T B 0 A c T c T. B 0 b Jelölje B az aktuális bázist. Legyen x := x j := { B 1 b i, ha b i = a j A B 0, különben. j = 1,...,n, ekkor x P. A kiegészítő eltérések tétele szerint, ha létezik y D, amelyre x j > 0 esetén a T j y = c j, akkor x P opt,y D opt. Speciálisan ha B T y = c B egyértelmű megoldása, a táblából kiolvasható y T = c T BB 1 = c T BB 1 B 0 c T B 0 + c T B 0 duál megengedett megoldás, vagyis c T B B 1 A c T 0, akkor x P opt,y D opt. Ekkor az a esetnél vagyunk, a közös optimumérték kiolvasható a tábla jobb alsó sarkából. 4
Ha létezik j, amelyre c T B B 1 A c T j > 0, akkor válasszuk a legkisebb ilyen j-t. Speciálisan a j B, ugyanis c T B B 1 A c T j = 0 valahányszor a j B. N := A \ B, ekkor B T y = c B,N T y c N nem megoldható, vagyis létezik d, amelyre Bd B + Nd N = 0,d N 0,c T B d B + c T N d N < 0. Könnyen ellenőrizhetően ilyen a táblából kiolvasható d N := e j,d B := B 1 Ae j. Ez a d bázismegoldás is, ugyanis könnyen belátható, hogy B aj c T B c j oszlopvektorai lineárisan függetlenek. x-ből d irányba elmozdulva meddig maradunk P-ben? x λ := x + λd λ 0. Ax λ = b teljesül és 0 x λ l = x l + λd l, ha d l 0 speciálisan ha a l N, illetve ha d l < 0, de λ x l /d l. Ha l = ji, akkor x l = B 1 b i, d l = B 1 A ij. Összefoglalva x λ P, ha λ ˆλ, ahol ˆλ := min{ B 1 b i B 1 A ij : B 1 A ij > 0}. Nyilván ˆλ 0. Ha ˆλ =, vagyis B 1 A j 0, akkor x+λd P,c T x+λd λ mutatja, hogy P korlátlan és Ad = 0,d 0,c T d < 0 mutatja, hogy D megoldhatatlan. Ekkor a c esetnél vagyunk. Ha ˆλ R, akkor ˆx := x + ˆλd P. ˆλ lehet 0 is, ekkor ˆx = x. Legyen i az az index, amelyen a ˆλ definíciójában szereplő minimum felvétetik hányadosszabály és ji a lehető legkisebb. ˆB := B a j \ b i könnyen láthatóan bázisa A-nak. Bz = a j,z i = 0-ból 0 = z i = B 1 A ij 0 következnék. Az is megmutatható, hogy ˆx a ˆB-hez tartozó bázismegoldás. ˆx ji = 0 és a l B a j esetén is ˆx l = 0. Pivotáljunk az i,j pozíción és a B := ˆB bázishoz tartozó x := ˆx megoldással kezdjük a második fázist elölről. Hasonló megfontolások szerint, mint amit az 1.2 bizonyításakor végiggondoltunk, csak azt kell megmutatnunk, hogy az algoritmus nem ciklizál. Tegyük fel indirekt, hogy az algoritmus ciklizál és legyen r, B p, B q mint 1.2 bizonyításában. Legyen továbbá B p = a j1,...,a jm és tegyük fel, hogy mikor b i = a r kilép a B p bázisból, akkor a j lép a helyébe. Legyen { B 1 p x p := x p l := b k, ha a l = b k A B l = 1,...,n 0, különben y p := c T B p B 1 p T, s p := c A T y p és definiáljuk az x q,y q,s q vektorokat hasonlóan. Ekkor a pivotelem választási szabályból adódóan s p j < 0, és l < j esetén s p l 0, hasonlóan s q r < 0, és l < r esetén s q l 0. Mivel a ciklus során a célfüggvényérték nem csökkenhet, azért Bp 1 b i = 0 és így jk < r esetén Bp 1 b k > 0. A pivotelem pozitív, vagyis Bp 1 A ij > 0. Tekintsük a s T q x p szorzatot. Egyrészt s T q x p = c T yq T Ax p = c T x p yq T b = c T x p c T x q = 0. Másrészt s T q x p = s q l x p l + s q l x p l + s q r x p r + s q l x p l. a l B p B q a l B q a r a l B p\b q Itt az első két tag 0, mivel ott x p l = 0, illetve s q l = 0. x p r = 0 miatt a harmadik tag is 0. Ezek szerint s T q x p = a r a l B p\b q s q l x p l. a r a l B p \ B q esetén a l mozog a ciklus során, így l < r, vagyis x p l > 0 és s q l 0. Mindebből az következik, hogy s q jk = { sq r, ha jk = r, vagyis k = i, 0, különben k = 1,...,m. 5
Ebből c Bp Bp Ty q = s q r e i, megszorozva balról Bp 1T -tal y p y q = s q r Bp 1T e i. Megszorozva ezt balról A T -tal, majd hozzáadva c c-t kapjuk, hogy s q s p = s q r A T Bp 1T e i. Ennek j-edik eleme s q j s p j = s q r Bp 1A ij. j mozgó index, így s q j 0. Továbbá s p j < 0, s q r < 0 és Bp 1A ij > 0. Az egyenlet bal oldalán ezért pozitív, jobb oldalán pedig negatív szám áll, vagyis ellentmondáshoz jutottunk. Nemdegenerált feladat esetén tehát mikor B 1 b 0-ból B 1 b > 0 következik elfeledkezhetünk a Bland szabályról, az aktuális primál megoldásokhoz tartozó célfüggvényérték minden lépésben csökken, így egyetlen bázis sem térhet vissza, az algoritmus véges számú lépésben véget ér. Degenerált feladatnál viszont előfordulhat, hogy B 1 b i = 0, ekkor ˆλ = 0, vagyis ugyanannál a megoldásnál maradunk, csak a bázis változik. Néhány hasonló pivot után esetleg visszatérünk egy korábbi bázishoz és az algoritmus ciklizálhat. Lássunk erre egy példát, amely Beale-től származik. A b c T 0 := 1 0 0 1/4 8 1 9 0 0 1 0 1/2 12 1/2 3 0 0 0 1 0 0 1 0 1 0 0 0 3/4 20 1/2 6 0 A Bland szabály nélkül megengedettek az alábbi báziscserék csak az indexeket írjuk ki: 1,2,3 4,2,3 4,5,3 6,5,3 6,7,3 1,7,3 1,2,3. Ha a Bland szabályt alkalmazva hajtjuk végre az algoritmust, akkor az alábbi bázissorozathoz jutunk: 1,2,3 4,2,3 4,5,3 6,5,3 6,1,3 6,1,2 6,1,4. Itt az utolsó táblából kiolvasható a feladat egy optimális megoldása. A Bland szabály helyett a lexikografikus szimplex módszer alkalmazásával is elérhetjük, hogy a második fázis véget érjen. A v R n vektor lexikografikusan pozitív, ha első nemnulla eleme pozitív. Jelölje ezt v 0. A v 1 R n vektor lexikografikusan nagyobb, mint a v 2 R n vektor jele v 1 v 2, ha v 1 v 2 0. A P feladatról feltesszük tehát, hogy A tartalmazza az e i egységvektorokat és hogy b 0. Rendezzük át a második fázis induló tábláját a következő módon: b B = I N T := c T B b 0T c T B N. ct N Ennek első m sorvektora lexikografikusan pozitív. A lexikografikus szimplex módszer során a szokásos módon választjuk a pivot oszlopot a Bland szabályt most nem alkalmazzuk. A különbség a pivot sor választásában van. Ha a pivot oszlopban B 1 A j vannak pozitív elemek, válasszuk azt pivot 1 elemnek, amelyre B 1 A kj kt lexikografikusan a legkisebb. Ez a lexikografikus hányadosszabály, ami tehát egyértelműen kijelöli a pivotsort, ugyanis a tábla tartalmaz egységmátrixot, így súlyozott sorai is különbözőek. Speciálisan a pivotsor indexe, i azok közül a k-k közül kerül ki, amelyekre a B 1 b k hányados a lehető legkisebb a B 1 A B 1 A kj kj > 0 feltétel mellett, így a hányadosszabálynak megfelelően is választottunk, az új táblához tartozó megoldás is megengedett lesz. Ezenfelül 1.5. Állítás: A tábla első m sora lexikografikusan pozitív marad, utolsó sora lexikografikusan csökken. Speciálisan a bázisok nem térhetnek vissza, a lexikografikus szimplex módszer véges. Bizonyítás: A pivotálás előtti tábla legyen T, a pivotálás utáni tábla pedig T. Ha B 1 A kj 0, akkor k t = k t B 1 A kj B 1 A ij it = 0 0 >0 0 0. Ha k i, B 1 A kj > 0, akkor k t = B 1 1 1 A kj B 1 A kj kt B 1 A ij it = > 0 0 0. 1 Ha k = i, akkor k t = B 1 A ij kt = > 0 0 0. Továbbá m+1 t = m+1 t ct B B 1 A c T j B 1 A ij it = m+1 t >0 >0 0 m+1t. 6
A Bland szabálynak és a lexikografikus szimplex módszernek inkább csak elméleti jelentősége van, a gyakorlatban nem használják, ugyanis a szimplex módszer ritkán ciklizál. A pivotoszlop a gyakorlatban a legpozitívabb elemnek megfelelő oszlop lesz, ami várhatóan a legnagyobb célfüggvényérték csökkenést eredményezi persze nem feltétlenül. Tártakarékossági szempontból előnyös a módosított szimplex módszer, ami azon az észrevételen alapszik, hogy a szimplex B 0 módszer második fázisának végrehajtásához szükséges adatok könnyen számíthatók a c T B 1 I b B 1 B bázishoz és 0 T generátumhoz tartozó 1 b 0 c T B B 1 c T bázistáblából, az ún. módosí- B B 1 b tott szimplex táblából. Így elég ezt kiszámítani minden lépésben, ami hasznos, hiszen általában m << n. Tegyük fel, hogy A tartalmazza az e i egységvektorokat és b 0. Az első bázis legyen B 0 = I, I b kiszámítjuk az ehhez tartozó módosított szimplex táblát, ez c T B 0 c T. Ezzel a táblával indulva B 0 b és általában a B bázishoz tartozó módosított szimplex táblával végezzük el az alábbiakat: Először számoljuk ki a c T B B 1 A c T = c T B B 1 A c T elemeit. Ezek közül például a legpozitívabb legyen j-edik, a pivot oszlopnak megfelelő. Ezután számoljuk ki a B 1 A j = B 1 a j vektort. Ennek és a táblabeli B 1 b-nek a segítségével határozzuk meg a pivot sort legyen ez az i-edik, majd a B 1 A j c T B B 1 A c T j vektort a tábla mellé képzelve hajtsuk végre a pivotálást ennek i-edik elemén. Természetesen a nulladik és az első fázis is módosítható. A szimplex módszerbeli hosszadalmas előkészítést nulladik, első fázis küszöböli ki a kétfázisú szimplex módszer, cserébe azonban csak a primál feladatot vizsgálja, kimenetei: a P nem megoldható, b P korlátlan, c P-nek létezik optimális megoldása. A módszer másik előnye, hogy végig második fázisszerű, így esetében a bizonyítások egyszerűbbek és a csak a második fázis esetében működő lexikografikusítási ötlet is alkalmazható rá. A kétfázisú szimplex módszerhez feltesszük, hogy b 0. Ez könnyen elérhető, ha a negatív jobb oldalú egyenleteket megszorozzuk 1-gyel. Először vegyük A-hoz azokat az e i egységvektorokat, amelyeket nem tartalmaz. Ezek a mesterséges bázisvektorok. Az így kapott mátrixot jelölje Ã, B := I ennek bázisa. I B := Ã \ A. Tekintsük az P B := min{1 T u B : Ax + I B u B = b,x 0,u B 0} feladatot. Oldjuk ezt meg a szimplex módszer második fázisát használva azzal a változtatással, hogy ha a bázisból kilépő vektor mesterséges, akkor töröljük az oszlopát. Ez annak felel meg, hogy az algoritmus közben változtatjuk az alapproblémát ezért szerepel annak indexében az aktuális bázis. Mivel a P B feladatok alulról korlátosak 1 T u B 0, ha u B 0, azért optimális bázismegoldást kapunk végül. Ha az optimumérték pozitív, az eredeti program, P nem lehet megoldható, ugyanis x P esetén ezt nullákkal kiegészítve a P B program egy 0 célfüggvényértékű megoldását kapnánk. Másképpen bizonyítva a duál optimális megoldás olyan y, amelyre A T y 0,b T y > 0. Ha az optimumérték 0, akkor az aktuális u B = 0 összegük 0 és nemnegatívak, vagyis B 1 b mesterséges bázisváltozóknak megfelelő elemei nullák. Áttérünk a P B := min{c T x : Ax+I B u B = b,x 0,u B 0} feladatra, az ehhez tartozó táblát úgy kapjuk az előző táblából, hogy lecseréljük annak utolsó sorát a könnyen számítható c 0 T B B 1 Ã c 0 T, c 0 T B B 1 b vektorra. Ezt a vektort egy extra sorban a módszer indításától fogva is számolhatjuk. A továbbiakban ügyelünk arra, hogy u B = 0 maradjon, akkor ugyanis a táblából kiolvasható x a P program megoldása is. Ezért megtartjuk a távozó mesterséges bázisváltozó oszlopát töröljük szabályt és ha 7
a pivotoszlopban van mesterséges bázisvektornak megfelelő nemnulla elem, akkor egy ilyet választunk pivotelemnek. Könnyen ellenőrizhető, hogy így az eljárás során u B = 0 marad. Ezért ha x,u B a P B optimális megoldása, akkor x a P optimális megoldása. Amennyiben P B korlátlannak bizonyul, akkor ennek tanúja is 0 a mesterséges bázisvektoroknak megfelelő helyeken, így P B korlátlanságából a P korlátlanságára következtethetünk a szokott módon. A Bland szabályt, vagy a lexikografikus pivotálási szabályt használva a kétfázisú szimplex módszer is végessé tehető. Ehhez vegyük észre, hogy legfeljebb m-szer változik a megoldandó probléma legfeljebb ennyi mesterséges bázisvektor távozik. A Bland szabályt alkalmazva két változás között sem lehet ciklizálás. A lexikografikus szabályt alkalmazva valahányszor törlünk egy oszlopot rendezzük újra lexikografikusan pozitívvá a táblát pl. hozzuk b mellé előre az egységmátrixot. Így biztosan nem térnek vissza a bázisok. Természetesen elképzelhető módosított kétfázisú szimplex módszer is. Ha a duál optimális megoldást is meg akarjuk kapni, akkor ezt a módszert használhatjuk. Még ezt a két fázist is sikerült összeolvasztani. Az M-módszer megtalálható az alábbi könyvben: Katta G. Murty: Linear and combinatorial programming, John Wiley & Sons, 1976 Tegyük fel most, hogy a szimplex módszer segítségével megkaptuk a P program egy optimális megoldását és csak ekkor jut eszünkbe a programhoz venni egy a T x β feltételt. Megtehetjük, hogy az új feltételt a T x + x n+1 = β,x n+1 0 alakban hozzáírjuk P-hez és elölről kezdjük a számolást, de ez esetleg költségesebb, mint az eddigi számolást továbbvinni. Az utolsó optimális bázist jelölje B, a hozzá tartozó szimplex táblát T. Ekkor a ˆP bővített feladat egy bázisa ˆB B 0 := a T B 1. A ˆP programmal ekvivalens a T P c x := min{ 0 x n+1 : ˆB 1 A 0 a T 1 x x n+1 = ˆB 1 b β, x program. A megfelelő duális programok is ekvivalensek. A P programhoz tartozó induló szimplex tábla, B 1 A 0 B 1 b T = a T a T B B 1 A 1 β a T B B 1 b c T B B 1 A c T 0 c T B B 1 b könnyen számítható T-ből. Vegyük észre, hogy ha az új feltételt nem elégíti ki a P optimális megoldása, vagyis β a T B B 1 b < 0, akkor a T-ből kiolvasható x nem megengedett megoldása P- nak. Ezzel szemben T utolsó sorában nempozitív elemek állnak utolsó elemét leszámítva, ezért a jelenlegi bázishoz tartozó ỹ duál megengedett megoldás. Ebben a helyzetben a szimplex módszer duális párjára volna szükség, amely a duál megengedettséget megőrizve jut el a bővített program optimális megoldásáig. Ezt a motivációt szem előtt tartva a duál szimplex módszer esetében nem foglalkozunk részletesen a másodikat megelőző fázisokkal, éppen csak vázolunk egy lehetséges nulladik és első fázist. A duál szimplex módszer nulladik fázisa a szimplex módszer nulladik fázisával egyezik meg. Legyenek B,A,b, mint az 1.4. bizonyításának első részében. Ha a bázisból kivihetetlen mesterséges b i vektorok esetén B 1 b i = 0, akkor áttérhetünk az A,b,c inputú primál-duál programpárra, ez ekvivalens az eredeti primál-duál programpárral. Ha a B bázis egy mesterséges b i vektorára B 1 b i 0, akkor a primál program megoldhatatlan, a duál pedig megoldhatatlan, vagy ha megoldható, akkor korlátlan. A B 1 A T ỹ c rendszer persze ekvivalens a A T ỹ c rendszerrel, így ez utóbbi megoldhatóságát kell eldöntenünk. Mindent összevéve látjuk, hogy feltehetjük, hogy A tartalmazza az e i egységvektorokat. Rátérhetünk az első fázisra. Ennek kezdő bázisa B 0 := e 1,...,e m. 8 x n+1 0}
Jelölje az aktuális bázist B, a tábla, amellyel az első fázis alatt számolunk: B 1 A c T B B 1 A c T. Ha c T B B 1 A c T 0, akkor a jelenlegi y T = c T B B 1 duál megengedett megoldás, vagyis c B megengedett megoldása az eredeti duál programmal ekvivalens max{b 1 b T y : B 1 A T y c} programnak a megfelelő primálok is ekvivalensek, áttérhetünk a második fázisra. Ha létezik j, amelyre c T B B 1 A c T j > 0, akkor válasszuk a legkisebb ilyen j-t. Ha a B 1 A j 0, akkor a szokásos d vektorra Ad = 0,c T d < 0, vagyis ekkor D megoldhatatlan. A primál program megoldhatatlansága eldönthető az A T y 0, b T y 1 rendszer vizsgálatával. Ha B 1 A j -nek vannak pozitív elemei, akkor válasszuk ezek közül azt i-ediket, amelyre ji a legkisebb. Pivotáljunk az aktuális tábla i,j-edik pozícióján. Az, hogy ez az eljárás véges, hasonlóan bizonyítható, mint a következő második fázis esetében. Feltesszük tehát, hogy az e i vektorok A elemei és hogy c B0 duál megengedett megoldás, ahol B 0 := e 1,...,e m. A duál szimplex módszer során is a szimplex táblával számolunk, a pivot elem kiválasztása az, ami másképp történik, mint a szimplex módszer esetén. Általában adott egy az aktuális B bázishoz tartozó T szimplex táblából kiolvasható y = c T B B 1 T duál megengedett megoldás. A kiegészítő eltérések tétele szerint, ha létezik x primál megengedett megoldás, amelyre fennáll, hogy x T c A T y = 0, akkor x és y optimális megoldásai a megfelelő programoknak. Speciálisan, ha a jelenlegi táblához tartozó x := x j := { B 1 b i, ha b i = a j A B 0, különben. j = 1,...,n primál megengedett megoldás, vagyis B 1 b 0, akkor x P opt,y D opt, a közös optimumérték pedig kiolvasható a tábla jobb alsó sarkából. Ha Bx B = b,x B 0 nem megoldható, vagyis B 1 b 0, akkor legyen i az az index, amelyre B 1 b i < 0 és ji a lehető legkisebb. Ekkor d := i B 1 T a B T d 0,b T d < 0 rendszer megoldása. y-ból d irányba elindulva meddig maradunk D-ben? y λ := y λd λ 0. c B T y λ = c B T y + λb T d 0 és a j B esetén is c A T y λ j = c T B B 1 A c T j + λb 1 A ij 0, ha B 1 A ij 0, vagy ha ugyan B 1 A ij < 0, de λ c T B B 1 A c T j /B 1 A ij. Összefoglalva y λd D, ha λ ˆλ, ahol ˆλ := min{ ct B B 1 A c T j B 1 A ij : B 1 A ij < 0}. Nyilván ˆλ 0. Ha ˆλ =, vagyis i B 1 A 0, akkor y λd D,b T y λd λ mutatja, hogy D korlátlan és A T d 0,b T d < 0 mutatja, hogy P megoldhatatlan. Ha ˆλ R, akkor ŷ := y ˆλd D. ˆλ lehet 0 is, ekkor ŷ = y. Legyen j a legkisebb olyan index, amelyen a ˆλ definíciójában szereplő minimum felvétetik. Ugyanúgy, mint a szimplex módszer esetében ˆB := B a j \ b i könnyen láthatóan bázisa A-nak. Az is megmutatható, hogy ŷ a ˆB-hez 9
tartozó duál bázismegoldás. Pivotáljunk az i,j pozíción és a B := ˆB bázishoz tartozó y := ŷ megoldással kezdjük a módszert elölről. A duál szimplex módszernél is az esetek többségében elfeledkezhetünk a Bland szabályról, a módszer véges lesz. Pl. ha a feladat duál nemdegenerált vagyis c T B B 1 A c T j < 0 a j B valahányszor c T B B 1 A c T 0, akkor biztosan nem térnek vissza a bázisok, hiszen a célfüggvényérték végig nő. Azt kell még belátnunk, hogy a duál szimplex módszer a fent leírt formában véges, vagyis hogy a Bland szabályt alkalmazva nem ciklizál. Ezt a duál tábla segítségével a szimplex módszer esetén már bizonyított hasonló állításra fogjuk visszavezetni. Legyen T R r n a B R m r bázishoz és az A R m n generátumhoz tartozó bázistábla, ahol B A. Legyen továbbá b i = a ji i = 1,...,r és {ji : i = 1,...,r} {lk : k = 1,...,n r} = {1,...,n}. Válasszunk b 1,...,b n r lineárisan független vektorokat és legyen n r a lk := b k k = 1,...,n r; a ji := k=1 τ i,lk b k i = 1,...,r. A T bázistábla duál táblája a B bázishoz és A generátumhoz tartozó T bázistábla. Más szavakkal az I r N mátrixból oszlopcserékkel létrejövő T tábla duálja a N T I n r mátrixból ugyanolyan oszlopcserékkel létrejövő T tábla. Egyszerű összeszorzással megbizonyosodhatunk afelől, hogy T és T sorai merőlegesek. T és T is tartalmazza a megfelelő dimenziós egységvektorokat, így soraik lineárisan függetlenek, T és T sortere egymás ortogonális kiegészítője. Ezek szerint a T és T egymás alá írásával keletkező mátrix invertálható; ez abból is következik, hogy oszlopcserék után egy pozitív definit és egy ferdén szimmetrikus mátrix összege. Pivotáljunk a T 1 tábla a i,a lk pozícióján, az így keletkező tábla legyen T 2. A megfelelő duál táblákat jelölje T 1, illetve T 2. Könnyen belátható, hogy a T 1 tábla a k,a ji pozícióján pivotálva éppen a T 2 táblához jutunk, vagyis a pivotálás és a duális tábla képzés felcserélhetőek. Mivel pivotálással tetszőleges bázisból tetszőleges másik bázisba eljuthatunk, azért a fentiekből az is következik, hogy egy vektor r-es {a 1,...,a n }-ből pontosan akkor bázis, ha kiegészítője {a 1,...,a n }- ben bázis. Ezzel ekvivalens, hogy a primál táblából kiválasztott r r-es részmátrix pontosan akkor invertálható, ha a duál táblában kiegészítője invertálható. Ezt az utóbbi állítást egyszerű számolással is beláthatjuk. Legyen a T-beli r r-es invertálható részmátrix B, ennek kiegészítője a T táblában B, továbbá N := T \ B, N := T \ B. Tegyük fel, hogy y T B = 0 és válasszunk z vektort úgy, hogy y T N = z T B legyen. B invertálható, így ez megtehető. Tudjuk, hogy T és T sortere egymásra merőleges, speciálisan ez fennáll a z T T és a y T T vektorokra is. 0 = z T T,y T T = z T B,y T N + z T N,y T B = y T N 2 + 0, amiből y T T = 0 és így y = 0 adódik. Ezzel beláttuk, hogy B invertálható. Most rátérhetünk a duál szimplex módszerrel kapcsolatos végességi kérdésekre. A duál szimplex módszer végrehajtása során az aktuális bázist jelölje B, továbbá legyen N := A\B. Ekkor a szimplex tábla oszlopcserék után I B 1 N B 1 b 0 T c T B B 1 N c T N ct B B 1 b alakú. Duál táblája: I B 1 N T c T B B 1 N c T N T 0 T B 1 b T c T B B 1 b Vegyük észre, hogy a primál táblán végrehajtott duál szimplex módszer megegyezik a duál táblán végrehajtott primál szimplex módszerrel. Ha a Bland szabállyal a duál szimplex módszer ciklizálna a primál táblán, akkor a primál szimplex módszer is ciklizálna a duál táblán. Tehát a duál szimplex módszer a Bland szabállyal véges módszer. 10
Szintén véges módszer a duál táblán végrehajtott primál lexikografikus szimplex módszer, a duál lexikografikus szimplex módszer. Végességének bizonyítása nélkül megemlítjük még a primál és a duál szimplex módszertől egyaránt különböző criss-cross módszert. Itt feltesszük, hogy A tartalmazza az e i egységvektorokat, ez a szimplex módszer nulladik fázisának alkalmazásával könnyen elérhető. Az induló bázis legyen B 0 := e 1,...,e m, az ehhez tartozó szimplex tábla könnyen kiszámítható a feladat adataiból. Általában az aktuális bázist jelölje B, szokás szerint feltesszük, hogy b i = a ji i = 1,...,m. A pivot elem választási szabály a következő. Legyen k := min{ji : B 1 b i < 0} {j : c T BB 1 A c T j > 0}. Ha ilyen k-t nem tudunk választani, akkor a B-hez tartozó x,y primál, illetve duál optimális megoldások. Ha k = ji, ahol B 1 b i < 0, akkor a k távozik a bázisból. j legyen a legkisebb index, amelyre B 1 A ij < 0, ekkor a k helyébe a j jön be a bázisba. Ha ilyen j-t nem tudunk választani, akkor nincs primál megengedett megoldás. Ha k = j, ahol c T B B 1 A c T j > 0, akkor a k jön be a bázisba. A bázisból b i távozik, ahol i legyen az az index, amelyre B 1 A ij > 0 és ji a lehető legkisebb. Ha ilyen i-t nem tudunk választani, akkor nincs duál megengedett megoldás. A criss-cross módszer végességének bizonyítása megtalálható az alábbi cikkben: Terlaky Tamás: A criss-cross módszer lineáris programozási feladatok megoldására és végességének bizonyítása Alkalmazott Matematikai Lapok 10 1984 289-296. Ha a módszer alkalmazása során oda jutottunk, hogy nincs primál duál megengedett megoldás, akkor legyen b = 0 c = 0 és kezdjük elölről a számolást. Így eldönthetjük, hogy a duál primál feladatnak van-e megengedett megoldása. b = 0 c = 0 esetén a módszer a primál duál szimplex módszerrel egyezik meg. A következő feladatokban nem egy, hanem egy sereg programot akarunk megoldani egyszerre. E feladatokban a célfüggvény, illetve a jobb oldal egy valós paramétertől függ. Az ún. parametrikus programozási feladatok illetve ahol θ R. A feladatok duáljai illetve Pθ := min{c + c θ T x : Ax = b,x 0}, Pθ := min{c T x : Ax = b + b θ,x 0}, Dθ := max{b T y : A T y c + c θ}, Dθ := max{b + b θ T y : A T y c}. Látni fogjuk, hogy a vθ optimumérték-függvény egy zárt intervallumon véges és ott az első feladat esetében konkáv, a második feladat esetében konvex, szakaszonként lineáris függvény. Valóban például vθ végességi tartománya 0 T 0 T 1{ x y θ : x Pθ,y Dθ,θ R} R 11
poliéder lineáris képeként maga is poliéder, most zárt intervallum. vθ konkavitása az első feladattípus esetében a következőképpen látható be: Legyenek θ 1,θ 2 olyanok, hogy vθ i R i = 1,2, továbbá legyen 0 ε 1 és θ 0 := εθ 1 + 1 εθ 2. vθ végességi tartományának konvexitása miatt vθ 0 R, így létezik x optimális megoldása a Pθ 0 feladatnak. Ekkor vθ 0 = c + c θ 0 T x = εc + c θ 1 T x + 1 εc + c θ 2 T x εvθ 1 + 1 εvθ 2, vagyis vθ konkáv. Az, hogy szakaszonként lineáris az algoritmus során derül majd ki. Először tekintsük a parametrizált célfüggvény esetét. Az ennek megoldására adott algoritmus négy fázisból áll, a nulladik és az első fázis megegyezik a szimplex módszer hasonló fázisaival. Ezek során eldöntjük, hogy az Ax = b,x 0 rendszer megoldható-e. Ha nem, a Pθ feladatok egyike sem megoldható, v =. Ha az előbbi rendszer megoldható, akkor Pθ minden θ R esetén megoldható és feltehető, hogy kiszámoltuk a B 1 A c T B B 1 A c T c T B B 1 A c T B 1 b c T B B 1 b c T B B 1 b parametrikus szimplex táblát valamely B A bázisra és itt B 1 b 0. A második fázis elején meghatározzuk, hogy Pθ mely θ-kra korlátos. A Pθ feladatok megoldhatósága miatt pontosan akkor lesznek korlátosak, ha θ θ θ, θ R, ahol θ = min{θ : A T y c + c θ}, θ = max{θ : A T y c + c θ}. Ezek persze lineáris programok, így az optimumértékeik a szimplex módszer segítségével meghatározhatók, de duáljaik standard alakra hozatala sokkal olcsóbb. A fenti programok duáljai θ = max{c T x : Ax = 0,c T x = 1,x 0}, θ = min{c T x : Ax = 0,c T x = 1,x 0}. Itt a második program máris standard alakú, az első pedig nyilván a min{c T x : Ax = 0,c T x = 1, x 0} standard alakú programmal ekvivalens. Ezeknek az optimumértékét határozzuk meg tehát és ebből következtetünk a Pθ feladatok korlátossági intervallumára. [θ,θ] R = θ \ θ = R = =,θ ] vagy R R X [θ,θ ] [θ, = X könnyen belátható. Itt X jelöli a lehetetlen eseteket. Igazoljuk például a táblázat bal felső állítását. θ = miatt θ =, így a korlátossági intervallum mindenképpen üres. Vagy tekintsük az első sor második állítását: θ = miatt θ csak, vagy lehet. θ R miatt θ = θ, így θ θ miatt θ =. Mikor θ = és θ = jobb felső eset, akkor a korlátossági intervallum lehet üres és a valós számok halmaza is, hogy melyik, az rögtön eldől. Az algoritmus második fázisának második felében választunk egy θ 0 elemet a korlátossági intervallumból a jobb felső esetben tetszőlegesen és megoldjuk a Pθ 0 feladatot a szimplex módszer második fázisa segítségével. A feladatnak megfelelő szimplex tábla utolsó sorát úgy kapjuk, hogy a parametrikus szimplex tábla utolsó előtti sorához hozzáadjuk az utolsó sor θ 0 -szorosát. Csak a jobb felső esetben juthatunk korlátlanságot bizonyító táblához, ekkor a feladat mindig korlátlan, vagyis v =. Minden más esetben optimális megoldáshoz jutunk, vagyis az aktuális parametrikus táblában c T B B 1 A c T + θ 0 c T B B 1 A c T 0. Áttérünk az algoritmus harmadik fázisára. 12
Az aktuális bázis tehát optimális θ 0 -ra, de azokra a θ értékekre is, amelyekre c T B B 1 A c T + θc T B B 1 A c T 0 marad. Jelölje a rövidség kedvéért c j a c T B B 1 A c T j értéket és hasonlóan definiáljuk c j-t is. Ekkor a fentiekből következik, hogy B optimális bázisa a Pθ feladatoknak, míg θ [θ B,θ B ], ahol θ B := max{ c j c j : c j < 0}, θ B := min{ c j c j : c j > 0}. Erre az intervallumra tehát megoldottuk a feladatot. Ezután terjeszkedünk, például a θ B -nél nagyobb θ-k irányába, ha még nem értük el a korlátossági intervallum felső határát. Legyen s az az index, ahol az θ B definíciójában szereplő minimum felvétetik. Ekkor pivotoszlopnak az s-ediket választva hajtsunk végre egy primál szimplex lépést a pivot sor legyen az r-edik. Az új bázist jelölje B. Az alábbi állítások könnyen beláthatók: 1. c T BB 1 A c T + θ B c T B B 1 A c T = c T B B 1 A c T + θ B c T B B 1 A c T, ezért B és B egyaránt optimális bázisai a Pθ B feladatnak. 2. θ < θ B esetén c T B B 1 A c T + θc T B B 1 A c T r > 0, így B nem optimális bázis a fenti θ-kra. Ezekből az állításokból azonnal következik, hogy B optimalitási intervalluma ott kezdődik, ahol a B optimalitási intervalluma befejeződött, vagyis θ B = θ B. Ezzel az új bázissal kezdjük elölről a harmadik fázist. A lefelé terjeszkedés hasonlóan történik. Az algoritmus csak úgy futhat a végtelenségig, ha a harmadik fázisban néhány bázisnak ugyanaz az egy pont az optimalitási intervalluma és az algoritmus nem tud kimozdulni ezek köréből. Ezt megakadályozhatjuk úgy, hogy ha elfajuló optimalitási intervallumú bázishoz jutunk, egy még nem vizsgált θ 0 -val újra kezdjük az eljárás második fázisát. Bár így elbonyolódhat a már vizsgált intervallumok nyilvántartása, a módszer véges lesz. Hasonló algoritmus tervezhető a parametrizált jobb oldalú feladat esetében. Míg az előző feladattípusra az volt jellemző, hogy ha valamely θ-ra megoldhatatlan volt, akkor semelyik θ-ra sem volt megoldása, a parametrizált jobb oldal esetén ha az egyik feladat korlátlannak bizonyul, akkor θ-tól függetlenül mindegyik feladat korlátlan, amelyik megoldható. Valóban ha az egyik feladat korlátlan, akkor létezik x, amelyre Ax = 0,x 0,c T x < 0 és ez mindegyik megoldható feladat esetében bizonyítja a korlátlanságot. Az algoritmus itt is négy fázisból áll. A nulladik fázis lényegében a szimplex módszer nulladik fázisa, csak itt B 1 b mellett egy extra oszlopban B 1 b -ot is számoljuk. Tegyük fel, hogy több mesterséges bázisvektort már nem tudunk kivinni a bázisból. Nyilván a feladat nem megoldható azokra a θ-kra, amelyekre B 1 b + θb 1 b mesterséges bázisvektoroknak megfelelő része nem a nulla vektor. Ekkor már az Ax = b + θb rendszer sem megoldható. A következő állítások könnyen beláthatók: 1. Ha egy mesterséges bázisvektornak megfelelő pozíción B 1 b i 0, akkor Pθ legfeljebb egy θ esetén megoldható. 2. Ha a fenti pozíciókon B 1 b nulla, de B 1 b-nek létezik nemnulla eleme, akkor Pθ egyetlen θ-ra sem megoldható. 3. Ha a fenti pozíciókon mind a B 1 b, mind a B 1 b nulla, akkor az Ax = b + θb rendszer minden θ-ra megoldható. Ezért feltehető, hogy minden i-re e i A. A mesterséges bázisvektoroknak megfelelő sorokat és oszlopokat elhagyhatjuk. 13
Az algoritmus első fázisában először meghatározzuk a θ := min{θ : Ax = b + θb,x 0}, θ := max{θ : Ax = b + θb,x 0} értékeket. Ezek könnyen standard alakra hozható programok, helyettesítsük a valós θ-t két nemnegatív változó különbségével. Nyilván Pθ éppen θ θ θ esetén megoldható. Válasszunk egy θ 0 R értéket ebből a megoldhatósági intervallumból és hajtsuk végre a szimplex módszer első fázisát. Ennek segítségével olyan B bázishoz jutunk, amelyre B 1 b + θ 0 B 1 b 0. Kiszámítjuk az ehhez tartozó parametrikus szimplex táblát amelynek most egy extra oszlopa van és áttérünk az eljárás második fázisára. Az eljárás második fázisa a szimplex módszer második fázisának felel meg, a fix θ 0 -ra megoldjuk a Pθ 0 feladatot. Ha ez korlátlannak bizonyul, akkor a fenti megjegyzés szerint Pθ korlátlan a megoldhatósági intervallumán és a feladatot megoldottuk. Tegyük fel tehát, hogy optimális bázisig jutottunk, legyen ez B. Áttérünk az eljárás harmadik fázisára. Ez nagyon hasonló a parametrizált célfüggvényű feladat esetében adott eljárás harmadik fázisához. B optimális bázisa a Pθ feladatoknak, míg θ [θ B,θ B ], ahol θ B := max{ b i b i : b i > 0}, θ B := min{ b i b i : b i < 0}. Az ezen az intervallumon túl terjeszkedés duál szimplex lépéssel történik, a pivot sor az, ahol a minimum, illetve maximum fölvétetik. A végesség kérdése is hasonlóan intézhető el, mint a már tárgyalt esetben, csak itt az első fázisig kell visszamennünk a megoldhatósági intervallumból választott még nem vizsgált θ 0 -lal. A következőkben az alábbi problémát vizsgáljuk: P := min{c T x : Ax = b,x 0,x j κ j j J}, ahol A R m n,b R m,c R n, továbbá J {1,...,n} és κ j > 0 j J. A szokásos feltételek mellett tehát néhány változót felülről korlátozunk. Ilyen alakúra hozhatók például a min{c T x : Ax = b,λ j x j j J 1,x j κ j j J 2 } alakú programok, ahol J 1 J 2 = {1,...,n}. j J 1 esetén legyen az új változó a régi változó mínusz az alsó korlát, j J 2 \ J 1 esetén pedig a felső korlát mínusz a régi változó. A P program természetesen megoldható úgy, hogy J eltérés változó bevezetésével standard alakra hozzuk és a szimplex módszert alkalmazzuk, ám így a feladat mérete jelentősen megnő. A következő felsőkorlátos szimplex módszer lehetővé teszi, hogy m m-es bázisokkal számoljunk. A P program duálja D := max {b T y j J µ jκ j : c j a T j y + µ j 0 j J c j a T j y 0 j Jc y R m,µ j 0 j J, ahol J c := {1,...,n} \ J. A kiegészítő eltérések tétele szerint egy x primál megengedett megoldás és egy y,µ J duál megengedett megoldás pontosan akkor optimális megoldásai a megfelelő programoknak, ha 1. x j c j a T j y + µ j = 0 j J; 2. x j c j a T j y = 0 j Jc ; 3. µ j κ j x j = 0 j J. 14
Ebből könnyen látszik, hogy egy x primál megengedett megoldás pontosan akkor optimális megoldása a P programnak, ha létezik y R n vektor, amelyre 1. c j a T j y > 0,j J esetén x j = 0; 2. c j a T j y < 0,j J esetén x j = κ j ; 3. c j a T j y > 0,j Jc esetén x j = 0; 4. Nincs olyan j J c, amelyre c j a T j y < 0 lenne. Az Ax = b,x 0,x j κ j j J rendszer egy bázismegoldása könnyen láthatóan egy olyan megengedett megoldás, amelyre az a j : j J,0 < x j < κ j a j : j J c,0 < x j vektorok lineárisan függetlenek. Azt mondjuk, hogy x a B bázishoz tartozó bázismegoldás, ha a fenti vektorrendszer B része, vagyis x a nembázisvektoroknak megfelelő pozíciókon 0, vagy κ j. Egy bázishoz több bázismegoldás is tartozhat. A P program optimális megoldását a bázismegoldások közt keressük, a megfelelő y vektort pedig y T = c T B B 1 alakban. Itt feltettük, hogy A teljes sorrangú, ezért invertálható B. Ekkor a 3. tulajdonság automatikusan teljesül, a B bázishoz tartozó x bázismegoldás optimalitásának elégséges feltétele: 1. c T B B 1 A c T j < 0,j J esetén x j = 0; 2. c T B B 1 A c T j > 0,j J esetén x j = κ j ; 3. Nincs olyan j J c, amelyre c T B B 1 A c T j > 0 lenne. Az algoritmus minden lépésében kiszámítjuk a B 1 A c T B B 1 A c T táblát ez az utolsó oszlopától megfosztott szimplex tábla és egy az aktuális B bázishoz tartozó x bázismegoldást. Hogy ez az első lépésben hogyan tehető meg, arra később visszatérünk. Ha a jelenlegi x-re nem teljesülnek a fenti optimalitási kritériumok, akkor áttérünk egy másik bázismegoldásra. Az algoritmus során a c T x célfüggvényérték nem nő, így bizonyos nemdegeneráltsági feltételek mellett az eljárás véget ér. Most rátérünk arra, hogyan valósítható meg a fent vázolt eljárás. 1. Ha az első optimalitási kritérium sérül, vagyis találunk olyan s J indexet, amelyre c T B B 1 A c T s < 0 és x s 0, akkor persze a s B és x s = κ s. Legyen N := A \ B és definiáljuk a d vektort a következőképpen: d B := B 1 A s, d N := e s. A jelenlegi x vektorból d irányba indulunk el, legyen xλ := x λd λ 0. Nyilván ebben az irányban csökken a célfüggvény. Meddig marad xλ megengedett megoldása P-nek? Teljesülnie kell először is, hogy xλ 0, vagyis a λ κ s, x ji + λb 1 A is 0 feltételeknek, ahol szokás szerint B =: a j1,...,a jm. Teljesülnie kell továbbá a felső korlát feltételeknek, vagyis annak, hogy x ji + λb 1 A is κ ji. Összefoglalva xλ P, míg 0 λ ˆλ, ahol ˆλ := min{κ s } { x ji B 1 A is : B 1 A is < 0} { κ ji x ji B 1 A is : B 1 A is > 0,ji J}. A következő bázismegoldás ˆx := x ˆλd lesz, a következő bázis pedig ˆλ = κ s esetén B, különben B {b i } \ {a s }, ahol i az az index, ahol a ˆλ definíciójában szereplő minimum felvétetik. 2. Ha a második optimalitási kritérium sérül, vagyis találunk olyan s J indexet, amelyre c T B B 1 A c T s > 0 és x s κ s, akkor persze a s B és x s = 0. Most d irányba indulunk el d mint fent, xλ := x + λd P, míg 15
x ji 0 λ ˆλ := min{κ s } { B 1 : B 1 A is > 0} { x ji κ ji A is B 1 : B 1 A is < 0,ji J}. A is Itt is az új megoldás ˆx := x+ˆλd lesz, a következő bázis pedig ˆλ = κ s esetén B, különben B {b i }\{a s }, ahol i az az index, ahol a ˆλ definíciójában szereplő minimum felvétetik. 3. Ha a harmadik optimalitási kritérium sérül, vagyis találunk olyan s J c indexet, amelyre c T B B 1 A c T s > 0, akkor persze a s B és x s = 0. Most ismét d irányba indulunk el, xλ := x + λd P, míg 0 λ ˆλ := min{ } { x ji B 1 A is : B 1 A is > 0} { x ji κ ji B 1 A is : B 1 A is < 0,ji J}. Ha a minimum, akkor a program korlátlan, ezt az {xλ : λ [0, } félegyenes bizonyítja, amely mentén -hez tart a célfüggvény. Minden más esetben az új megoldás ˆx := x+ˆλd lesz, a következő bázis pedig B {b i } \ {a s }, ahol i az az index, ahol a ˆλ definíciójában szereplő minimum felvétetik. A fent leírt algoritmust csak úgy tudjuk elindítani, ha ismert egy B A invertálható bázisa a feladatnak és egy hozzá tartozó x bázismegoldás. A kétfázisú szimplex módszer ötletét használva megtervezhető egy kétfázisú felsőkorlátos szimplex módszer és így megszabadulhatunk ettől a feltételtől. Feltesszük, hogy b 0. A módszer első fázisában mesterséges e i bázisvektorokkal egészítjük ki az A mátrixot, az ezeknek megfelelő új változókra csak nemnegativitási feltételt teszünk, így összegük minimalizálása megoldható a fent leírt algoritmussal, b 0 miatt könnyen található induló bázis és hozzá tartozó bázismegoldás. Ha a bázisból mesterséges bázisvektor távozik, akkor töröljük az oszlopát. Mivel az első fázisbeli feladatok alulról korlátosak, azért optimális megoldást kapunk végül. Ha az ehhez tartozó első fázisbeli célfüggvényérték pozitív, akkor az eredeti feladatnak nem lehet megengedett megoldása. Ha a célfüggvényérték nulla, akkor a mesterséges bázisvektoroknak megfelelő pozíciókon a jelenlegi bázismegoldás nulla. A továbbiakban ügyelünk rá, hogy ez így is maradjon. Áttérünk az eredeti feladat megoldására, vagyis átírjuk a tábla utolsó sorát az eredeti célfüggvénynek megfelelően. A második fázisban ezzel a táblával számolunk a fent leírt algoritmus segítségével. Megtartjuk a távozó mesterséges bázisvektor oszlopát töröljük szabályt és minden pivotálás előtt meggyőződünk arról, hogy a pivotoszlopban a mesterséges bázisvektoroknak megfelelő pozíciókon nullák állnak-e. Ha nem, akkor inkább egy ilyen pozíción pivotálunk, megszabadulva egy újabb mesterséges bázisvektortól. Egy ilyen pivotnál a bázis változik, az x megoldás változatlan marad. Ily módon az x megoldásban a mesterséges bázisvektoroknak megfelelő helyeken nullák maradnak. Korlátlan esetben az eredeti feladat korlátlanságára következtethetünk, egy optimális megoldás megfelelő része pedig az eredeti feladat optimális megoldását szolgáltatja. 16