2025年2月19日水曜日

Q.休日、準夜(準)の職員がいる場合は、日勤の看護師4名をA及びBチームから同数程度を割り当てる 。休日で準夜(準)の職員がいない場合は、日勤の看護師3名をA及びBチームから同数程度を割り当てる

 Ans.

居る場合と居ない場合で記述されています。この場合、

日勤看護師4+準夜1==5

日勤看護師3+準夜0==4

となっていて、同じ値にはならないので、列制約では記述できないように見えます。

ただし、この他に

■準夜(準)がいる場合、長日勤(長日)をA及びBチームに各1名、夜勤(夜)をA及びBチームに各1名割当てる

■準夜(準)がいない場合、長日勤(長日)をA及びBチームに1又は2名合計3名、夜勤(夜)をA及びBチームに1名又は2名合計3名割当てる

という制約があり、
長日2+準夜1==3 夜勤2+準夜1==3
長日3+準夜0==3 夜勤3+準夜0==3

となっています。
これを勘案すると、

準夜1:長日2+休日日勤4==6
準夜0:長日3+ 休日日勤3==6

と、見事に同じ数になっています。本質的な意図は、むしろこちらの方ではないでしょうか? これで、ペア制約ではなく、列制約で記述出来ます。

これを実装すると、以下のようになります。
シフト集合は、



次に、A/Bチームの割り当てです。常に成立するのは、A/Bチームから1名以上という制約です。

一方、
準夜1:日勤4名:Aチーム2名、Bチーム2名以上
準夜0:日勤3名:Aチーム1名以上、Bチーム1名以上

となっています。これより、

    Aチーム人数日勤者数==準夜+1

となっている関係であることが分かります。こういう等式がある場合は、リニアペア制約が使えますが、今回は、列制約とペア制約を用いて記述しました。

■休日A/Bチームから1名以上 :列制約
■休日準夜が居るならば、Aチームは、2名 :ペア制約

Aチーム2名とすることで、自動的にBチームも2名になりますから、上の記述だけで十分です。必ず出来るかは、分かりませんのでペア制約は、ソフト制約としています。1名以上は、mustでしょうからハード制約としています。










0 件のコメント:

コメントを投稿