BO, Wegierska, Metoda węgierska


Metoda węgierska.

Rozwiązanie zagadnienia przydziału.

1. Wstęp

Załóżmy, że istnieje n różnych czynności, które mogą zostać wykonane przez n mechanizmów. Każdy mechanizm może wykonać tylko jedną czynność z różnym skutkiem. Należy przydzielić czynności do mechanizmów w taki sposób, aby wynik był optymalny.

Np.

Kierownik ma za zadanie rozdzielić n czynności A1, A2,..., An pomiędzy n pracowników P1, P2,..., Pn. Każdy pracownik wykonuje daną czynność z odpowiednim do swoich kwalifikacji efektem. Założono, że wiersze odpowiadają pracownikom, kolumny czynnościom, natomiast wartości macierzy odpowiadają zyskom, jakie może wypracować każdy pracownik wykonując odpowiednie czynności. Założenia możliwości przydziału zapisano w macierzy C.

0x01 graphic

Np. pracownik trzeci wykonuje czynność pierwszą z efektem 5, czynność drugą z efektem 4, itd...

Obowiązkiem kierownika jest taki przydział czynności, aby sumaryczny wynik pracy był maksymalny. Należy, więc z każdego wiersza i każdej kolumny wybrać dokładnie po jednym elemencie tak, aby ich suma był największa.

Gdyby macierz C była zbudowana tak, że maksymalne elementy jej wierszy znajdowałyby się w różnych kolumnach, rozwiązanie problemu byłoby proste. Na ogół jednak, kilka maksymalnych elementów różnych wierszy znajduje się w jednej i tej samej kolumnie lub odwrotnie. Wówczas rozwiązanie problemu nie jest oczywiste szczególnie, gdy wymiar problemu jest duży.

Metoda węgierska polega na wykonaniu kroku przygotowawczego oraz skończonej ilości iteracji. Każda iteracja przybliża o jeden element rozwiązanie optymalne. Rozwiązanie problemu maksymalizacji i minimalizacji różni się jedynie krokiem przygotowawczym. Dalsze obliczenia są identyczne.

Przyjęto, że elementy są niezależne, jeżeli w jednym wierszu i jednej kolumnie znajduje się tylko jeden element z danego zbioru. Zagadnienie przydziału polega na wyborze n elementów niezależnych z macierzy opisującej problem, których suma jest optymalna (minimalna lub maksymalna w zależności od problemu). Rozmieszczenie elementów niezależnych wskazuje na rozwiązanie optymalne.

Wyjaśnienie metody węgierskiej zrealizowane zostanie w oparciu o w/w przykład.

2. Rozwiązanie problemu

2.1 Krok przygotowawczy

2.1.1 Maksymalizacja

0x01 graphic

0x01 graphic

2.1.2 Minimalizacja

0x01 graphic

0x01 graphic

2.2 Iteracja

Założono, że została wykonana k-ta iteracja w wyniku, której określona jest równoważna macierzy C0 macierz Ck=[ckij], ckij>= 0.

Należy sprawdzić, czy macierz Ck zawiera n zer niezależnych. Jeżeli tak, to otrzymano rozwiązanie optymalne (optymalny wybór określony jest pozycjami zer niezależnych (0*)). W przeciwnym przypadku przeprowadza się k+1 iterację.

Wszystkie kolumny macierzy Ck zawierające 0* wyróżnia się znakiem + (wyróżnienie kolumny lub wiersza znakiem + oznacza wyróżnienie wszystkich elementów tej kolumny lub wiersza).

Krok 1

Przyjęto, że analiza macierzy odbywać się będzie kolumnami od lewej strony. Można przyjąć inaczej, ale konsekwentnie do uzyskania rozwiązania optymalnego.

Jeżeli w pierwszej (od lewej strony) kolumnie nie wyróżnionej (+) znajduje się zero, to wydziela się je znakiem 0' (jeżeli nie ma takiego zera, to analizuje się kolejno następne elementy tej kolumny oraz kolumny następne).

Jeżeli wiersz zawierający wyróżnione 0' nie zawiera 0*, to należy przejść do kroku 2. Jeżeli natomiast zawiera 0*, to należy wyróżnić wiersz (+), a skasować wydzielenie kolumny, w której znajduje się 0* leżące w analizowanym wierszu.

W taki sposób należy wyróżnić wszystkie, możliwe ze względu na założone kryteria 0.

Po wydzieleniu wszystkich 0, należy przejść do kroku 3.

Krok 2

Określenie łańcucha zer.

Zaczynając od ostatnio wydzielonego 0' (w wierszu tym nie ma zera niezależnego 0*) przechodzi się w kolumnie do zera niezależnego 0* (o ile takie istnieje), następnie w wierszu do zera wydzielonego i tak naprzemiennie. Można wykazać, że określony w ten sposób łańcuch zer jest wyznaczony jednoznacznie i zaczyna się oraz kończy zerem wydzielonym 0'. W zakończeniu drugiego kroku następuje przemianowanie zer należących do wyznaczonego łańcucha:

0' zmienia się na 0*

0* zmienia się na 0

Przemianowana macierz jest macierzą Ck+1. Na tym kończy się k+1 iteracja. Macierz Ck+1 zawiera dokładnie jedno zero niezależne 0* więcej niż macierz Ck.

Krok 3

Oblicza się minimum z elementów nie wydzielonych:

0x01 graphic
dla wszystkich par (i,j) indeksów nie wydzielonych.

Następnie tworzona jest macierz 0x01 graphic
, gdzie:

0x08 graphic

Wszystkie wyróżnienia macierzy Ck przenosi się na macierz 0x01 graphic
i przechodzi się do kroku pierwszego. Macierz 0x01 graphic
zawiera przynajmniej jedno nie wydzielone zero więcej.

Przykład 1

Dany jest problem opisany macierzą C:

0x01 graphic

Należy znaleźć rozwiązanie maksymalne metodą węgierską.

Krok przygotowawczy:

0x01 graphic

C'=C0 (bo w każdym wierszu jest 0, które jest neutralne ze względu na odejmowanie)

Wyznaczenie zer niezależnych:

0x01 graphic

Wyróżnienie kolumn:

0x01 graphic

Iteracja 1:

Wydzielenie zer:

0x01 graphic

Ponieważ wszystkie zera są wydzielone, należy przejść do kroku trzeciego.

0x08 graphic
0x01 graphic

Elementy nie wydzielone zaznaczono powyżej. Minimalnym elementem niewydzielonym jest 2 (h =2).

0x01 graphic

Możliwe do wydzielenia 0 znajduje się w pierwszej kolumnie i w drugim wierszu.

0x01 graphic

Ponieważ w wierszu tym znajduje się zero niezależne, wydzielony zostaje wiersz, a skasowane wydzielenie kolumny (piątej), w której to zero się znajduje:

0x01 graphic

Następne, możliwe do wydzielenia 0 znajduje się w piątej kolumnie i trzecim wierszu:

0x01 graphic

Ponieważ w wierszu tym nie ma zera niezależnego, tworzony jest łańcuch zer:

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

Zakończenie iteracji:

0x01 graphic

Iteracja 2:

0x08 graphic
0x01 graphic
0x01 graphic
h=1

0x08 graphic
0x01 graphic
0x01 graphic
h=1

0x01 graphic
0x01 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic
0x01 graphic

Iteracja 2:

0x08 graphic
0x01 graphic
0x01 graphic
h=1

0x01 graphic
0x01 graphic

0x08 graphic
0x01 graphic
h=1 0x01 graphic

0x08 graphic
0x08 graphic
0x01 graphic
0x01 graphic

Uzyskano pięć zer niezależnych. Ich pozycja wskazuje rozwiązanie maksymalne.

Jeżeli wiersze macierzy C odpowiadają pracownikom, a kolumny czynnościom, to pracownik pierwszy powinien wykonywać czynność 4, pracownik 2 - czynność 2, pracownik 3 - czynność 1, pracownik 4 - czynność 5 i pracownik 5 - czynność 3. Sumaryczny wynik ich pracy wynosiłby 29.

Oprac. Krzysztof Krupa

0x01 graphic



Wyszukiwarka

Podobne podstrony:
metoda wegierska
Moja zajebista ściąga na urządzenia Węgierka
Rosół węgierski z kury
Naród, wielokulturowość Węgier
zupa węgierska
Wegierska zupa rybna
Gulasz węgierski
Gulasz po węgiersku
Zupa węgierska z kurczaka
cielęcina, Nóżki cielęce po węgiersku, Nóżki cielęce po węgiersku
Śniadania, Jaja po węgiersku, Jaja po węgiersku
Warzywa, owoce, Ziemniaki po węgiersku, Ziemniaki po węgiersku
Sałatki, Sałatki i surówki - Sałatka węgierska, Sałatki i surówki
Sernik węgierski 1
Placki po węgiersku
rosół węgierski z kury mrvfhuymjuvflrmek6sxqmviqihooftuuzbz5uq MRVFHUYMJUVFLRMEK6SXQMVIQIHOOFTUUZBZ5
Kotlety z grilla po wegiersku

więcej podobnych podstron