Klasyczne zagadnienie przydziału Można wyodrębnić kilka grup problemów, w których zadaniem jest odpowiednie rozmieszczenie posiadanych zasobów. Najprostszy problem tej grupy nazywamy klasycznym zagadnieniem przydziału i jego model danych wejściowych przedstawia się następująco: mamy n prac (zadań) do wykonania oraz n możliwych wykonawców tych prac (maszyn, robotników, itp.). Dla każdej pary (i,j) postaci (i-ty wykonawca, j-ta praca) znana jest efektywność wykonania i wykonawcą j pracy. Wszystkie te pary dają kwadratową macierz efektywności [c ij ]. W konkretnych problemach decyzyjnych efektywność może być traktowana różnie, np. wartościami c ij może być wydajność pewnych prac, specjalizacja do wykonania zadań, itp. Klasyczne zagadnienie przydziału polega na tym, aby każdemu wykonawcy przydzielić jedną pracę do wykonania, aby sumaryczna efektywność była maksymalna lub minimalna, w zależności od konkretnego traktowania wartości c ij. Przykład: Efektywność robotnika na stanowisku pracy przedstawia macierz: praca 1 2 3 4 robotnik 1 6 5 4 1 2 3 7 8 9 3 5 2 3 4 4 1 5 6 7 1 robotnik praca 1 2 robotnik praca 2 3 robotnik praca 3 4 robotnik praca 4 daje efektywność 6+7+3+7=23. 1 robotnik praca 4 2 robotnik praca 3 3 robotnik praca 1 4 robotnik praca 2 daje efektywność 1+8+5+5=19. Każdy wariant wyboru odpowiada permutacji wzajemnie jednoznacznego odwzorowania zbioru (1,2,,n) w siebie. 1 Permutację tę możemy zapisać następująco: p1 2... n przydział prac, której efektywność uzyskujemy sumując p 2... p n i wyznacza ona jednoznacznie c,..., 1 p, c p c 1 2 2 np. n
Wszystkich przydziałów jest tyle ile jest możliwych permutacji. Dla n=4 mamy 1 robotnik 4 warianty prac; 2 robotnik 3 warianty prac; 3 robotnik 2 warianty prac; 4 robotnik 1 wariant prac. 4x3x2x1=24=4! Ogólnie rzecz ujmując rozwiązanie klasycznego zagadnienia przydziału za pomocą przeglądu wszystkich możliwych permutacji przydziałów nie jest efektywne, nawet z udziałem najszybszych komputerów. Istnieją bardziej efektywne metody do rozwiązania zagadnienia przydziału. To zagadnienie jest szczególnym przypadkiem zagadnienia transportowego i może być rozwiązane metodą potencjałów. Poniższa tablica transportowa przedstawia, w jaki sposób zapisać zagadnienie przydziału w postaci tablicy transportowej. praca B 1 B 2...... B n robotnik 1 1...... 1 A 1 1 c 11 c 12 c 1n A 2 1 c 21 c 22 c 2n............ A n 1 c n1 c n2 c nn Jeżeli w zagadnieniu przydziału funkcja celu ma być maksymalizowana, to wystarczy przekształcić macierz kosztów i nadać jej przeciwne znaczenie, to znaczy: albo przemnożyć każdy koszt c ij przez (-1) albo odjąć od jej największego elementu macierzy wszystkie pozostałe.
Zadanie 1: W przedsiębiorstwie 4 sekretarki należy przydzielić do prowadzenia 4 różnych prac biurowych. Znany jest czas zajmujący tym sekretarkom wykonanie poszczególnych prac. sekretarki czas niezbędny na wykonanie prac 1 2 3 4 1 42 48 24 36 2 48 42 30 36 3 42 54 30 42 4 36 48 36 48 Zakładając, że każda sekretarka będzie wykonywać tylko jedną pracę, określić optymalny przydział z punktu widzenia minimalizacji łącznego czasu wykonania prac. Rozwiązanie (algorytm węgierski) KROK 1 Przekształcamy macierz kosztów [c ij ], aby w każdym wierszu i każdej kolumnie pojawiło się przynajmniej jedno zero. W tym celu od elementów każdego wiersza macierzy kosztów odejmujemy jej element najmniejszy. Jeżeli trzeba od każdej kolumny przekształconej macierzy odejmujemy jej najmniejszy element. KROK 2 Skreślamy w przekształconej macierzy wiersze i kolumny macierzy zawierające zera możliwie najmniejszą liczbą linii. Jeżeli najmniejsza liczba linii potrzebna do skreślenia wszystkich zer jest równa wymiarowi macierzy, to otrzymane rozwiązanie jest optymalne. (jeżeli nie przechodzimy do KROKU POPRAWA). Jeżeli spełnimy warunek, to przechodzimy do konstrukcji optymalnego rozwiązania. Otrzymujemy je budując macierz rozwiązania [x ij ] tak, aby jedynki znalazły się tylko w miejscach, gdzie w przekształconej macierzy kosztów znajdują się zera. W każdym wierszu i każdej kolumnie może znajdować się tylko jedna jedynka. Tak zbudowana macierz [x ij ] przedstawia optymalny przydział, a iloczyn skalarny wyjściowej macierzy kosztów [c ij ] przez [x ij ] daje optymalny koszt. KROK POPRAWA Jeżeli najmniejsza liczba linii potrzebna do skreślenia wszystkich zer jest mniejsza od wymiaru macierzy to znajdujemy najmniejszy nie skreślony jej element. Wartość wyznaczonego elementu: a) odejmujemy od elementów nie skreślonych;
b) dodajemy do elementów podwójnie skreślonych. Z tak przekształconą macierzą kosztów wracamy do kroku 2. W skończonej liczbie kroków wyznaczamy optymalne rozwiązanie. min. wiersz 42 48 24 36 24 18 24 0 12 48 42 30 36 30 KROK 1 18 12 0 6 42 54 30 42 30 wiersz 12 24 0 12 36 48 36 48 36 0 12 0 12 min. 0 12 0 6 kolumna 18 24 0 12 18 12 0 6 18 12 0 6 KROK 1 18 0 0 0 12 24 0 12 kolumna 12 12 0 6 0 12 0 12 0 0 0 6 min. 0 12 0 6 kolumna 18 12 0 6 18 12 0 6 18 0 0 0 KROK 2 18 0 0 0 12 12 0 6 linie 12 12 0 6 0 0 0 6 0 0 0 6 Do skreślenia wszystkich zer wystarczą 3 linie. Przechodzimy do kroku POPRAWA. 18 12 0 6 12 6 0 0 18 0 0 0 KROK 18 0 6 0 12 12 0 6 POPRAWA 6 6 0 0 0 0 0 6 min=6 0 0 6 6 12 6 0 0 12 6 0 0 18 0 6 0 KROK 2 18 0 6 0 6 6 0 0 linie 6 6 0 0 0 0 6 6 0 0 6 6 Do skreślenia wszystkich zer potrzeba 4 linii. Przechodzimy do budowy rozwiązania optymalnego. Mamy dwa optymalne rozwiązania:
0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 Wartość funkcji celu w obu przypadkach wynosi 144. 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 42 48 24 36 42 48 24 36 48 42 30 36 48 42 30 36 42 54 30 42 42 54 30 42 36 48 36 48 36 48 36 48 144 144 Optymalny przydział prac: 1 sekretarka praca 4 2 sekretarka praca 2 3 sekretarka praca 1 4 sekretarka praca 3 daje efektywność 36+42+24+42=144. 1 sekretarka praca 4 2 sekretarka praca 2 3 sekretarka praca 3 4 sekretarka praca 1 daje efektywność 36+42+30+36=144. Uwaga 1: W wielu problemach praktycznych wykonawców jest więcej niż prac do wykonania lub odwrotnie. W takim przypadku dopisujemy w macierzy kosztów dodatkowy wiersz lub kolumnę (fikcyjny wykonawca lub fikcyjna praca) i przyjmujemy efektywność zero w macierzy kosztów. Uwaga 2: Metoda węgierska stosuje się do problemu minimalizacji. Jeżeli w zagadnieniu przydziału funkcja celu ma być maksymalizowana, to wystarczy przekształcić macierz kosztów i nadać jej przeciwne znaczenie, to znaczy: albo przemnożyć każdy koszt c ij przez (-1) albo odjąć od jej największego elementu macierzy wszystkie pozostałe.
Uwaga 3: W praktyce zdarza się, że pewne przydziały są niedopuszczalne. W tym przypadku do macierzy kosztów, gdzie przydział jest niedopuszczalny wpisujemy bardzo dużą liczbę M, taką że po odjęciu od niej jakiejś liczby praktycznie nie zmieni jej wartości. Zadanie 2: O 6 stanowisk pracy: murarza (m), stolarza (s), betoniarza (b), cieśli (c), dekarza (d) i instalatora (i) stara się pięciu kandydatów A, B, C, D, E. Kandydat A ma uprawnienia stolarza i instalatora (s,i), B ma uprawnienia (s,d), C (s,d), D (m,s,c,i), E (b,i). PYTANIE 1: Czy można tak dopasować kandydatów do stanowisk pracy, by każdy otrzymał pracę zgodnie ze swoimi uprawnieniami? PYTANIE 2: Na ile sposobów można dopasować kandydatów do stanowisk pracy zgodnie z ich uprawnieniami? Przypuśćmy, że w wyniku przeprowadzenia pewnych testów, ustalono, iż w skali od 1 do 6 przydatność poszczególnych kandydatów do stanowisk przedstawia się następująco (zero oznacza brak kwalifikacji) {patrz tablica obok}: m s b d c i A 0 4 0 0 0 3 B 0 1 0 3 0 0 C 0 5 0 6 0 0 D 3 5 0 0 4 4 E 0 0 2 0 0 5 PYTANIE 3: Który z czterech dopuszczalnych przydziałów pracy jest najkorzystniejszy (maksymalizuje sumę punktów)? UWAGA 1 0 4 0 0 0 3 0 1 0 3 0 0 0 5 0 6 0 0 3 5 0 0 4 4 0 0 2 0 0 5 0 0 0 0 0 0
UWAGA 2-1 0-4 0 0 0-3 0-1 0-3 0 0 0-5 0-6 0 0-3 -5 0 0-4 -4 0 0-2 0 0-5 0 0 0 0 0 0 UWAGA 3 niedopuszczalne 57-4 57 57 57-3 57-1 57-3 57 57 57-5 57-6 57 57-3 -5 57 57-4 -4 57 57-2 57 57-5 57 57 57 57 57 57 min. wiersz 57-4 57 57 57-3 -4 61 0 61 61 61 1 57-1 57-3 57 57-3 60 2 60 0 60 60 57-5 57-6 57 57-6 KROK 1 63 1 63 0 63 63-3 -5 57 57-4 -4-5 wiersz 2 0 62 62 1 1 57 57-2 57 57-5 -5 62 62 3 62 62 0 57 57 57 57 57 57 57 0 0 0 0 0 0 Spośród kombinatorycznych zagadnień optymalizacyjnych są różne inne zagadnienia, które mają zastosowania w praktyce, ale niestety nie mają efektywnych metod rozwiązania. Jednym z takich zagadnień jest zagadnienie komiwojażera. Polega ono na: mamy n miast i macierz liczbową [r ij ] odległości pomiędzy nimi. Komiwojażer, który znajduje się w jednym z nich musi odwiedzić wszystkie pozostałe miasta i wrócić do wyjściowego, tak aby sumaryczna pokonana odległość była jak najmniejsza.