AM, Zagadnienie przydziału, Zagadnienie transportowe


Zagadnienie przydziału

Szczególnym przypadkiem zadania programowania liniowego jest przypadek kiedy przydziela się jedną osobę do jednej czynności, firmę do kontraktu lub przewoźnikowi trasę przejazdu, a zmienne przyjmują wartości 0 lub 1. Zagadnienie takie nazywa się zagadnieniem przydziału.

Charakterystyczna dla zagadnienia przydziału jest wzajemna jednoznaczność przydziału osób do czynności i czynności do osób. Każda czynność jest wykonywana przez dokładnie jedną osobę, każda osoba wykonuje dokładnie jedną czynność. Konsekwencja tego jest że macierz zawierająca cel zadania (zyski, koszty, czas) musi być macierzą kwadratową. Istnieją zadania które nie są zadaniami przydziału, które łatwo da się do takich sprowadzić. Kilka takich zadań opisano w dalszej części tego tekstu.

Zagadnienie takie można, jak wszystkie zagadnienia programowania liniowego rozwiązać metodą SIMPLEX. Wygodniejszą i szybszą jest jednak metoda węgierska.

Zagadnienie przydziału może w funkcji celu być minimalizowane lub maksymalizowane. W przypadku rozwiązywania zadania metodą węgierską, zadanie musi być przekształcone do zadania na minimum.

Przykład 1

Miasto chce zlecić modernizację czterech budynków. Każdy z nich jest inny i wymaga od firmy budowlanej innych umiejętności, wiedzy i doświadczenia. Ogłoszono przetarg do którego stanęły cztery firmy budowlane. Proponowany koszt każdej modernizacji zaproponowany przez poszczególne firmy pokazano w tabeli (liczby w tys. zł):

Modernizowane budynki

Budynek 1

Budynek 2

Budynek 3

Budynek 4

Firmy

Firma 1

150

180

130

220

Firma 2

160

200

150

190

Firma 3

140

220

180

200

Firma 4

140

210

140

200

Należy przydzielić firmom kontrakty tak aby każda firma dostała dokładnie jeden kontrakt i aby całkowity koszt modernizacji budynków był minimalny.

Ważne:

Macierz współczynników w zadaniu przydziału musi być kwadratowa. Jeżeli z treści zadania wynika że nie jest, należy doprowadzić do sytuacji gdy będzie kwadratowa. (patrz przykład niżej).

Model matematyczny:

W modelu będzie 16 zmiennych reprezentujących każdy możliwy kontrakt. Każda zmienna odpowiada na pytanie: czy dana firma dostanie kontrakt na wykonanie modernizacji określonego budynku ? W związku z tym zmienne przyjmują tylko dwie wartości: 0 i 1.

Zmienne:

x11, x12, x13, x14

x21, x22, x23, x24

x31, x32, x33, x34

x41, x42, x43, x44

gdzie 0x01 graphic

Ograniczenia dla firm:

x11+x12+x13+x14 = 1

x21+x22+x23+x24 = 1

x31+x32+x33+x34 = 1

x41+x42+x43+x44 = 1

Ograniczenia dla budów:

x11+x21+x31+x41 = 1

x12+x22+x32+x42 = 1

x13+x23+x33+x43 = 1

x14+x24+x34+x44 = 1

Funkcja celu:

F = 150x11+180x12+130x13+220x14+160x21+200x22+150x23+190x24+
+140x31+220x32+180x33+200x34+140x41+210x42+140x43+200x44 → min

Ze względu na konstrukcję zmiennych warunki nieujemności są zbędne.

Metoda węgierska

Metoda węgierska służy do rozwiązywania zagadnienia przydziału. Służy wyłącznie do rozwiązywania zadań „na minimum”. W przypadku zadania „na maksimum” niezbędne będzie wykonanie zabiegu zmieniającego „kierunek zadania” opisanego w następnym przykładzie.

150

180

130

220

160

200

150

190

140

220

180

200

140

210

140

200

1. W każdej kolumnie należy znaleźć najmniejszą liczbę i odjąć ją od wszystkich wyrazów w kolumnie.

10

0

0

30

20

20

20

0

0

40

50

10

0

30

10

10

2. Następnie w każdym wierszu powtarzamy tę czynność tzn. dla każdego wiersza szukamy wartości najmniejszej i odejmujemy od wszystkich elementów wiersza. W tym wypadku najmniejszymi elementami każdego wiersza jest 0 więc nic się nie zmieni.

10

0

0

30

20

20

20

0

0

40

50

10

0

30

10

10

Powyższe dwie operacje można odwrócić tzn. najpierw odejmować w wierszach a później w kolumnach. Na ostateczny wynik nie będzie miało wpływu, chociaż wartości w powstałych tabelach będą różne.

Rząd macierzy można utożsamiać z ilością kolumn lub wierszy w macierzy. Nie jest to do końca prawdą ale dla potrzeb metody węgierskiej jest wystarczające.

0x08 graphic
3. Jak najmniejszą ilością cięć (jednocześnie poziomych i pionowych) należy wyciąć wszystkie zera. Jeżeli minimalna ilość cięć będzie równa rzędowi macierzy, to można szukać rozwiązania optymalnego, jeżeli będzie mniejsza, należy rozwiązanie poprawiać (postępowanie analogiczne do sprawdzania, czy w wierszu 0 tablicy SIMPLEX są liczby ujemne).

0x08 graphic
10

0

0

30

0x08 graphic
20

20

20

0

0

40

50

10

0

30

10

10

W tym wypadku minimalna ilość cięć wynosi 3, rząd macierzy wynosi 4, więc nie można jeszcze odczytać rozwiązania optymalnego.

4. Poprawianie rozwiązania.

Spośród liczb nieskreślonych (40, 50, 10, 30, 10, 10) należy wybrać najmniejszą. Tę liczbę: