(57)【要約】【課題】  スケジュール作成支援システム、スケジュール作成方法、およびプログラムを提供すること。【解決手段】  本発明の方法は、スタッフのシフトについて課される拘束条件を満足したパターン・データを格納するステップと、前スケジュール期間のデータと、スタッフの所定の期間の勤務希望ならびに決定勤務データを、パターン格納手段から読込まれたパターン・データと前記スタッフの勤務希望データとを読出して比較し、一致が多い場合に低いスコアを与えてスコアリングする。スコアリングの結果与えられた前記スコアに対応して昇順に並べた、もしくはスコア０のものだけを対象としたパターン・データをレコードとして登録してシフト可能データを生成し、セグメント期間ごとに格納している。生成されたシフト可能データは、対象スケジュール期間についての全スタッフにとって最適な勤務シフト・スケジュールを与えるために使用される。【選択図】  図８
2006277060.tif 000002
【特許請求の範囲】
【請求項１】
業務スケジュールを決定するための情報処理装置を使用するスケジュール作成支援システムであって、前記システムは、
スタッフのシフトについて課される拘束条件を満足した対象期間またはそれよりも短いセグメント期間についてのパターン・データを格納するパターン格納手段と、
前記スタッフの所定の期間の勤務希望データおよび決定データを読出し、前記パターン格納手段から読込まれた前記パターン・データと比較して、一致が多い場合に低いスコアを与えてスコアリングし、前記スコアに対応して昇順に前記パターン・データをレコードとして登録し、シフト可能データとしてシフト可能データ格納部に前記所定のセグメント期間ごとに格納するパターン・データ配列手段と、
業務遂行レベルの基準を与える目的関数を最小化するように、各前記スタッフのシフト可能データのレコードを用いて、スタッフ全員の前記対象期間にわたる最適な勤務シフト・データを生成するスケジュール生成手段と
を含むスケジュール作成支援システム。
【請求項２】
前記勤務希望データおよび決定データを前記パターン・データと比較し、すべてが一致するパターン・データを選択してシフト可能パターンを生成する手段を含む、請求項１に記載のスケジュール作成支援システム。
【請求項３】
前記スケジュール生成手段は、前記拘束条件を充足するセグメント期間単位の部分解を、前記シフト可能データをレコード単位に目的関数最小化を達成できる順にソートした順に検索し、スコアリングすることにより選択して生成する拘束条件充足手段を含む、請求項１または２に記載のスケジュール作成支援システム。
【請求項４】
前記スケジュール生成手段は、所与のスケジュールにおける前記スタッフ間での業務遂行レベルを、同一の日付に含まれる同一の勤務識別子が割当てられた業務遂行レベルに関するスタッフのスキル・グループ・データを使用してスタッフの数と、異なるスキル・グループに含まれるスタッフの勤務識別子を比較して得られるグループ間の適正分布と、スタッフ間の関係が業務遂行レベルに与える影響を登録したペアリング・データに基づく異なるスタッフのグループ・データとその適正分布を計算することにより、前記目的関数の値を決定する業務遂行レベル決定手段を含む、請求項１〜３のいずれか１項に記載のスケジュール作成支援システム。
【請求項５】
前記グループ・データについて各グループ・データに帰属されるスタッフの各シフト日の各勤務識別子を使用してシフト日に対応する割当人数の上下限値を設定するレベル・データを含み、前記レベル・データを参照して同一の日付に含まれる同一の勤務識別子が割当てられたスタッフの数を全てのグループ・データについてカウントし、前記上下限値条件の範囲からの距離で業務遂行レベルを与える、請求項１〜４のいずれか１項に記載のスケジュール作成支援システム。
【請求項６】
前記拘束条件充足手段は、前記所定の期間のスケジュールを、前記目的関数の最小化を達成させるシフト可能データに対して連続するシフト可能パターンを連結させてスケジュールの期間を延長するシフト期間延長手段を含む、請求項３〜５のいずれか１項に記載のスケジュール作成支援システム。
【請求項７】
前記スケジュール決定手段は、前記連結された直後のシフト可能パターンについて前記目的関数の値を推定または決定する、請求項３〜５のいずれか１項に記載のスケジュール作成支援システム。
【請求項８】
業務を行うスタッフのスケジュールを決定するための情報処理装置を使用するスケジュール作成支援方法であって、前記方法は、前記情報処理装置に対して、
スタッフのシフトについて課される拘束条件を満足した対象期間またはそれよりも短いセグメント期間についてのパターン・データを格納するステップと、
前記スタッフの所定の期間の勤務希望データおよび決定データを読出して、パターン格納手段から読込まれた前記パターン・データと比較し、一致が多い場合に低いスコアを与えてスコアリングし、前記スコアに対応して昇順に前記パターン・データをレコードとして登録してシフト可能データとしてシフト可能データ格納部に前記セグメント期間ごとに格納するステップと、
業務遂行レベルの基準を与える目的関数を最小化するように各前記スタッフのシフト可能データのレコードを選択して、スタッフ全員の前記対象期間についての最適な勤務シフト・データを生成するステップと
を実行させる、スケジュール作成支援方法。
【請求項９】
前記勤務希望データおよび決定データを前記パターン・データと比較し、すべてが一致するパターン・データを選択してシフト可能パターンを生成するステップを含む、請求項８に記載のスケジュール作成支援方法。
【請求項１０】
さらに、前記拘束条件を充足するセグメント期間単位の部分解を、記前記シフト可能データをレコード単位に目的関数最小化を達成できる順にソートした順で検索し、スコアリングすることにより前記シフト可能データをレコード単位に選択して生成するステップを実行させる、請求項８または９のいずれか１項に記載のスケジュール作成支援方法。
【請求項１１】
所与のスケジュールにおける前記スタッフ間での業務遂行レベルを、同一の日付に含まれる同一の勤務識別子が割当てられた業務遂行レベルに関するスタッフのスキル・グループ・データを使用してスタッフの数と、異なるスキル・グループに含まれるスタッフの勤務識別子を比較して得られるグループ間の適正分布と、スタッフ間の関係が業務遂行レベルに与える影響を登録したペアリング・データに基づく異なるスタッフのグループ・データとその適正分布を設定することにより、前記目的関数の値を決定するステップを実行させる、請求項８〜１０のいずれか１項に記載のスケジュール作成支援方法。
【請求項１２】
前記グループ・データについて各グループ・データに帰属されるスタッフの各シフト日の各勤務識別子を使用してシフト日に対応する割当人数の上下限値を設定するレベル・データを含み、前記レベル・データを参照して同一の日付に含まれる同一の勤務識別子が割当てられたスタッフの数を全てのグループ・データについてカウントし、前記上下限値条件の範囲からの距離で業務遂行レベルを与えるステップを実行させる、請求項８〜１１のいずれか１項に記載のスケジュール作成支援方法。
【請求項１３】
処理を行っているスタッフの前記所定の期間のスケジュールを、前記目的関数の最小化を達成させるシフト可能データに対して連続するシフト可能パターンを連結させてスケジュールの期間を延長するステップを実行させる、請求項８〜１２のいずれか１項に記載のスケジュール作成支援方法。
【請求項１４】
前記連結された直後のシフト可能パターンについて前記目的関数の値を推定または決定するステップを実行させる、請求項８〜１３のいずれか１項に記載のスケジュール作成支援方法。
【請求項１５】
請求項８〜１４のいずれか１項に記載の方法を実行させるためのコンピュータ実行可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、勤務管理技術に関し、より詳細には、複数のスタッフに対して割り当てられる最善のスケジュールを提供することを可能とするスケジュール作成支援システム、スケジュール作成方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、企業、病院、飲食店などでは、膨大な人数のスタッフが各スタッフの勤務環境を維持しながら交替で一定の勤務にあたる業務形態が取られている。特に病院、警備会社、治安要因、飲食店などでは、スタッフ各個人の能力に依存してスタッフを配置しなければならないことが多く、単に人数を割当てれば目的に業務を達成することができる、という状況ではない。
【０００３】
例えば、病棟看護師の勤務表作成には、これまでもかなりの時間と労力が必要とされており、多くの場合にはすべての条件を満たす勤務表の作成が難しいとされている。このような状況の中で、我が国においては、スケジューリング・アルゴリズムの利用がまだ一般的ではなく、シフト・テーブルを作成するために非常に多くの時間と労力が費やされているのが現状である。この場合、特に問題となるのは、スタッフの労働負荷や休日希望といった個々の要望を考慮ながら、必要な人数と、スタッフのスキル・レベルを考慮して各シフトに割当てなければならないことにある。これが、効率的に改善出来ない場合には、各スタッフの労働環境に対する不満が蓄積し、退職や転職などの引き起こし、これがさらにスタッフの労働環境を悪化させるという悪循環を発生させてしまっていた。
【０００４】
このため、これまで勤務表作成の問題を少しでも解決できるよう、効率のよいスケジューリングのアルゴリズムの研究開発が必要とされてきている。しかしながら、多くのものはスケジューリング期間を１〜２週間のブロックに分けて扱っていたり、スケジューリング期間が１週間または２週間と固定されているものであった。また、限られた種類のシフトだけ働くナースを対象としていたり、勤務種類のシフトが周期の長いローテーションを対象にしたものであった。
【０００５】
また、特開２００３−２８８３８８号公報（特許文献１）では、屋台方式の作業者に対して、勤務表と作業者のタクトタイムとから習熟曲線を算出して提示する作業支援システムが開示されている。特許文献１に開示された技術は、すでに定められた勤務表とタクトタイムとを使用して作業スキルを向上させるため成り行きタクトタイムを表示させるものであって、勤務表を作成するものではない。
【０００６】
特開２００２−９９６８３号公報（特許文献２）では、勤務表を構成するセルに自動的に勤務記号を割り振るために行または列の一方に担当者を設定し、他の構成要素として日付を設定した勤務表を作成するに際して、乱数を発生させ、割り振りを行う各行および各列ごとに発生した乱数に基づいて、割り振り開始位置を決定する技術が開示されている。
【０００７】
この方法でも勤務表を作成することが可能ではあるが、都度乱数を発生させて勤務記号を割り振るのでは、労働条件や各人の希望などを考慮した場合、一定の束縛条件を満たすための計算時間のスケーリングが予測出来ず、効率良く勤務表を作成するということはできない。
【０００８】
特開２０００−９９５６９号公報（特許文献３）では、勤務表作成者の負担を軽くするべく、入力された作成条件に基づいて、出勤区分と支援分類に従い休暇区分との対応関係が登録されたテーブルと、この対応関係に基づいて勤務表の内容を支援分類に従い出勤休暇区分ごとに集計し、集計表を作成する集計表作成手段と、勤務表および集計表を表示する表示手段とを含み、作成条件に違反している場合に違反判定手段が集計結果に対して警告表示を行う警告表示手段とを含む勤務表作成支援システムを開示している。特許文献３に記載された技術を使用すれば、勤務表に配置された出勤日数が作成条件を超えている場合に勤務表作成者に対して警告を与え、この結果、勤務表作成の効率は向上するとはいえるものの、それ以外の条件までも含めて勤務表を作成する点については何ら開示するものではない。また、警告が与えられた場合の処理についても、勤務表作成者が再度勤務表の配置を全体的に見直さなければならず、全体的に配置を見直したからといって、次に満足される勤務表を提供出来るという保証はまったくない。
【０００９】
さらに、特開２０００−５７２１１号公報（特許文献４）では、携帯端末を使用して本人確認を行い、本人性の確認が取れた者の勤務状況を把握して管理センタに送信して勤務状況を集計するリモート勤務管理方法を開示している。この方法は、勤務者またはスタッフの勤務状況を、管理センタに格納された勤務表と照合してその勤務状態を管理するものであって、管理センタに格納されるべき勤務表を作成するものではない。
【非特許文献１】V. L. Smith-Daniels, et al., “Capacity management in health care services: Review and future research directions”, Decision Sciences, vol. 19, pp.889-919, (1988)
【非特許文献２】U. Aickelin, et al., “Exploiting problem structure in a genetic algorithm approach to a nurse rostering problem”, Journal of Scheduling, vol. 3, pp.139-153 (2000)
【非特許文献３】P. C. Bell, et al.,“A visual interactive decision support system for workforce (nurse) scheduling”, INFOR, vol. 24, pp. 134-145 (1986)
【非特許文献４】L. K. Chan, et. al., “Implementation problems of a nurse preference mathematical programming approach to scheduling”, Congressus Numerantium, vol. 56, pp. 251-260 (1987)
【特許文献１】特開２００３−２８８３８８号公報
【特許文献２】特開２００２−９９６８３号公報
【特許文献３】特開２０００−９９５６９号公報
【特許文献４】特開２０００−５７２１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
すなわち、これまで多数のスタッフに対して一定の束縛条件の下で、かつ各スタッフの希望を最大限に取り込んで最適な勤務表を作成する、汎用的な方法はほとんど提供されていないということができる。
【００１１】
上述したように、多くのスケジューリング方法が提案されているものの、多数のスタッフの希望を汲み取りつつ、労働基準といった一定の拘束条件のもとで最適な効率を提供する勤務表を作成することを可能とする、スケジュール作成支援システムスケジュール決定方法、およびプログラムが必要とされていた。
【課題を解決するための手段】
【００１２】
本発明者は、上記勤務表の作成問題が、勤務表の作成を、対象部署のスタッフ数をｍ、スケジューリング期間をｎとして、情報処理的にみれば、ｍ×ｎのテーブルの各セルに所定の束縛条件下でスタッフごとにシフトの種類を割当てる問題に帰着できることに着目した。このとき、各スタッフの集合により期待出来る業務遂行レベルと、各スタッフの拘束条件、より具体的には日勤、夜勤、休暇、研修などの他業務、勤務希望およびシフトの希望日、セミナー参加、例えば夜勤の連続日数など労働環境などの勤務内容とに対して、業務遂行レベルを守ることを目的関数とし、探索空間に各スタッフの拘束条件を使用した入れ子型分枝限定法を適用し、探索木の各深さの枝を分枝限定法開始前にあらかじめ評価しソートして評価枝数を効率的に削減することにより、複数の条件を満たしつつ、業務レベルを一定の範囲に止めるための勤務表作成に対するスケーラビリティを付与しつつ、情報処理装置を使用して効率的に勤務表を作成できることを見出し、本発明に至ったものである。
【００１３】
本発明では、まず、スタッフの勤務希望や決定勤務，そして前スケジュール期間の結果を使用して、すべてのスタッフについて実行可能パターン・データを規定した期間ごとに作成しておく。また、作成したパターンの規定期間をまたぐ連結性についての連結マトリックスをあらかじめ作成することにより、勤務表作成前に大幅な探索空間の削減を行っている。その後、各スタッフに対して規定期間（セグメント期間）ごとに、この実行可能パターンのうち前期間に対して連結可能なパターンを、目的関数を満たすスコア順にソーティングしたデータ構造を作成して格納する。また、試行解を作成していく過程で、目的関数を最小とするようなスタッフの実行パターンを採用してゆくが、この処理の際におこなう各スタッフの最適実行パターン選択することを、以下、部分問題を解くとして参照し、得られた結果を部分解、そして部分解を構成する各セグメント期間のパターンをセグメント部分解として定義する。また、１つの試行解を作成する過程で採用される部分問題の解（部分解）は１つだけであり、長期的な解の収束性を優先するために、残りのものは無視する方策をとる。
【００１４】
本発明では、部分問題の緩和目的関数値をソーティングして、配列の最上位から降順に配置しているので、試行解構築の中の早い時期に最適部分解が得られ、それにより入れ子第１層の評価枝，ならびに第２層の評価枝をも効果的に削減できる。また、部分解を現在の試行解に組み込むことで現在の試行解を超えることが判断出来た時点で、処理している実行可能パターンを当該スタッフの実行パターンとして確定させ、試行解の該当するセルを置換して、次の試行解の構築の処理に移ることを許す場合がある。これを許さない場合は,少ない数の試行解だけで良い解に到達することを目指し、許す場合は、１つの試行解を短い時間で得て、多くの試行解を探索して解を得ることを目指すことになる。本発明では、該当するスタッフの所定のセグメント期間でのパターンの評価を行う場合に、より時間的に遅いセグメント期間における最適実行可能パターンの評価値の合計を、新しい試行解が得られた際にあらかじめ計算しておき、目的関数の推定のために使用する。このことにより、部分問題の解の評価を効率的におこなうことができる。
【発明の効果】
【００１５】
すなわち、本発明では、長期に渡る勤務表を、より短期間の勤務表作成の評価と連動させて作成することができるので、長期間にわたるシフトであっても効率的に計算量（勤務パターンの評価の数）を削減することを可能とし、多数のスタッフに対する長期間のシフト配置を計算スケーラビリティを付与しつつ作成することを可能とする。
また、アルゴリズム実行時に繰り返し利用される判定や数値をアルゴリズム実行前に求めておくことにより、膨大な探索空間を大きく削減すること，ならびに、実行速度を著しく向上させることを可能にする。
【００１６】
すなわち、本発明によれば、業務スケジュールを決定するための情報処理装置を使用するスケジュール作成支援システムであって、前記システムは、
スタッフのシフトについて課される拘束条件を満足した対象期間またはそれよりも短いセグメント期間についてのパターン・データを格納するパターン格納手段と、
前記スタッフの所定の期間の勤務希望データおよび決定データを読出し、前記パターン格納手段から読込まれた前記パターン・データと比較して、一致が多い場合に低いスコアを与えてスコアリングし、前記スコアに対応して昇順に前記パターン・データをレコードとして登録し、シフト可能データとしてシフト可能データ格納部に前記所定のセグメント期間ごとに格納するパターン・データ配列手段と、
業務遂行レベルの基準を与える目的関数を最小化するように、各前記スタッフのシフト可能データのレコードを用いて、スタッフ全員の前記対象期間にわたる最適な勤務シフト・データを生成するスケジュール生成手段と
を含むスケジュール作成支援システムが提供される。
【００１７】
本発明では、前記勤務希望データおよび決定データを前記パターン・データと比較し、すべてが一致するパターン・データを選択してシフト可能パターンを生成する手段を含む。
【００１８】
本発明では、前記スケジュール生成手段は、前記拘束条件を充足するセグメント期間単位の部分解を、前記シフト可能データをレコード単位に目的関数最小化を達成できる順にソートした順に検索し、スコアリングすることにより選択して生成する拘束条件充足手段を含む。
【００１９】
本発明では、前記スケジュール生成手段は、所与のスケジュールにおける前記スタッフ間での業務遂行レベルを、同一の日付に含まれる同一の勤務識別子が割当てられた業務遂行レベルに関するスタッフのスキル・グループ・データを使用してスタッフの数と、異なるスキル・グループに含まれるスタッフの勤務識別子を比較して得られるグループ間の適正分布と、スタッフ間の関係が業務遂行レベルに与える影響を登録したペアリング・データに基づく異なるスタッフのグループ・データとその適正分布を計算することにより、前記目的関数の値を決定する業務遂行レベル決定手段を含む。
【００２０】
本発明では、前記グループ・データについて各グループ・データに帰属されるスタッフの各シフト日の各勤務識別子を使用してシフト日に対応する割当人数の上下限値を設定するレベル・データを含み、前記レベル・データを参照して同一の日付に含まれる同一の勤務識別子が割当てられたスタッフの数を全てのグループ・データについてカウントし、前記上下限値条件の範囲からの距離で業務遂行レベルを与える。
【００２１】
本発明では、前記拘束条件充足手段は、前記所定の期間のスケジュールを、前記目的関数の最小化を達成させるシフト可能データに対して連続するシフト可能パターンを連結させてスケジュールの期間を延長するシフト期間延長手段を含む。
【００２２】
本発明では、前記スケジュール決定手段は、前記連結された直後のシフト可能パターンについて前記目的関数の値を推定または決定する。
【００２３】
本発明では、業務を行うスタッフのスケジュールを決定するための情報処理装置を使用するスケジュール作成支援方法であって、前記方法は、前記情報処理装置に対して、
スタッフのシフトについて課される拘束条件を満足した対象期間またはそれよりも短いセグメント期間についてのパターン・データを格納するステップと、
前記スタッフの所定の期間の勤務希望データおよび決定データを読出して、パターン格納手段から読込まれた前記パターン・データと比較し、一致が多い場合に低いスコアを与えてスコアリングし、前記スコアに対応して昇順に前記パターン・データをレコードとして登録してシフト可能データとしてシフト可能データ格納部に前記セグメント期間ごとに格納するステップと、
業務遂行レベルの基準を与える目的関数を最小化するように各前記スタッフのシフト可能データのレコードを選択して、スタッフ全員の前記対象期間についての最適な勤務シフト・データを生成するステップと
を実行させる、スケジュール作成支援方法が提供される。
【００２４】
本発明では、前記勤務希望データおよび決定データを前記パターン・データと比較し、すべてが一致するパターン・データを選択してシフト可能パターンを生成するステップを含む。
【００２５】
本発明では、さらに、前記拘束条件を充足するセグメント期間単位の部分解を、記前記シフト可能データをレコード単位に目的関数最小化を達成できる順にソートした順で検索し、スコアリングすることにより前記シフト可能データをレコード単位に選択して生成するステップを実行させる。
【００２６】
本発明では、所与のスケジュールにおける前記スタッフ間での業務遂行レベルを、同一の日付に含まれる同一の勤務識別子が割当てられた業務遂行レベルに関するスタッフのスキル・グループ・データを使用してスタッフの数と、異なるスキル・グループに含まれるスタッフの勤務識別子を比較して得られるグループ間の適正分布と、スタッフ間の関係が業務遂行レベルに与える影響を登録したペアリング・データに基づく異なるスタッフのグループ・データとその適正分布を設定することにより、前記目的関数の値を決定するステップを実行させる。
【００２７】
本発明では、前記グループ・データについて各グループ・データに帰属されるスタッフの各シフト日の各勤務識別子を使用してシフト日に対応する割当人数の上下限値を設定するレベル・データを含み、前記レベル・データを参照して同一の日付に含まれる同一の勤務識別子が割当てられたスタッフの数を全てのグループ・データについてカウントし、前記上下限値条件の範囲からの距離で業務遂行レベルを与えるステップを実行させる。
【００２８】
本発明では、処理を行っているスタッフの前記所定の期間のスケジュールを、前記目的関数の最小化を達成させるシフト可能データに対して連続するシフト可能パターンを連結させてスケジュールの期間を延長するステップを実行させる。
【００２９】
本発明では、前記連結された直後のシフト可能パターンについて前記目的関数の値を推定または決定するステップを実行させる。
【００３０】
本発明によれば、上記いずれかに記載の方法を実行させるためのコンピュータ実行可能なプログラムが提供される。
【発明を実施するための最良の形態】
【００３１】
以下、本発明を、勤務シフトを与えるためのスケジューリングに関連する実施の形態を使用して説明するが、本発明は図面に示した実施の形態に限定されるものではない。図１は、本発明で作成される勤務シフト・データの概略的構成を示した図である。勤務シフト・データ１０は、数日から数週間、さらには、数ヶ月単位の期間で各スタッフの勤務形態を示す勤務識別子、本発明の特定の実施の形態では、Ｄ、Ｎ、Ｏ、Ｂがリストのセルに記入されており、期間は、通常では、さらに短いシフト間隔（以下、本発明では、定めるべきスケジュール期間と区別するために、セグメント期間として参照する。）から構成されている。勤務シフト・データ１０は、上述した日付／勤務識別子が記入されたレコードが、それぞれのスタッフに対して登録されて格納されている。
【００３２】
また、スタッフは、そのスキルまたは職能に応じたグループを識別するスキル・グループＳ１〜Ｓ３などの分類されている。例えば、Ｓ１が主任であり、Ｓ３が新人などである。このため、勤務シフト・データを作成する場合には、（スタッフ人数）×（日数）×（シフト種類）の数の決定要素について、スタッフの勤務希望や法定の労働基準さらにはシフト当日のスタッフにより遂行される業務スキル・レベルを確保するように勤務識別子を、それぞれのスタッフおよび日付に対して割当てる処理が必要とされる。
【００３３】
例えばスタッフが３０人、スケジュールを定めなければならない期間が３０日、シフトの種類が４種類ある場合には、膨大な数の組合せ問題を、労働基準および業務遂行レベルを確保しながら、またスタッフ間の人間関係や、スタッフの職能を考慮しつつ決定してゆく必要がある。また、上述したスケジュールは、スタッフｉ、日付ｊ、勤務識別子ｋとして捉え、スコアリング関数を使用して業務遂行レベルを目的関数として使用することで、情報処理装置により取扱いがより効率的となる。
【００３４】
図２は、本発明において上述したスケジュールを、整数計画問題として定式化するために用いるスコアリング関数の個々のパラメータを分類した図である。図２に示すように、シフトを決定する要因は、概ねスタッフを拘束する拘束条件１２と、所定のスタッフの集合により達成されるシフト当日の業務遂行レベル１４とに分類することができる。これらのパラメータは、基本的には独立の関係にあると考えられ、別個のスコアリング関数として本発明に導入することにより極めて膨大な組合せ問題を効率的に定式化できる。
【００３５】
例えば、拘束条件には、日勤、準夜勤、研修、休暇、労働衛生環境（休暇取得数、夜勤の連続、合計勤務日数など）を分類することができる。また、業務遂行レベル１４には、スタッフの職能などの帰属に関連するスキル・グループ、個人的関係、シフト当日のスタッフの合計数などを分類することができる。本発明では、図２に示した以外の拘束条件や、業務遂行レベルについてのパラメータは、適切なスコアリング関数を設定することで容易に含めることができる。
【００３６】
図３は、本発明のスケジュール作成支援システムが実行するスケジュール作成方法の処理手順が含む機能ブロックの流れを説明するフローチャートである。本発明のスケジュール作成方法は、情報処理装置により実行されるプログラムの形式とすることができ、ステップ３０１では、図２に示した拘束条件および業務遂行レベルを最適化する目的関数に使用されるパラメータを取得する。この入力は、ユーザが個別的に行うこともできるし、またすでに入力済みのパラメータを記憶手段から読み込むこともできる。ステップ３０２では、読込まれた条件、特に拘束条件を使用して可能なパターン・データの作成を行う。このパターン・データは、スケジュールを作成するために必要とされる全期間にわたったもの、もしくはセグメント期間ごとに作成して隣り合う期間のパターン間の連結可能マトリックスを用意しておくことで、セグメント期間にわたる拘束条件の再計算をせずに連結することができる。
【００３７】
ステップ３０３では、前スケジュール期間のデータや、予めスタッフから取得しておき、データベースなどの格納手段に格納しておいた勤務希望および決定勤務データ（シフト日、勤務識別子）を読込み、該当するセグメント期間に対応したパターン・データと逐次比較を行ない、該当するシフト日がスタッフの希望する勤務識別子と一致する場合には、０、一致しない場合には１として、所定のスタッフに対してセグメント期間にわたり行う。この処理によって得られたスコアを、評価したパターン・データと共にスコアの低い順にソーティングしてメモリまたはハードディスクなどの格納手段に格納する。この処理は、全スタッフについて行われ、スタッフの希望を最大限に反映させたシフト可能データを生成する。またスコア０のものだけまたはスコアの最小のパターン・データを選択して格納した場合には、スタッフにとっては最も好ましいスケジュールであることが保証される。
【００３８】
図４には、本発明で使用するパターン・データの実施、つまり各セグメント期間のシフト可能データの連結可能なものを組み合わせた結果の形態を示す。図４に示されるように、例えば勤務識別子は、具体的には、Ｎｎ：（夜勤）、−：日勤、＋：セミナ、／：休暇などとしてセル内に記入されており、この勤務識別子が所定の日付、曜日および勤務識別子のフォーマットとして格納されており、各勤務識別子は、スタッフを拘束する条件を満足している。
【００３９】
再度図３を参照して説明すると、ステップ３０４では、さらに、各スタッフの各セグメント期間のシフト可能データについて、業務遂行レベルに到達しない度合いに関してスコア付けを行い、スコアの低い順にソーティングして、格納手段に格納させておく。
【００４０】
ステップ３０６では、すでに計算されている少なくとも次のシフト可能データを対象スタッフに対して連結させ、ステップ３０７で連結されたセグメント期間に対して目的関数の計算および積算処理を行って見積値を計算し、スケジュール全体にわたるスケジュールを決定する。目的関数は、本発明では種々の形式で定義された関数を用いることができるが、一般には、Ｐ（拘束条件パラメータ列、業務遂行レベルパラメータ列）として定義され、各パラメータに対して必要に応じて重み付けや、一致／不一致により与える距離を、所定のスコアとして与え、例えば、スコア（相違距離）を、０／１、０／ｎ（ｎは、自然数）などとして加算してゆく線形関数を使用することが計算機資源を削減する上では好ましい。
【００４１】
図５は、本発明におけるステップ３０３で説明したシフト可能データを生成するための処理を示したフローチャートである。図５に示すように、ステップ５０１では、すでに作成済みのシフト・パターンを格納手段から読出し、ステップ５０２で各スタッフの勤務希望データおよび決定データとの勤務識別子の一致／不一致の判断を行う。なお、本発明では、勤務希望データおよび決定データには、スタッフの希望の他、企業などでは全社的に定められる企業側の休日決定データや前もって決定しているセミナ等の勤務決定データなどを含む。ステップ５０３ではステップ５０２の一致、不一致の判断のスコア付けを行い、図５に示した実施の形態では、一致した場合にγ＝０と設定し、不一致のときには、γ＝１として設定する。
【００４２】
ステップ５０４では、スコアを、Score=Score+γとして積算し、ステップ５０５で、スコア値とのスコア値を与えたシフト・パターンとを適切なデータ形式、例えば配列データとしてメモリなどに格納する。ステップ５０６では、処理しているセグメント期間に含まれる日付すべての処理を行ったか否かを判断し、判断が終了するまでステップ５０２〜ステップ５０６、５０８の処理を繰り返す。すべての日付についての判断を終了した時点で、ステップ５０７においてスコア値の低い順に対応するパターン・データをレコードとしてスコア値と共にシフト可能データとして格納手段に格納させる。
【００４３】
図６には、本発明で使用する勤務希望データの実施の形態を示す。図６に示すように、勤務希望データ１６、１８、２０は、スタッフＡ、Ｂ、Ｃが、例えばシフト表などに記入した勤務希望に基づいては、例えばキーボードからの入力またはマークシートまたはＯＣＲなどを使用してデータ化され、情報処理装置のハードディスクなどに格納されている。図６に示した勤務希望データは、例えばスタッフＡ、スタッフＢ、スタッフＣ．．．など、スケジュールに関連するスタッフ全員のデータを含んで構成されている。
【００４４】
図７は、本発明により生成されたシフト可能データの実施の形態を示す。図７に示すようにシフト可能データは、業務レベル遂行レベルに違反するスコア順にスコアの高い方が下で、スコアの低い方が上のレコードに配置されるように部分問題を解く過程でソートされる。また、所定のセグメント期間に関する目的関数の推定値は、各スタッフのシフト可能データの最上位レコードだけをターゲットとし、そのスコアを取得して加算するだけで生成することがあらかじめできている。
【００４５】
なお、図３のステップ３０４で、スコア付けを対象スタッフ、対象セグメント期間に対して行ない、セグメント期間部分解は、図７のスコアとして生成されており、これがソーティングされていることにより、この段階で膨大な数の組合せ問題を排除することで探索空間を減少させることが可能となっている。さらに、図７には、対象スタッフの直近のスケジュールに対応するシフト可能データ２２と、そのシフト可能データ毎に、それに続く期間の複数の連結可能なシフト可能データ２４とが示されており、シフト可能データ２２のレコードに対して同一のスタッフのシフト可能データ２４のレコードを連結させることで、スケジュール期間を延長させてゆくことができるデータ構造を与えている。
【００４６】
さらに、図３を参照して説明すると、その後ステップ３０８、３０９でスタッフ全員についての処理が終了するまでセグメント期間およびスタッフについて処理を繰り返させ、ステップ３１０で、目的関数の推定値が所定の範囲内となったかを判断し、所定の範囲の推定値が得られた場合（ｙｅｓ）、ステップ３１１で勤務シフト・データを確定し、適切なメモリまたは記憶手段に登録して処理を終了させる。また、ステップ３１０で見積値が所定の範囲に達しない場合（ｎｏ）には、ステップ３０５で、３０６〜３０９で得られた中で最良の部分解を採用してセグメント期間とスタッフをリセットすることにより、再度ステップ３０４〜３１０の評価を繰り返す。また、本発明では、図７の段階で得られたシフト可能パターンに各スタッフの希望に関するスコアリング関数を加味して目的関数の最適化を実行させることも可能である。
【００４７】
図８は、図３の３０４〜３１１の処理のうち目的関数の最適化処理を説明したフローチャートであり、図８のループは、図３の外側のループに該当する処理を実行する。図８に示すように、業務遂行レベルの最適化は、まずステップ８０１で、すべてのセルがｎｕｌｌの配列データに対してすべてのスタッフの最上位のシフト可能データを登録することにより開始される。
【００４８】
その後、ステップ８０２で、図７で示したデータおよび図９、図１０でより詳細に説明するデータ構造を用いてスタッフ人数の制約、スタッフ間の人間関係、スキル・グループ間の適合性についてスコアリング関数を使用して評価を行う。例えば、所定のシフト日についてのスタッフの合計人数については、規定した配列データなどから合計人数の上限値および下限値を取得し、該当するシフト日に休暇以外の勤務識別子が登録されたスタッフをカウントし、カウントの結果が上述した上限値および下限値の範囲にある場合には、０、ない場合にはその範囲からの距離を与えるスコアリング関数を使用することができる。
【００４９】
図９には、本発明で使用するスキル・グループ・データのデータ構成を示す。図９に示すスキル・グループ・データは、シフト日に対応して、図１に示したスタッフ・グループ（スキルごとに割当てられている場合には、スキル・グループ・データとしても参照することができる。）について別途、スキル・グループを割当てる場合の実施の形態である。図９に示すスキル・グループ・データは、シフト日と、当該シフト日に割当てられるべきスキル・グループの分布（人数）と、全スタッフ数などのデータがレコードを形成している。目的関数の最適化は、所定のシフト日についての勤務識別子を判断し、当該スタッフのスキル・グループ・データを判断し、この判断を所定のシフト日について同一の勤務識別子を有するスタッフについてカウントする処理によって与えられる。
【００５０】
上述の処理により与えられたカウントをスキル・グループ・データと参照して、その相違度を、所定の範囲内にある場合には、０、ない場合には０以外の自然数を割当てることによりスケーリングする。このスケーリングの値は、目的関数内にパラメータとして含まれていて、業務遂行レベルを維持する目的のために使用される。なお、本発明では、スキル・グループ・データは、上述した情報を含んでいる限り、単一のテーブルなどの形式で格納されている必要はなく、いかなる形式で、情報処理装置のいかなる場所に格納されていてもよい。
【００５１】
また、図１０にペアリング・データの形態を示す。ここでは、人間関係が良好ではないまたは意志の疎通が充分ではない場合に１が与えられている。なお、この人間関係を上述したように、適切なスタッフ部分集合データなどとして構成し、上限値を設定できる。図１０に示されるように、例えばスタッフＡ〜スタッフＧに対し、両者を含む部分集合を設定し、上限値１を設定することで、両者が一緒に割当てられることを防ぐことができる。また、人間関係データは、同じスタッフの組合せの繰り返しを避けるためにも利用できる。なお、上述した部分解の分岐枝削減法の詳細な手順については、例えば、Atsuko Ikegami et. al., “A Subproblem-centric Model and Approach to the Nurse Scheduling Problem”, Mathematical Programming, vol 97, pp.517-541 (2003)、池上敦子、「我が国におけるナース・スケジューリング：モデル化とアプローチ」、成蹊大学博士論文、東京、２００１年に記載された種々の変更例を使用することができる。
【００５２】
さらに、図８のステップ８０２では、スコアリング関数を部分解に関して合計して目的関数の値を計算する。ステップ８０３では、計算された目的関数が設定値の範囲内にあるか否かを判断し、設定値の範囲になければ、例えば最も評価が高い部分解を与えるスタッフとパターン番号をそれぞれのパラメータについて取得し、ステップ８０５でこのスタッフのシフト可能データセット（対象期間分）のレコードを組み込むことにより次の試行解を作成し、ステップ８０２〜８０３、８０５の処理を、ステップ８０３の評価値が所定の設定値の範囲内となるまで繰り返し、ステップ８０４で最終的な試行解を勤務スケジュールとして格納手段に格納し、勤務スケジュール作成の処理を終了する。これらの処理においては、スタッフ拘束条件はすでに満たされており、またシフト可能データは、昇順に配置されているので、検索時間が極めて高速に実行でき、さらにそれらの拘束条件についてはまったく考慮することがなく高速化を達成することができる。
【００５３】
また、図８のステップ８０３の評価で必ずしも設定範囲とならない場合も想定することができる。この場合には、目的関数が目的範囲に入っていなくとも業務の重要性に応じて業務遂行レベルの値だけを評価して最も低い値を与える試行解を一次出力として勤務スケジュールとして提供することができる。また、プログラム実行中に得られた、同じ目的関数値を持つスケジュールは、ファイルに保存しておくことにより、比較検討の対象とすることができる。
【００５４】
図１１は、本発明においてシフト可能データをセグメント期間にわたり連結する処理のフローチャートを示す。ステップ１１０１で目的関数値の最小化を達成すると思われる、シフト可能データを指定し、ステップ１１０２で連続可能な、直後のシフト可能データを指定する。ステップ１１０３でこれらを連結し、ステップ１１０４では第１セグメントから連結されている期間にわたり拘束条件を破っていないかを判断する。図１１では、拘束条件に対して違反が存在した場合には（ｎｏ）ステップ１１０５で該当するスタッフのレコードを次善のレコードから選択して登録し、ステップ１１０４の処理を実行させる。ステップ１１０４で、拘束条件が満たされた場合（ｙｅｓ）には、目的関数の推定値を計算し、ステップ１１０７で目的関数の推定値が、所定の範囲内にあるか否かを判断する。所定の範囲内にない場合には、ステップ１１０７の判断が肯定的な値を返すまで処理を繰り返す。ステップ１１０７の判断が肯定的な結果を返した場合（ｙｅｓ）には、ステップ１１０８においてその時点で評価を行っている延長配列を延長された勤務シフト・データとして確定し、適切なメモリまたは格納手段に格納して処理を終了する。
【００５５】
本発明は、上述したようにスタッフを拘束する拘束条件と業務遂行レベルを保証するパラメータを分離して目的関数の評価に投入することにより、大規模な組合せ・判断処理を大幅に削減でき、スケジュールの作成を高速化することができる。また、長期間にわたるスケジュールであっても最大限にスタッフの希望および拘束条件、業務遂行レベルを保証しながら延長して行くことができる。また、仮に最終的に所定の目的関数を与えない結果しか得られない場合でも、スタッフにとっての条件を十分満たした下で、スケジュール全般に渡って、拘束条件および業務遂行レベルに悪影響を与えない範囲で提供できるので、シフト業務に与える影響を最小限に止めることができるうえ、その後の修正に耐えうる柔軟性を持つスケジュールになっている。
【００５６】
本発明の上記勤務シフト作成支援方法を使用して、病院の替勤務を行う看護師の勤務シフトについて評価を行った。評価に際しては、ワークステーション（ＧＡＴＥＷＡＹ、Ｇ６−２２６、２６６ＭＨｚ、ＦｒｅｅＢＳＤ２．２．２）を使用した。勤務シフト・データは、約１０数秒から約２時間程度で計算が収束することがわかった。また、同様の計算を、本発明の入れ子型の分枝限定手法を使用することなく行わせたところ、約２０時間程度を要し、明らかに本発明の計算量削減手法が著しい計算時間の削減を与えることがわかった。
【００５７】
すなわち、本発明において採用する分枝選択法は、勤務シフトを、所定の拘束条件を満足させつつ、目的とする業務遂行レベルを確保して拘束に提供することを可能とする。また、本発明で得られる勤務シフト・データは、所定の勤務日についてのスタッフの配置を最適化するため、勤務シフトの作成以外にも、企業の業務遂行を行うための最適なスタッフ配置を検討するためにも使用することができる。すなわち、業務遂行レベルを高く設定することにより、計算が収束しない場合には、スタッフが必要なだけ存在しないことを示唆するものであり、計算が収束したデータと比較することにより不足するスタッフを予測し、補充するためのシミュレーションを行うこともできる。
【００５８】
図１２は、本発明のスケジュール作成支援システムの実施の形態を示した図である。図１２に示したシステム３０は、例えば病院、営業所、飲食店、スポーツジムなどにスタンドアローンで設置されたＷｉｎｄｏｗｓ（登録商標）などをベースとするパーソナル・コンピュータまたはワークステーションとして構成されている。また、本発明では、情報処理装置３２としては、ＵＮＩＸ（登録商標）、ＬＩＮＵＸなどのアーキテクチャに基づいたワークステーションを使用することもできる。
【００５９】
図１２に示したシステム３０は、情報処理装置３２と、ディスプレイ３４と、レーザプリンタなどのプリンタ装置３６と、情報処理装置３２に対して入出力を行うためのキーボード３８と、本発明の各種配列データを格納するハードディスクなどで構築された格納装置４０とを備えている。情報処理装置３２は、さらに、中央処理装置（ＣＰＵ）４２を備えており、不揮発性メモリに格納されたＢＩＯＳなどにより入出力装置の制御および管理を行っている。
【００６０】
情報処理装置３２は、さらにＲＡＭ、ＤＲＡＭなどの構成されるメモリ４６と、プリンタ装置３６および格納装置４０をそれぞれ制御するインタフェース４８、５０と、外部との通信を行うための通信カード、通信ボード、イーサネット（登録商標）などのネットワーク・インタフェース５２とを備えており、これらの機能は、内部バス５４を介して相互接続されていて、本発明のスケジュール作成支援を可能としている。
【００６１】
ＣＰＵ４２は、本発明の方法を実行するプログラムが起動されると必要な入出力指示をユーザに対して行い、適切な格納場所から勤務希望データ、パターン・データを読出て処理を行い、本発明により生成されるシフト可能データおよびスケジュールを登録した勤務シフト・データ（配列）を例えば格納装置４０の適切な領域に格納し、ディスプレイ３４を介してユーザに表示させ、またプリンタ装置３６によりハードコピーさせる。
【００６２】
図１３は、本発明のスケジュール作成支援システムを、病院の勤務医師の当直表に適用した場合煮えられた表示（ＧＵＩ）を示した図である。図１３に示されるように、本発明では、当直医師の当直スケジュールは、拘束条件および最適な業務遂行レベルを維持しながら生成できる。なお、図１３に示したスケジュール表は、本発明のシステムを使用してキーボード入力を含めて約２０分、スケジュール作成だけなら１秒未満〜２０秒で生成することができた。上述するように、本発明は、極めて高速に勤務スケジュールを作成することが可能となり、スケジュール作成のための企業などで消費されている業務時間を大きく削減することが可能となる。
【００６３】
図１４は、本発明のスケジュール作成支援システムの第２の実施の形態を示した図である。図１４に示したシステム６０は、ネットワークを介したスケジュール作成支援システムとして構成されていて、サーバ６２と、インターネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリア・ネットワーク（ＷＡＮ）などを含んで形成されるネットワーク６４と、ネットワーク６４を介してサーバ６２に接続されたクライアント端末６６とを含んでいる。サーバ６２は、本発明の処理を実行するＣ言語、ＢＡＳＩＣ（商標）、フォートラン、Ｊａｖａ（登録商標）などのプログラミング言語により記述された本発明の方法を実行するためのプログラムを実装していて、スケジュールの計算を実行する。サーバ６２は、格納装置を備えており格納装置には、スケジュールを記録するデータベース６８などを格納している。
【００６４】
一方、クライアント端末６６は、特定の支店や営業所、チェーン店に配置されていて、スタッフの勤務希望を記録したシフト届け出用紙などからＯＣＲまたは手入力などにより構築された勤務希望データを格納する格納装置７０を備えている。本発明ではクライアント端末６６は、パーソナル・コンピュータ、ワークステーションなどとして構成することもできるが、例えばコンビニエンス・ストアやアトラクション施設に配置された情報端末とすることもできる。
【００６５】
クライアント端末６６は、新たな勤務表を要求する場合には格納装置７０に勤務希望データを格納し、格納したデータをネットワーク６４を介してサーバ６２に送信する。この場合、サーバ６２は、例えば本発明のプログラムを提供するＣＧＩシステムとして構築されていて、クライアント端末６６が、クライアント端末６６のディスプレイ上に表示されるグラフィカル・ユーザ・インタフェース（ＧＵＩ）からスケジュール作成要求を送信すると、ユーザに対して勤務希望データの送信を要求する。
【００６６】
クライアント端末６６は、要求に応答して勤務希望データをサーバ６２へと送信する。サーバ６２は、クライアント端末６６からの勤務希望データを受信すると、送信元のクライアントを識別する例えばＩＰアドレスや、パスワード、ユーザＩＤなどのいずれかまたは適切な組合せまたはすべてを使用してクライアント端末６６を同定する。サーバ６２はこの同定に対応するクライアントのパターン・データを読み出して、本発明の処理を実行させる。実行結果として生成された勤務シフト・データは、要求元クライアント端末６６へと、テキスト、データベースのワークシート、またはウェブ・ページとして送られてクライアント端末６６が新たな勤務表をハードコピーするなどして使用することが可能となる。
【００６７】
これまで説明したように本発明によれば、スタッフの拘束条件と業務遂行レベルを維持するためのパラメータを分離した目的関数を設定し、かつ勤務可能パターンを好ましい順に配列したデータを連続するセグメント期間について予め準備しておくことで、膨大な条件の組合せの計算および判断を大幅に削減出来、この結果、スケジュールの作成を、高速に実行することができ、また、拘束条件および業務遂行レベルを充分に満足することを可能とする、スケジュール作成支援システムおよびスケジュール作成方法を提供することができる。
【００６８】
また、本発明のスケジュール作成システムは、看護師、医師、介護ヘルパー、保育士、臨床検査技師、警備員、保守要員、塾教師、スポーツインストラクター、スポーツ選手、娯楽施設スタッフ、パートタイム・ワーカ、アルバイト・スタッフ、割当表、当番表、当直表、休日出勤などの勤怠管理にも使用することができる。
【図面の簡単な説明】
【００６９】
【図１】本発明で与えられる勤務シフト・データの実施の形態を示した図。
【図２】本発明のシフト決定要因の分類を示した図。
【図３】本発明の勤務シフト・データ作成方法のフローチャート。
【図４】パターン・データの実施の形態を示した図。
【図５】本発明の勤務スコアを計算するフローチャート。
【図６】本発明の勤務希望データを示した図。
【図７】本発明のシフト可能データの実施の形態を示した図。
【図８】本発明の業務遂行レベルに対して目的関数を最適化しながらスケジュールを得るフローチャート。
【図９】本発明において使用するスキル・グループ・データの実施の形態を示した図。
【図１０】人間関係データを示した図。
【図１１】本発明のシフト可能データを連結する処理を示したフローチャート。
【図１２】本発明のスケジュール作成支援システムの実施の形態を示した図。
【図１３】本発明の勤務シフト作成支援システムにより表示されるＧＵＩの実施の形態を示した図。
【図１４】本発明のスケジュール作成支援システムの第２の実施の形態を示した図。
【００７０】
１０…勤務シフト・データ、１２…拘束条件、１４…業務遂行レベル、１６…勤務希望データ、１８…勤務希望データ、２０…勤務希望データ、２２…シフト可能データ、２４…シフト可能データ、３０…スケジュール作成支援システム、３２…情報処理装置、３４…ディスプレイ、３６…プリンタ装置、３８…キーボード、４０…格納装置、４２…ＣＰＵ、４４…ＢＩＯＳ、４６…メモリ、４８…インタフェース、５０…インタフェース、５２…ネットワーク・インタフェース、５４…内部バス、６０…スケジュール作成支援システム、６２…サーバ、６４…ネットワーク、６６…クライアント端末、６８…データベース、７０…格納装置
【図１】
2006277060.tif 000003
【図２】
2006277060.tif 000004
【図３】
2006277060.tif 000005
【図４】
2006277060.tif 000006
【図５】
2006277060.tif 000007
【図６】
2006277060.tif 000008
【図７】
2006277060.tif 000009
【図８】
2006277060.tif 000010
【図９】
2006277060.tif 000011
【図１０】
2006277060.tif 000012
【図１１】
2006277060.tif 000013
【図１２】
2006277060.tif 000014
【図１３】
2006277060.tif 000015
【図１４】
2006277060.tif 000016