Problem przydziału na wiele dni


10

Mam problem, który można sprowadzić do problemu przydziału. (W poprzednim pytaniu dowiedziałem się, jak to zrobić.)

Co oznacza, że ​​mamy zestaw ZA agentów i zestaw zadań, a także funkcję kosztu . Musimy znaleźć zadanie, aby całkowity koszt był minimalny.c ( i , j )T.do(ja,jot)

Algorytm węgierski może znaleźć optymalne rozwiązanie, w co najmniej . Które brzmi dla mnie dobrze.O(n4)

Mój nowy problem to: Dana liczba dni. Muszę rozwiązać problem przypisania na każdy dzień, aby każde zadanie było wykonywane codziennie, a żaden agent nie wykonał tego samego zadania dwa razy .

Co próbowałem: Możemy uruchomić węgierski algorytm osobno dla każdego dnia i ograniczyć liczbę możliwych kombinacji w oparciu o wynik z poprzedniego dnia. Wpadłoby to jednak w kłopoty w późniejszych dniach, w których najprawdopodobniej niemożliwe będzie znalezienie realnego rozwiązania.

Innym pomysłem jest integracja wyszukiwania lokalnego w celu zmiany decyzji podjętych poprzedniego dnia. Ale myślę, że nie możemy na tym polegać.

Przypadki, z którymi muszę się zmierzyć, będą gdzieś . Macierz kosztów będzie miała wiele takich samych wartości (np. Głównie 1 lub nieskończoność, tylko około 2 lub 3). Tak więc podczas węgierskiego algorytmu jest dużo miejsca na stworzenie różnych optymalnych rozwiązań na jeden dzień.|ZA|=|T.|=500do(ja,jot)

Z przyjemnością usłyszę kilka pomysłów lub doradzę, jak znaleźć dobre rozwiązanie problemu. Z góry dziękuję.


1
To świetne pytanie! Sugerowałbym użycie przepływu minimalnego kosztu, twierdzenia małżeństwa Halla i maksymalnego dwustronnego dopasowania.
Peter Shor,

Odpowiedzi:


6

Jest na to sposób w czasie wielomianowym. Naszkicuję algorytm (w odwrotnej kolejności ... najpierw wykonaj krok 2, a drugi krok 1).

  1. nk(ja,jot)kkknk

  2. nkstk0k0jajot1do(ja,jot)01(ja,jot)1

Istnieje wiele algorytmów, które mogą rozwiązać minimalny przepływ ; jest to szczególny przypadek programowania liniowego. W przypadku twojego problemu algorytm, który szkicuję, powinien być nie tylko czasem wielomianowym, ale także praktyczny.


Ostatnie pytanie: algorytm przepływu kosztu minimalnego w kroku 2 (wybrałem anulowanie cyklu na początek) zapewnia optymalne rozwiązanie. Algorytm maksymalnego dopasowania w kroku 1 robi to. Czy to koniecznie oznacza, że ​​całe rozwiązanie jest optymalne? Ponieważ zgaduję, że problem dotyczy NP-Complete.
Patrick Schmidt

1
Całe rozwiązanie jest optymalne. Byłoby to dobre pytanie do przypisania w kombinatorycznym kursie optymalizacji, ponieważ jest to nieco zaskakujące, że możesz to zrobić.
Peter Shor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.