A szimplex algoritmus Ismétlés: reprezentációs tétel, az optimális megoldás és az extrém pontok kapcsolata Alapfogalmak: bázisok, bázismegoldások, megengedett bázismegoldások, degenerált bázismegoldás A szimplex algoritmus, indítás megengedett bázismegoldásról, áttérés a nembázis változók terére, új változó felvétele a bázisba, változó kiléptetése a bázisból, végződtetés, optimalitás p. 1
Lineáris programok és extrém pontok Egy max{c T x : Ax b} lineáris program optimális megoldása előáll a megengedett tartomány valamely extrém pontján Ha a megengedett tartományt reprezentáló X poliéder korlátos, akkor X felírható x j extrém pontjainak konvex kombinációjaként X = {x : Ax b} = conv(x j : j {1,...,k}) Emlékeztető: konvex kombináció { conv(x j ) = x : x = k j=1 λ j x j, k j=1 λ j = 1,λ j 0 } p.
Lineáris programok és extrém pontok Ekvivalens lineáris program λ j változókban max { k j=1 (c T x j )λ j : k j=1 λ j = 1,λ j 0 j {1,...,k} A megoldás előáll a megengedett tartomány valamely extrém pontján x opt = argmax c T x j x j :j {1,...,k} z opt = max c T x j j {1,...,k} ahol z opt a célfüggvény optimumát fogja jelölni } p. 3
Extrém pont megoldások: példa Tekintsük az alábbi feltételrendszert x 1 + x x 1 + x 6 x 1, x 0 Extrém pontok: x 1 = x 3 = 0 0, x = 0, 6 x -x 1 + x 6 -x 1 + x 6 x 1 p.
Extrém pont megoldások: példa Tegyük fel, hogy a x 1 +x célfüggvényt szeretnénk maximalizálni 0 0 c T x 1 = 1 = 0, c 0 T x = 1 =, c T x 3 = 1 = A megoldás az extrém pontok közül az, amelyik maximalizálja a c T x j szorzatot x opt = argmax c T x j = x j :j {1,...,k} z opt = max c T x j = j {1,...,k} 0 p. 5
Extrém pont megoldások: példa Ha most ehelyett a x 1 +3x célfüggvényt szeretnénk maximalizálni, akkor nincs véges megoldás Ekkor ugyanis választható d irányvektor és x 0 megengedett megoldás, hogy x 0 -ból d irány mentén haladva tetszőlegesen nagy megengedett megoldást kapunk Vagyis az x 0 +µd minden µ 0 esetén megengedett, és növeli a célfüggvény értékét Például ha d = 1, x 0 =, akkor x = +µ 1 megoldás megengedett minden µ 0-ra és a célfüggvény értéke c T (x 0 +µd) = c T x 0 +µc T d Lemma: a nemkorlátossághoz elégséges d : c T d > 0 Itt teljesül, mert c T d = 1 3 T 1 = 1 > 0 p. 6
Bázismegoldások Az extrém pontok geometriai értelemben írják le egy lineáris program megoldásait A megoldáshoz viszont algebrai értelmezés kell: megengedett bázismegoldások Tekintsük a X = {x : Ax = b,x 0} poliéderrel adott feltételrendszert, ahol A egy m n mátrix, b egy oszlop m-vektor, x pedig oszlop n-vektor Tegyük fel, hogy rang(a) = rang(a, b) = m Ekkor A oszlopait átrendezve A = B N, ahol B egy m m méretű kvadratikus, nemszinguláris mátrix (a bázis) N pedig m (n m) méretű mátrix (a nembázis) p. 7
Bázismegoldások Megjegyzés: a sorok és oszlopok szabadon átrendezhetőek egy lineáris programban xb Rendezzük át x-et: x = x N B oszlopaihoz tartozó, és x N nembázisváltozók az N oszlopaihoz tartozó változók A feltételrendszert B bázisban felírva Ax = B N x B x N, ahol x B bázisváltozók a = Bx B +Nx N = b Mivel B bázis nemszinguláris, szorozhatunk balról az inverzével x B +B 1 Nx N = B 1 b p. 8
Bázismegoldások Megkaptuk a bázisváltozókat a nembázisváltozók függvényében x B = B 1 b B 1 Nx N x N -t nullára választva adódik a B bázishoz tartozó bázismegoldás B 1 b x B = B 1 b, x N = 0, x = xb x N = 0 Ha még ráadásul x B 0, akkor megengedett bázismegoldást kaptunk x B = B 1 b 0, x N = 0, x = xb x N = B 1 b 0 0 p. 9
Bázismegoldások Ha x B minden komponense pozitív (x B > 0), akkor x nemdegenerált bázismegoldás, ellenkező esetben pedig degenerált bázismegoldás A megengedett bázismegoldások jelentősége, hogy ezek megfelelnek a lineáris program megengedett tartománya extrém pontjainak Tétel: x akkor és csak akkor megengedett bázismegoldása egy max{c T x : Ax = b,x 0} lineáris programnak, ha x az X = {x : Ax = b,x 0} megengedett tartomány egy extrém pontja Ha ráadásulxmég nemdegenerált is, akkor egyedib bázis azonosítja A megengedett bázismegoldásokon iterálva előállítható a lineáris program optimális megoldása: szimplex algoritmus p. 10
Bázismegoldások: példa Tekintsük a megengedett tartományt x 1 + x 6 x 3 x 1, x 0 A fenti példa kanonikus alakban van, standard alakra kell hoznunk Addicionális (slack) változókat vezetünk be: x 3 és x x 1 + x + x 3 = 6 x + x = 3 x 1, x, x 3, x 0 p. 11
Bázismegoldások: példa A feltételrendszer mátrixa A = a 1,a,a 3,a = 1 1 1 0 0 1 0 1 A teljes sorrangú, ezért bázisai méretűek Ezek közül azok eredményeznek megengedett bázismegoldást, melyekre B nemszinguláris és B 1 b 0 6 0 3 T 0 0 T x x 1 + x 6 3 3 T x 3 6 6 0 T x 1 p. 1
Bázismegoldások: példa 1 1 1. B = a 1 a = 0 1 x1 1 1 x B = = B x 1 b = 0 1 x3 0 x N = =, extrém pont: x 0 1 0. B = a 1 a = 0 1 x1 1 0 x B = = B x 1 b = 0 1 x 0 x N = =, extrém pont: x 3 0 megengedett bázis 6 3 x x1 3 = 3 3 = 3 megengedett bázis 6 3 x x1 6 = 3 6 = 0 p. 13
Bázismegoldások: példa 1 1 3. B = a a 3 = 1 0 x 0 1 x B = = B x 1 b = 3 1 1 x1 0 x N = =, extrém pont: x 0 1 0. B = a a = 1 1 x 1 0 x B = = B x 1 b = 1 1 x1 0 x N = = x 3 0 megengedett bázis 6 3 x x1 3 = 3 0 = 3 nem megengedett bázis 6 3 = 6 3 0 p. 1
Bázismegoldások: példa 1 0 5. B = a 3 a = 0 1 x3 1 0 x B = = B x 1 b = 0 1 x1 0 x N = =, extrém pont: x 0 1 1 6. B = a 1 a 3 = 0 0 bázismegoldást megengedett bázismegoldás 6 3 x x1 6 = 3 0 = 0 szinguláris, nem generál p. 15
Degenerált bázismegoldások: példa Adjunk egy új, redundáns feltételt az előbbihez x 1 + x 6 x 3 x 1 + x 9 x 1, x 0 6 0 3 T 0 0 T x x 1 + x 6 3 3 T x 3 6 A slack változókkal standard alakra hozott rendszer x 1 + x + x 3 = 6 x + x = 3 x 1 + x + x 5 = 9 x 1, x, x 3, x x 5 0 x 1 + x 9 6 0 T x 1 p. 16
Degenerált bázismegoldások: példa A = a 1,a,a 3,a,a 5 = 1 1 1 0 0 0 1 0 1 0 1 0 0 1 A B = a 1,a,a 3 bázishoz tartozó megengedett bázismegoldás degenerált bázismegoldás x B = x1 x x 3 0 1 0 1 0 1 1 1 x N = x x 5 = B 1 b = = 6 3 9 0 0 1 1 1 1 6 0 1 0 3 1 0 9 = 3 3 0 0, extrém pont: x1 x = 3 3 = p. 17
Degenerált bázismegoldások: példa Hasonlóan a B = a 1,a,a is degenerált bázis 1 x1 1 1 0 6 x B = x = B 1 b = 0 1 1 3 = x 1 0 9 0 1 6 3 1 0 1 3 = 3 0 1 1 1 9 0 x3 0 x1 3 x N = =, extrém pont: = x 5 0 x 3 A két degenerált bázismegoldáshoz ugyanaz az extrém pont tartozik Egy kétdimenziós térben egy extrém pontot két hipersík határoz meg Az x = 3 3 extrém pontban azonban 3 hipersík találkozik p. 18
A szimplex algoritmus Láttuk, hogy egy lineáris program megoldása, ha létezik, előáll a megengedett tartomány valamely extrém pontján Az extrém pontok pedig megfelelnek a megengedett bázismegoldásoknak Ezekből sajnos ( n m) számú lehet, ezeket lehetetlen egyenként előállítani már pár tucat változó esetén is A szimplex algoritmus egy módszer, amely egy megengedett bázismegoldásból kiindulva újabb és újabb, a célfüggvény értékét javító megengedett bázismegoldásokat állít elő A gyakorlatban a szimplex az extrém pontok csak egy kis hányadát járja be p. 19
A szimplex algoritmus Tekintsük az alábbi lineáris programot z = max c T x s.t. Ax = b x 0 ahol A egy m n mátrix, rang(a) = rang(a,b) = m, b egy oszlop m-vektor, x pedig oszlop n-vektor Legyen x = xb x N = B 1 b 0 egy kezdeti megengedett bázismegoldás, B a hozzá tartozó bázis, és A = B N Felírjuk a lineáris programot a nembázisváltozók terében Így megtudjuk, hogy az ezek megváltoztatása hogyan befolyásolná a célfüggvény és a bázisváltozók értékét p. 0
A szimplex algoritmus A feltételrendszert B bázisban felírva Ax = B N x B x N = b, vagyis Bx B +Nx N = b x B = B 1 b B 1 Nx N (*) Legyen N a nembázis változók halmaza, jelöljük a B 1 N mátrix oszlopait sorra y j -vel minden j N-re és legyen b = B 1 b Ekkor a feltételrendszer a nembázisváltozók szerint x B = b j N y j x j p. 1
A szimplex algoritmus Rendezzük át a célfüggvényt is a bázisváltozókhoz tartozó tagokat előrehozva: c T = c B T c N T Behelyettesítve a célfüggvénybe és felhasználva (*)-ot z = c T x = c B T c N T xb x N = c B T x B +c N T x N = c B T (B 1 b B 1 Nx N )+c N T x N = c B T B 1 b+(c N T c B T B 1 N)x N Legyen z 0 = c B T B 1 b és jelöljük c N T c B T B 1 N sorvektor elemeit z j -vel minden j N-re z = z 0 + j N z j x j p.
A szimplex algoritmus A lineáris program a nembázis változók terében max z 0 + j N z jx j s.t. x B = b j N y jx j x B,x N 0 ahol N a nembázis változók halmaza b = B 1 b y j a B 1 N mátrix j-edik nembázis-változóhoz tartozó oszlopa z 0 = c B T B 1 b = c B T b z j a c N T c B T B 1 N sorvektor j-edik nembázis-változóhoz tartozó eleme p. 3
A szimplex algoritmus: példa Tekintsük a lineáris programot Bevezetve a slack-változókat max x 1 + x s.t. x 1 + x x 1 x 1, x 0 max 1 1 0 0 x 1 1 0 0 1 0 1 x = 1 x 1,x,x 3,x 0 p.
A szimplex algoritmus: példa Legyen B = a,a 3, ekkor B = {,3}, N = {1,} 1 0 1 1 0 B =, B 1 0 1 =, N =, 1 0 1 c T B = 1 0, c T N = 1 0 0 1 1 b = B 1 b = = 1 1 0 1 1 0 0 1 B 1 N = = 1 0 1 1 z 0 = c B T b = 1 0 1 = 1 c N T c B T B 1 N = 1 0 1 0 1 0 0 1 = 1 1 0 1 1 0 1 0 1 = p. 5
A szimplex algoritmus: példa A lineáris program a nembázis változók terében max 1+x 1 x x 1 0 s.t. = x x 3 1 1 x 1,x,x 3,x 0 1 x x x 1 + x 0 1 T x 1 6 A B bázishoz tartozó megengedett bázismegoldás: x 1 x = x 1 x x 3 x = 0 1 0 p. 6
A szimplex algoritmus: pivot A lineáris program a nembázis változók terében max z 0 + j N z jx j Mivel xb x N s.t. x B = b j N y jx j x B,x N 0 bázismegoldás, ezért x N = 0 A fenti alak jelentősége, hogy megmondja a célfüggvény és a bázisváltozók értékét az aktuális bázisban (a célfüggvény értéke z 0, és x B = b) továbbá, hogy hogyan változna az egyes bázisváltozók és a célfüggvény értéke, ha az egyik nembázis változót nulláról elkezdenénk növelni p. 7
Pivot: példa x max 1+x 1 x x 1 0 s.t. = x x 3 1 1 x 1,x,x 3,x 0 1 x x 1 + x 0 1 T Például ha x -et nulláról 1-re növeljük míg x 1 marad 0 a célfüggvény értéke 1-ről nullára csökken, mert z = 1 x értéke 1-ről nullára csökken, mert y = 1 x 3 értéke -ről -re nő, mert y 3 = x -et nem érdemes növelni, mert akkor a célfüggvény értéke csökken x 1 6 x 1 p. 8
Pivot: példa x max 1+x 1 x x 1 0 s.t. = x x 3 1 1 x 1,x,x 3,x 0 1 x x 1 + x 0 1 T x 1 6 Ha a másik nembázis változót, x 1 -et nulláról 1-re növeljük a célfüggvény értéke 1-ről -re nő, mert z 1 = 1 x értéke nem változik, mert y 1 = 0 x 3 értéke -ről 1-re csökken, mert y 31 = 1 Érdemes x 1 -et növelni, mert a célfüggvény értéke nő Addig növelhetjük, amíg valamelyik változó negatívvá válik Esetünkben x 1 = esetén x 3 értéke 0, x 1 > -re negatív x 1 p. 9
A szimplex algoritmus: pivot Tekintsük a nembázisváltozót, amelynek a növelésével a célfüggvény értéke a legjobban nő k = argmax j N z j Rögzítsünk minden más nembázisváltozót nullában és növeljük x k -t z x B1 x B. x Bm = = z 0 +z k x k b1 b. bm y 1k y k. y mk x k p. 30
A szimplex algoritmus: pivot Az x k nembázis változót addig növelhetjük, amíg valamelyik bázisváltozó nullává nem válik Legyen x i : i B egy bázisváltozó, amelyre y ik > 0 Ekkor x k nembázis változó növelésével x i nemnegatív ha 0 x i = b i y ik x k x k b i y ik Az első bázisváltozó, amely kinullázódik r = argmin i {1,...,m} { bi y ik : y ik > 0 } p. 31
A szimplex algoritmus: pivot Legyen az aktuális bázis nemdegenerált ( b > 0) és tegyük fel, hogy k N : z k > 0 és i B : y ik > 0 { } bi Legyen k = argmaxz j, r = argmin : y ik > 0 j N i B y ik x k -t nulláról br y rk -ra növelve: z = z 0 +z k br y rk x k = b r y rk > 0,x r = 0 x Bi = b i y ik y rk br x j = 0 i B \{r} j N \{k} A célfüggvény értéke nő: z > z 0 mert z k br y rk > 0 p. 3
A szimplex algoritmus: pivot Tétel: a fenti feltételekkel kapott pont megengedett bázismegoldás Biz.: a változók értéke a feltételek miatt nemnegatív, ezért elég belátnunk, hogy az új bázis, vagyis az A mátrix a B1,a B,...,a Br 1,a k,a Br+1,...,a Bm oszlopai is lineárisan függetlenek Ha a k -t felírjuk B = a B1,...,a Bm oszlopainak lineáris kombinációjaként, akkor a r együtthatójának pontosan y rk adódik a k = N k = B(B 1 N) k = By k = i B a i y ik mert y k éppen B 1 N mátrix k-hoz tartozó oszlopa Az új bázis lineáris függetlensége következik y rk 0-ból az alábbi lemma felhasználásával p. 33
Egy lemma Lemma: legyen a 1,...,a n lineárisan független és cseréljük le az egyik a j vektort egy a vektorra, mely a 1,...,a n vektorokkal lineárisan összefüggő: a = n λ i=1 ia i. Ekkor a 1,...,a j 1,a,a j+1,...,a n akkor és csak akkor lineárisan független, ha λ j 0 A bizonyítástól most eltekintünk A pivot után kapott x tehát megengedett bázismegoldás Bázis, mert a kilépő változó tesztjében y rk 0 biztosítva van { } bi r = argmin : y ik > 0 i {1,...,m} y ik A k nembázisváltozó belép a bázisba, míg az r bázisváltozó kinullázódik és kilép a bázisból p. 3
Pivot: példa x max 1+x 1 x x 1 0 s.t. = x x 3 1 1 1 x x 1 + x 0 1 T x 1 x 1,x,x 3,x 0 Belép a bázisba x 1, mert 6 x 1 z 1 = max j N z j = max{1, 1} = 1 Kilép a bázisból x 3, mert b3 = min y 31 i B { bi y ik : y ik > 0 } = min{} = p. 35
Pivot: példa A pivot után kapott új pont k = 1, r = 3 B = {1,}, N = {3,} br z = z 0 +z k = 1+ = 3 y rk x 1 = b r = y rk x = b y k = 1 0 = 1 y 3k b3 x 3 = b 3 y 3k = = 0 y 3k b3 x = 0 x = 1 0 0 T x 0 1 T 1 T 6 x 1 p. 36
Pivot: példa B = {1,},N = {3,}, 1 1 0 B =, N = 0 1 0 1 1 B 1 = 0 1 c B T = 1 1,c N T = 0 0 Az új bázisban felírva a lineáris programot, x 1 T 6 x 1 max 3 x 3 +x x1 1 s.t. = x x 1 0 3 x 1,x,x 3,x 0 x 1 p. 37
Szimplex: optimális megoldás Emlékeztetőül a pivotszabályok x k beléphet a bázisba, ha z k > 0 x r kilép a bázisból: r = argmin i {1,...,m} { bi y ik : y ik > 0 Ha minden j N : z j 0, akkor egyik nembázis változót sem érdemes növelni, mert ekkor nem növelnénk a célfüggvény értékét Tétel: a (primál) szimplex algoritmus optimalitási feltétele j N : z j 0 Biz.: ha valamely x megengedett bázismegoldásra j N : z j 0, akkor x lokális optimum Mivel a megengedett tartomány konvex és a célfüggvény konkáv, ezért x globális optimum is p. 38 }
Optimális megoldás: példa A korábbi példánknál maradva max 3 x 3 +x x1 1 s.t. = x x 1 0 3 x 1,x,x 3,x 0 x 1 Ez a bázismegoldás nem optimális, mert z > 0 tehát x belép a bázisba és x kilép a bázisból, mert b = min y i B { bi y i : y i > 0 } = min{1} = 1 p. 39
Optimális megoldás: példa Az új bázisban B = {1,},N = {,3},c T B = 1 0,c T N = 1 0 1 0 1 1 0 B =,N =,B 0 1 1 0 1 = 0 1 Az x = 0 0 1 T megengedett bázismegoldás optimális x max x x 3 x1 s.t. = x x 1 1 x 1,x,x 3,x 0 1 x 0 3 1 T 0 T 6 x 1 p. 0
Szimplex példa: összefoglalás p. 1
Egyedi optimális megoldás Def.: max{c T x : Ax = b,x 0} lineáris programnak x megengedett megoldás egyedi optimális megoldása, ha minden x x megengedett megoldásra c T x < c T x Tétel: az x megengedett bázismegoldás egyedi optimális megoldás, ha j N : z j < 0 Biz. legyen x bármely x-től különböző megengedett megoldás, és legyen a hozzá tartozó célfüggvényérték z Legyen N az x megengedett bázismegoldáshoz tartozó nembázis változók halmaza, ekkor z = z 0 + j N z j x j j N : x j > 0 (különben x = x) és z j < 0 z < z 0 p.
Egyedi optimális megoldás: példa Tekintsük az iménti lineáris program x = 0 0 1 T megengedett bázismegoldását B = {1,},N = {,3} 1 0 1 B =,N = 0 1 1 0 c B T = 1 0,c N T = 1 0,B 1 = 1 0 0 1 max x x 3 x1 s.t. = x x 1 1 1 x 0 3 x x 1,x,x 3,x 0 0 T Tehát x egyedi, optimális megoldás 6 p. 3 x 1
Alternatív optimális megoldások Tegyük fel, hogy x optimális megengedett bázismegoldás (tehát j N : z j 0), de létezik olyan nembázisváltozó, mondjuk k, melyre az optimalitási feltétel egyenlőséggel teljesül: z k = 0 Ha x nemdegenerált, akkor x k nulláról megnövelhető valamely ǫ > 0-val anélkül, hogy kinullázódna valamelyik bázisváltozó z = z 0 +z k x k = z 0 +0x k x B1. x Bm = b1. bm y 1k. y mk xk Minden 0 < x k ǫ választás optimális megengedett megoldást eredményez, hiszen z k = 0 miatt a célfüggvény értéke nem változik p.
Alternatív optimális megoldások A lineáris program az x k nembázisváltozó függvényében, z k = 0 és minden más z j 0 max s.t. x = xb x N z 0 +0x k b = 0 x 0 + yk e k x k ahol szokás szerint y k a B 1 N mátrix k-hoz tartozó oszlopa, e k pedig a k-adik kanonikus egységvektor Alternatív optimális megoldásokat kapunk amíg x B 0 { b yk bi x = +λ 0 λ min : y 0 e ik > 0 k i B y ik } p. 5
Alternatív optimális megoldások: példa Tekintsük a lineáris programot max x 1 + x s.t. x 1 + x x 1 + x 1 x 1, x, 0 Slack-változókkal standard alakra hozva max x 1 + x s.t. x 1 + x + x 3 = x 1 + x + x = 1 x 1, x, x 3, x 0 p. 6
Alternatív optimális megoldások: példa Legyen a bázis B = a 1 a = 1 0, B 1 1 1 = 1 0 1 1 A bázishoz tartozó megengedett bázismegoldás x B = b = x N = x x 3 x1 x = 0 0 = B 1 b = 1 0 1 1 1 = 5 p. 7
Alternatív optimális megoldások: példa A bázismegoldáshoz tartozó paraméterek c T B = 0,c T N = 0 1 0 1 1 B 1 N = = 1 1 1 0 3 1 z 0 = c B T b = 0 5 c N T c B T B 1 N = 0 0 = 8 1 3 1 = 0 = 0 p. 8
Alternatív optimális megoldások: példa A lineáris program a nembázisváltozók terében max 8+0x x 3 x1 s.t. = x x 5 3 x 1,x,x 3,x 0 1 x 1 3 Alternatív optimális megoldások x = 0 0 +λ 5 A 0 T és a 3 1 0 : 0 < λ 5 3 3 5 3 T pontok összes konvex kombinációja 0 1 T 0 0 T x /3 5/3 T -x 1 +x 1 x 1 + x 6 0 T p. 9 x 1