Jakiego algorytmu należy użyć, aby utworzyć funkcję automatycznego planowania personelu?


18

Wyobraź sobie małą lokalną firmę (w moim przypadku przedszkole dla psów) z kilkudziesięcioma pracownikami zatrudnionymi w niepełnym wymiarze godzin. Celem jest automatyczne tworzenie tygodniowych harmonogramów pracowniczych. Moje pytanie dotyczy tego, jakie podejścia algorytmiczne należy zbadać w celu rozwiązania tego problemu.

Należy pamiętać o wielu ograniczeniach, przede wszystkim (1) dostępności personelu i (2) potrzebach każdej zmiany, nie tylko liczbie personelu na każdej zmianie, ale umiejętnościach potrzebnych na każdą zmianę (np. Na określoną zmianę, możesz potrzebować kogoś, kto umie prowadzić, aby zabrać / odebrać psa, lub innego, kto umie kąpać psy itp.).

Inne ograniczenia obejmują takie rzeczy, jak unikanie lub wymaganie pewnych kombinacji personelu - być może z powodu konfliktów osobowości z jednej strony lub potrzeby szkolenia przez osmozę od starszego do młodszego personelu z drugiej.

Istnieją również preferencje, które należy wziąć pod uwagę. Niektórzy pracownicy wolą poranki, dwa dni z rzędu niż powiedzieć poniedziałek i czwartek itp. Wiemy, że nie zawsze możemy dostosować się do preferencji wszystkich. W rzeczywistości mamy hierarchię, w ramach której pracownicy otrzymują pierwsze informacje na temat swoich wyborów.

Mam przeczucie, że istnieje sposób na zredukowanie lub wyrażenie tego problemu w istniejącym, już rozwiązanym algorytmie. Ale nie wiem, które algorytmy zbadać. Jakie istniejące, specyficzne algorytmy byłyby najbardziej obiecujące?



3
A tak na marginesie, nigdy nie znalazłem algorytmu, który działałby na ten problem poza najprostszymi ograniczeniami w przeszłości poza „nakładaniem wszystkich na harmonogram losowo ignorując wszelkie inne ograniczenia i pozwalając im na zamianę lub zmianę w razie potrzeby”.

4
Na stronie JBoss Drools dostępne jest kompletne rozwiązanie: optaplanner.org - musisz skodyfikować ograniczenia harmonogramu, takie jak maksymalna liczba godzin tygodniowo itp.
BobDalgleish

Podejrzewam, że jest to równoważne z problemem SAT, który jest znany jako NP-zupełny, ale bez wątpienia istnieją dobre algorytmy, które uzyskują rozsądne wyniki.
David Conrad,

Odpowiedzi:


16

Algorytmy takie jak wyszukiwanie lokalne (wyszukiwanie Tabu , symulowane wyżarzanie , późna akceptacja ) działają bardzo dobrze na takie problemy.

Jak sugeruje Bob, jeśli pracujesz w Javie, spójrz na OptaPlanner (open source). Zobacz ten film na temat harmonogramu pracowników .


3
Czy możesz wyjaśnić algorytmy lub dodać linki do któregoś miejsca? Jeśli dodasz linki, dodaj również trochę informacji ze strony, która jest istotna.
Adam Zuckerman

Gotowy. Uwaga: wiele z nich wyjaśniono również na Wikipedii.
Geoffrey De Smet
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.