勤務割当

このプログラムは看護師の交代勤務割当を自動化するもののデモ版です。
三交代勤務と日勤勤務の混合です

次のような制約の元に計算しています。
日勤者の夜勤人によって勤務可能設定できる
勤務総日数上限22日。人によって設定変更可能
日勤日数上限20日。人によって設定変更可能
夜勤回数上限9日。人によって設定変更可能
準夜勤回数上限5日。人によって設定変更可能
深夜勤回数上限5日。人によって設定変更可能
連続勤務5日
勤務間隔8時間以上。日勤→深夜、準夜→日勤 はできない
前月との関係月をまたがる連続勤務、勤務間隔の制約も満たす
主任必須どの勤務時間帯でも主任クラス以上の看護師が必要
必要role何らかの資格を持つ人が必要なら設定できる
日勤者の夜勤人によって勤務可能設定できる

 

速度

病棟の規模:必要看護師数・在籍看護師数、資格保有者必要数、資格保有者在籍数によって 大きく変わります。必要数が多いほど、在籍数/必要数が少ないほど時間がかかります。
希望勤務が適度にあると全く無いよりも早くなります!!
私の環境(Intel-core i3,ubuntu,nginxの環境で9秒、 AWSのt2.microで3秒程度です。
厳しい条件(在籍数/必要数が小さい)では4分ほどかかることが有ります。
  1. ある病院での実態をそのまま使っているため、勤務表での表現が日勤、準夜などではなく、 コードで表されています。記号一覧をみるとわかります。
  2. 実用に移すには以下の修正が必要です  
    記号の修正
    病院の実態にあった記号にする。同時にそのシフトの勤務時間を設定する
    記号のシフトをプログラムに反映
    制約条件の計算に使うパラメータを記号表から作り出す部分のプログラムの修正
    制約条件のプログラム化
    上記以外の制約条件が有る場合及び上記の制約が不要な場合はプログラムの修正が必要