カレンダー上の祝日休みは、公休をつけるのではなく祝日(シフト)としたい。
というご要望がありました。祝日は、公休ではなく、次のような場合連続勤務とカウントするようにしたいとのことです。
例①
7月21日 入り
7月22日 明け
7月23日 祝(日勤扱い)
7月24日 祝(日勤扱い)
7月25日 公休
となり、もし20日が日勤であれば19日は必ず休みになります。(20日から24日で5連勤
となるため)
例②
7月22日 入り
7月23日 明け
7月24日 祝(日勤扱い)
7月25日 公休
ここで、日勤扱いとしていますが、ユーザの真の要求は、公休でない勤務が連続6日あってはいけないというこです。(惑わされてはいけません。祝を日勤集合のなかに入れてしまうと、列制約もおかしくなってしまいます。) ✓公休 の意味は、公休でない=公休以外のシフト になります。
これを使うことによって、一々集合定義する手間が省けます。
要は、今までの
A)明け →公休
という制約を
A’)明け →公休 または 祝
という制約にすればよいことが分かります。ですので祝というシフトを追加することにします。
また「公祝」という公休または祝 集合シフトを作ります。
次に祝というシフトの要件を考えます。
B)祝日 :祝が存在できる 公休は、存在してはならない
C)祝日以外:祝は存在してはならない 公休は、存在できる
従って、AをA'に変更、B,Cを記述追加をすればよいことになります。
制約は、以上ですが、祝日というは曲者で、カレンダ上の祝日が必ずしもその病院での祝日ではないというケースも想定されます。そこで、ユーザ祝日を年間で定義しておくとよいでしょう。
0 件のコメント:
コメントを投稿