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内で合算して、それをコピーするようにしています。
*その2からその5まで解説はあります。
GithubにオリジナルのExcelファイル、使用したExcelファイル、プロジェクトファイルを置いています。
0 件のコメント:
コメントを投稿