(57)【要約】【課題】スタッフスケジューリングに関して予め決められたスケジュールが多い場合、充足不能になることがあった。その場合、しかるべき制約を緩めて再度求解を行わなければならず、勤務表作成者には負担が大きいという課題があった。  【解決手段】予定された各スタッフの各スケジュールを含む複数のスケジューリング制約に対してハード制約またはソフト制約として入力する手段５３と、各ソフト制約について優先度レベルを設定する手段５４と、優先度レベルごとに許容ソフトエラー数を設定または更新する手段５５およびソフトエラー数総和をカウントする手段５６と、スケジューリング制約について充足判定する手段５７と、予定されたスケジューリング制約に対するエラー箇所を明示する手段５８を具備したことを特徴とするコンピュータを機能させるプログラム。【選択図】図５
2015222464.tif 000002
【特許請求の範囲】
【請求項１】
所定の集団に属するスタッフのスケジューリング制約をコンピュータを用いて解くためのプログラムであって、予定された各スタッフの各スケジュールを含む複数のスケジューリング制約に対してハード制約またはソフト制約として入力する手段と、前記各ソフト制約について優先度レベルを設定する手段と、前記優先度レベルごとに許容ソフトエラー数を設定または更新する手段およびソフトエラー数総和をカウントする手段と、前記スケジューリング制約について充足判定する手段と、予定されたスケジューリング制約に対するエラー箇所を明示する手段を具備した前記コンピュータを機能させるプログラム。
【請求項２】
優先度の高いソフト制約レベルの制約を優先してソフトエラー総数を低減させる機構を具備した請求項１に記載のプログラム
【請求項３】
予定されたスケジュールに対するソフトエラー箇所が異なる複数の充足解を得る機構を有した請求項1に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、スケジューリング方法及びスケジューリング装置に関する。たとえば、病院における看護師の各月ごとの勤務表の作成で利用される。
【背景技術】
【０００２】
従来より、所定の集団に属するスタッフのスケジュールを最適化するナーススケジューリング問題が一般的に知られている。この種のスケジューリング問題に対する解法として、特許文献3に開示されているように遺伝的アルゴリズムがある。また、非特許文献2にあるように、混合線形計画問題（MILP)、特許文献１にあるように充足可能性判定問題（SAT)、特許文献５にあるように、重み付き制約充足問題（WCSP)による解法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願２０１４−４７５６５
【特許文献２】特許４３９８６７２
【特許文献３】特許４４６７２８６
【特許文献４】特許公開２００４−１３４８７
【特許文献５】特許公開２００５−２６７５９１
【非特許文献】
【０００４】
【非特許文献１】SATを用いたナーススケジューリング問題の厳密解法の評価(スケジューリング)日本オペレーションズ・リサーチ学会春季研究発表会アブストラクト集 2010, 120-121, 2010-03-04
【非特許文献２】ナーススケジューリング問題における混合整数線形計画問題と充足可能性判定問題による厳密解法の比較  オペレーションズ・リサーチ : 経営の科学 55(11), 706-712, 2010-11-01
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、スタッフスケジューリングに関するソフト制約を高速に解く方法が開示されている。しかしながら、スタッフの予め決まったスケジュール入力が多い場合に、制約を満足する解がない（充足不能）ことがあった。このため、充足不能の原因分析や究明を行い、しかるべき制約を緩めて再度充足する解を求めなければならず勤務表作成者には負担が大きいという課題があった。  
【課題を解決するための手段】
【０００６】
所定の集団に属するスタッフのスケジューリング制約をコンピュータを用いて解くためのプログラムは、予定された各スタッフの各スケジュールを含む複数のスケジューリング制約に対してハード制約またはソフト制約として入力する手段と、前記各ソフト制約について優先度レベルを設定する手段と、前記優先度レベルごとに許容ソフトエラー数を設定または更新する手段およびソフトエラー数総和をカウントする手段と、前記スケジューリング制約について充足判定する手段と、予定されたスケジューリング制約に対するエラー箇所を明示する手段を有する。
【発明の効果】
【０００７】
本発明によれば、スケジュールの充足不能という最悪の事態を回避することが出来、充足解が得られる。しかも、スタッフの予め決まったスケジュールより優先度の高いソフト制約のエラー数を最小にした上で、予め決まったスケジュールの変更を最小に抑える事ができる。これにより、制約の修正や、再スケジューリング等は不要となり、一回の求解操作で、予め決まったスケジュールの変更すべき箇所が明示される。この事は、勤務表作成者の負担を大幅に軽減すると同時に調整されるスタッフの負担も大幅に低減可能にする。
【図面の簡単な説明】
【０００８】
【図１】本発明によって得られた解の一出力例である。
【図２】本発明に係わるシステムの一部で、スタッフの予定が入力される画面の一例である。
【図３】本発明に係わるシステムの一部で、横方向（行方向）に係わる制約の入力画面である。
【図４】本発明に係わるシステムの一部で、縦方向（列方向）に係わる制約の入力画面である。
【図５】本発明の根幹部分の構造図である
【図６】一般的なSATソルバの求解形態である。
【図７】ハード制約とソフト制約の説明図で、SATソルバにおけるソフト制約実装の説明である。
【図８】SATソルバにおけるソフト制約実装のアルゴリズムである。
【図９】本発明における、ソフト制約の実装アルゴリズムである。
【図１０】各ソフト制約レベルでの解の状況を表した一例である。
【図１１】ソフト制約レベルｍの各スタッフの各スケジュールに関するソフトエラー加算及び制約の説明図
【図１２】ソフト制約レベルｍの一般化したソフトエラー加算及び制約の説明図
【図１３】エラー集合の別解を探索するアルゴリズムの説明図
【図１４】本発明を適用した別解出力の一例
【図１５】本発明の実施例で予定入力の画面
【図１６】本発明の実施例で解出力の一例
【図１７】本発明の実施例で解出力の一例
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１０】
図１は、本発明によって得られた解をコンピュータの表示部に表示された出力例である。この勤務表の例では、病院の特定病棟に勤務する看護師（スタッフ）について勤務スケジュールを割り当てた結果が表示されている。各セルには、勤務形態（シフト）を示すシンボルが記入されている。各スタッフのスケジュールは、１日毎になんらかのシフトが割り当てられており、この例では、３６日分のシフトが割りあてられている。  
【００１１】
解を得るには、スケジュールの制約を入力することが必要である。図２は、制約の一つである予定の入力画面の例である。予め決まったスケジュールや、スタッフの希望勤務・休み等を入力する。黒背景白抜き文字の部分は、ソフト制約であることを示している。ソフト制約とは、できれば守りたい制約であり、望ましくはそのエラー数は、最小、すなわち０が望ましいという制約である。本発明の実施形態において、利用者はスケジュールの予定の任意の箇所を任意の優先度の指定ができる。図１は、本発明によって得られる解であるが、図２の予定したスケジュールに対して変更せざるを得ない部分は、黒背景白抜き文字で示されていて一目で分かるようになっている。
【００１２】
図３は、スタッフの勤務パターン（行制約）に関する制約例である。図４は、毎日のシフトに関する制約（列制約）である。ソフト制約レベルで、数字が付加されている制約は、ソフト制約であることを意味し、制約の優先度が高くなればなるほど、高い数字を利用者が指定する。数字が附加されていない制約は、必ず守らなければならない制約であり、ハード制約でとなる。すなわち、ハード制約の場合は、そのエラー数は常に０であり、これを守ることができなければ、充足不能と判断される。
【００１３】
図５は、本発明の構造図である。利用者が入力する行制約、列制約、および、予め決められた個々のスケジュールは、ハード制約または、ソフト制約に分類され、さらにソフト制約は、M個の優先レベルが設定される。ハード制約およびソフト制約の集合は、充足判定が複数回行われるが、その過程において、各優先レベルｍにおいては、許容ソフトエラー数Emと、ソフトエラーカウンタKmが設けられており、Em<=Kmを満足するKmが設定または更新される。全優先レベルの探索終了後に、予定制約に対するスケジュールエラー箇所が表示される。以下に、図5の構成の実施形態について詳述する。
【００１４】
充足判定に用いるソルバは、本発明では限定しない。ソルバにSATソルバを用いる場合、SATソルバはMILPとは異なり、図６に示すように制約条件に対して充足可能か不能かの2値を示すだけで、ソフトエラーについてのハンドリング機構を備えてない。ソフト制約の「できれば」は、ソフト制約エラーの総数を最小にすることに他ならないから、ハード制約を全て満たした上で、ソフト制約エラー数（制約を遵守できない数）の総和を最小にすればよい。この事に留意すれば、図７及び図8に示すような構成で、SATソルバを用いてソフトエラーの最小値を求めることは出来る。図8の探索手法としては、バイナリサーチ、リニアサーチ等がある。
【００１５】
各制約レベル毎に充足可能なソフトエラーの最小値を求めるには、図９に示すアルゴリズムにすればよい。最も優先度の高いソフト制約を最初に最小値探索を行い、優先度順に最小値探索を行う。図１０は、図９のアルゴリズムを適用した結果の例である。たとえば、予約ソフト制約レベル５という制約は、それより優先度の高い制約はすべてソフトエラー数が最小であることが保証した上で、予約ソフト制約レベル５のエラーが最小であることを意味する。すなわち、スタッフの予定スケジュールの変更は最小に抑えられることになる。スタッフの予定スケジュールは、他の制約とは異なり、予定とは異なるスケジュールをスタッフに強いるので、勤務表作成担当者は、各スタッフとの調整が必要になる。よって、スケジュール変更箇所は図1のように一目で明示されることがより高い利便性を供することになる。
【００１６】
図１１は、予定ソフト制約に関するエラー部の加算方法を示したものである。スタッフPの予定されている日Dの勤務シフトSを配列W[P][D][S] に格納するものとすると、個々のスケジュールは、W[P][D][S]と表現できる。予定ソフト制約エラーは、スケジュールの否定（C言語表現では！W[P][D][S]）になる。これらをソフト制約レベルmに関して集めればよい。
【００１７】
図１２は、一般のソフト制約エラーの加算に関する構造を記したものである。一般のソフト制約に関しては、エラーの起こりえる箇所は既知ではないので、全ての日についてエラーを加算しなければならない点が予定ソフトエラーとは扱いが異なる。
【００１８】
予定ソフト制約エラーは、個々のスタッフの予定を変更せざるを得ない結果なので、一目でエラー箇所が分かることは勿論、可能な限り別解を示すことも重要である。別解は、単に解の一部が異なることが要件ではなく、エラー箇所、すなわち、調整されるべきスタッフや日が異ならなければならない。これにより、広く勤務表作成者がスタッフの了解をとりつけられる可能性が高くなるので、より勤務表作成者の精神的または時間的な負担を低くする。別解は、図１３のように現在のエラー集合の否定を制約に追加して充足解を求めればよい。このようにすれば、充足解の結果として、図14のように、図１とは異なる別解が得られる。充足可能な限りこの操作を続ければ、充足可能なすべての別解の提示が可能となる。
【実施例】
【００１９】
図１５の予定入力に本発明を適用する。図１５は、通常の予定入力とは異なり、全てのセルが予定で埋まっておりスケジュールする箇所がない。ハード制約として扱う従来の方式では充足する解が得られない例であるが、本発明により充足解が得られる。本発明によるソフト制約を図15黒背景部に適用した解が図１６と図１７になった。図１６と図１７の黒背景部は、６箇所ある。これは予定入力とは異なる箇所が６個であるということである。６個より小さい充足解は存在しない。充足解の個数は、本発明を図１３の方法を適用して、あり得る限りの充足解を列挙した結果、図１６と図１７の二つしか得られなかった。つまり、図１５の予定入力に対するソフト制約解は、無数に存在すると考えられるが、充足する解の内、予定入力と異なる箇所の最小数は６個であり、６個のソフトエラー数で済む解の個数は２個（図１６と図１７）しかない、ということである。このようにして、勤務表作成者は、一目で必要な最小の変更部と可能なスケジュール変更部の組み合わせの全てを知ることができる。
【符号の説明】
【００２０】
５３  複数のスケジューリング制約をハード制約またはソフト制約として入力する手段
５４  各ソフト制約について優先度レベルを設定する手段
５５  優先度レベルごとに許容ソフトエラー数を設定または更新する手段
５６  優先度レベルごとにソフトエラー数総和をカウントする手段
５７  充足判定する手段
５８  予定されたスケジューリング制約に対するエラー箇所を明示する手段
【図１】
2015222464.tif 000003
【図２】
2015222464.tif 000004
【図３】
2015222464.tif 000005
【図４】
2015222464.tif 000006
【図５】
2015222464.tif 000007
【図６】
2015222464.tif 000008
【図７】
2015222464.tif 000009
【図８】
2015222464.tif 000010
【図９】
2015222464.tif 000011
【図１０】
2015222464.tif 000012
【図１１】
2015222464.tif 000013
【図１２】
2015222464.tif 000014
【図１３】
2015222464.tif 000015
【図１４】
2015222464.tif 000016
【図１５】
2015222464.tif 000017
【図１６】
2015222464.tif 000018
【図１７】
2015222464.tif 000019
【手続補正書】
【提出日】平成26年10月8日(2014.10.8)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定の集団に属するスタッフのスケジュールを構成するシフトとスケジュール制約を充足可能性問題として解くことにより、スケジュールの最適化を行うスケジューリング装置であって、
前記スケジュール制約は、必ず守るべき制約であるハード制約と、必ずしも満たす必要はないができれば満たしたい制約であるソフト制約とから成り、
前記スタッフの任意の予定シフトについて任意のソフト制約優先度を指定する指定手段と、
前記指定手段によって指定されたソフト制約優先度のうち、最もソフト制約優先度の高い前記予定シフトについて、前記予定シフトと充足するシフトが異なるエラー箇所の個数を最小にする充足解を算出する第１充足解算出手段と、
前記第１充足解算出手段による算出の後、前記ソフト制約優先度順に、前記第１充足解算出手段による算出での前記エラー箇所の個数を最小にすることを保証した上で、当該ソフト制約優先度に対応する前記エラー箇所の個数を最小にする前記充足解を算出する第２充足解算出手段と、
前記第１充足解算出手段及び前記第２充足解算出手段によって算出された充足解を用いて、前記エラー箇所の表示を行う表示手段と、
を備えたスケジューリング装置。
【請求項２】
請求項１に記載したスケジューリング装置であって、
前記エラー箇所の否定を前記スケジュール制約に追加することにより、前記エラー箇所とは異なる充足解の別解を算出する第３充足解算出手段、
を更に備えたスケジューリング装置。
【請求項３】
請求項２に記載したスケジューリング装置であって、
予定別解数を指定する第２指定手段を更に備え、
前記第３充足解算出手段は、前記第２指定手段によって指定された予定別解数に達するまでの間、前記別解を繰り返し算出する、
スケジューリング装置。
【手続補正書】
【提出日】平成27年4月27日(2015.4.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定の集団に属するスタッフのスケジュールを構成するシフトとスケジュール制約を充足可能性問題として解くことにより、スケジュールの最適化を行うスケジューリング装置であって、
前記スケジュール制約は、必ず守るべき制約であるハード制約と、必ずしも満たす必要はないができれば満たしたい制約であるソフト制約とから成り、
前記スタッフの任意の予定シフトについて任意のソフト制約優先度を指定する指定手段と、
前記指定手段によって指定されたソフト制約優先度のうち、最もソフト制約優先度の高い前記予定シフトについて、前記予定シフトと充足するシフトが異なるエラー箇所の個数を最小にする充足解を算出する第１充足解算出手段と、
前記第１充足解算出手段による算出の後、前記ソフト制約優先度順に、前記第１充足解算出手段による算出での前記エラー箇所の個数を最小にすることを保証した上で、当該ソフト制約優先度に対応する前記エラー箇所の個数を最小にする前記充足解を算出する第２充足解算出手段と、
前記第１充足解算出手段及び前記第２充足解算出手段によって算出された充足解を用いて、前記エラー箇所の表示を行う表示手段と、
前記エラー箇所の否定を前記スケジュール制約に追加することにより、前記エラー箇所とは異なる充足解の別解を算出する第３充足解算出手段と、
を備えたスケジューリング装置。
【請求項２】
請求項１に記載したスケジューリング装置であって、
予定別解数を指定する第２指定手段を更に備え、
前記第３充足解算出手段は、前記第２指定手段によって指定された予定別解数に達するまでの間、前記別解を繰り返し算出する、
スケジューリング装置。