WSPOMAGANIE DECYZJI - MIŁOSZ KADZIŃSKI LABORATORIUM VI METODA WĘGIERSKA 1. Proble przydziału. Należy przydzielić zadań do wykonawców. Każde zadanie oże być wykonywane przez co najwyżej jednego wykonawcę i jeden wykonawca oże wykonywać co najwyżej jedno zadanie. Z wykonanie zadania i przez wykonawcę j związany jest pewien koszt c. Należy dokonać takiego przydziału, aby koszt wykonania był najniejszy. Min : z = ogr. : j = 1 i= 1 i= 1 j = 1 x = 1 x = 1 c x i = 1.. *) j = 1.. **) 1- zadanie i przydzielono do wykonawcy j x = 0 - w p.p. *) ograniczenie po wszystkich wykonawcach **) ograniczenie po wszystkich zadaniach x - zienne decyzyjne, oznaczające przydział (1) lub brak przydziału (0) zadania i do wykonawcy j. Ograniczenia gwarantują to, że każde zadanie zostanie wykonane. Zadanie przydziału jest zadanie zerojedynkowego prograowania liniowego. 2. Algoryt etody węgierskiej Macierz A (standardowo: wiersze - wykonawcy, koluny zadania, choć ożna algoryt stosować też układ jest odwrotny nie a to wpływu na działanie etody) - algoryt stosowany jest dla inializacji funkcji celu; jeśli chcey aksyalizacji to w acierzy A zienia się znaki na przeciwne ( Max z = i= 1 j= 1 ( c ) x ziana kosztów na ( c ) i liczyy Min ); - jeśli liczba wykonawców i liczba zadań jest różna, to acierz A uzupełnia się do acierzy kwadratowej zerai; - jeśli istnieje przydział zakazany (np. zadanie nr 1 do wykonawcy nr 2) to w odpowiednie iejsce w acierzy wstawia się znak. Przykład 1: 2 10 9 7 15 4 14 8 13 14 16 11 4 15 13 9 Krok 1: Jeśli inialny eleent w wierszu i jest różny od 0 to odej go od tego wiersza (krok powtórz dla wszystkich wierszy). 0 8 7 5 11 0 10 4 2 3 5 0 0 11 9 5 Krok 2: Jeśli inialny eleent w kolunie jest różny od zera to odej go od tej koluny (krok powtórz dla wszystkich kolun). Krok 3: W wierszu zawierający dokładnie jedno nie naznaczone 0 naznacz je sybole 0. Skreśl inne zera w tej kolunie aby nie powtórzyć przydziału wykonawcy. - 1 -
Krok 4: W kolunie zawierającej dokładnie jedno nie naznaczone 0, naznacz je sybole 0. Skreśl pozostałe zera w odpowiedni wierszu aby nie powtórzyć przydziału tego saego zadania. Krok 5: Powtarzaj krok 3 i 4 do oentu, gdy: a) każdy wiersz w A a przydział 0 albo b) w dwóch wierszach i kolunach są co najniej 2 nie naznaczone zera albo c) nienaznaczonych zer nie a i nie dokonano kopletnego przydziału. Krok 6: Jeżeli w kroku 5 było: a) przydział jest kopletny i optyalny, zakończ; b) naznacz sybole 0 dowolne nie naznaczone 0 (zazwyczaj naznacza się 0 najbardziej północno-zachodnie) i skreśl pozostałe zera w odpowiedni wierszu i kolunie; c) przejdź do kroku 7; -2 6 0 3-2 9 2 3 0 6 0 3 13 0 5 4 4 3 0 0 0 9 2 3 Krok 7: Oznacz sybole wiersz, w który nie dokonano przydziału. Krok 8: Oznacz sybole kolunę, która a zero w oznaczony wierszu. Krok 9: Oznacz nie oznaczone wiersze, które ają przydział w oznaczonych kolunach Krok 10: Powtarzaj kroki 8 i 9 aż do wyczerpania ożliwości oznaczania. Krok 11: Pokryj liniai nie oznaczone wiersze i oznaczone koluny Krok 12: Znajdź inialny niepokryty eleent i odej go od niepokrytych wierszy. Dodaj ten sa eleent do każdej pokrytej koluny. Wróć do kroku 3. Rozwiązanie końcowe dla powyższego przykładu: 0 6 0 3 13 0 5 4 4 3 0 0 0 9 2 3 Optyalny przydział dla rozważanego przykładu został osiągnięty: Przy taki przydziale zadań do wykonawców łączny koszt wykonania wynosi 28 i jest inialny (żeby odczytać koszt, odwołujey się do oryginalnej acierzy na wejściu etody). Z * = 9 + 4 + 11+ 4 = 28 Wykonawca Zadanie Koszt 1 3 9 2 2 4 3 4 11 4 1 4-2 -
Przykład 2: 6 11 6 6 11 11 6 6 6 6 11 11 6 6 11 11 Jeśli liczba linii pokrywających wszystkie zera jest równa liczbie naznaczonych zer, to znajdź inialny niepokryty eleent, odej go od niepokrytych (zaznaczonych) wierszy i dodaj do pokrytych (zaznaczonych) kolun, po czy wróć do kroku 3. W przeciwny razie przejdź do kroku 13. Krok 13: W1 Z1 Skonstruuj graf skierowany o 2+2 S W2 Z3 T wierzchołkach: s, w1,,wn, z1,,zn, t. Dla każdego naznaczonego zera (0) o współrzędnych (i,j) utwórz łuk zj wi; W4 Z4 dla zer skreślonych ( 0 ) o współrzędnych (i,j) - łuk wi zj; dla wierszy i bez przydziału - łuk s wi; dla kolun j bez przydziału łuk zj t. Krok 14: Z otrzyanego grafu utwórz sieć warstwową: do pierwszej warstwy wstaw wierzchołek s, do warstwy i+1 wstaw każdy wierzchołek, którego nie a w warstwie wcześniejszej, i do którego dochodzi łuk z dowolnego wierzchołka warstwy i. W ostatniej warstwie znajdzie się wierzchołek t. S W4 Z1 W1 Z3 W2 Z4 T Krok 15: Przesuwając się po dowolnej ścieżce od s do t utwórz tzw. ścieżkę powiększającą przepływ. Naznacz ( ) zera skreślone o współrzędnych (i,j), odpowiadające łukowi wi zj na tej ścieżce; cofn ( 0 ) przydział zer naznaczonych o współrzędnych (i,j), odpowiadających łukowi zj wi na tej ścieżce. Jeśli znaleziono przydział do zer, to jest on optyalny STOP. S W4 Z1 W1 Z3 W2 Z4 T Wykonawca Zadania Koszt 1 3 6 2 4 6 3 2 6 4 1 6 Z*=6+6+6+6=24-3 -
Przykład 3: Minializacja kosztu (jeśli konflikt skreśl 0 N-W (najniejszy wiersz, pote koluna)) 13 11 7 8 1 11 13 10 5 9 7 10 13 7 4 8 5 7 13 12 1 9 4 12 13 12 10 6 7 0 6 8 5 0 4 3 6 9 3 0 3 0 2 8 7 0 8 3 11 12 12 10 4 7 0 3 6 7 3 0 12 10 4 7 0 3 6 7 3 0 12 10 4 7 0 3 6 7 3 0 9 7 1 4 0 6 8 3 0 7 0 3 4 0 0 0 8 1 11 15 9 7 1 4 0 6 8 3 0 7 0 3 4 0 0 0 8 1 11 15 9 7 1 4 0 6 8 3 0 7 0 3 4 0 0 0 8 1 11 15 9 6 0 4 0 6 7 2 0 7 0 4 0 0 9 11 0 7 0 11 15 Ostatecznie: I 3, II 4, III 5, IV 2, V 1, łączny koszt = 7+5+4+5+1=22 Przykład 4: Minializacja (wynik łatwo przewidzieć, ale dla poćwiczenia rysowania sieci warstwowej przykład jest bardzo cenny ; jeśli konflikt skreśl 0 N-W (najniejszy wiersz, pote najniejsza koluna)) 3 5 3 3 3 5 5 3 3 3 3 3 3 3 3 3 3 3 5 5 3 3 3 5 5-4 -
Zadania (jedno z nich będzie na kolokwiu; dla ułatwienia w nawiasie podany jest optyalny wynik (tyko funkcja celu, bez przydziału)): Minializacja kosztu: (opt=17) 2 10 9 7 15 4 14 8 13 14 16 11 Maksyalizacja zysku: (opt=26) - 1 6 4 5 7 11 6 2 3 8 10 3 5 7 1 Maksyalizacja zysku: (opt=44) 11 7 11 11 7 7 11 11 11 11 7 7 11 11 7 7 Maksyalizacja zysku: (opt=38) 13 6 5 11 7 4-9 9 10 8 14 4 8 6 10 Minializacja kosztu: (opt=22) 13 11 7 8 1 11 13 10 5 9 7 10 13 7 4 8 5 7 13 12 1 9 4 12 13 Minializacja kosztu: (opt=14) 17 10 7 6 1 12 15 10 3 5 7 8 17 5 4 8 3 7 15 15 Minializacja kosztu: (opt=22) 18 13 8 9 13 18 11 6 8 11 18 8 9 6 8 18 2 10 5 16 Minializacja kosztu: (opt=25) 5 7 5 5 5 7 7 5 5 5 5 5 5 5 5 5 5 5 7 7 5 5 5 7 7-5 -