Programowanie liniowe w logistyce
Transkrypt
Programowanie liniowe w logistyce
Programowanie liniowe w logistyce kierunek Informatyka, studia I stopnia wyklad 1 Wstep ˛ Przedmiotem logistyki sa˛ m.in. procesy transportu i magazynowania surowców oraz wytworzonych dóbr, a także planowania produkcji. Celem działań logistycznych jest maksymalizacja zysków i minimalizacja kosztów. Do podstawowych działów logistyki należa˛ m.in.: logistyka transportu i logistyka produkcji. Jednym z podstawowych narzedzi matematycznych stosowanych w logistyce trans˛ portu i logistyce produkcji jest programowanie liniowe. Jest to dział teorii zadań ekstremalnych, którego przedmiotem sa˛ zadania optymalizacyjne, opisane przez funkcje liniowe, określone na zbiorach zadanych układami równości lub nierówności liniowych. Najprostszym przykładem zadania programowania liniowego jest zadanie znale-zienia punktu minimum funkcji f(x) = ax na przedziale [c, d] ⊂ R+ 0 . W postaci zadań programowania liniowego można zapisać wiele praktycznych zagadnień. 2 Modelowanie Przykład 1 (planowanie produkcji). Wytwórca dysponuje określonymi ilościami różnych środków (surowce, praca, sprzet), ˛ wykorzystywanych do produkcji różnych towarów. Wiadomo, jaka ilość i-tego środka jest potrzebna do produkcji jednostki j-tego towaru, a także jaki dochód daje sprzedaż każdej wyprodukowanej jednostki j-tego towaru. Wytwórca 1 powinien tak zaplanować produkcje, ˛ by całkowity dochód uzyskany ze sprzedaży towarów był maksymalny. Model. Wprowadźmy nastepuj ˛ ace ˛ oznaczenia: m - ilość środków n - ilość towarów aij - ilość jednostek i-tego środka potrzebna do produkcji jednostki j-tego towaru bi - dostepna ilość jednostek i-tego środka ˛ xj - wielkość produkcji j-tego towaru cj - dochód uzyskiwany ze sprzedaży jednostki j-tego towaru Całkowita˛ ilość i-tego środka, wykorzystana˛ podczas produkcji, można wiec ˛ wyrazić nastepuj ˛ aco: ˛ n X aij xj . j=1 Ilość ta powinna być mniejsza lub równa dostepnej ilości jednostek i-tego środka, czyli ˛ n X aij xj ≤ bi , i = 1, ..., m. j=1 Dochód uzyskany ze sprzedaży wszystkich wyprodukowanych towarów wyraża sie˛ nastepu˛ jaco: n X cj xj , j=1 przy czym oczywiście należy żadać, by ˛ xj ≥ 0, j = 1, ..., n. Można wiec ˛ sformułować opisane zagadnienie w nastepuj ˛ acy ˛ sposób: zmaksymalizować funkcjonał kosztu (dochód) n X cj xj j=1 przy ograniczeniach n X j=1 xj ≥ 0, j = 1, ..., n, aij xj ≤ bi , i = 1, ..., m. 2 3 Sformułowanie zadania Ogólnym zadaniem programowania liniowego nazywamy zadanie postaci: ⎧ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎨ J(u) = c1 u1 + ... + cn un → min . (1) uk ≥ 0, k ∈ I (2) a1,1 u1 + ... + a1,n un ≤ b1 ... am,1 u1 + ... + am,n un ≤ bm ⎪ ⎪ am+1,1 u1 + ... + am+1,n un = bm+1 ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ... ⎪ ⎪ ⎪ ⎪ ⎩ a u1 + ... + a un = bs s,1 , (3) s,n gdzie u = (u1 , ..., un ) ∈ Rn , natomiast cj , ai,j , bi , i = 1, ..., s, j = 1, ..., n, sa˛ danymi liczbami rzeczywistymi, przy czym nie wszystkie liczby cj i nie wszystkie liczby aij sa˛ równe zero, I ⊂ {1, ..., n} jest ustalonym zbiorem indeksów; możliwe sa˛ tutaj przypadki: I = ∅, I = {1, ..., n}, m = s, m = 0. Wprowadzajac ˛ oznaczenia c = (c1 , ..., cn ), ai = (ai,1 , ..., ai,n ), możemy zapisać powyższe zadanie w nastepuj ˛ acy ˛ sposób: ⎧ ⎪ ⎪ J(u) = hc, ui → min . ⎪ ⎨ u ∈ U = {u = (u1 , ..., un ) ∈ Rn ; ui ≥ 0 dla i ∈ I, ⎪ ⎪ ⎪ ⎩ ha , ui ≤ bi dla i = 1, ..., m, ha , ui = bi dla i = m + 1, ..., s} i i (4) (symbolem hx, yi oznaczamy iloczyn skalarny wektorów x = (x1 , ..., xn ), y = (y 1 , ..., y n ), P t.zn. hx, yi = ni=1 xi yi ). W dalszym ciagu, zapis ˛ x ≥ y, oznaczał, że gdzie x = (x1 , ..., xn ), y = (y 1 , ..., y n ), bedzie ˛ xi ≥ y i , i = 1, ..., n. 3 Wobec tego, zadanie (4) możemy zapisać nastepuj ˛ aco: ˛ ⎧ ⎨ J(u) = hc, ui → min . ⎩ u ∈ U = {u = (u1 , ..., un ) ∈ Rn ; ui ≥ 0 dla i ∈ I, Au ≤ b, Au = b} gdzie ⎡ ⎢ ⎢ A=⎢ ⎣ ⎡ ⎤ a1,1 ... a1,n a ... am+1,n ⎢ m+1,1 ⎥ ⎢ .. .. .. ⎥ .. . . . ⎥, A = ⎢ . ⎣ ⎦ am,1 ... am,n as,1 ... as,n ⎡ ⎡ ⎤ ⎤ 1 m+1 b b ⎢ ⎢ ⎥ ⎥ ⎢ .. ⎥ ⎢ .. ⎥ b = ⎢ . ⎥, b = ⎢ . ⎥. ⎣ ⎣ ⎦ ⎦ m s b b (5) ⎤ ⎥ ⎥ ⎥, ⎦ Każdy punkt u ∈ U nazywamy punktem dopuszczalnym zadania (5). Punkt u∗ ∈ U nazywamy rozwiazaniem zadania (5), gdy ˛ J(u∗ ) ≤ J(u) dla dowolnego u ∈ U . Kanonicznym zadaniem programowania liniowego nazywamy zadanie postaci ⎧ ⎨ J(u) = hc, ui → min . , ⎩ u ∈ U = {u = (u1 , ..., un ) ∈ Rn ; u ≥ 0 , Au = b} (6) Podstawowym zadaniem programowania liniowego nazywamy zadanie postaci ⎧ ⎨ J(u) = hc, ui → min . , ⎩ u ∈ U = {u = (u1 , ..., un ) ∈ Rn ; u ≥ 0 , Au ≤ b} (7) gdzie A ∈ Rm×n , b ∈ Rm . gdzie A i b sa˛ takie, jak wyżej. 4 Równoważność zadań Zajmiemy sie˛ teraz zagadnieniem „równoważności” zadań różnego typu. Dokładniej, pokażemy, że rozwiazywanie zadania podstawowego i zadania ogólnego można zastapić ˛ ˛ rozwiazywaniem zadania kanonicznego. ˛ 4 Istotnie, niech dane bedzie zadanie podstawowe (7) i rozważmy w przestrzeni Rn+m ˛ zadanie postaci ⎧ ⎨ hd, zi → min . ⎩ z ∈ Z = {z = (u, v) ∈ Rn+m ; z ≥ 0 , Cz = b} gdzie d = (c, 0) ∈ Rn+m , ⎡ a ... a1,n ⎢ 1,1 .. ⎢ . C = [A | Im×m ] = ⎢ .. . ⎣ am,1 ... am,n (Im×m jest macierza˛ jednostkowa˛ wymiaru m × m). , (8) ⎤ 1 ... 0 ⎥ .. .. ⎥ . . ⎥ ⎦ 0 ... 1 zadania (7), to z∗ = (u∗ , v∗ ), gdzie Łatwo zauważyć, że jeśli u∗ ∈ U jest rozwiazaniem ˛ v∗ = b − Au∗ , jest rozwiazaniem zadania (8), t.zn. z∗ ∈ Z oraz ˛ hd, z∗ i ≤ hd, zi dla dowolnego z ∈ Z. zadania (8), to u∗ jest rozwiazaniem Jeśli natomiast z∗ = (u∗ , v∗ ) ∈ Z jest rozwiazaniem ˛ ˛ zadania (7), t.zn. u∗ ∈ U oraz hc, u∗ i ≤ hc, ui dla dowolnego u ∈ U . Podobnie, rozwiazywanie zadania ogólnego (5) można zastapić rozwiazywaniem zadania ˛ ˛ ˛ kanonicznego. Rzeczywiście, rozważmy w przestrzeni Rp (p = m + I + J + J, gdzie 5 J = {1, ..., n}ÂI) zadanie postaci ⎧ X X X ⎪ ⎪ he, zi = ci ui + ci wi + −ci wi → min . ⎪ ⎪ ⎪ ⎪ i∈I i∈J i∈J ⎪ ⎪ ⎪ i i ⎪ z ∈ Z = {z = (v, u ; i ∈ I, w ; i ∈ J, wi ; i ∈ J) ∈ Rp ; z ≥ 0, ⎪ ⎪ ⎪ X X X ⎪ ⎪ i i ⎪ v + A u + A w + −Ai wi = b, ⎪ i i ⎪ ⎪ ⎨ Xi∈J Xi∈J Xi∈I , Ai ui + Ai wi + −Ai wi = b} ⎪ ⎪ ⎪ ⎪ i∈I i∈J i∈J ⎪ ⎪ ⎪ p ⎪ ⎪ = {z ∈ R ; z ≥ 0, ⎪ ⎪ ⎡ ⎤ ⎡ ⎤ ⎪ ⎪ ⎪ ⎪ | Ai ; i ∈ I | Ai ; i ∈ J | −Ai ; i ∈ J] [I b ⎪ ⎪ ⎣ m×m ⎦ z = ⎣ ⎦} ⎪ ¤ £ ⎪ ⎩ b 0 | Ai ; i ∈ I | Ai ; i ∈ J | −Ai ; i ∈ J (9) gdzie e = (0, ci ; i ∈ I, ci ; i ∈ J, −ci ; i ∈ J) ∈ Rp , Ai - i-ta kolumna macierzy A, Ai - i-ta kolumna macierzy A. Jeśli u∗ ∈ U jest rozwiazaniem zadania ogólnego (5), to ˛ z∗ = (v∗ , ui∗ ; i ∈ I, w∗i ; i ∈ J, wi∗ ; i ∈ J), gdzie v∗ = b − Au∗ , w∗i = max{0, ui∗ }, i ∈ J, wi∗ = max{0, −ui∗ }, i ∈ J, jest rozwiazaniem zadania (9) (zauważmy, że ui∗ = w∗i − wi∗ dla i ∈ J). ˛ Jeśli natomiast z∗ = (v∗ , ui∗ ; i ∈ I, w∗i ; i ∈ J, wi∗ ; i ∈ J), jest rozwiazaniem zadania (9), to ˛ u∗ = (ui∗ ; i ∈ I, w∗i − wi∗ ; i ∈ J) jest rozwiazaniem zadania (5). ˛ 6 5 Interpretacja geometryczna zadań programowania liniowego Rozważmy zadanie podstawowe (7) w przypadku, gdy n = 2, czyli ⎧ ⎪ ⎪ J(u) = c1 u1 + c2 u2 → min . ⎪ ⎨ ⎪ ⎪ ⎪ ⎩ u ∈ U = {u = (u1 , u2 ) ∈ R2 ; u1 ≥ 0, u2 ≥ 0, . ai,1 u1 + ai,2 u2 ≤ bi , i = 1, ..., m} Wprowadźmy oznaczenia U0,1 = {(u1 , u2 ) ∈ R2 ; −u1 ≤ 0}, U0,2 = {(u1 , u2 ) ∈ R2 ; −u2 ≤ 0}, Ui = {(u1 , u2 ) ∈ R2 ; ai,1 u1 + ai,2 u2 ≤ bi }, i = 1, ..., m. Oczywiście U = U0,1 ∩ U0,2 ∩ U1 ∩ ... ∩ Um . Możliwe sa˛ nastepuj ˛ ace ˛ przypadki: 10 zbiór U jest pusty 20 zbiór U jest niepustym wielobokiem wypukłym i ograniczonym 7 (10) 30 zbiór U jest niepustym wielobokiem wypukłym i nieograniczonym Ustalmy liczbe˛ α ∈ R. Równanie c1 u1 + c2 u2 = α opisuje poziomice˛ funkcjonału J odpowiadajac ˛ a˛ wartości α, czyli zbiór {(u1 , u2 ) ∈ R2 ; J(u) = α}. Jest to prosta o wektorze normalnym c = (c1 , c2 ). Przy zmianie wartości stałej α od −∞ do ∞ prosta ta zmienia swoje położenie, przesuwajac ˛ sie˛ w sposób równoległy w kierunku wektora c i „zamiatajac” ˛ cała˛ płaszczyzne. ˛ W przypadku 20 zawsze istnieje „punkt pierwszego kontaktu” (być może nie jedyny) przesuwajacej ˛ sie˛ prostej z wielobokiem U. Odpowiednia wartość stałej α wynosi wówczas minJ(u) =: J∗ u∈U 8 9 W przypadku 30 ów „punkt pierwszego kontaktu” istnieje (być może nie jedyny) lub nie. Jeśli nie istnieje, oznacza to, że zadanie nie ma rozwiazania; w takim przypadku ˛ inf J(u) = −∞. u∈U 10 Z powyższej dyskusji wynika, że zadanie (10) może nie mieć rozwiazań, może mieć jedno ˛ rozwiazanie lub może mieć nieskończenie wiele rozwiazań. Ponadto, w przypadku, gdy ˛ ˛ zbiór rozwiazań jest niepusty, w zbiorze tym istnieje co najmniej jeden punkt, który jest ˛ wierzchołkiem wieloboku U. Podobna˛ analize˛ można przeprowadzić w przypadku n = 3, zastepuj ˛ ac ˛ wielobok wielościanem, a prosta˛ - płaszczyzna.˛ Matoda˛ graficzna˛ można także rozwiazać niektóre zadania o wiekszej niż 2 lub 3 ilości ˛ ˛ zmiennych. Rozważmy mianowicie zadanie postaci ⎧ ⎨ J(u) = hc, ui → min . gdzie ⎡ ⎩ u ∈ U = {u ∈ Rm+2 ; u ≥ 0 , Au = b} a ... a1,m a1,m+1 a1,m+2 ⎢ 1,1 .. .. .. ⎢ . A = ⎢ .. . . . ⎣ am,1 ... am,m am,m+1 am,m+2 ⎤ ⎥ ⎥ ⎥, ⎦ ⎡ ⎤ b1 ⎢ ⎥ ⎢ .. ⎥ b = ⎢ . ⎥, ⎣ ⎦ bm przy czym rankA = m i kolumny A1 ,...,Am sa˛ liniowo niezależne. Wprowadźmy oznaczenia Zatem ⎡ ⎡ ⎤ a1,1 ... a1,m a a1,m+2 ⎢ ⎢ 1,m+1 ⎥ .. ⎥ .. .. ⎢ . ⎢ A = ⎢ .. . ⎥, A = ⎢ . . ⎣ ⎣ ⎦ am,1 ... am,m am,m+1 am,m+2 ⎡ ⎤ ⎤ ⎡ u1 m+1 ⎢ ⎥ u ⎢ . ⎥ ⎦, u = ⎢ .. ⎥ , u = ⎣ m+2 ⎣ ⎦ u um ⎡ ⎤ ⎤ ⎡ c ⎢ 1 ⎥ c m+1 ⎢ . ⎥ ⎦. c = ⎢ .. ⎥ , c = ⎣ ⎣ ⎦ cm+2 cm ⎡ ⎤ i h ¤ £ u A = A | A , u = ⎣ ⎦, c = c | c . u 11 ⎤ ⎥ ⎥ ⎥, ⎦ W konsekwencji warunek Au = b możemy zapisać jako Au + Au = b. Stad ˛ −1 −1 u=A b−A Au. Zauważmy teraz, że rozwiazywanie zadania wyjściowego można zastapić ˛ ˛ rozwiazywaniem ˛ zadania postaci ⎧ ⎨ D E ® −1 −1 c, A b − A Au + c, u → min . (=) ⎩ u ∈ U = {u ∈ R2 ; u ≥ 0 , A−1 Au ≤ A−1 b} zadania (=), to Dokładniej, jeśli u∗ jest rozwiazaniem ˛ ⎤ ⎡ u∗ ⎦, u∗ = ⎣ u∗ gdzie −1 −1 u∗ = A b − A Au∗ , ⎡ jest rozwiazaniem zadania wyjściowego. Na odwrót, jeśli u∗ = ⎣ ˛ zadania (=). zadania wyjściowego, to u∗ jest rozwiazaniem ˛ 6 u∗ u∗ ⎤ ⎦ jest rozwiazaniem ˛ Punkty wierzchołkowe Punkt v ∈ V ⊂ Rn nazywamy punktem wierzchołkowym (punktem ekstremalnym) zbioru wypukłego i domknietego V , jeśli przedstawienie ˛ v = αv1 + (1 − α)v2 , (11) gdzie α ∈ (0, 1), v1 , v2 ∈ V , możliwe jest tylko wtedy, gdy v1 = v2 . Innymi słowy, punkt v ∈ V jest punktem wierzchołkowym zbioru V , gdy nie jest on punktem wewnetrznym ˛ 12 niezdegenerowanego odcinka o końcach należacych do V . Pojecie ˛ ˛ punktu wierzchołkowego jest pojeciem fundamentalnym w teorii programowania liniowego. ˛ W dalszej cześci ˛ wykładu pokażemy, że jeśli zadanie kanoniczne (przy dowolnym n ∈ N) posiada rozwiazanie, to wśród rozwiaza ˛ ˛ ń jest co najmniej jeden punkt wierzchołkowy zbioru U = {u ∈ Rn ; u ≥ 0, Au = b}. (12) Teraz podamy charakteryzacje˛ punktów wierzcholkowych zbioru postaci (12). Twierdzenie 1 Niech dany bedzie zbiór U postaci (12) i punkt v ∈ Rn , przy czym A ∈ ˛ Rm×n Â{0}, r := rankA. Punkt v jest punktem wierzchołkowym zbioru U wtedy i tylko wtedy, gdy istnieja˛ wskaźniki j1 ,...,jr ∈ {1, ..., n} takie, że ⎧ ⎪ ⎪ vj ≥ 0, j ∈ {j1 , ..., jr } ⎪ ⎪ ⎪ ⎪ ⎨ v j = 0, j ∈ / {j , ..., j } 1 ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎩ r Aj1 vj1 + ... + Ajr vjr = b (13) kolumny Aj1 , ..., Ajr sa˛ liniowo niezależne w Rm Układ wektorów Aj1 ,...,Ajr wystepuj w warunkach (13) nazywamy baza˛ punktu ˛ acych ˛ wierzchołkowego v, a odpowiednie współrzedne v j1 ,...,v jr - współrzednymi bazowymi punktu ˛ ˛ wierzchołkowego v. Punkt wierzchołkowy, którego wszystkie współrzedne bazowe sa˛ do˛ datnie nazywamy nieosobliwym. Punkt wierzchołkowy, którego co najmniej jedna współrzedna ˛ bazowa jest równa zero nazywamy osobliwym. Zmienne uj1 ,...,ujr nazywamy zmiennymi bazowymi, a pozostałe - zmiennymi niebazowymi (przy ustalonej bazie Aj1 ,...,Ajr ). Z twierdzenia 1 wynika, że baza nieosobliwego punktu wierzchołkowego zbioru (12) jest wyznaczona jednoznacznie. Osobliwy punkt wierzchołkowy może mieć wiele baz. 7 Metoda sympleksowa Metoda sympleksowa polega na „uporzadkowanym” sprawdzaniu wartości funkcjonału ˛ kosztu w punktach wierzchołkowych zbioru ograniczajacego („uporzadkowanie” oznacza ˛ ˛ tu, że wartości funkcjonału kosztu w kolejnych punktach nie rosna). ˛ 13 Rozważmy zadanie kanoniczne postaci ⎧ ⎨ J(u) = hc, ui → min . ⎩ u ∈ U = {u ∈ Rn ; u ≥ 0 , Au = b} (14) gdzie 0 6= A ∈ Rm×n , przy czym zakładać bedziemy w tym rozdziale, że U 6= ∅ (kwestia ˛ niepustości zbioru U omówiona bedzie w dalszej cześci ˛ ˛ wykładu). Oczywiście rankA ≤ min{m, n} (podobnie, jak wcześniej, rankA oznaczać bedziemy przez r). Równość ˛ Au = b możemy zapisać w postaci układu równań n X ai,j uj = bi , i = 1, ..., m. j=1 Nie zmniejszajac ˛ ogólności rozważań, możemy założyć, że r = m. Oczywiście r ≤ n. Jeżeli u, przy czym u ≥ 0 (gdyby r = n, to powyższy układ ma dokładnie jedno rozwiazanie ˛ któraś ze współrzednych punktu u była ujemna, to zbiór U byłby pusty, co sprzeczne ˛ byłoby z naszym założeniem). W konsekwencji zbiór U jest jednoelementowy i tym samym u jest rozwiazaniem zadania (14). ˛ Bedziemy wiec że r = m oraz r < n. Równość ˛ ˛ zakładać w dalszym ciagu, ˛ Au = b możemy wiec ˛ zapisać w postaci ⎧ ⎪ ⎪ a u1 + ... + a1,n un = b1 ⎪ ⎨ 1,1 gdzie r = rankA < n. ... ⎪ ⎪ ⎪ ⎩ a u1 + ... + a un = br r,1 r,n (15) Podamy teraz opis metody sympleksowej. Przypuśćmy, że dany jest punkt wierzchołkowy v zbioru U = {u ∈ Rn ; u ≥ 0 , Au = b} 14 i załóżmy, że kolumny A1 ,...,Ar sa˛ baza˛ tego puntu, v 1 ,...,vr - jego współrzednymi bazowymi ˛ (kwestia wyznaczenia „poczatkowego” punktu wierzchołkowego v zbioru U i określenia ˛ jego współrzednych bazowych omówiona bedzie w dalszej cześci ˛ ˛ ˛ wykładu). Wprowadźmy nastepuj ˛ ace ˛ oznaczenia ⎡ 1 u ⎢ ⎢ .. u=⎢ . ⎣ ur ⎡ ⎤ ⎡ 1 v ⎢ ⎥ ⎢ .. ⎥ ⎥, v = ⎢ . ⎣ ⎦ vr a ... a1,r ⎢ 1,1 .. ⎢ . B = ⎢ .. . ⎣ ar,1 ... ar,r ⎤ ⎤ ⎡ ⎤ c ⎢ 1 ⎥ ⎥ ⎢ .. ⎥ ⎥ ⎥, c = ⎢ . ⎥, ⎣ ⎦ ⎦ c1 ⎥ ⎥ ⎥ = [A1 | ... | Ar ] . ⎦ Wówczas układ (15) możemy zapisać w postaci Bu + Ar+1 ur+1 + ... + An un = b. (16) Z liniowej niezależności kolumn A1 ,...,Ar (jest to baza punktu v) wynika, że det B 6= 0. W konsekwencji istnieje macierz odwrotna B −1 . Współrzedne niebazowe punktu v sa˛ zerowe, ˛ a wiec ˛ z (16) otrzymujemy Bv = b, skad ˛ v = B −1 b. Mnożac ˛ równość (16) lewostronnie przez B −1 , otrzymujemy u+ n X B −1 Ak uk = B −1 b = v. (17) k=r+1 Oznaczmy γ s,k = (B −1 Ak )s dla k = r + 1, ..., n, s = 1, ..., r s gdzie (B −1 Ak ) oznacza s-ta˛ współrzedn ˛ a˛ wektora-kolumny B −1 Ak . Równość (17) możemy 15 teraz zapisać w postaci nastepuj układu równań ˛ acego ˛ ⎧ ⎪ ⎪ u1 + γ 1,r+1 ur+1 + ... + γ 1,n un = v 1 ⎪ ⎪ ⎪ ⎪ r+1 ⎨ u2 + γ + ... + γ 2,n un = v 2 2,r+1 u . ⎪ ⎪ ... ⎪ ⎪ ⎪ ⎪ ⎩ ur + γ r+1 + ... + γ r,n un = vr r,r+1 u (18) Określmy także γ s,k = (B −1 Ak )s dla k = 1, ...r, s = 1, ..., r (oczywiście γ s.k = δs,k dla k = 1, ..., r, s = 1, ..., r, gdzie δ s,k jest symbolem Kronekera). Pokazaliśmy wiec, ˛ że majac ˛ ustalony punkt wierzchołkowy v zbioru U i wiedzac, ˛ że współrzedne z indeksami 1,...,r sa˛ jego współrzednymi bazowymi, można zapisać ograniczenia ˛ ˛ (15) w równoważnej postaci (16) lub (17) lub (18). Wartość funkcjonału kosztu J w punkcie u spełniajacym ograniczenia typu równości ˛ (15), można zapisać w nastepuj ˛ acej ˛ postaci J(u) = hc, ui = = * c, v − = hc, vi − Ponieważ n X i ci u = hc, ui + i=1 n X B −1 Ai ui i=r+1 n X + + n X ci ui i=r+1 n X ci ui i=r+1 ® ( c, B −1 Ai − ci )ui . i=r+1 hc, vi = hc, vi = J(v), wiec ˛ J(u) = J(v) − gdzie Określmy także n X ∆i ui , (19) i=r+1 ® ∆i = c, B −1 Ai − ci , i = r + 1, ..., n. ® ∆i = c, B −1 Ai − ci 16 (20) dla i = 1, ..., r. Oczywiście ® ∆i = c, B −1 Ai − ci = hc, ei i − ci = ci − ci = 0 dla i = 1, ..., r (tutaj ei jest i-ta˛ kolumna˛ macierzy jednostkowej o wymiarach r × r). Dokonajmy cześciowego podsumowania. Pokazaliśmy, że zadanie (14) możemy zapisać ˛ w nastepuj ˛ acej ˛ postaci ⎧ n P ⎪ ⎨ J(u) = J(v) − ∆i ui → min . i=r+1 ⎪ ⎩ U = {u = (u1 , ..., un ) ∈ Rn ; u ≥ 0 , u spełnia (18)} (21) Wystepuj ˛ ace ˛ w powyższym opisie wielkości γ s,k , v i , ∆i zapiszemy w postaci tzw. tablicy sympleksowej, odpowiadajacej ˛ punktowi wierzchołkowemu v 17 Tablica sympleksowa I (dla punktu v) u1 ... ui ... us ... ur ur+1 ... uk u1 .. . 1 .. . ... 0 .. . ... 0 .. . ... 0 .. . γ 1,r+1 .. . ... γ 1,k .. . ... γ 1,j .. . ... γ 1,n .. . v1 .. . ui .. . 0 .. . ... 1 .. . ... 0 .. . ... 0 .. . γ i,r+1 .. . ... γ i,k .. . ... γ i,j .. . ... γ i,n .. . vi .. . us .. . 0 .. . ... 0 .. . ... 1 .. . ... 0 .. . γ s,r+1 ... γ s,k .. . ... γ s,j .. . ... γ s,n .. . vs .. . ur 0 ... 0 ... 0 ... 1 γ r,r+1 ... γ r,k ... γ r,j ... γ r,n vr 0 ... 0 ... 0 ... 0 ∆r+1 ... ∆k ... ∆j ... ∆n J(v) ... uj ... un Analizujac ˛ tablice˛ sympleksowa˛ I, możemy wyróżnić trzy przypadki: 10 spełnione sa˛ nierówności ® ∆i = c, B −1 Ai − ci ≤ 0 (22) dla i = r + 1, ..., n, t.zn. w ostatnim wierszu tablicy sympleksowej wszystkie liczby ∆i sa˛ niedodatnie. W tym przypadku punkt v, dla którego skonstruowana została tablica sympleksowa, jest rozwiazaniem zadania. Istotnie, bowiem dla dowolnego u ∈ U mamy ˛ J(u) = J(v) − n X i=r+1 ∆i ui ≥ J(v) (bo ∆i ≤ 0, ui ≥ 0). 20 istnieje wskaźnik k ∈ {r + 1, ..., n} taki, że ⎧ ⎨ ∆ >0 k ⎩ γ ≤ 0 dla i = 1, ..., r (czyli B −1 A ≤ 0) k i,k (23) Oznacza to, że w k-tej kolumnie tablicy sympleksowej ostatni element (∆k ) jest dodatni, a pozostałe - niedodatnie. W tym przypadku inf J(u) = −∞ (dowód tego faktu pomijamy). u∈U Oznacza to, że zadanie nie ma rozwiazania. ˛ 18 30 nie zachodza˛ przypadki 10 i 20 ; w konsekwencji istnieja˛ wskaźniki k ∈ {r + 1, ..., n}, i ∈ {1, ..., r} takie, że ∆k > 0, γ i,k > 0. (24) Oznacza to, że w k-tej kolumnie tablicy sympleksowej ostatni element (∆k ) jest dodatni i co najmniej jedna z liczb γ i,k jest dodatnia. Załóżmy, że zachodzi przypadek 30 i określmy zbiór Ik = {i ∈ {1, ..., r}, γ i,k > 0}. takim wskaźnikiem, że Niech s ∈ Ik bedzie ˛ vs vi = min i∈Ik γ i,k γ s,k (25) Współczynnik γ s,k , gdzie wskaźniki k, s sa˛ określone przez (24) i (25), nazywany jest elementem rozwiazuj tablicy sympleksowej I. ˛ acym ˛ Można pokazać, że układ kolumn A1 , ..., As−1 , As+1 , ..., Ar , Ak (26) jest baza˛ pewnego punktu wierzchołkowego w, przy czym J(w) ≤ J(v). Uwaga 1. Z faktu, że macierz A ma r wierszy wynika, wobec twierdzenia charakteryzujacego punkty wierzchołkowe, iż baza (26) wyznacza punkt wierzchołkowy w sposób ˛ jednoznaczny. Można wiec punktu w, korzystajac ˛ znaleźć współrzedne ˛ ˛ z tego twierdzenia. Przejdźmy teraz do przypadku ogólnego. Łatwo zauważyć, że jeśli współrzednymi ˛ bazowymi punktu v sa˛ vj1 , ..., v jr , gdzie 1 ≤ j1 < ... < jr ≤ n, to wzory wyrażajace ˛ zmienne bazowe i funkcjonał kosztu przy pomocy zmiennych niebazowych, przyjmuja˛ postać (poniżej symbolem Iv oznaczamy 19 zbiór {j1 , ..., jr }) ⎧ P ⎪ ⎪ uj1 = vj1 − γ j1 ,k uk ⎪ ⎪ ⎪ k∈I / v ⎨ ... ⎪ ⎪ P ⎪ ⎪ jr jr ⎪ γ jr ,k uk ⎩ u =v − (27) k∈I / v J(u) = J(v) − gdzie X ∆k uk , (28) k∈I / v γ ji ,k = (B −1 Ak )i ; i = 1, ..., r, k = 1, ..., n (29) (w szczególności γ ji ,k = δ ji ,k dla i = 1, ..., r, k ∈ Iv ), B = [Aj1 | ... | Ajr ] , vji = (B −1 b)i , i = 1, ..., r, ⎡ v k = 0, k ∈ / Iv , r X ® ∆k = c, B −1 Ak − ck = cji (B −1 Ak )i − ck , k = 1, ..., n, ⎤ i=1 c ⎢ 1 ⎥ ⎢ .. ⎥ gdzie c = ⎢ . ⎥ (w szczególności ∆k = 0 dla k ∈ Iv ). ⎣ ⎦ c1 W tym przypadku tablica sympleksowa dla punktu v jest nastepuj ˛ aca: ˛ Tablica sympleksowa II (dla punktu v) 20 (30) u1 ... uj1 ... uji ... uk ... ujs ... uj ... ujr ... un uj1 .. . γ j1 ,1 .. . ... 1 .. . ... 0 .. . ... γ j1 ,k .. . ... 0 .. . ... γ j1 ,j .. . ... 0 .. . ... γ j1 ,n .. . vj1 .. . uji .. . γ ji ,1 .. . ... 0 .. . ... 1 .. . ... γ ji ,k .. . ... 0 .. . ... γ ji ,j .. . ... 0 .. . ... γ ji ,n .. . vji .. . ujs .. . γ js ,1 .. . ... 0 .. . ... 0 .. . ... γ js ,k .. . ... 1 .. . ... γ js ,j ... 0 .. . ... γ js ,n v js ujr γ jr ,1 ... 0 ... 0 ... γ jr ,k ... 0 ... γ jr ,j ... 1 ... γ jr ,n vjr ∆1 ... 0 ... 0 ... ... 0 ... ... 0 ... ∆k ∆j ∆n J(v) Tak, jak wcześniej, należy rozważyć trzy przypadki: 10 spełniony jest warunek ∆k ≤ 0, k ∈ / Iv (22’) ∆k > 0, γ ji ,k ≤ 0, i = 1, ..., r (23’) 20 istnieje k ∈ / Iv takie, że / Iv oraz ji ∈ Iv takie, że 30 nie zachodzi przypadek 10 i 20 ; w konsekwencji istnieja˛ k ∈ ∆k > 0, γ ji ,k > 0. (24’) Podobnie, jak wcześniej, łatwo sprawdzić, że w pierwszym przypadku punkt v jest rozwiazaniem ˛ zadania (14), w drugim - inf hc, ui = −∞, czyli zadanie (14) nie ma rozwiazania. ˛ u∈U W trzecim przypadku należy wybrać element rozwiazuj ˛ acy ˛ γ js ,k na podstawie warunku (24’) oraz warunku v ji v js min , γ js ,k ji ∈Iv,k γ ji ,k (25’) gdzie Iv,k = {ji ∈ Iv ; γ ji ,k > 0}, które sa˛ analogiczne do warunków (24), (25). Nastepnie, ˛ należy wykonać przejście do nowego punktu wierzchołkowego w. Z warunków (24’) i (25’) wynika, że baza˛ punktu w bedzie układ kolumn (z dokładnościa do ich kolejności) ˛ Aj1 , ..., Ajs−1 , Ajs+1 , ..., Ajr , Ak , 21 przy czym J(w) ≤ J(v). Współrzedne punktu w można wyznaczyć na podstawie twierdzenia charakteryzujacego ˛ ˛ punkty wierzchołkowe. Uwaga 2. Można pokazać, że ⎧ js ⎪ ⎪ wj1 = vj1 − γ j1 ,k γv ⎪ js ,k ⎪ ⎪ ⎪ .. ⎪ ⎪ . ⎪ ⎪ ⎪ ⎪ js ⎪ ⎪ wji = v ji − γ ji ,k γv ⎪ ⎪ j s ,k ⎪ ⎪ . ⎪ .. ⎪ ⎪ ⎪ ⎪ ⎪ js ⎪ ⎪ wjs−1 = vjs−1 − γ js−1 ,k γv ⎪ ⎪ j s ,k ⎨ js wjs = v js − γ js ,k γv = 0 js ,k ⎪ ⎪ ⎪ ⎪ vjs j j s+1 s+1 ⎪ = v − γ w ⎪ j ,k s+1 γ ⎪ js ,k ⎪ ⎪ .. ⎪ ⎪ . ⎪ ⎪ ⎪ ⎪ js ⎪ ⎪ wjr = vjr − γ jr ,k γv ⎪ ⎪ js ,k ⎪ ⎪ ⎪ vjs k ⎪ w =γ ⎪ ⎪ js ,k ⎪ ⎪ ⎪ ⎩ wl = 0, l ∈ / Iv , l 6= k, Tablica sympleksowa dla punktu w przyjmuje postać Tablica sympleksowa III (dla punktu w) 22 u1 ... uj1 ... uji ... uk ... ujs ... uj ... ujr ... un 0 ... 1 .. . ... 0 .. . ... 0 .. . ... γ j1 ,js .. . 0 ... γ j1 ,j .. . 0 ... 0 .. . ... γ j1 ,n .. . 0 ... γ ji ,j .. . 0 ... 0 .. . ... 0 γ k,j .. . 0 ... 0 .. . ... γ k,n .. . 0 ... 0 ... γ js−1 ,n 0 .. . γ js+1 ,n uj1 .. . γ j1 ,1 .. . uji .. . γ ji ,1 .. . 0 ... 0 .. . ... 1 .. . ... 0 .. . ... γ ji ,js .. . uk .. . γ k,1 .. . 0 ... 0 .. . ... 0 .. . ... 1 .. . ... γ k,js .. . ... ujs−1 γ js−1 ,1 0 ... 0 ... 0 ... 0 ... γ js−1 ,js 0 ... γ js−1 ,j ujs+1 .. . γ js+1 ,1 .. . 0 ... 0 .. . ... 0 .. . ... 0 .. . ... γ js+1 ,js .. . 0 ... γ js+1 ,j ujr γ jr ,1 ... 0 ... 0 ... 0 ... γ jr ,js ... 0 ... 0 ... 0 ... ∆js 0 0 ∆1 0 0 0 0 0 ... γ jr ,j ... ∆j 0 0 wj1 .. . γ ji ,n .. . 0 wji .. . 0 wk .. . 0 wjs−1 0 wjs+1 0 ... 1 ... γ jr ,n ... 0 ... ∆n 0 0 gdzie współczynniki γ i,j , ∆j sa˛ określone przy pomocy wzorów analogicznych do (29), (30) z macierza˛ B postaci [Aj1 | ... | Ak | ... | Ajs−1 | Ajs+1 | ... | Ajr ] (zakładamy tu, że wiersze i kolumny w tablicy sympleksowej oraz kolumny macierzy B sa˛ ustawione w kolejności rosnacych indeksów). ˛ Uwaga 2. Można pokazać, że ⎧ ⎨ γ 0 = γ − γ ji ,k γ ji ,j js ,j ; i = 1, ..., r, i 6= s, j = 1, ...n, ji ,j γ js ,k oraz ⎩ γ0 = k,j γ js ,j , γ js ,k 0 j = 1, ...n, ∆j = ∆j − ∆k γ js ,j dla j = 1, ..., n. γ js ,k Opisany wiec ˛ został jeden krok metody sympleksowej w dowolnym przypadku (co do bazy punktu wierzchołkowego), czyli przejście od jednego punktu wierzchołkowego (v) zbioru U do drugiego punktu wierzchołkowego (w) tego zbioru (w przypadku 30 ) w taki sposób, że J(w) ≤ J(v). 23 wjr J(w) 8 Reguła antycykliczna Podczas realizacji metody sympleksowej może sie˛ zdarzyć, że vjs vji = . ji ∈Iv,k γ j ,k γ js ,k i 0 = min Ze wzorów podanych w Uwadze 1 wynika, że w takim przypadku w=v i J(w) = J(v), a przejście od punktu v do punktu w oznacza jedynie przejście od bazy Aj1 , ..., Ajr do bazy Aj1 , ..., Ak , ..., Ajs−1 , Ajs+1 , ..., Ajr . Można podać przykłady zadań pokazujace, ˛ że przy ustalonym sposobie wyboru elementu rozwiazuj (n.p. czesto spośród indeksów k, js spełniajacych warunki (24’)-(25’) ˛ acego ˛ ˛ ˛ wybiera sie˛ najmniejsze wartości) metoda sympleksowa może sie˛ „zapetlić”, t.zn. w kole˛ jnych iteracjach punkt wierzchołkowy nie bedzie sie˛ zmieniał, a jego bazy bed ˛ ˛ a˛ zmieniały sie˛ w sposób okresowy (cykliczny). Można jednak określić (na różne sposoby) regułe˛ wyboru elementu rozwiazuj w taki ˛ acego ˛ sposób, by uniknać Każda taka reguła nazywana jest reguła˛ antycyk˛ owego zapetlenia. ˛ liczna.˛ Podamy teraz opis jednej z takich reguł. Do tablicy sympleksowej punktu v (dla uproszczenia przyjmijmy, że kolumny A1 ,...,Ar tworza˛ baze˛ punktu v) dopisujemy r×r - wymiarowa˛ macierz jednostkowa˛ [di,j ]. Dopisane wyrazy przekształcamy w każdej iteracji zgodnie ze wzorami podanymi w Uwadze 2, przy czym nie tworzymy współczynników „∆”. Element rozwiazuj ˛ acy ˛ γ s,k wybieramy w nastepuj ˛ acy ˛ sposób. 24 Niech ∆k > 0 i Ik = {i ∈ {1, ..., r}, γ i,k > 0} 6= ∅. Określmy zbiór vi vs = }. i∈Ik γ i,k γ s,k Ik,1 = {s ∈ Ik ; min Jeśli zbiór Ik,1 zawiera wiecej ˛ niż jeden element, to tworzymy zbiór di,1 ds,1 = }. i∈Ik,1 γ i,k γ s,k Ik,2 = {s ∈ Ik,1 ; min niż jeden element, to Jeśli mamy już określony zbiór Ik,m (m ≥ 2) i zawiera on wiecej ˛ tworzymy zbiór di,m ds,m = }. i∈Ik,m γ i,k γ s,k Ik,m+1 = {s ∈ Ik,m ; min Dowodzi sie, ˛ że istnieje l ∈ {1, ..., r +1} takie, że zbiór Ik,l składa sie˛ z jednego elementu s, przy czym wszystkie zbiory Ik,i , i = 1, ..., l − 1, zawieraja˛ wiecej ˛ niż jeden element. Jako indeks s, służacy przyjmujemy ów jedyny element ˛ do określenia elementu rozwiazuj ˛ acego, ˛ zbioru Ik,l . Można pokazać, że stosowanie w każdym kroku metody sympleksowej takiego sposobu wyboru indeksu s, wyznaczajacego element rozwiazuj iw ˛ ˛ acy, ˛ pozwala uniknać ˛ zapetlenia ˛ skończonej ilości kroków rozwiazać zadanie, bad nie istnieje ˛ ˛ ź stwierdzić, że rozwiazanie ˛ (1 ). 9 Wybór poczatkowego punktu wierzchołkowego ˛ Niech dane bedzie zadanie kanoniczne ˛ 1 J(u) = hc, ui → min . (31) u ∈ U = {u = (u1 , ..., un ) ∈ Rn ; u ≥ 0 , Au = b}, (32) Zatem nie może sie˛ także zdarzyć, że w nieuporzadkowany sposób bedziemy „przerabiać” bazy jednego ˛ ˛ punktu wierzchołkowego, a także, iż w nieskończony sposób (cykliczny lub nie) bedziemy przerabiać ˛ punkty wierzchołkowe (przejście do kolejnego punktu wierzchołkowego w 6= v oznacza, że vjs 6= 0 i w konsekwencji J(w) < J(v)). 25 gdzie ∅ 6= A ∈ Rm×n . Opisujac innymi, ˛ metode˛ sympleksowa,˛ zakładaliśmy miedzy ˛ że zbiór U jest niepusty i znany jest „poczatkowy” punkt wierzchołkowy tego zbioru. ˛ Pokażemy teraz jak stwierdzić, czy U 6= ∅ i znaleźć ów punkt wierzchołkowy. Bez zmniejszania ogólności rozważań możemy założyć, że bi ≥ 0 dla i = 1, ..., m (mnożac ˛ w razie potrzeby odpowiednie równania przez −1). Rozważmy zadanie pomocnicze postaci J1 (z) = un+1 + ... + un+m → min . ⎡ ⎤ u ⎦ ∈ Rn+m ; z ≥ 0, Cz = b}, z ∈ Z = {z = ⎣ w (33) (34) gdzie C = [A | Im×m ], w = (un+1 , ..., un+m ). Układ Cz = b zapiszmy w postaci ⎧ ⎪ ⎪ a u1 + ... + a1,n un + un+1 = b1 ⎪ ⎨ 1,1 . ... ⎪ ⎪ ⎪ ⎩ a u1 + ... + a un + un+m = bm m,1 m,n Łatwo widać, że zbiór Z jest niepusty, bowiem z0 := (0, b) ∈ Z. Łatwo też widać, że z0 jest punktem wierzchołkowym zbioru Z z baza˛ złożona˛ z ostatnich m kolumn macierzy C, czyli wektorów jednostkowych e1 ,...,em ∈ Rm (rankC = m). Można wiec punk˛ do zadania (33)-(34) zastosować metode˛ sympleksowa˛ z poczatkowym ˛ tem wierzchołkowym z0 . Ponieważ J1 (z) ≥ 0, z ∈ Z, wiec ˛ niemożliwy jest przypadek inf J1 (z) = −∞. z∈Z 26 Zatem, stosujac ˛ metode˛ sympleksowa,˛ w skończonej ilości kroków otrzymamy punkt wierzchołkowy z∗ = (v∗ , w∗ ) ∈ Z bed zadania (33)-(34). ˛ acy ˛ rozwiazaniem ˛ Możliwe sa˛ tutaj dwa przypadki. 10 J1 (z∗ ) > 0. Wówczas zbiór U (dany przez (32)) jest zbiorem pustym. Istotnie, w przeciwnym bowiem razie (czyli gdyby istniał punkt u ∈ U) punkt z = (u, 0) należałby do zbioru Z oraz spełniona byłaby równość J1 (z) = 0, co sprzeczne jest z nierównościa˛ J1 (z∗ ) > 0 i optymalnościa˛ punktu z∗ . 20 J1 (z∗ ) = 0. Wówczas punkt z∗ jest postaci (v∗ , 0). Jako punkt uzyskany przy pomocy metody sympleksowej z∗ jest punktem wierzchołkowym zbioru Z. Stad ˛ wynika, że v∗ jest punktem wierzchołkowym zbioru U . Istotnie, ponieważ z∗ ≥ 0, wiec ˛ v∗ ≥ 0, natomiast z równości Cz∗ = b wynika, że Av∗ = b. A wiec ˛ v∗ ∈ U. Przypuśćmy teraz, że v∗ = αu + (1 − α)e u, gdzie α ∈ (0, 1), u, u e ∈ U. Punkty z = (u, 0), ze = (e u, 0) należa˛ oczywiście do zbioru Z, przy czym z∗ = αz + (1 − α)e z. Ponieważ z∗ jest punktem wierzchołkowym zbioru Z, wiec ˛ to oznacza, że skad ˛ z = ze, u=u e. 27 A zatem v∗ jest punktem wierzchołkowym zbioru U. Pokazaliśmy wiec, ˛ że majac ˛ wyjściowe zadanie (31)-(32) i rozważajac ˛ zadanie pomocnicze (33)-(34), potrafimy stwierdzić (stosujac ˛ metode˛ sympleksowa˛ do zadania (33)-(34)), czy U 6= ∅ i, jeśli tak, wyznaczyć poczatkowy punkt wierzchołkowy zbioru U. ˛ Uwaga 3. Można pokazać, że, analizujac ˛ tablice˛ sympleksowa˛ dla punktu z∗ = (v∗ , 0) bed rozwiazaniem zadania (33)-(34)), można ˛ acego ˛ ˛ (1) znaleźć rzad w zadaniu (31)-(32), wskazać baze˛ punktu ˛ macierzy A wystepuj ˛ acej ˛ wierzchołkowego v∗ zbioru (32) (por Uwaga 4) i otrzymać tablice˛ sympleksowa˛ dla punktu v∗ lub (2) sformułować „nowe” zadanie, dla którego natychmiast można wskazać poczatkowy ˛ punkt wierzchołkowy, jego baze˛ i tablice˛ sympleksowa,˛ przy czym ilość ograniczeń typu równości wystepuj w tym zadaniu jest równa rzedowi macierzy opisujacej ˛ acych ˛ ˛ ˛ te ograniczenia. Uzupełniajac tego zadania (otrzymane metoda˛ sym˛ rozwiazanie ˛ pleksowa) otrzymujemy rozwiazanie wyjściowego zadania. ˛ zerowymi współrzednymi, ˛ ˛ Jeśli nowe zadanie nie ma rozwiazania, to nie ma go także zadanie wyjściowe. ˛ Uwaga 4. Majac ˛ punkt wierzchołkowy v∗ zbioru U można wyznaczyć rzad ˛ macierzy A i wskazać współrzedne bazowe punktu v∗ w nastepuj ˛ ˛ acy ˛ sposób. Dodatnie współrzedne ˛ punktu v∗ sa˛ oczywiście jego współrzednymi bazowymi. Uzupełniajac ˛ ˛ układ kolumn odpowiadajacych tymże dodatnim współrzednym kolumnami spośród pozostałych kolumn ˛ ˛ tak, by otrzymany układ stanowił baze˛ powłoki liniowej wszystkich kolumn, otrzymamy baze˛ punktu v∗ (znać też bedziemy rankA i współrzedne bazowe punktu v∗ ). Ta metoda ˛ ˛ w praktyce jest stosowana w przypadku małych wartości m i n. Z powyższych rozważań wynika nastepuj ˛ ace ˛ Twierdzenie 2 Jeśli zbiór U dany przez (32) jest niepusty, to ma co najmniej jeden punkt wierzchołkowy. 28 Korzystajac ˛ z opisu metody sympleksowej, udowodnimy teraz dwa podstawowe fakty teorii programowania liniowego. Twierdzenie 3 Na to, aby kanoniczne zadanie postaci (31)-(32) miało rozwiazanie, t.zn. ˛ aby istniał punkt u∗ ∈ U taki, że hc, u∗ i = inf hc, ui u∈U potrzeba i wystarcza, aby 1) zbiór U był niepusty 2) funkcjonał J(u) = hc, ui był ograniczony z dołu na zbiorze U. Dowód. Konieczność. Konieczność warunków 1) i 2) jest oczywista. Dostateczność. Z warunku 1) i twierdzenia 2 wynika, że istnieje punkt wierzchołkowy zbioru U. Można wiec, zadanie metoda˛ symplek˛ startujac ˛ z tego punktu, rozwiazywać ˛ sowa.˛ Z warunku 2) wynika, że w żadnej iteracji nie zajdzie przypadek 20 (z opisu metody sympleksowej). Oznacza to, że po skończonej ilości kroków metoda sympleksowa zakończy sie˛ znalezieniem rozwiazania u∗ zadania (31)-(32). ˛ Twierdzenie 4 Jeśli zadanie (31)-(32) ma rozwiazanie, to wśród rozwiazań co najmniej ˛ ˛ jeden punkt jest punktem wierzchołkowym. Dowód. Z twierdzenia 3 wynika, że U 6= ∅ i funkcjonał J jest ograniczony z dołu na U. Z twierdzenia 2 wynika, że zbiór U ma co najmniej jeden punkt wierzchołkowy. „Startujac” ˛ z tego punktu, w skończonej ilości kroków matody sympleksowej, otrzymamy rozwiazanie u∗ , które jest punktem wierzchołkowym zbioru U (w żadnej iteracji nie zajdzie ˛ przypadek 20 , gdyż inf J(u) > −∞). u∈U Dowód twierdzenia jest zakończony. 29