Welchen Algorithmus sollte ich verwenden, um eine automatische Personaleinteilungsfunktion zu erstellen?

18

Stellen Sie sich ein kleines lokales Unternehmen (in meinem Fall eine Hundekindertagesstätte) mit einigen Dutzend Teilzeitbeschäftigten vor. Ziel ist es, automatisch wöchentliche Personalpläne zu erstellen. Meine Frage ist, welche algorithmischen Ansätze für dieses Problem zu untersuchen sind.

Es sind viele Einschränkungen zu beachten, insbesondere (1) die Verfügbarkeit des Personals und (2) die Bedürfnisse jeder Schicht, nicht nur wie viele Mitarbeiter für jede Schicht, sondern auch die Fähigkeiten, die für jede Schicht benötigt werden (z. B. für eine bestimmte Schicht). Möglicherweise benötigen Sie jemanden, der mit dem Fahren vertraut ist, um Hunde abzuholen / abzugeben, einen anderen, der weiß, wie man Hunde badet, usw.).

Weitere Einschränkungen sind das Vermeiden oder Erfordernis bestimmter Personalkombinationen - möglicherweise aufgrund von Persönlichkeitskonflikten auf der einen Seite oder der Bedarf an Schulungen durch Osmose vom leitenden zum nachwuchskräfte auf der anderen Seite.

Auch gibt es Vorlieben zu berücksichtigen. Einige Mitarbeiter bevorzugen den Vormittag, einige zwei Tage hintereinander, anstatt Montag und Donnerstag usw. zu sagen. Wir wissen, dass wir nicht immer allen Vorlieben gerecht werden können. Tatsächlich haben wir eine Hierarchie, in der die Mitarbeiter die ersten Entscheidungen treffen.

Ich habe die Vermutung, dass es eine Möglichkeit gibt, dieses Problem in einem vorhandenen, bereits gelösten Algorithmus zu reduzieren oder auszudrücken. Aber ich weiß nicht, welche Algorithmen ich untersuchen soll. Welche existierenden, spezifischen Algorithmen wären am vielversprechendsten?

Ghopper21
quelle
3
Abgesehen davon habe ich noch nie einen Algorithmus gefunden, der für dieses Problem über die einfachsten Einschränkungen in der Vergangenheit hinaus funktioniert.
4
Auf der JBoss Drools-Website ist eine vollständige Lösung verfügbar: optaplanner.org - Sie müssen die Planungsbeschränkungen, wie z. B. die maximale
Anzahl von
Ich vermute, dass dies dem SAT-Problem entspricht, von dem bekannt ist, dass es NP-vollständig ist, aber es gibt ohne Zweifel gute Algorithmen, die vernünftige Ergebnisse erzielen.
David Conrad

Antworten:

16

Algorithmen wie die lokale Suche ( Tabu Search , Simulated Annealing , Late Acceptance ) funktionieren bei solchen Problemen sehr gut.

Wenn Sie mit Java arbeiten, sollten Sie sich, wie Bob vorschlägt, OptaPlanner (Open Source) ansehen . Sehen Sie sich dieses Video zum Thema Rosten an .

Geoffrey De Smet
quelle
3
Könnten Sie entweder die Algorithmen erklären oder Links zu einem Ort hinzufügen, der dies tut? Wenn Sie Links hinzufügen, fügen Sie bitte auch einige relevante Informationen von der Seite hinzu.
Adam Zuckerman
Getan. Hinweis: Viele davon werden auch auf Wikipedia erklärt.
Geoffrey De Smet