自動スタッフスケジューリング機能を作成するには、どのアルゴリズムを使用する必要がありますか?


18

数十人のパートタイム従業員がいる小さな地元のビジネス(私の場合は犬の託児所)を想像してください。目標は、毎週のスタッフスケジュールを自動的に作成することです。私の質問は、この問題についてどのアルゴリズム的アプローチを検討するかについてです。

心に留めておくべき多くの制約があります。主に(1)スタッフの可用性と(2)各シフトのニーズ。各シフトのスタッフ数だけでなく、各シフトに必要なスキル(例えば、特定のシフト、犬の送迎を行うための運転方法を知っている人が必要な場合があります。また、犬の入浴方法を知っている人が必要な場合もあります。

他の制約としては、特定のスタッフのコンボを回避または必要とすることなどがあります-おそらく一方の人格の衝突、または他方では先輩から後輩のスタッフへの浸透によるトレーニングの必要性が原因です。

また、考慮すべき設定があります。一部のスタッフは、月曜日や木曜日などと言うよりも、2日連続で午前中を好む場合があります。実際、従業員が自分の選択を最初に受ける階層があります。

この問題を既存の解決済みのアルゴリズムに還元または表現する方法があると思います。しかし、どのアルゴリズムを探索するのかわかりません。どの既存の特定のアルゴリズムが最も有望ですか?



3
余談ですが、「他の制約をランダムに無視し、必要に応じてスワップやシフトを許可する」スケジュールを超えて、過去の非常に単純な制約を超えてこの問題に有効なアルゴリズムを見つけたことはありません。

4
JBossのDroolsのサイトから入手できる完全なソリューションがあります:optaplanner.orgは -あなたは、このような週あたりの最大時間などのスケジュールの制約、などを成文化する必要がある
BobDalgleish

これは、NP完全であることが知られているSAT問題と同等であると思われますが、合理的な結果を得る良いアルゴリズムは間違いありません。
デビッドコンラッド14

回答:


16

ローカル検索(タブー検索シミュレーテッドアニーリング遅延受け入れ)などのアルゴリズムは、このような問題に対して非常にうまく機能します。

Bobが示唆するように、Javaで作業している場合は、OptaPlanner(オープンソース)をご覧ください。従業員の名簿作成に関するこのビデオを参照してください。


3
アルゴリズムを説明するか、そうする場所にリンクを追加してください。リンクを追加する場合は、関連するページから情報を少し追加してください。
アダムザッカーマン14

できた 注:これらの多くはウィキペディアでも説明されています。
ジェフリーデスメット14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.