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?
quelle
Antworten:
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 .
quelle