BO kompendium Amaltai
Transkrypt
BO kompendium Amaltai
Badania Operacyjne Notatki by Amatalai™ UWAGA! - w ten sposób oznaczam ewentualne różnice jeśli algorytm z ćwików jest inny niż u JJ Autor nie ponosi odpowiedzialności za ewentualne błędy w notatkach. PDF tworzony z myślą o osobach na których MI zależy, proszę go nikomu nie udostępniać bez mojej zgody (ani nie pytać o zgodę bo i tak jej nie wyrażę). Streszczenie może zawierać śladowe ilości orzeszków. Programowanie liniowe: Mały warsztat naprawia 2 rodzaje urządzeń B1, B2. Każde urządzenie zawiera 3 podstawowe elementy E1,E2,E3. Naprawa polega na montażu lub demontażu w zależności od technologii. Tabela przedstawia przebieg każdej naprawy, zysk oraz zapas elementów w firmie. Element E1 E2 B1 3 -2 B2 -1 4 7 12 gdzie x1 i x2 są ilością danych urządzeń. Określić z punktu widzenia zysków plan napraw. Urządzenie Całkowity zysk: przy ograniczeniach: l. el. E1 : l. el. E2 : l. el. E3 : E3 -4 3 10 Zysk [$/szt] -1 3 x1 x2 -x1+3x2 max 3x1-x2 7 -2x1+4x2 12 D -4x1+3x2 10 x1,x2 0 x1, x2 D Rozwiązanie graficzne: Sprawdza się głównie dla 2 zmiennych. Obszar wspólny jest zbiorem rozwiązań. Jeśli istnieje rozwiązanie optymalne będzie ono w jednym z wierzchołków (lub w pewnych przypadkach może być to cała krawędź). Jeśli nie ma rozwiązania optymalnego to zbiór będzie pusty. 1 Prostą kierunku wyznacza się funkcją celu i przesuwa tak długo jak mamy punkt wspólny z obszarem rozwiązań dopuszczalnych, po czym odczytujemy wartości z osi x 1 i x2. W celu otrzymania dokładnego wyniku obliczamy układ równań dla prostych, które przecinają się w wyznaczonym wierzchołku: 3x1-x2=7 -2x1+4x2=12 W rozpatrywanym zadaniu 4,5 . Interpretacja -x1+3x2 max -4+3*5=11$ 2 Zadanie programowania liniowego: Urządzenie B1 B2 B3 zapas E1 3 -1 2 7 -x1+3x2-2x3 max p.o. 3x1 -x2 -2x1 +4x2 -4x1 +3x2 x1,x2,x3 0 Element E2 -2 4 0 12 +2x3 +8x3 Zysk [$/szt] E3 -4 3 8 10 -1 3 -2 x1 x2 x3 7 12 10 Metoda sympleks: Złożoność: 2(m+n) Teoretycznie złożoność wykładnicza, ale w większości przykładów metoda jest sprawna. Problem programowania liniowego: zmaksymalizować funkcję, która ma postać: z n c x j j 1 n a x przy ograniczeniach: j 1 ij j (1) j bi i 1,..., m x j 0 i 1,..., n Zapis wektorowy: cx c c1 ... cn x1 x ... xn Ax b a11 ... a1n A ... ... ... am1 ... amn b1 b ... bn 3 (2) (3) Nazewnictwo: n z c j x j - funkcja celu j 1 n a x j 1 ij j bi i 1,..., m ograniczenia x j 0 i 1,..., n x j - zmienne decyzyjne a, b, c- parametry Programowanie liniowe należy do modeli deterministycznych. Wszystkie wektory x, które spełniają ograniczenia są rozwiązaniem dopuszczalnym. Rozwiązaniem dopuszczalnym problemu programowania liniowego (1)-(3) jest wektor x x1 x2 ... xn spełniający warunki (2) i (3). W programowaniu liniowym w kroku pierwszym chcemy znaleźć rozwiązanie, które leży w wierzchołku. Z punktu widzenia algebraicznego musieli byśmy znaleźć punkt w przestrzeni nieco większej (chcemy aby ograniczenia były spełnione ze znakiem równości). s1,s2,s3 - zmienne uzupełniające, oznaczają nieużyte elementy E1,E2,E3. 3x1 -x2 +2x3 -2x1 +4x2 -4x1 +3x2 +8x3 x1,x2,x3,s1,s2,s3 0 +s1 +s2 +s3 =7 =12 =10 Dla tego układu równań szukamy rozwiązania w wierzchołku sympleksu. x1 0 x 0 2 x3 0 Rozwiązanie bazowe: leży w wierzchołku sympleksu. s1 7 s2 12 s3 10 Rozwiązaniem bazowym układu równań (2) nazywamy rozwiązanie układu powstałego przez przyrównanie do zera n-m zmiennych przy założeniu, że wyznacznik współczynników pozostałych m zmiennych jest niezerowy. m zmiennych nazywamy zmiennymi bazowymi (zmienne niewyzerowane). Jeśli wszystkie zmienne bazowe są ściśle dodatnie to rozwiązanie nazywamy niezdegenerowanym. Rozwiązanie maksymalne to rozwiązanie dopuszczalne, które maksymalizuje funkcję celu. 4 Jeśli funkcja celu jest maksymalizowana, ograniczenia celu mają postać równań oraz prawe strony ograniczeń są nieujemne to problem jest w postaci standardowej. Problem w postaci (1) do (3) nazywamy problemem w postaci kanonicznej. Jeśli funkcja celu jest minimalizowana to aby zamienić ją na maksymalizowaną należy pomnożyć ją przez -1. Jeśli x1+x2 3 to zmienne uzupełniające dodajemy. Jeśli x1+x2 3 to zmienne uzupełniające odejmujemy. Jeśli po prawej stronie znajduje się liczba ujemna to obustronnie mnożymy przez -1. 5 Algorytm sympleks (dla maksymalizacji funkcji celu): 1. Sprowadzamy problem do postaci standardowej 2. Znaleźć dopuszczalne rozwiązanie bazowe. 3. Zbudować początkową tablicę sympleks. //Postaram się tego typu rzeczy rozpisywać łopatologicznie w wielu krokach. Najpierw z równań ograniczających w pola oznaczone kolorem żółtym wpisujemy współczynniki przy odpowiednich zmiennych, a pola koloru fioletowego prawą stronę równania. Z rozwiązania bazowego w pola koloru niebieskiego wpisujemy zmienne tworzące bazę(zmienne bazowe). 3x1 -2x1 -4x1 i 1 2 3 4 -x2 +4x2 +3x2 B s1 s2 s3 X +2x3 +8x3 CB +s1 +s2 +s3 x1 3 -2 -4 =7 =12 =10 x2 -1 4 3 x3 2 0 8 s1 1 0 0 s2 0 1 0 s3 0 0 1 RHS 7 12 10 X Następnie z funkcji celu: -x1+3x2-2x3 max -x1+3x2-2x3+0s1+0s2+0s3 max -x1+3x2-2x3+0s1+0s2+0s3 max w pola czerwone wpisujemy współczynniki funkcji celu zmiennych bazowych, a w pola zielone współczynniki funkcji celu kolejnych zmiennych. i 1 2 3 4 B s1 s2 s3 X B C 0 0 0 X -1 x1 3 -2 -4 3 x2 -1 4 3 -2 x3 2 0 8 6 0 s1 1 0 0 0 s2 0 1 0 0 s3 0 0 1 RHS 7 12 10 Wiersz czwarty tej tabelki jest wierszem wskaźnikowym. Jego wartości oblicza się na podstawie wzoru i 1 2 3 4 B s1 s2 s3 X c j z j gdzie z j ci xij iB B C 0 0 0 X -1 x1 3 -2 -4 3 x2 -1 4 3 -2 x3 2 0 8 0 s1 1 0 0 0 s2 0 1 0 0 s3 0 0 1 RHS 7 12 10 Dla większej przejrzystości oznaczyłem ci,cj oraz xij kolejno kolorami żółtym, zielonym i czerwonym. Przykładowo: -1 = -1 – (0*3 + 0*(-2) + 0*(-4)) -1 3 -2 0 i B CB x1 x2 x3 s1 1 s1 0 3 -1 2 1 2 s2 0 -2 4 0 0 3 s3 0 -4 3 8 0 4 X X -1 (UWAGA! Wersja z ćwików: 1 = (0*3 + 0*(-2) + 0*(-4))- (-1)) i 1 2 3 4 B s1 s2 s3 X B C 0 0 0 X 3 = 3 – (0*(-1) + 0*4 + 0*3) -1 3 -2 x1 x2 x3 3 -1 2 -2 4 0 -4 3 8 -1 3 0 s2 0 1 0 0 s3 0 0 1 RHS 7 12 10 0 s1 1 0 0 0 s2 0 1 0 0 s3 0 0 1 RHS 7 12 10 0 s1 1 0 0 0 0 s2 0 1 0 0 0 s3 0 0 1 0 RHS 7 12 10 0 Co ostatecznie daje nam: i 1 2 3 4 B s1 s2 s3 X CB 0 0 0 X -1 x1 3 -2 -4 -1 3 x2 -1 4 3 3 -2 x3 2 0 8 -2 W wierszu wskaźnikowym wartość wierszy bazowych musi być równa 0. W innym wypadku oznacza to błąd. 7 4. Wybrać największy element wiersza wskaźnikowego: 5. Jeżeli xm1,k xm1,k 0 to tablica przedstawia rozwiązanie optymalne, w przeciwnym razie: a) wyznaczyć element xl ,k ten element wybrany xl ,k b j ,k dla którego iloraz x j ,k bi ,k xi ,k gdzie i 1..n , xi ,k 0 nazywamy elementem centralnym przekształcenia tablicy sympleks. b)przekształcić tablicę sympleks stosując następujące wzory: xlj ' Dla wierszy: xlj xlk j 1..n 1 xik xlj xij ' xij xlk i l , j 1..n 1 c)wrócić do kroku 4 Przykład: Wybieramy największy element wiersza wskaźnikowego: -1 3 -2 0 0 0 i B CB x1 x2 x3 s1 s2 s3 RHS 1 s1 0 3 -1 2 1 0 0 7 2 s2 0 -2 4 0 0 1 0 12 3 s3 0 -4 3 8 0 0 1 10 4 X X -1 3 -2 0 0 0 0 (UWAGA! Wersja z ćwików: wybieramy najmniejszy element wiersza wskaźnikowego) Jest nim 3. Ponieważ 3>0 wyznaczamy element centralny przekształcenia tablicy sympleks wybierając najmniejszą wartość: 7 / -1 = -7 odpada ponieważ liczba przez którą dzielimy musi być > 0 12 / 4 = 3 10 / 3 = 3 13 i 1 2 3 4 B s1 s2 s3 X CB 0 0 0 X -1 x1 3 -2 -4 -1 3 x2 -1 4 3 3 -2 x3 2 0 8 -2 W nowej bazie element s2 zostanie zastąpiony przez x2 8 0 s1 1 0 0 0 0 s2 0 1 0 0 0 s3 0 0 1 0 RHS 7 12 10 0 Przekształcamy tablicę sympleks: -1 B i B C x1 1 s1 0 3 2 s2 0 -2 3 s3 0 -4 4 X X -1 3 x2 -1 4 3 3 -2 x3 2 0 8 -2 0 s1 1 0 0 0 0 s2 0 1 0 0 0 s3 0 0 1 0 RHS 7 12 10 0 -1 x1 8) 1) 15) 3 x2 9) 2) 16) -2 x3 10) 3) 17) 0 s1 11) 4) 18) 0 s2 12) 5) 19) 0 s3 13) 6) 20) RHS 14) 7) 21) i 1 2 3 4 B s1 x2 s3 X B C 0 3 0 X Zgodnie ze wzorem 1)-2 / 2)4 / 3)0 / 4)0 / 5)1 / 6)0 / 7)12/ 4 = -1/2 4 = 1 4 = 0 4 = 0 4 = 1/4 4 = 0 4 = 3 oraz wzorem xlj xlj ' xlk j 1..n 1 xik xlj xij ' xij xlk i l , j 1..n 1 8) 3 - (-1) * (-2) / 4 = 5/2 9) -1 - (-1) * 4 / 4 = 0 10) 2 - (-1) * 0 / 4 = 2 11) 1 - (-1) * 0 / 4 = 1 12) 0 - (-1) * 1 / 4 = 1/4 13) 0 - (-1) * 0 / 4 = 0 14) 7 - (-1) * 12 / 4 = 10 15) -4 - 3 * (-2) / 4 = -5/2 16) 3 - 3 * 4 / 4 = 0 17) 8 - 3 * 0 / 4 = 8 18) 0 - 3 * 0 / 4 = 0 19) 0 - 3 * 1 / 4 = -3/4 20) 1 - 3 * 0 / 4 = 1 21) 10- 3 * 12 / 4 = 1 9 Otrzymujemy więc: i 1 2 3 4 B s1 x2 s3 X CB 0 3 0 X -1 x1 5/2 -1/2 -5/2 3 x2 0 1 0 -2 x3 2 0 8 0 s1 1 0 0 0 s2 1/4 1/4 -3/4 0 s3 0 0 1 RHS 10 3 1 Obliczamy wartości wiersza wskaźnikowego: i 1 2 3 4 B s1 x2 s3 X B C 0 3 0 X -1 x1 5/2 -1/2 -5/2 1/2 3 x2 0 1 0 0 -2 x3 2 0 8 -2 0 s1 1 0 0 0 0 s2 1/4 1/4 -3/4 -3/4 0 s3 0 0 1 0 RHS 10 3 1 9 -1 x1 1 0 0 0 3 x2 0 1 0 0 -2 x3 4/5 2/5 10 -12/5 0 s1 2/5 1/5 1 -1/5 0 s2 1/10 3/10 -1/2 -4/5 0 s3 0 0 1 0 RHS 4 5 11 11 Kolejna iteracja: i 1 2 3 4 B x1 x2 s3 X B C -1 3 0 X Największy element wiersza wskaźnikowego spełnia założenie Jest to rozwiązanie optymalne. Wartość zmiennych decyzyjnych: x1=4 x2=5 x3=0 s1=0 s2=0 s3=11 z*=11 10 xm1,k 0 . Metoda sztucznej bazy: 2x1+x2+x3 max p.o. x1+3x2+x3 3 2x1+x2+2x3 5 2x1+2x2+x3 2 x1,x2,x3 0 x1 2x1 2x1 +3x2 +x2 +2x2 +x3 +2x3 +x3 -s1 +s2 -s3 =3 =5 =2 Ponieważ nie wszystkie zmienne bazowe są ściśle dodatnie należy wprowadzić zmienne sztuczne. a1,a3 - zmienne sztuczne 2x1+x2+x3-Ma1-Ma3max x1 +3x2 +x3 -s1 2x1 +x2 +2x3 2x1 +2x2 +x3 x1,x2,x3,s1,s2,s3,a1,a3 0 +a1 +s2 -s3 +a3 =3 =5 =2 Algorytm sympleks: B i 1 2 3 4 B a1 s2 a3 X C -M 0 -M X i 1 2 3 B x2 s2 a3 CB 1 0 -M 4 X X 2 1 x1 x2 1 3 2 1 2 2 2+3M 1+5M 1 x3 1 2 1 1+2M 0 s1 -1 0 0 -M 0 s2 0 1 0 0 0 s3 0 0 -1 -M -M a1 1 0 0 0 -M a3 0 0 1 0 RHS 3 5 2 -5M 2 x1 1/3 5/3 4/3 5/3+ 4/3M 1 x3 1/3 5/3 1/3 2/3+ 1/3M 0 s1 -1/3 1/3 2/3 1/3+ 2/3M 0 s2 0 1 0 0 s3 0 0 -1 -M a1 -M a3 0 0 1 RHS 1 4 0 0 -M 0 1 1 x2 1 0 0 0 11 X i 1 2 3 4 i 1 2 3 4 B B x2 s2 x1 X C 1 0 2 X B x2 s3 x1 X B C 1 0 2 X 2 x1 0 0 1 0 1 x2 1 0 0 0 1 x3 1/4 5/4 1/4 1/4 0 s1 -1/2 -1/2 1/2 -1/2 0 s2 0 1 0 0 0 s3 1/4 5/4 -3/4 5/4 -M a1 -M a3 X X 2 x1 0 0 1 0 1 x2 1 0 0 0 1 x3 0 1 1 -1 0 s1 -2/5 -2/5 1/5 0 0 s2 -1/5 4/5 3/5 -1 0 s3 0 1 0 0 -M a1 -M a3 X X RHS 1 4 0 1 RHS 1/5 16/5 12/5 5 Opis algorytmu: Wprowadzamy k m zmiennych sztucznych. Zmienne te są nieujemne a ich współczynniki w funkcji celu przyjmują wartość (-M), gdzie M jest dużą liczbą dodatnią. Tablicę simpleks ze sztucznymi wektorami przekształcamy jak zwykłą tablicę dopóki: wszystkie sztuczne wektory zostaną wyeliminowane z bazy, tj. mamy bazę dopuszczalną pierwotnego zagadnienia -brak dodatnich współczynników przy M w wierszu wskaźnikowym: o jeżeli sztuczna część f.celu jest dodatnia, to zagadnienie nie ma rozwiązania dopuszczalnego o jeśli sztuczna część f.celu jest równa zero, to mamy zdegenerowane rozwiązanie dopuszczalne pierwotnego zagadnienia, które zawiera co najwyżej jeden sztuczny wektor. Przekształcamy tablicę simpleks wprowadzając do bazy wektor, który odpowiada największemu dodatniemu elementowi wiersza wskaźnikowego przy zerowej wartości współczynnika M. Kolumny odpowiadające zmiennym sztucznym, które opuściły bazę można wyeliminować z obliczeń. Po otrzymaniu bazy dopuszczalnej zagadnienia pierwotnego kontynuujemy realizację algorytmu simpleks aż do otrzymania rozwiązania problemu pierwotnego. 12 Problem dualny: Urządzenie B1 B2 B3 zapas E1 3 -1 2 7 Element E2 -2 4 0 12 zminimalizować 7y1+12y2+10y3 p.o. 3y1-2y2-4y3 -1 -1y1+4y2+3y3 3 2y1+8y3 -2 y1,y2,y3 0 y1 - cena jednostokowa elementu E1 y2 - cena jednostokowa elementu E2 y3 - cena jednostokowa elementu E3 Zagadnienie pierwotne (prymalne): max c x p.o. A x b 3 1 2 A 2 4 0 4 3 8 7 b 12 10 c 1 3 2 x1 x x2 x3 Zagadnienie dualne: min y b p.o. A y C T A,b,c y y1 y2 T y3 T - transponowane 13 E3 -4 3 8 10 Zysk [$/szt] -1 3 -2 Para zagadnień dualnych: Jeżeli zagadnienie pierwotne(dualne) ma skończone rozwiązanie optymalne to odpowietnie zagadnienie dualne(prymalne) ma również skończone rozwiązanie optymalne i ekstrema tych funkcji celi są równe, to znaczy: cx*=y*b (wektory) Jeżeli rozwiązanie optymalne jednego z zagadnień jest nieograniczone to odpowiadające mu zagadnienie nie ma rozwiązań dopuszczalnych. Dla optymalnych rozwiązań dopuszczalnych zagadnień prymalnego i dualnego jeżeli tylko występuje nierówność w k-tej zależności dowolnego układu (odpowiednia zmienne osłabiająca jest dodatnia) to k-ta zmienna w jego układzie dualnym jest równa zero. Jeżeli k-ta zmienna jest dodatnia w dowolnym układzie to k-ta nierówność w jego układzie dualnym jest równością (odpowiednia zmienna osłabiająca jest równa zero). Zależność między rozwiązaniem prymalnym a dualnym: Ostatnia iteracja problemu prymalnego: -1 3 B i B C x1 x2 1 x1 -1 1 0 2 x2 3 0 1 3 s3p 0 0 0 4 X X 0 0 Ostatnia iteracja problemu dualnego: -7 -12 B i B C y1 y2 1 y2 -12 0 1 2 y1 -7 1 0 3 s3d 0 0 0 4 X X 0 0 -2 x3 4/5 2/5 10 12/5 -10 y3 1/2 -1 -10 11 x1 = s1d x2 = s2d x3 = s3d y1 = s1p y2 = s2p y3 = s3p 14 0 s1d -1/10 -2/5 -4/5 4 0 s1p 2/5 1/5 1 1/5 0 s2d -3/10 -1/5 -2/5 5 0 s2p 1/10 3/10 -1/2 4/5 0 s3d 0 0 1 0 0 s3p 0 0 1 0 -M a2 X X RHS 4 5 11 11 RHS 4/5 1/5 12/5 -11 Metoda płaszczyzn odcinających (metoda Gomory’ego): Czyli sympleks ze zmiennymi, które mają być liczbami całkowitymi. Algorytm: 1. Rozwiąż metodą sympleks zadanie programowania liniowego bez warunku dyskretności zmiennych. 2. Jeżeli otrzymane rozwiązanie jest całkowitoliczbowe to jest ono rozwiązaniem wyjściowego zadania całkowitoliczbowego programowania liniowego. 3. Wyeliminuj wszystkie zmienne sztuczne z tablicy sympleks po czym wybierz zmienną xk, która ma wartość ułamkową w ostatnim rozwiązaniu. 4. W ostatniej tablicy sympleks wybierz wiersz l odpowiadający zmiennej x k. Zastąp współczynniki i stałą w l-tym równaniu ich częściami ułamkowymi. 5. Dodaj do każdego ujemnego ułamka w kroku 4 wartość 1. 6. Odejmij zmienną osłabiającą i dodaj sztuczną sprowadzając równanie do postaci standardowej. 7. Dodaj równanie do ostatniej tablicy sympleks i rozwiąż zadanie. 8. Po otrzymaniu rozwiązania optymalnego przejdź do kroku 2. Przykład: max z = x1 + x2 p.o. 2x1+x2 6 4x1+5x2 20 x1,x2 0 x1,x2 C 1. Rozwiązujemy sympleks normalnie i 1 2 3 B 1 x1 2 4 1 1 x2 1 5 1 0 s1 1 0 0 0 s2 0 1 0 RHS 6 20 0 1 x2 1/2 3 1/2 0 s1 1/2 -2 -1/2 0 s2 0 1 0 RHS 3 8 3 1 x2 0 1 0 0 s1 5/6 -2/3 -1/6 0 s2 -1/6 1/3 B s1 s2 X C 0 0 X i 1 2 3 B x1 s2 X B C 1 0 X 1 x1 1 0 0 i 1 2 3 B x1 x2 X CB 1 1 X 1 x1 1 0 0 -1/6 RHS 5/3 8/3 13/3 2. Rozwiązanie nie jest całkowitoliczbowe. 3. Nie ma zmiennych sztucznych do wyeliminowania więc wybieramy dowolną zmienną ułamkową (w przykładzie wybrana została x2). 15 4. Bierzemy wiersz odpowiadający wybranej zmiennej 2 1 8 0 x1 1x2 s1 s2 3 3 3 Zastępujemy współczynniki oraz stałą, częściami ułamkowymi w następujący sposób: 8 2 2 2 3 3 3 W rezultacie otrzymujemy: 2 1 2 s1 s 2 3 3 3 //1x2 znikło ponieważ 1 nie ma części ułamkowej 5. Do ujemnych ułamków dodajemy 1 w następujący sposób: 2 1 1 3 3 i zapisujemy w postaci nierówności co daje nam: 1 1 2 s1 s 2 3 3 3 s1 s2 2 6. Odejmujemy zmienną uzupełniającą i dodajemy sztuczną: s1 s2 1s3 a1 2 7. Dodajemy otrzymane równanie do tabeli sympleks i rozwiązujemy ją: i 1 2 3 B x1 x2 a1 CB 1 1 -M 1 x1 1 0 0 1 x2 0 1 0 4 X X 0 0 B x1 x2 s2 X B 1 x1 1 0 0 0 1 x2 0 1 0 0 i 1 2 3 4 C 1 1 0 X 0 s1 5/6 -2/3 1 -1/6 +M 0 s2 -1/6 1/3 1 0 s3 0 0 -1 -M a1 0 0 1 -1/6 +M -M 0 0 s1 1 -1 1 0 0 s2 0 0 1 0 s3 -1/6 1/3 -1 -1/6 -M a1 8. Wracamy do punktu 2. 2. Rozwiązanie jest całkowitoliczbowe. 16 0 X RHS 5/3 8/3 2 13/3 -2M RHS 2 2 2 4 Programowanie nieliniowe: Przykład zadania: Producent drewnianych kwietników zakupił 700 desek. Każdy kwietnik składa się ze wspornika i 2-8 półek. Na wspornik potrzeba 2 deski, na 1 półkę 1 deskę. Jednak przy większym zamówieniu można użyć odpadków i lepiej wykorzystać materiał. Ceny to 60zł za wspornik i 45zł za półkę, ale przy większym zamówieniu można zyskać progresywny rabat 0,1% za każdy element. x1- liczba wsporników x2- liczba półek 0,5 Liczba desek na wspornik = 1,5 0,998 0,002 x1 0,5 Liczba desek na półkę = 0,5 0,998 0,004 x1 0,002 x2 max 60 x1 (0,999) x1 45x2 (0,999) x2 0,5 0,5 p.o x1 (1,5 ) x2 (0,5 ) 700 0,998 0,002 x1 0,998 0,004 x1 0,002 x2 2 x1 x2 8x1 x1 0 Ogólne sformułowanie problemu programowania matematycznego (nieliniowego): max z f 0 ( x) p.o. f i ( x) 0 i=1,…,m f0 , fi : Rn R i=1,…,m xR n Zapis z podkreśleniem oznacza: f 0 ( x) f 0 ( x1 ,..., xn ) Zbiór rozwiązań dopuszczalnych: s {x : f i ( x) 0, i 1,..., m} otoczenie punktu x * {x : 0 || x* x || } E S Norma: || x || R n (x ) i 1 2 i 17 Funkcja f 0 ma w punkcie x * minimum lokalne jeśli istnieje 0 x ( S ) f 0 ( x* ) f 0 ( x) f0 ( x ) 0 x ( S ) właściwe lokalne 0 x ( S ) minimum f 0 ( x ) f 0 ( x) maximum f 0 ( x ) f 0 ( x) słabe lokalne * * * 0 x S właściwe globalne 0 x S f 0 ( x ) f 0 ( x) f 0 ( x ) f 0 ( x) f 0 ( x ) f 0 ( x) f 0 ( x ) f 0 ( x) f 0 ( x ) f 0 ( x) f 0 ( x ) f 0 ( x) * * słabe globalne * * * * Gradient funkcji: Wektor pochodnych cząstkowych funkcji f ( x), f : R n R ze względu na x1 ,..., xn nazywa się gradientem funkcji f (x) i oznacza się go przez f (x) f ( x) x 1 f ( x) ... f ( x) xn Stwierdzenie: x jest punktem stacjonarnym funkcji f (x) wtedy i tylko wtedy gdy f ( x) 0 Hesjan funkcji: Hesjanem funkcji f : R n R nazywamy wyznacznik następującej macierzy drugich pochodnych cząstkowych: 2 f ( x) 2 f ( x) ... 2 x1xn x1 H ( x) ... ... ... 2 2 f ( x ) f ( x) x x ... xn2 n 1 Dla dowolnej macierzy M o wymiarach n x n i wektora z o długości n dodatnio okreslona 0 dodatnio polokreslo na 0 T M jest jest z M z dla z 0 ujemnie polokreslona 0 0 ujemnie okreslona 18 Stwierdzenie: Jeżeli x jest punktem stacjonarnym funkcji f (x) to zachodzą następujące implikacje: 1. H (x) jest dodatnio określona x jest właściwym minimum lokalnym. 2. H (x) jest dodatnio półokreślona dla wszystkich x w pewnym otoczeniu x x jest minimum lokalnym. 3. x jest minimum lokalnym H (x) jest dodatnio półokreślona 19 Metoda Lagrange’a: Problem programowania matematycznego gdzie ograniczenia mają postać równań: min f 0 ( x) ( x1 1) 2 x22 1 1 p.o. f1 ( x) x1 x22 0 4 Twierdzenie Lagrange’a: Niech dany będzie następujący problem nieliniowego programowania matematycznego: min f 0 ( x) p.o. f i ( x) 0 i=1,…,m Jeżeli x jest lokalnym optimum problemu nieliniowego programowania matematycznego i n>m i f i mają pierwsze pochodne ze względu na x i i f 0 x są liniowo niezależne m to istnieje wektor u [u1 ,..., um ]T , taki że f 0 x ui f i x 0 i 1 Liczby ui nazywa się mnożnikami Lagrange’a Metoda Lagrange’a: 1. Sprawdzić czy n>m i każda funkcja f i (x) ma ciągłe pochodne cząstkowe m 2. Sformułować funkcję Lagrange’a: Lx, u f 0 x ui f i x i 1 3. Znaleźć wszystkie rozwiązania x, u następującego układu równań: m f 0 x ui f i x 0 (n równań) Lx, u f i x 0 ui (m równań) i 1 i=1,…,m Są to warunki Lagrange’a. Punkty x, u nazywamy punktami Lagrange’a 4. Zbadaj każdy punkt x, u sprawdzając czy jest to maximum czy minimum. Jeżeli x * ,u * jest punktem Lagrange’a i hesjan H i ( x* ) funkcji Lagrange’a w punkcie x * dla u u spełnia warunek x H i x x 0 dla wszystkich x takich, że x f i x 0 i=1,…,m to x jest minimum lokalnym T * * T Jeżeli założenia twierdzenia Lagrange’a są spełnione i nie istnieje u takie, że m f 0 x ui f i x 0 w punkcie x , to w tym punkcie na pewno nie występuje * i 1 * * minimum. 20 Postać ogólna: min f 0 x p.o. f i x 0 i=1,…,m Przykładowe zadanie: min f 0 x x1 14 x2 11 2 p.o. 2 f1 x x1 11 x2 13 7 2 0 2 2 f 2 x x1 x2 19 0 Ograniczenie f1 jest nieaktywne. Na wykładzie wynikało to z ograniczeń rozrysowanych metodą graficzną. 21 Metoda Karusha-Kuhna-Tuckera (Metoda KKT): Warunki: 1. Warunek Gradientowy: Gradient ograniczenia aktywnego = 0 L j=1,…,n 0 x j 2. Warunek Ortogonalności: ui f i x 0 i=1,…,m 3. Warunek Dopuszczalności: f i x 0 i=1,…,m 4. Warunek Nieujemności: ui 0 i=1,…,m Twierdzenia KKT: Niech będzie dany problem w postaci kanonicznej: min f 0 x p.o. f i x 0 i=1,…,m Warunki konieczne: Jeżeli f i i=1,…,m jest różniczkowalna i x jest lokalnym minimum i f i x są liniowo niezależne to istnieje wektor u taki, że x, u spełnia warunki KKT. Warunki dostateczne: Jeżeli x, u spełnia warunki KKT i f i i=1,…,m jest funkcją wypukłą to x jest minimum globalnym. Inne: H x jest dodatnio półokreślona dla wszystkich wartości x f x jest funkcją wypukłą. H x jest dodatnio określona dla wszystkich wartości x f x jest funkcją ściśle wypukłą. Metoda KKT: 1. Sformułować funkcję Lagrange’a: Lx, u f 0 x m u f x i 1 i i 2. Znaleźć wszystkie rozwiązania x, u następującego układu równań i nierówności: L 0 x j ui f i x 0 f i x 0 ui 0 j=1,…,n i=1,…,m i=1,…,m i=1,…,m 3. Jeżeli f i i=0,…,m są wypukłe to x jest globalnym minimum. W przeciwnym razie każde rozwiązanie x, u należy sprawdzić czy jest ono minimum lokalnym. 22 Przykładowe zadanie: 1 min f 0 x 3x1 x22 2 2 p.o. f1 x x1 x22 1 0 f 2 x x1 0 f 3 x x2 0 Warunki Dopuszczalności (f) (g) (h) Formułujemy funkcję Lagrange’a: 1 Lx, u 3x1 x22 u1 ( x12 x22 1 ) u2 ( x1 ) u3 ( x2 ) 2 Warunki Gradientowe: L (a) 3 2u1 x1 u 2 0 x1 L (b) x2 2u1 x2 u3 0 x2 Ten pdf dotyczy BO a nie analizy matematycznej, jak ktoś nie umie liczyć pochodnych to już jego problem. Warunki Ortogonalności: u1 ( x12 x22 1 ) 0 u 2 ( x1 ) 0 u 3 ( x2 ) 0 (c) (d) (e) Warunki nieujemności: u1 0 u2 0 u3 0 (k) (l) (m) W warunku (d) załóżmy, że u 2 0 wtedy x1 0 . Z (a) 3 u 2 0 zatem u 2 3 co jest sprzeczne z (l), a zatem u 2 0 . W (e) niech x2 0 to u3 0 i z (b) otrzymujemy x2 1 2u1 0 u1 0 zatem x2 0 . Z (c) x12 x22 1 0 to wtedy u1 0 i z (a) u 2 3 co jest sprzeczne zatem x12 x22 1 0 co po podstawieniu x2 0 oraz uwzględnieniu (g) daje nam x1 1 . Z (a) wychodzi, że u1 3 . 2 23 Przypadek z równościami w ograniczeniach: 2 2 13 1 min f 0 x x1 x2 x3 3 2 5 p.o. f1 x x1 x2 10 0 3 2 f 2 x x2 2 x3 4 0 1. Sprawdzamy warunki: n- liczba zmiennych n=3 m-liczba ograniczeń m=2 n>m Gradienty ograniczeń: 1 f1 x 5 / 3 0 0 f 2 x 2x2 2 1 f i x x1 f x Skąd to się bierze f i x i x2 f x i x3 f i są ciągłe i mają ciągłe pierwsze pochodne (cokolwiek to znaczy). x j 2. Funkcja Lagrange’a: 2 2 13 1 5 2 Lx, u x1 x2 x3 u1 x1 x2 10 u2 x2 2 x3 4 3 2 3 3. Układ równań: L 13 2 x1 u1 0 (a) x1 3 L 1 5 2 x2 u1 2x2 2u2 0 (b) x2 2 3 L u2 1 (c) 1 u 2 0 x3 5 L 5 (d) x1 x2 10 x1 x2 10 0 3 u1 3 L 2 (e) x2 2 x3 4 0 u2 z (b) i (f) z (h) i (a) 1 5 2 x2 u1 2x2 2 0 2 3 5 13 210 x2 u1 0 3 3 24 12 x2 5 34 10 u1 x2 3 3 u1 3 (f) (h) (g) (k) 34 10 12 x2 3 x2 3 3 5 z (g) i (k) z (g) i (i) u1 3 z (a) 2 x1 z (e) 5 2 x3 4 0 2 26 3 0 3 x2 5 2 x1 35 6 x3 15 4 2 (i) Punkt Lagrange’a: 35 6 5 3 x u 2 1 15 4 4. Gradient funkcji celu: 13 2 x1 3 1 f 0 x 2 x2 2 1 5. Hesjan 2 0 0 H 0 2 0 0 0 0 Żeby było łatwiej go policzyć można wziąć gradient i dla każdego wiersza policzyć pochodną po kolejnych zmiennych x1 , x2 , x3 Następnie bierzemy niezerowy wektor z z1 różna od 0) i wykonujemy obliczenia: zH z z1 T z2 2 0 0 z1 z3 0 2 0 z2 2 z1 0 0 0 z3 2 z2 z2 z3 (co najmniej 1 współrzędna z1 0 z2 2 z12 2 z22 0 0 z3 Hesjan dodatnio półokreślony czyli funkcja ma minimum lokalne. 25 Procesy nieregularne: Pojęcie: Pod pojęciem procesu nieregularnego rozumieć będziemy przedsięwzięcie wieloczynnościowe, na ogół jednorazowe o nietypowej strukturze i przebiegu, np.: procesy technicznego przygotowania produkcji przedsięwzięcie badawczo-rozwojowe modernizacja zakładów przemysłowych duże przedsięwzięcie inwestycyjne niektóre przedsięwzięcia organizacyjne wyprodukowanie złożonego wyrobu na zamówienie realizacja złożonych projektów 1. Jak modelować projekty (Battersby 1967): a) Dyskretny i skończony zbiór czynności (zadań) b) Zbiór ograniczeń kolejnościowych c) Dyskretny i skończony zbiór atrybutów opisujących każdą czynność, takich jak czas realizacji, koszty czy zapotrzebowanie na zasoby 2. Jak oceniać projekty? 1. Dyskretny i skończony zbiór kryteriów, np. całkowity czas realizacji, całkowity koszt realizacji, ryzyko, zaktualizowana wartość netto(NPV). 3. Jak wydzielać zasoby i monitorować realizację projektu? Lista czynności związanych z wprowadzeniem na rynek nowego wyrobu: <1,3> Badanie popytu na rynku <1,2> Nabycie surowców na prototypy <3,4> Wyprodukowanie prototypów i ocena ich jakości <4,5> Wybór opakowań <4,6> Nabycie surowców do produkcji <5,9> Nabycie opakowań <6,7> Analiza kosztów produkcji <6,10> Reklama i zbieranie zamówień <7,8> Analiza ekonomicznych parametrów decyzji <8,9> Proces produkcji wyrobu <9,10> Pakowanie produktu gotowego <10,11> Wysyłka do handlu 26 Czynności będziemy umieszczać na łukach (Activity on Arc) Zdarzenie - punkt na osi czasu, nie trwa Czynność - trwa określoną ilość czasu. Czynność pozorna nie jest związana z upływem czasu. Łączy zdarzenia między, którymi nie jest wymagane wydatkowanie środków, lecz istnieje następstwo czasowe. Siecią czynności nazywamy sieć określoną na spójnym grafie Berge’a bez pętli i dróg cyklicznych, w której funkcje przyporządkowane łukom (czynnościom) i wierzchołkom (zdarzenia) reprezentują parametry o charakterze techniczno-ekonomicznym, związane z realizacją danego przedsięwzięcia. Parametry te mogą wynikać z: ograniczeń technologicznych ograniczeń o charakterze czasowym niepodzielności i nie substytucyjności zasobów. ograniczeń zasobowych o charakterze bilansowym 27 Algorytm porządkowania warstwowego: 1. Dla określonej sieci czynności tworzymy binarną macierz przejść P B. 2. Do warstwy w0 zaliczamy te zdarzenia, które odpowiadają zerowym kolumnom macierzy przejść. 3. Wykreślamy z macierzy PB zerowe kolumny oraz wiersze o tych samych numerach, co kolumny wykreślone. 4. Do wk zaliczamy zdarzenia odpowiadające zerowym kolumnom w zredukowanej macierzy przejść. 5. Powtarzamy czynności z punktu 3 i 4 aż do wyczerpania całego zbioru zadań. Jak to wygląda w praktyce: Tworzymy macierz przejść: Ponieważ ze zdarzenia 6 czynności wychodzą do zdarzeń 2 i 3 to w wierszu 6 wstawiamy wartość 1 w kolumnach 2 i 3 a pozostałe uzupełniamy wartością 0 itd. 1 2 3 4 5 6 1 0 0 0 1 0 0 2 1 0 1 0 1 0 3 1 0 0 0 0 0 4 0 0 0 0 0 0 5 1 0 0 1 0 0 6 0 1 1 0 0 0 Wybieramy kolumnę zerową w0={6} i wykreślamy tę kolumnę oraz wiersz o tym samym numerze. 28 W kolejnych iteracjach: 1 2 3 4 5 1 3 4 5 1 0 0 0 1 0 1 0 0 1 0 2 1 0 1 0 1 3 1 0 0 0 0 3 1 0 0 0 4 0 0 0 0 0 4 0 0 0 0 5 1 0 0 1 0 5 1 0 1 0 1 4 1 0 1 4 0 0 4 4 0 Co w efekcie daje nam: w0={6} w1={2} w2={3,5} w3={1} w4={4} Teraz kolejność zdarzeń można dodać do grafu (jeśli w jednej warstwie znajduje się kilka zdarzeń to ich kolejność jest obojętna): 29 Metoda Ścieżki Krytycznej (Critical Path Method - CPM): Założenia algorytmu: 1 zdarzenie początkowe 1 zdarzenie końcowe zdarzenia są ponumerowane zgodnie z ich następstwem w czasie termin wystąpienia zdarzenia początkowego = 0 Oznaczenia: Mamy czynność <i,j> tij - czas trwania czynności <i,j> TiW - najwcześniejszy termin wystąpienia zdarzenia i T jP - najpóźniejszy termin wystąpienia zdarzenia j j1 - zbiór poprzedników j T jW max TiW tij , i j1 i - zbiór następników i Ti P min T jP tij 3 4 , j i 1- numer zdarzenia 2- TiW 1 2 3- Ti P 4- Luz zdarzenia Li Ti P TiW 30 Rozwiązywanie zadania 2 5 1 5 2 7 0 3 9 6 2 2 0 7 4 12 3 Wyznaczamy najwcześniejsze terminy wystąpienia zdarzeń: max{0+5}=5 max{0+9}=9 max{0+12}=12 max{5+2;9+0}=9 max{9+2}=11 2 9 5 1 7 0 3 9 9 0 5 2 5 max{9+7;11+2;12+3}=16 6 2 11 16 4 12 3 12 31 7 2 16 Wyznaczamy najpóźniejsze terminy wystąpienia zdarzeń oraz luzy zdarzeń(dół=prawa ćwiartka-lewa ćwiartka; nie zaznaczałem tego kolorami) min{7-5; 9-9; 13-12}=0 min{9-2}=7 min{9-0; 14-2}=9 min{16-3}=13 2 9 9 2 5 0 7 0 1 3 9 6 9 9 0 0 5 2 7 5 min{16-7}=9 min{16-2}=14 2 0 0 14 11 7 2 3 16 16 0 4 12 3 13 12 1 Ścieżką krytyczną nazywamy taką drogę <i0;i1><i1;i2>,…,<in-1;in> łączące zdarzenie początkowe i0=1 ze zdarzeniem końcowym in=n dla której czas jest najdłuższy: ti k 1ik W danej sieci może istnieć więcej niż 1 ścieżka krytyczna. Czynności, które leżą na ścieżce krytycznej nazywamy czynnościami krytycznymi. Długość ścieżki krytycznej określa najkrótszy możliwy czas realizacji całego projektu: TnP T1W Aby wyznaczyć czynności krytyczne obliczamy zapas czasu Li Ti P TiW 32 Całkowity zapas czasu: Zijc T jP TiW tij Zapas swobody: Zijs T jW TiW tij Zapas niezależny: Zijn T jW Ti P tij Zijc Zijs Z ijn 0 Twierdzenie Warunkiem koniecznym i dostatecznym na to aby czynność była czynnością krytyczną jest Z ijc 0 33 Metoda PERT (prawdopodobieństwo ujemnych luzów - możliwość niezrealizowania zadań w terminie): m- najbardziej prawdopodobny czas trwania czynności a- optymistyczny czas trwania czynności b- pesymistyczny czas trwania czynności f (t ) H (t a) p1 (b t ) q 1 Konkluzja (!@#$ wie skąd): Rozkład czasu czynności jest rozkładem dla którego średnia czasu może być wyznaczona jako: T W i te m t k 1 T e k W i I T t P i 2 a 4m b b a 2 , natomiast 6 36 k 1 T e k P i m k 1 2 tk I k 1 2 tk „Bez zbędnych wyprowadzeń dochodzimy do:” P W N T i T i , T2W T2P P W T T i i PLi 0 P Ti P TiW 0 T2 P T2W i i - dystrybuanta rozkładu normalnego o parametrach N(0,1). 34 i i Przykład: 5 2 1 6 3 7 4 <i,j> aij mij bij t ije ij2 <1,2> <1,3> <1,4> <2,5> <2,6> <3,6> <4,7> <5,7> <6,7> 5 5 1 2 4 10 11 4 8 8 6 3 4 8 11 14 5 10 11 10 8 12 12 12 20 6 15 8 6,5 3,5 5 8 11 14,5 5 10,5 1,0 0,7 1,4 2,8 1,8 0,1 2,3 0,1 1,4 Wartości kolumn aij mij oraz bij mogą znajdować się przy strzałkach grafu zamiast w tabelce. Wartości pozostałych 2 kolumn wylicza się wzorami: te 2 a 4m b 6 2 b a 36 35 i Ti T2 Ti T2 1 2 3 4 5 6 7 0 8 6,5 3,5 13 17,5 28 0 1 0,7 1,4 3,8 0,8 2,2 2 11,5 8,5 15,5 25 19,5 30 2,2 3,2 1,5 2,3 0,1 1,4 0 W P W Ti Ti Ui T2 P T2W i i P W i Li T i T i Ui U i 2 3,5 2 12 12 2 2 -1,35 -1,7 -1,35 -6,25 -6,09 -1,35 -1,35 0,09 0,04 0,09 0,0 0,0 0,09 0,09 P P i W P W T i oraz T i obliczamy tak samo jak CPM z tą różnicą, że jako czas poszczególnych czynności bierzemy wyliczone wcześniej te . Wariancje T2W oraz T2 P są sumą wariancji z czynności, które prowadzą do danego zdarzenia. i i (Łopatologicznie: dla danego zdarzenia dodajemy wariancje ze strzałek które wybieraliśmy za pomocą CPM po drodze do tego zdarzenia) Przykład: T2 0 12,3 32,6 0 0,7 0,1 0,8 W 6 T2 0 62,7 0 1,4 1,4 P 6 Najważniejsza różnica w stosunku do normalnego CPM: TnW TnP , gdzie n to końcowe zdarzenie… chodzi o to, że jeśli zadanie mówi żeby zbadać, np. czy w czasie równym 30 można wykonać dany projekt to wtedy do TnP wpisujemy te 30 zamiast wartości które wyszła w TnW 36 Algorytm kompresji: Algorytm: 1. 2. 3. 4. Zestawić czynności, podać ich gradienty kosztów s oraz czasy graniczne t gr Wyeliminować z zestawienia te czynności, dla których t gr=tn Proces skracania rozpocząć od czynności krytycznej o najniższym gradiencie kosztów. Przy skracaniu trwania czynności należy starać się skrócić jej czas o jak największą liczbę jednostek. Występują tu 2 ograniczenia: -czas graniczny danej czynności tgr -pojawienie się nowej ścieżki krytycznej 5. Przy istnieniu dwóch lub więcej ścieżek krytycznych należy skracać czas o tę samą wielkość na wszystkich równoległych ścieżkach krytycznych. 6. Najkrótszy termin wykonania programu uzyskuje się, gdy wszystkie czynności na ścieżce krytycznej osiągają czasy graniczne. 7. Koszty przyśpieszenia czynności oblicza się mnożąc liczbę jednostek czasu, o które czynności została skrócona przez jej gradient kosztów. tn - czas normalny wykonania zadania tgr - czas graniczny wykonania zadania kn - koszt normalny wykonania zadania kgr - koszt graniczny wykonania zadania kr - koszt przyspieszenia czynności s - średni gradient kosztu s k gr k n t n t gr 37 Przykład: 8 3 6 2 14 17 8 9 9 23 3 12 1 6 0 0 35 0 0 4 10 10 0 <i j> <1,2> <1,4> <2,3> <3,6> <4,5> <5,6> tp 8 10 6 12 15 10 35 3 5 10 3 25 25 0 15 tgr 6 5 4 10 15 2 10 kn 280 100 300 260 150 200 kgr 400 150 400 300 150 300 s kr Wartości w tabelce są wzięte z dupy (znaczy muszą być podane w zadaniu), oprócz t p które pokrywa się z wartościami czynności powyższego CPM (wartości znad strzałek). Usuwamy wiersze dla których tp=tgr . Obliczamy s. Zaznaczę również ścieżkę krytyczną, tak żeby łatwiej było ją odróżnić. <i j> <1,2> <1,4> <2,3> <3,6> <4,5> <5,6> tp 8 10 6 12 15 10 tgr 6 5 4 10 15 2 kn 280 100 300 260 150 200 38 kgr 400 150 400 300 150 300 s 60 10 50 20 20 kr Następnie wybieramy czynność krytyczną dla której s jest najmniejsze (w tym przypadku s<1,4> = 10) i skracamy ją pamiętając o ograniczeniach z punktu 4 algorytmu. Czyli aby nie przekroczyć tgr: tp-tgr=10-5=5 możemy skrócić tą czynność maksymalnie o 5. Ścieżka nie będąca krytyczną ma luzy większe niż ta wartość dlatego skracamy <1,4> o 5. 6 2 8 3 23-5 14 17-5 8 12 9-5 9-5 6 1 0 0 35-5 35-5 0 0 4 10-5=5 5 10-5 10-5 0 <i j> <1,2> <1,4> <2,3> <3,6> <4,5> <5,6> tp 8 10 6 12 15 10 15 tgr 6 5 4 10 15 2 25-5 25-5 10 0 kn 280 100 300 260 150 200 kgr 400 150 400 300 150 300 s 60 10 50 20 kr 5*s=50 20 Wybieramy kolejną czynność krytyczną o najniższym s, tym razem <5,6>: tp-tgr=10-2=8 zatem czynność tę możemy skrócić maksymalnie o 8 Ponieważ w ścieżce nie będącą krytyczną pozostaje jedynie 4 luzu, skracamy czynność <5,6> jedynie o 4. 39 Co w efekcie daje nam: 14 14 8 8 8 3 6 2 12 0 0 1 6 0 0 26 26 0 0 4 5 5 5 5 0 <i j> <1,2> <1,4> <2,3> <3,6> <4,5> <5,6> tp 8 10 6 12 15 10 20 20 0 15 tgr 6 5 4 10 15 2 kn 280 100 300 260 150 200 kgr 400 150 400 300 150 300 Pojawienie się nowej ścieżki krytycznej kończy algorytm. Łączny koszt projektu po przyśpieszeniu czynności krytycznych to: k k n r 10-4=6 1290 130 1420 40 s 60 10 50 20 kr 50 20 4*s=80 Teoria masowej obsługi: U - odstęp czasu między kolejnymi klientami - zmienna losowa o rozkładzie wykładniczym f t e t t0 t t 0 0 PU t F t f x dx e x dx e x 0 e t e0 1 e t 0 0 E U xf x dx te dt te t e t 0 t t dt te t 0 0 X(t) - liczba klientów którzy przybyli do systemu w okresie [0,t) oznaczamy PX t n Pn t P0 t PU t 1 PU t 1 (1 et ) et x 2 x3 x 4 e 1 x ... 2! 3! 4! x e 2 3 t t 1 t ... t 2! 3! ot lim ot 0 t 0 t P 0 t 1 t ot p - prawdopodobieństwo, że w czasie t przybędzie 1 klient p2 - prawdopodobieństwo, że w czasie t przybędzie 2 klientów pk - prawdopodobieństwo, że w czasie t przybędzie k klientów P t 1 k 0 k k 0 k 1 Pk t P0 t Pk t 1 1 t ot 1 p p 2 p3 ... 1 1 t ot p t t 1 1 1 1 p ot 1 t ot 1 (t ) 1 t 1 p 41 lim 1 1 1 1 e t t 0 t e p t t t t ... ot 2 3 4 ot P1 t t ot P1 t t 0 t lim Reasumując: !@#$ wie o co chodzi Proces sygnałowy Proces losowy xt , t (0, ) gdzie x(t) jest liczbą zdarzeń losowych o przedziale (0,t) nazywamy procesem sygnałowym. xt N t1<t2 to xt1 xt2 xt2 xt1 N P X 0 0 1 Proces Poissona Proces sygnałowy o przyrostach niezależnych nazywamy procesem Poissona gdy t X t ma rozkład Poissona. n N x0 p X t n e t xt xt t Przybyło 1 zgłoszenie: Przybyło 0 zgłoszeń: t n! t 0 P1 xt t xt 1 t ot Jak dojść do x(t)=1 P0 xt t xt 1 t ot Pn t t P(w przedziale o długości t przybyło (n-1) zgłoszeń, a w przedziale t przybyło 1 zgłoszenie) + P(w przedziale o długości t przybyło n zgłoszeń, a w przedziale t przybyło 0 zgłoszeń) Pn1 t t ot Pn t 1 t ot Pn1 t t Pn t Pn t t ot Pn t t Pn t P n1 t t Pn t t ot lim Pn t t Pn t ot Pn1 t Pn t t 0 t 0 t t lim 42 0 Pn ' t Pn1 t Pn t P0 0 1 P1 0 0 P0 t P1 t ... Pn t 1 Pn 0 0 Układ równań różnicowo różniczkowych n=0 P0 ' t P1 t P0 t P0 ' t P0 t 0 dP0 t P0 t dt dP0 t dt P0 t dP0 t P t 0 dt ln P0 t t P0 t e t n=1 P1 ' t P0 t P1 t P1 ' t et P1 t P1 ' t P1 t et /* et P1 ' t et et P1 t P t e ' P t e 'dt dt t 1 t 1 P1 t et t P1 t te t Pn t t n e t n! Stacjonarny proces sygnałowy o przyrostach niezależnych, w którym zgłoszenia przybywają pojedynczo i błyskawicznie jest stacjonarnym procesem Poissona. Dla stacjonarnego procesu Poissona odstęp czasu między kolejnymi zgłoszeniami ma rozkład wykładniczy: t 0 t FU t PU t 1 PU t 1 P0 t 1 e 1 e t 0! 43 Jednostanowiskowy system obsługi: Przelew (po zapełnieniu poczekalni) źródło zgłoszeń STANOWISKO OBSŁUGI POCZEKALNIA wyjście FIFO Zgłoszenia od zadań przerwanych System kolejkowy: c-zgłoszenie s-stanowisko obsługi źródło zgłoszeń c c c c c c c c c cccc…cccc c POCZEKALNIA 44 s s s s s s s s s c c c … SO c Charakterystyka systemu kolejkowego: 1 ) rozkład wejścia (zmienna losowa U o średniej rozkład czasu obsługi zadania (zmienna losowa V o średniej liczba stanowisk obsługi (m) wymiar źródła zgłoszeń (k) pojemność poczekalni (L) regulamin (algorytm obsługi) Intensywność ruchu: 1 ) Algorytm FIFO(naturalny): notacja kendala: X|Y|m|L|k X = M - rozkład Poissona Y = M - rozkład Poissona M - rozkład Poissona G - rozkład ogólny D - rozkład jednopunktowy - liczby są naturalne Stan równowagi statystycznej: Liczba zadań w systemie w chwili t - zmienna N(t) zastąpi zmienną X(t), zatem Pn PN t n lim t lim t N t N Pn t pn n=0,1,… pn - prawdopodobieństwo stacjonarne 45 (Stacjonarny) Strumień prosty jest to strumień zgłoszeń będący stacjonarnym procesem Poissona. - intensywność strumienia zgłoszeń - średnia liczba zgłoszeń obsłużonych w jednostce czasu E V E U 1 1 lim Pn t t 0 t Warunek konieczny i dostateczny osiągnięcia stanu równowagi statystycznej: m m dla m=1 System dla którego warunek jest spełniony nazywamy systemem stabilnym. 46 Systemy obsługi: czas oczekiwania na obsługę - zmienna losowa W czas odpowiedzi systemu - zmienna losowa T=W+V 1 T W V W Skończone wartości średnie w stanie równowagi statystycznej N T (wzór Little’a) FW x | t PW x | V t FT x | t PT x | V t T t W t t System M|G|1: rozkład wejścia (zmiennej U - rozkład wykładniczy) rozkład czasu obsługi zadania (zmiannej V - rozkład normalny) liczba stanowisk obsługi (m=1) pojemność poczekalni ( L ) wymiar źródła zgłoszeń ( k ) regulamin (algorytm) obsługi - FIFO Wartość N w systemie M|G|1 N1,N2 - liczba zgłoszeń w systemie po zakończeniu obsługi zgłoszeń z1,z2 R - liczba zgłoszeń, które przybyły w czasie obsługi zgłoszenia z 2 N 0 N2 R N 0 N 2 N1 R 1 1 0 N 2 N1 R 1 N1=0 w pozostałych przypadkach N 2 N1 R 1 V=v Rv v R vdF v vdF v V * 0 0 1 0 1 1 47 N 2 N1 R 1 | 2 N 22 N 12 R 2 1 2 2 N1 R 2 N1 2 N1 2R 2R 2 | E 2 ponieważ przyjmuje tylko wartości ze zbioru {0,1} N1 - N1 albo jest równe zero 2 2 2 N 2 N 1 R 1 2 N1 R 2 N1 2R 2R 2 R R 2 0 R 1 2 N1 R 2 N1 2R 2R 0 R 1 2 N1 2 N1 2 2 1 1 2 2 0 R 2 N1 2 N1 2 2 2 N 2 1 R 2 1 2 N R2 21 R v r 2 2 n 1 v r ev v 2v 2 r! R 2 v 2v 2 dF v V 2V 2 0 N 1 2 V2 2 2 V2 2 2 V2 2 2 V2 2 21 21 N T W V |: V N W 1 V W N 1 1 2 V2 2 1 V 1 V 2 V2 2 (wzór Pollaczka) V 2 W 21 48 System M|D|1: 2 0 W V 21 v0 v0 W 21 21 System M|M|1: 1 2 2 W 1 2 V2 (1 1) 21 1 V 21 W 1 *V 1 1 1 1 T W V 1 1 1 1 W M |M |1 1 2 2 v0 v0 W M |D|1 21 49 Inne algorytmy obsługi: 1. Algorytmy z priorytetami a) stałe priorytety b) zmienne priorytety 2. a) algorytm z przerwaniami (cykliczne) b) algorytm bez przerwań Priorytet ustawia albo użytkownik wrzucający zadanie do systemu lub operator albo na podstawie historii obsługi albo ze względu na rozmiar zadania. Algorytmy ze stałym priorytetem: kolejka 1 kolejka 2 … kolejka b źródło zgłoszeń i - priorytet i wyjście i=1...b i - średnia intensywność zgłoszeń priorytetu i (każdy priorytet może mieć inny rozkład Poissonowski) b i i 1 i - intensywność obsługi priorytetu i b i i 1 i i i b i i 1 50 Algorytm bez przerwań (o stałym priorytecie): Wstawianie do kolejki zadań: na koniec kolejki danego priorytetu (w podkolejkach FIFO Ważne! Czas oczekiwania zależy tylko od priorytetów. W i t W i W0 1 i 1 i 1 i=1..b-1 b i j j i b i Vi 2 i 1 2 W0 Algorytm cykliczny (ze stałym priorytetem) - Round Robin: i - kwant czasu w jakim zadanie o priorytecie i bez przerwy korzysta z procesora T t - nie zależy od rozkładu czasu obsługi, tylko od wartości. T t t 1 liniowa preferencja zadań krótkich t W t 1 1 1 T W 1 T FIFO t t Identyczne jak M|M|1 1 t t T RR t 1 1 W t RR M|M|1 1 t Wnioski: dopóki t i Ci j 1 1 RR jest lepszy od M|M|1 Ci>0 - dowolna stała, najczęściej N b Cj N t 1 j 51 N j - średnia liczba zadań o priorytecie j w systemie. Wi t Ti t b Cj j t 1 1 1 j 1 Ci t 1 b Cj j 1 1 j 1 Ci i=1..b i=1..b Algorytm LIFO: Kolejka ma postać stosu. T ,W jak w algorytmie RR, ale z dużo większą wariancją Algorytmy o zmiennym priorytecie: (eng. multilevel procesor sharing scheduling elgorithms) Nieliniowa zależność średniego czasu odpowiedzi, oczekiwania i obsługi zadania. Nowe zadania trafiają do kolejki o najwyższym priorytecie (z algorytmem FIFO) jeśli 1 kwant czasu nie starczy to zadanie spada do następnych kolejek (zwykle są 2) z algorytmem RR. W(t) t 52 Systemy z i zależnymi od stanu systemu: t t N(t) N (t t ) t 0 t ot - prawdopodobieństwo, że w czasie t do systemu nadejdzie 1 zgłoszenie (strumień Poissona) t ot - prawdopodobieństwo, że w czasie t system opuści 1 zgłoszenie N (t t ) N (t ) 0 zgłoszeń wchodzących 0 zgłoszeń wychodzących 1 zgłoszenie wchodzące 1 zgłoszenie wychodzące N (t t ) N (t ) 1 1 zgłoszenie wchodzące 0 zgłoszeń wychodzących N (t t ) N (t ) 1 0 zgłoszeń wchodzących 1 zgłoszenie wychodzące PN t t N t 1 t ot 1 t ot t ot t ot 1 t t ot PN t t N t 1 t ot 1 t ot t ot PN t t N t 1 1 t ot t ot t ot Pn t t Pn1 t t ot Pn t 1 t t ot Pn1 t t ot 1 i 1 i - średni czas między przybyciem zgłoszeń jeżeli w systemie jest i zadań - średni czas obsługi jeżeli w systemie jest i zadań Pn t t Pn1 t n1t ot Pn t 1 n t n t ot Pn1 (t )n1t ot n1Pn1t Pn t n Pn t t n Pn t t n1Pn1 (t )t ot lim Pn t t Pn t ot n1Pn1 t n Pn t n Pn t n1Pn1 t t 0 t 0 t t lim Pn ' t n1Pn1 t n n Pn t n1Pn1 t P0 ' t 0 P0 t 1P1 t 53 W stanie równowagi statystycznej : pn t pn pn ' t 0 n1 pn1 n n pn n1 pn1 0 0 p0 1 p1 0 p1 0 p0 1 0 p0 1 1 p1 2 p2 0 0 p0 1 1 0 1 pn 0 1 p2 0 p0 2 p2 0 1 1 p0 2 1 n1 ... p0 2 n pi 1 p0 pi i 0 i 1 p0 i 1 01...i 1 p0 1 1 2 ... n n i 1 p0 i 1 i 1 i 1 W npn n 0 T N Powyższe rozwiązanie jest słuszne dla dowolnych Poissonowskich na wejściu i wyjściu systemów obsługi z algorytmami obsługi nie zależnymi od czasu wykonania zadania. Jeżeli i i=1… i i=1… to p0 1 pn n 1 54 Załóżmy, że samochody przyjeżdżają do myjni z częstotliwością 12/h, myjnia ma 2 stanowiska oraz 1 miejsce poczekalnia 12 źródło zgłoszeń c s c s 15/h c 12 0 - brak aut 1 - 1 auto w myjni 2 - 2 auta w myjni 0 3 - +1 w poczekalni 12 n3 0 n3 n 12 1 15 15/h s 12 3 2 30 30 0 n 0, n 3 n 15 n 1 30 1 n 3 1 12 12 *12 12 *12 *12 p0 1 0 0 1 0 1 2 1 15 15 * 30 15 * 30 * 30 1 12 1 2 3 p0 0.44 12 100 p0 15 281 12 *12 40 p2 p0 15 * 30 281 12 *12 *12 16 p3 p0 15 * 30 * 30 281 228 N 1 p1 2 p2 3 p3 0.81 281 265 12 p0 p1 p2 12 11.3 281 p1 N T T 0.072h 4.3 min 55 1 Systemy M|M|1| |k: końcówka 1 2 3 … obsługa 12 n W systemie są 2 końcówki generujące zadania dla procesora obie z rozkładem wykładniczym 1 1 , obsługa 30 min 3 2/3 0 1/3 1 2 2h p0 1 1 0 0 1 1 1 2 18 25 2h p1 2/3 6 p0 2 25 8 25 2 1 42 p0 p1 3 3 75 N p1 2 p2 T N 4 7 Round Robin M|M|1| |k : i k k! p0 i 0 k i ! n 1 T 1 p0 1 56 p2 2 / 3 *1 / 3 1 p0 2*2 25 Elementy teorii gier: Wartość gry - wygrana gracza Grą dwuosobową o sumie zero nazywamy trójkę G=<S,T,W> w której S i T są odpowiednio zbiorami strategii czystych gracza A i B, a W(s,t) jest funkcją wypłat (wygrana gracza A = przegrana gracza B) przyjmującą skończone wartości liczbowe i określoną na iloczynie kartezjańskim S x T zbiorów strategii obu graczy. Gry zbiory S i T są skończone, macierz A=[aij], gdzie aij=W(si,tj), si S t j T nazywamy macierzą gry, a grę G=<S,T,W> grą macierzową. Strategia maksyminowa: Dolną wartością gry G=<S,T,W> nazywamy liczbę v1 max min s S t T W ( s, t ) Strategia s0 odpowiadająca dolnej wartości gry nazywa się strategią maksyminową. Jest to strategia gwarantująca graczowi A, że wygra co najmniej v 1. Strategia minimaksowa: Górną wartością gry G=<S,T,W> nazywamy liczbę v2 min max t T s S W ( s, t ) Strategia t0 odpowiadająca górnej wartości gry nazywa się strategią minimaksową. Jest to strategia gwarantująca graczowi B, że przegra co najwyżej v 2. Strategia zdominowana: Jeżeli w grze macierzowej G=<S,T,A> każdy element pewnego wiersza macierzy wypłat odpowiadającego strategii s k S gracza A jest mniejszy lub równy od odpowiedniego elementu innego wiersza to strategia sk nosi nazwę strategii zdominowanej gracza A. Punktem siodłowym macierzy A=[aij] i=1,…,n j=1,…,n jeżeli taki istnieje nazywamy element ark który spełnia warunek aik ark arj Macierz A ma punkt siodłowy wtedy i tylko wtedy, gdy v 1=v2. Strategią mieszaną (lub zrandomizowaną) gracza A nazywamy skokowy rozkład prawdopodobieństwa określony na zbiorze S strategii czystych tego gracza, tzn. jest to wektor xT x1 x2 ... xm taki że m x i 1 i 1, xi 0 (i 1,2,..., m) Strategią mieszaną (lub zrandomizowaną) gracza B nazywamy skokowy rozkład prawdopodobieństwa określony na zbiorze T strategii czystych tego gracza, tzn. jest to wektor y y1 y2 ... y n taki że m y i 1 i 1, 57 yi 0 (i 1,2,..., n) Mieszanym rozszerzeniem gry macierzowej G=<S,T,A> nazywamy trójkę m X , Y , ( X , Y ) w której zbiór X x : xi 1, i 1 xi 0, n strategii mieszanych gracza A, a zbiór Y y : yi 1, i 1 m yi 0, i 1,2,...m jest zbiorem i 1,2,...n gracza B. n ( X , Y ) xi aij y j xT Ay i 1 j 1 jest wartością oczekiwaną wygranej gracza A. Górna i dolna wartość gry : Dolną wartością gry nazywamy liczbę k1 Górną wartością gry nazywamy liczbę k 2 max min x X y Y min max y Y x X Własność: v1 k1 k2 v2 Jeżeli v1 v2 to k1 k2 58 xT Ay xT Ay Gry mieszane: Gra polega na tym, że 2 osoby kładą monetę (chodzi o świadomy wybór) wybraną stroną. Jeżeli oboje wybiorą orła, gracz A przegrywa 3 zł. Jeżeli oboje wybiorą reszkę gracz A przegrywa 1zł. Jeśli monety będą różne gracz A wygrywa 2zł. Niech x oznacza prawdopodobieństwo z jakim gracz B gra orzełka. Wtedy gracz B gra reszkę z prawdopodobieństwem (1-x). Gdy gracz A wybierze orła: 3x 2(1 x) v Gdy gracz A wybierze reszkę: 2 x (1 x) v -3x+2(1-x)=2x-(1-x) 8x=3 x=3/8 v=-3*3/8+2*5/8=1/8 największa wygrana Niech y oznacza prawdopodobieństwo z jakim gracz A gra orzełka. Wtedy gracz A gra reszkę z prawdopodobieństwem (1-y). Gdy gracz B wybierze orła: 3 y 2(1 y) v Gdy gracz B wybierze reszkę: 2 y (1 y) v -3y+2(1-y)=2y-(1-y) y=3/8 v=1/8 najmniejsza przegrana Rozwiązanie: x*=3/8 y*=3/8 v*=1/8 59 Parę strategii x* X i y* Y nazywamy strategiami optymalnymi gracza A i B odpowiednio wtedy i tylko wtedy gdy dla każdego x X i y Y zachodzi xT Ay * x*T Ay * x*T Ay Warunkiem koniecznym i dostatecznym na to, aby para strategii x* X i y* Y były parą strategii optymalnych jest równość k1=k2 czyli równość dolnej i górnej wartości gry. Przez rozwiązanie gry będziemy rozumieć znalezienie strategii optymalnych (x*,y*) oraz wartości v*. Każda gra będąc mieszanym rozszerzeniem gry macierzowej G=<S,T,A> ma rozwiązanie. Gra wyjściowa G może, ale nie musi mieć rozwiązania. Jeżeli istnieje więcej niż jedna strategia optymalna dla danego gracza, to każda wypukła kombinacja liniowa tych strategii jest strategią optymalną tego gracza. x* x1* (1 ) x2* Zbiór strategii optymalnych danego gracza jest zbiorem wypukłym. Rozwiązywanie gier mieszanych: 1. Eliminujemy z macierzy A strategie zdominowane dla graczy (Współrzędne x i y przyjmują 0). 2. Badamy czy macierz A ma punkt siodłowy. Jeżeli a rk jest punktem siodłowym macierzy A to rozwiązaniem jest para strategii czystych. 3. Przypadek gdy A ma postać 2xn: a) rozwiązujemy graficznie układ nierówności gi ( x) (a1i a2i ) x a2i v i 1,..., n b) znajdujemy punkt (x*,v*), usuwamy ze zbioru T strategie dla których a1k x* a2k (1 x* ) v* c) znajdujemy strategie optymalne gracza B rozwiązując problem z macierzą postaci mx2. 4. Przypadek gdy A ma postać mx2 a) rozwiązujemy graficznie układ nierówności hi y ai1 ai 2 y ai 2 v b) znajdujemy punkt (y*,v*) i usuwamy ze zbioru T strategie dla których ar1 y* ar 2 1 y* v* 60 i 1,..., m Kryterium Walda (pesymistyczne): Stan pogody Termin siewu I II III max min s t A 21 28 13 B 15 10 27 C 32 10 25 D 16 20 15 max min 15 10 13 15 C 32 10 25 D 16 20 15 max vi 25.2 20.8 21.4 25.2 aij Wybór: I Kryterium Hurwitza: współczynnik ostrożności: 0 1 vi min aij (1 ) max aij 0.4 Stan pogody Termin siewu I II III A 21 28 13 B 15 10 27 Wybór: I Kryterium Bayesa: wartość oczekiwana przy założeniu znanych rozkładów prawdopodobieństwa stanów natury n vi a0 j * aij A * ai1 B * ai 2 C * ai 3 D * ai 4 j 1 Termin siewu I II III A=0.7 21 28 13 Stan pogody/prawdopodobieństwo B=0.2 C=0.05 D=0.05 15 32 16 10 10 20 27 25 15 max Wybór: II 61 vi 20.1 25.1 16.5 25.1 Kryterium Savege’a: Stan pogody Termin siewu I II III max A 21 28 13 28 B 15 10 27 27 C 32 10 25 32 D 16 20 15 20 C 0 22 7 D 4 0 5 min strataij max j aij Macierz strat: Stan pogody Termin siewu I II III A 28-21=7 28-28=0 28-13=15 B 12 7 0 Wybór: I 62 max 12 22 15 12