2. 社会福祉施設 勤務表設計例



児童福祉法に基づく重症心身障害をお持ちの方の障害者入所施設であるとともに、医療法に基づく病院として性格と二つの機能を合わせもっています。

そのためか、制約仕様は、下記のように大変に複雑です。

1 制約仕様

○基本的な制約

スタッフの種別
グループがA〜Hまであり、
A:11名
B:3名
C:10名
D:6名
E:5名
F:3名
G:9名
H:1名
の計48名
さらにA〜DとE〜Hがグループ化されてます。
A〜Dのグループをx
E〜Hのグループをy
とします。

グループ スタッフ数 グループ区分け
A 11 グループx
B
C 10
D
E
F グループy
G
H




○勤務種別


種別 表記 グループxからの人数 グループyからの人数
1: ハ 3 2
2: @ 2〜3 1
入浴なし: ? 2〜3 1
3: レ手 1
4: 日
5: レ 1 1
6: オ▽ 1
7: オ 4 1
8: オマル 2 2
9: ト 2 2
10: トマル 2 2
11: ○(休み)

○個別制約


・グループxの勤務9、10はA、Bから1名、C、D、Hから1名
・グループyの勤務9、10はE、Fから1名、Gから1名
・勤務2は基本的には3名だが人数不足時は2名でも可
・勤務4は他の勤務が補充された場合に補充
・勤務11の間隔は最長5日(5連続出勤まで)
・勤務9の翌日は勤務10
・勤務10の翌日に勤務9はできない
・グループxの勤務1は3名中 AまたはCから1名含める
・グループxの勤務7は4名中 AまたはCから1名含める
・入浴Bグループ日の勤務2はA、C、E、Gから配置する
・勤務3と勤務5はA、B、E、Fから配置


○曜日に関して


 ・全日になると思います。
 ・入浴について
  入浴なし:水
  入浴A:日、火、金
  入浴B:月、木、土
  が基本ですが、変わることがあります。

○追加制約
・xx(スタッフ)を勤務yから一時的に外す
・勤務yにxx(スタッフ)とyy(スタッフ)を同日に配置しない
・スタッフxxはグループx or yにも配置可
xx(スタッフ)の勤務αはグループx or yとする
一時的に特定の日のみ配置人員の増

2 制約設計

2.1 シフトの割付


勤務シフトの種類が11種あるので、A、B,C.. と名前をつけていきます。(WとXは使えません。日本語は使えます。) 
マニュアルで入力するのみで、自動割付をしない勤務シフト(年休等)については、自動スケジュールしない にチェックします。




2.2 ありえる勤務シフトを列挙する


スタッフ毎にありえるシフトを列挙します。ここで入力するのは、自動スケジュールするシフトのみです。
今回は、全スタッフ同じ勤務形態なので、全スタッフが次の毎日制約1を呼び出すことになります。



2.3 グループを定義する





上のグループXは、次のような包含関係になっています。



ここで、X配置可能とは、グループとしては、E-Hに属しますが、Xとしても配置してよいスタッフを指します。両方の職能を持ったスタッフです。
グループの所属および、両方の職能の有無 等は、各スタッフが各々持っている性質(プロパティ)であると考えられます。
スタッフのプロパティ、すなわち、名前、行制約、所属グループ、勤務の有無、両方の職能を有無は、下のページで記述します。運用中に、様々な変更が必要になることが予想されますが、スタッフのプロパティ変更で済めば、それに越したことはありません。





上で定義したグループXは、本来の所属グループOXの他に、グループOYの所属スタッフも含むことに注意してください。
たとえば、北風しおりさんは、本来の所属は、グループEで、本来は、制約仕様のグループyのスタッフです。しかしながら、X配置可能 というプロパティを持つ事で、YグループのみならずXグループにも所属することになります。

複数のグループに所属する場合、注意!

勤務7を例としてみましょう。

Q.勤務7は、仕様によれば、グループX 4人、グループY 1人です。ですから、下の部のように 4-4、1-1とすれば、下の計 5-5の部分は不要になるのでは?

A. 残念ながら、の通りに記述してしまうと、解がない、事態が考えられます。  分かりやすさの為に、全ての人が、グループXY属性を持っている状況を仮定します。そうすると、グループXは4人、
グループYは、1人という記述は、実は同じ全体集合に対する記述であることになります。同じ集合に対して、一方で4人、一方で1人を要求する訳ですから制約矛盾となり解は存在しません。以上は、便宜上の極端な例です。実際は、そういう場面は少ないとは思いますが、無用な解がないトラブルを避けるために、
独立でないグループ制約では、最大最小を同時に記述しない、といったルールにすることをお勧めします。




他の勤務シフト1/2/5/7/8/9/10についても、同様な記述にしています。 


できれば3人をどう記述する?

勤務2 グループXは、できれば3人です。最小で2人です。まず、ハード制約で2人を保証します。(ソフト制約レベルに何も記述しないとハード制約になります。)

次に同じ、記述で、2->3にし、ソフト制約レベルに適当なレベルを入力します。レベルが高くなるほど、そのエラー(制約を満たせないこと)個数が少なくなるように配置されます。レベルは7まで指定できますが、通常は、2-4の間を勧めます。 

Q. ハード制約は必要ですか?
A, 必要です。ソフト制約は、常に満たせるとは限りません。もしハード制約の記述がない場合、ソフト制約が満たせない状況では、何も最小2を保証する記述が無くなってしまいます。


なお、 上の記述により、計は、自動的に、できれば4、最小3に制約されますから、緑部記述は冗長です。行削除してください。

〜から配置する の記述方法は?

勤務3と勤務5はグループA、B、E、Fから配置するという制約は、グループA/B/E/F以外のスタッフを禁止にすればよいです。 


特定日だけ、増員する

増員日と その増員日以外という二つの制約で、一般と増員日の制約を分けます。



曜日の定義を変える

入浴Bの基本は、月木土ですが、月によっては変わることがあります。
そのような場合の設定の仕方です。
まず、最初に次のページを開きます。



いままでの定義をクリアします。変更したい行(入浴B日)をクリックすると、下のようなカレンダが現れます。
クリアを押すと、その行全体がクリアされます。




次に曜日を選択します。 Ctrlキーを押しながら、マウスをドラッグすると、連続した曜日の入力が簡単です。追加ボタンを押すと、追加されます。



さらに、別な月も追加したい場合は、別な月のページを開いて、追加ボタンを押します。このとき、追加動作は、ハイライトした行に整列して行われます。(セル列を再選択する必要はありません。)


”入浴B日”の定義が出来たので、それを今までの、月木土 から置き換えればOKです。
制約ページでは、”入浴B”のみを使っているので、再求解すると、置き換わった定義での解になります。


勤務1増員日も、同様にして行うことが出来ます。

ノート:
今月固有の曜日の定義で、定義した曜日は、来月になっても変わりません。従って、毎月定義し直す必要があります。
増員日の定義が古くなっても、動作に支障がありません。(増員日= 空集合のとき、増員日以外=全日 として動作します。)

曜日の変更 動画説明

3 出力( 印刷、CSV出力)

フィルタ出力が可能です。 下記のように属性一番上の空欄をクリックすると全体表示になります。



グループAに選択すると、グループAプロパティを持つスタッフだけの表示になります。




右画面上で、ダブルクリックすると、その地点の拡大になります。(トグルスイッチになっています)




右クリックで、メニューが出ます。
CSV出力は、
選択がないとき、全体出力.csv
選択したとき、 例えば、 グループA.csv

として、プロジェクトフォルダに出力されます。(CSV出力は、Excelで読み込めます。)
印刷も、ほぼ画面表示通りになります。


サブフィールド表示について

上の画面で、勤務1 グループXは、3人とある行が4行あります。その中で サブフィールド グループXは、もともとのスタッフ集合が、グループXなので、サブフィールドなしと同じになります。
グループXとグループOXの差は、X配置可能プロパティにあります。 X配置可能プロパティは、グループEだけに設定しているので、X配置可能と同じ値になっています。

4.追加制約

4.1 職員xxは、勤務yから外す(妊娠等で、出来ない勤務をつけないように)


スタッフ毎に禁止する勤務を記述します。

たとえば、下で、永田さんは、 夜勤不可 かつ オマル不可 かつ オ▽不可  かつ オ不可 になります。


同様に、

 についても、該当のスタッフに追加するだけで、個人毎に、禁止勤務にする事が可能です。

制約は、次のように記述しています。


4.2勤務y にXxとXxを同日に配置しない(新人同士の早番を避ける)


これもスタッフプロパティで、該当スタッフに、”新任” をつけます 


早番の新任の数を最大1名とすることで、新任が2人以上配置される事を防ぎます


4.3勤務y にXxとXxを同日に配置しない(準看同士の夜勤を避ける)


正看、準看、支援というプロパティで記述します。制約については、4.2と同様に、準看は最大1名にすることで対応しています。(上図参照)


4.4 勤務9/10にBx,Dx,Fx,Hxから同日に3名勤務できない。(夜勤に男性を3名配置しない)

BxDxFxHxは、全員男性です。男性・女性というプロパティを作成し、勤務9/10の男性の勤務は2名までという風に制約します。





4.5 月〜金(祝除く)9:00 -17:30 A1A2B1E1F1のいずれかが勤務していること

4.6 土日祝 9:00の時点で A1A2B1B2C1C2E1F1G1のいずれかが勤務していること


”平日管理者”、”休日管理者” スタッフプロパティを作成し、それについて制約します。

9::00-17:30 勤務は、レ手または、日ですから、勤務シフト集合eは、
 勤務e=レ手 または日
になります。

9:00の時点で、勤務していシフト集合gは、
 g=ハ または、@マル または 日マル  または レ手 または 日 または レ
になります


4.7 グループ2男性入浴日(A)の勤務(ハ オ▽ 日マル)の内4名は、職員Xxであること

”入浴条件” というプロパティを作成し、入浴A日に対して 勤務集合f=ハ オ▽ 日マル に対して4名以上を制約します。

4.8 AxBxExFxの勤務9の前日は、指定がない限り勤務5

「指定がない限り」 の実装は、ソフト制約を使います。これは、「通常」 や「基本」 という言葉でも同様です。こういう言葉のときは、
 そのルールを打ち破るパターンを禁止にして、なおかつ ソフト制約化すればよいのです。勤務9はI、勤務5は、Eです。勤務9の前日が勤務5以外ですから、
下のように記述します。


4.9 △日には、勤務11(休み)を入れない (会議等で必須勤務)

”会議参加”というスタッフプロパティを作り、そのプロパティを持つ人の会議日(期間の定義ページで設定)の休みを禁止にします。
ただし、その日に予定が書き込まれていた場合に制約矛盾になってしまうので、ソフト制約としています。


4.10 職員Xxは、グループzに配置可

グループzを作成する代わりにスタッフプロパティ”応援”を作成しました。このプロパティを持った人は、応援を予定入力として入れることができます。下の例で、応援を記入しない日は、グループHの1スタッフとして勤務がアサインされます。

予定入力例


解例


4.11 看護師長 "基本"勤務4

基本は、勤務4で、スタッフリソースが足りないとき、もしくは、予定が書き込まれたときは、その勤務となるようにします。その為には、勤務4を弱めのソフト制約とします。すると、それよりも優先度の高い制約が優先的に配置されるので所望の動作とすることができます。

シフトd(=休みと勤務4以外)を禁止にしています 

4.12 指定勤務

4.1項と、同じ考え方で対応可能です。

4.13 公休多い

これは、スタッフプロパティで指定します。公休数のMIN値しか制約していません。

4.14 提案(スタッフのQOL改善)

夜勤明けに関して、制約を追加しています。よくあるスタッフ側からの要望を加えています。

夜勤明けは、基本は休み、早番は禁止、休みが不可なら遅番、遅番も不可なら日勤 という優先度の実装にしています。

Day Day+1 制約レベル
明け 早番 禁止
明け 休み 基本
明け 遅番 2が不可ならば
明け 日勤 3が不可ならば
遅番 早番 禁止

不要でしたら下記でQxxのソフト制約レベルを1とすると制約が外れます。(求解で行ソフト制約1をチェックしない)

4.15 夜勤回数のバランス

現状の解を見るとグループ毎に、夜勤回数に偏りが見られます。

Gグループは、夜勤5回が3人います。夜勤5回の人は、Gグループのみに集中しています。(他のグループには夜勤5回の人はいません。)



Aグループは、比較的余裕があります。師長に夜勤は入っていないのは、そのためであると解釈できます。


夜勤に関しては、グループがABから1名、CDHから1名、EFから1名、Gから1名と、グループが限定されています。他のグループからの融通が効けば、バランスの改善が可能になると考えられます。