初めての勤務表

意味のある勤務表ではないのですが、スケジュールナースの動かし方を手っ取り早く掴むために、最小の記述で、動く勤務表を作成してみます。

その前に、二つほどトピックです。

なぜ、PCで解くのか?

下は、サンプルフォルダに入っている数独プロジェクトです。(実際に難問が入っていて解く様子が見られます。)この問題は、フィンランドの数学者が3ヶ月かかって作った世界一難しい問題といわれているその世界では、有名な問題です。数独の名人でも、数日かかるとされているこの問題をスケジュールナースは、1秒もかからずに解く事ができます。
勤務表を解くアルゴリズムでも説明していますが、勤務表の込み入った拘束条件を満たす解の解法というのは、方程式を解くようなものではなく、基本的には
探索によるものです。その意味で数独のパズルとナーススケジューリングというのは、同じ種類の問題なのです。ただ、皆さんの抱えているナーススケジューリング問題というのは、実はこの数独を解く難しさからすると2桁から3桁程度難しいです。”難しい”と言う定義を詳しく説明する余裕がないので止めますが、本当に難しいのです。

そんな難しいナーススケジューリング問題に対して、紙と鉛筆、あるいはExcelで立ち向かおうとする人もいるかもしれませんが、名人の数日と一秒...何をいわんやかは、もうお分かりだと思います。問題は道具を使いこなせるか?その一点にあります。




道具を使いこなすために必要なこと

制約をきちんと文章で書く国語力と、中学で習った集合論が必要です。制約を文章できちんと書けないと、自分でも何をやっているのか分からない状態になりがちです。ツールを覚える以前の問題ですが、ここで躓く人が多いので、別章で詳しくコンピュータに分かる文章の書き方を説明します。

1.期間の定義

起動して、設定 −>期間の定義 をクリックすると下の画面になります。

最も最初に設定するべきは、スケジュール開始日スケジュール終了日です。下のマウスカーソル位置でクリックすると





カレンダが現れます。カレンダ上の日をマウスでクリックするとスケジュール開始日が入力されます。(青色フレーム上の < >で月が移動します。)


同様にしてスケジュール終了日も入力します。表示スタート日は、なにも入力しないままでOKです。(通常は自動設定されるままでOKです。)



2.シフトの入力

例として、深夜(S),日勤(N)、休み(Y)を設定します。下のように、S,N,Yを入力してください。名前は一文字でアルファベット(大文字、小文字を区別します。)のみです。

3.行Day制約

下のように、ポップダウンメニューで、S,N,Yを入力します。



入力が終わりました。


4.スタッフ定義の入力

適当な名前Aを入力します。先ほど設定した行Day制約をリンクします。



パターン制約1をリンクします。


これで、Aについて入力が終りました。後は、このラインをコピペしましょう。
Aからパターン制約1までをドラッグして、右クリックすると、下のようなメニューが出てきます。コピーを選択します。



下の青部となるようにドラッグして右クリックでメニューを出し、貼り付けします。



コピペ完了です。


下のように名前をA,B,Cに修正します。



5.求解

以上で、設定が終ったので、求解メニューで 求解ボタンをクリックすると



6.解表示

解が表示されます。 最小の記述で、とりあえず、動かすことが出来ました。

ところで、下の解は、めちゃめちゃのような気がしますね。

そうなんです。
実は、今までに記述したのは、

しか記述していません。

肝心の制約は、記述していないので、ソルバ(求解エンジン)は、自由に割り当てることができます。

制約がないということは、自由です。

その結果、めちゃめちゃのシフト表になってしまった訳です。


7.解の保存

今までの設定を忘れないように保存しておきましょう。設定のファイルをプロジェクトファイルと呼んでいます。プロジェクトファイルは、上のように解を求めた後に保存されると、解も一緒に保存されます。読み代・保存・終了メニューで、適当な自分用のフォルダに名前をつけて保存しておきます。



本サンプルは、プロジェクトサンプルフォルダの中に入っています。