2025年8月20日水曜日

Q.夜勤と当直の行制約で以下を実現するにはどうしたらよいでしょうか?

 Q.夜勤と当直の行制約で以下を実現するにはどうしたらよいでしょうか?

    当直数を個人ごとに最大―最小パターンで最大数と最小数を決める

    夜勤数も同様に最大―最小パターンで最大数と最小数を決める。

    当直数と夜勤数の合計を最大―最小パターンで最大数と最小数を決めて、その範囲でシフトを割り当てる。

スタッフ名1は月当たり当直を1~2回、夜勤を1~0回、当直と夜勤の合計が1~2回の勤務条件とした場合。

月当たりの当直数と夜勤数のパターンとして次の4パターンになるかと思います。

当直(1~2回)

夜勤(0~1回)

計(1~2回)

 

添付したプロジェクトで試しに当直と夜勤をシフト集合で深夜としてみましたが、深夜のシフトが割り当てられてしまいます。

上表の4パターンのどれかに当てはまるシフトを実現するにはどのように制約すればよいのでしょうか?


Ans.

考え方は、正しいです。ただし、実装が間違っていました。

以下の制約で「深」は、意図した合成集合「深夜」になっていません。

合成シフト集合は、最後の方にあります。

正しくは、これを用いて、次のように制約すべきです。



スタッフプロパティシートは、

求解して、意図通りの解となることを確認しました。

<網羅テストの仕方>
ただし、4つのパターンのうち一つの解しか確認できなかったので、予定をソフト制約として、テストを行います。

予定をソフト化したので、適用にチェックして求解します。

全4パターンの確認が出来ました!


スケジュールナースTODO:
ラベルのシフト合成集合の明示。




0 件のコメント:

コメントを投稿