Q.
■準夜(準)がいる場合、長日勤(長日)をA及びBチームに各1名、夜勤(夜)をA及びBチームに各1名割当てる
■準夜(準)がいない場合、長日勤(長日)をA及びBチームに1又は2名合計3名、夜勤(夜)をA及びBチームに1名又は2名合計3名割当てる
■準夜(準)を1名割当てた場合、翌日に準夜(準)と同じチームの1名を深夜(深)に割当てる
■準夜(準)及び深夜(深)の割当ては、3交替制の職員を優先して行う
Ans.
言葉にして言うと難しいです。図にしてみましょう。
今3交代勤務者が深夜準夜の勤務をしたとすると、準夜の後深夜を誰かが行う必要があります。ところが、同じチームに3交代勤務者は一人のため、2交代勤務者が深夜勤務を代行する必要があります。本来は、2交代勤務者は、長夜明だけなのですが、3交代勤務者のサポートのために、深夜・準夜もシフトをこなす必要が出てきます。皆が一斉に変則2交代に移行すれば、必要ないのですが、なかなか簡単には行かない事情があるようです。
また、準夜が居れば、長日・夜勤者は、2名でよい、居なければ3名必要ということになります。
準夜+長日==3名
準夜+夜勤==3名
という制約式になります。==は、C言語表記で、等しい という意味です。
これを列制約で記述します。準夜+長日は、シフト集合で合成します。準夜+夜勤も同じく
シフト集合で合成します。
マウスホイールボタンを押すと、下のように、シフト集合の場合は、その要素が表示されます。
準夜が居た場合に翌日深夜
深夜が居た場合に前日準夜
は、ペア制約による記述となります。
0 件のコメント:
コメントを投稿