2021年11月2日火曜日

塾の時間割作成問題その1

 https://qiita.com/e-yudana/items/dab6bc76d9ff41d551f5

を解いてみます。

スケジュールナースⅢにこの問題をどのようにマッピングさせるかが、まず最初の問題です。

講師の勤務希望は下のようになっています。1日を4Phaseに分けると良さそうだという

ことが分かります。



また、担当科目は、

となっています。ということで、フェーズ-タスクタイプの勤務表にすれば良さそうだ、ということが分かりました。

ゴールがあった方が分かりやすいと思います。
下記が実装したプロジェクトの様子です。

イメージし易くなったのではないでしょうか?

月から土まで、1限から4限まで、必要な人数を過不足なく確保すればよい、という問題です。
ただし、国語とか数学のスキルが必要なので、スキルを持った人を確保する必要があります。また、その人数は、各日、各限で違います。
この問題は、たまたま、受講生と講師が1-1でマッピングされるので、この形式にマッピングできました。(受験生と講師のマッピングは、ほぼ自明扱いとしています。。受験生の名前は、入力不要です。)

 現スケジュールナースⅢのユーザは、大半がシフトタイプタイプですので、少し奇異に感じる方もいるかもしれません。フェーズタスクタイプ型というのは、1日のうちで、複数の仕事を行う場合に適した勤務表です。予定が、タスクと、シフトと二つあるのが特徴です。マニュアルはこちら

Pythonは、全く使っていません。GUIのみで解くことは可能です。

問題は、

どのようにしてExcelから上記プロジェクトにマッピングするか?

です。最も近いExcelは、タスク勤務表4Phaseとタスク勤務表2Phaseスキル付きです。
これらを作業フォルダにコピーしておきます。下記はインストールしたスケジュールナースⅢで、ファイルを開くで、全てのファイルで、Excelファイルを表示させています。


タスク勤務表4Phaseを編集します。最初は、スタッフ名です。


次に稼働日です。月曜から土曜なので、2021年11月1日-11月6日に設定しました。

表示開始日は制約開始日にしました。不要な予定はクリアします。


<タスクスキル属性>

このシートは、タスク勤務表4Phaseにはありません。タスク勤務表2Phaseスキル付きからコピーして、次のように編集します。空き時間は、その名の通り空き時間です。通常の、業務形態の場合、なんらかのタスクで埋められるのが普通ですが、このプロジェクトの場合、空きタスクを定義しないと、解がない状態になってしまいます。全てのスタッフがこのスキルを持つ必要があります。


<工程人数>

編集して以下のような表にします。


手で行うのも大変なので、受講管理表データをExcel内で合算して、それをコピーするようにしています。








以上で、整形したExcelをインポートする準備が完了しました。

*その2からその5まで解説はあります。
GithubにオリジナルのExcelファイル、使用したExcelファイル、プロジェクトファイルを置いています。

0 件のコメント:

コメントを投稿