Q.夜勤と当直の行制約で以下を実現するにはどうしたらよいでしょうか?
①   
当直数を個人ごとに最大―最小パターンで最大数と最小数を決める
②   
夜勤数も同様に最大―最小パターンで最大数と最小数を決める。
③   
当直数と夜勤数の合計を最大―最小パターンで最大数と最小数を決めて、その範囲でシフトを割り当てる。
例
スタッフ名1は月当たり当直を1~2回、夜勤を1~0回、当直と夜勤の合計が1~2回の勤務条件とした場合。
月当たりの当直数と夜勤数のパターンとして次の4パターンになるかと思います。
| 当直(1~2回) | 夜勤(0~1回) | 計(1~2回) | 
| 2 | 0 | 2 | 
| 1 | 0 | 1 | 
| 1 | 1 | 2 | 
| 2 | 0 | 2 | 
添付したプロジェクトで試しに当直と夜勤をシフト集合で深夜としてみましたが、深夜のシフトが割り当てられてしまいます。
上表の4パターンのどれかに当てはまるシフトを実現するにはどのように制約すればよいのでしょうか?
Ans.
考え方は、正しいです。ただし、実装が間違っていました。
以下の制約で「深」は、意図した合成集合「深夜」になっていません。正しくは、これを用いて、次のように制約すべきです。
スタッフプロパティシートは、
<網羅テストの仕方>
ただし、4つのパターンのうち一つの解しか確認できなかったので、予定をソフト制約として、テストを行います。



 
0 件のコメント:
コメントを投稿