はじめに
様々な職場でシフト表を作成することがあると思います。シフト表の作成自体は単純な作業なのですが、人数が増えてくると割と時間が掛かる仕事で、忙しい管理者にとっては負担になるため、自身の職場で使えそうなシフト自動作成ツールを開発しました。
背景と課題
現在、私はコールセンターの管理者をしております。コールセンターの仕事で自動化できる作業はいくつかあると思いますが、シフト表もその1つです。単純作業ではあるものの、人数が増えていくと作るのに時間が掛かってしまうのが悩みでした。
<時間が掛かってしまう原因>
・各メンバーの条件が満たされているかチェックするのに時間が掛かる。
・1日毎の必要人数を考慮したときに、調整するのに時間が掛かる。
このような課題を、pythonの数理最適化向けのライブラリを利用することが解決できると思い、開発に取り組みました。
開発の目的
1日毎の必要人数と、メンバー毎のシフト条件、会社のシフトルールを守ってシフト表をPulpを使って自動作成。
シフト作成に必要な条件を定義
<稼働条件>
・シフトの時間帯は1つ
・稼働日は平日、土日祝
・年末年始(12月30日~1月3日)は休業
<従業員条件>
・メンバーによって週勤務日数の契約が異なる。(週4日勤務、週5日勤務)
・メンバーの休み希望を可能な限り反映する。
<制約条件>
・週の開始曜日は日曜日とする。
・従業員の週勤務日数は希望休が該当週に集中しない限り優先して守る。
・週6日勤務は回避する。
・週跨ぎ、月跨ぎでも6日連続勤務は回避する。
・日々の必要人数は揃える(今回は100名在籍で日々の必要人数は60名としました)
これらをすべて反映したシフトを短時間で作るべく開発に取り組みました。
前準備
・シフト希望表の作成
従業員名、週勤務日数、希望休がわかるように以下のようなシフト希望表をExcelで作成
コード
アウトプット

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

今後の課題
<稼働条件について>
今回はシフト時間が1パターンと単純化したモデルで作成しましたが、実際は2交代や3交代が多いため今後の課題としたいと思います。
<シフト希望について>
実際には『連続勤務を回避したい人』や『連続勤務は問題ないので連続休暇が欲しい人』など、シフトに対する希望が出てくるケースが多くあります。これについても、今後のブラッシュアップで組み込むことができればと思います。






