IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-36968スケジュール調整プログラム、方法および装置
<>
  • 特開-スケジュール調整プログラム、方法および装置 図1
  • 特開-スケジュール調整プログラム、方法および装置 図2
  • 特開-スケジュール調整プログラム、方法および装置 図3
  • 特開-スケジュール調整プログラム、方法および装置 図4
  • 特開-スケジュール調整プログラム、方法および装置 図5
  • 特開-スケジュール調整プログラム、方法および装置 図6
  • 特開-スケジュール調整プログラム、方法および装置 図7
  • 特開-スケジュール調整プログラム、方法および装置 図8
  • 特開-スケジュール調整プログラム、方法および装置 図9
  • 特開-スケジュール調整プログラム、方法および装置 図10
  • 特開-スケジュール調整プログラム、方法および装置 図11
  • 特開-スケジュール調整プログラム、方法および装置 図12
  • 特開-スケジュール調整プログラム、方法および装置 図13
  • 特開-スケジュール調整プログラム、方法および装置 図14
  • 特開-スケジュール調整プログラム、方法および装置 図15
  • 特開-スケジュール調整プログラム、方法および装置 図16
  • 特開-スケジュール調整プログラム、方法および装置 図17
  • 特開-スケジュール調整プログラム、方法および装置 図18
  • 特開-スケジュール調整プログラム、方法および装置 図19
  • 特開-スケジュール調整プログラム、方法および装置 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024036968
(43)【公開日】2024-03-18
(54)【発明の名称】スケジュール調整プログラム、方法および装置
(51)【国際特許分類】
   G06Q 10/06 20230101AFI20240311BHJP
【FI】
G06Q10/06
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022141550
(22)【出願日】2022-09-06
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】小林 久也
(72)【発明者】
【氏名】大塚 浩
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049AA10
(57)【要約】
【課題】勤務シフト修正のための計算時間を短縮する。
【解決手段】処理部2は、勤務シフト11の中から、第1の割り当て枠に対する勤務形態の変更要求を受け付け、勤務シフトについての過去の変更事例が複数登録されたデータベース3から、勤務形態の変更要求内容が上記の変更要求による変更内容と類似する類似変更事例を抽出し、類似変更事例において、変更前の勤務シフト21に含まれる割り当て枠の中から、変更の要求に応じた割り当て調整によって勤務形態が変更された1以上の第2の割り当て枠を特定し、勤務シフト11に含まれる割り当て枠のうち1以上の第2の割り当て枠の範囲を勤務形態の割り当ての変更可能範囲として、勤務シフト11における勤務形態の割り当てを最適化する最適化計算を実行する。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンピュータに、
所定期間における複数の時間帯のそれぞれと複数の勤務者のそれぞれとに対応する割り当て枠ごとに勤務形態が割り当てられた第1の勤務シフトの中から、第1の割り当て枠に対する勤務形態の変更要求を受け付け、
勤務シフトについての過去の変更事例が複数登録されたデータベースから、勤務形態の変更要求内容が前記変更要求による変更内容と類似する類似変更事例を抽出し、
前記類似変更事例において、変更前の第2の勤務シフトに含まれる割り当て枠の中から、変更の要求に応じた割り当て調整によって勤務形態が変更された1以上の第2の割り当て枠を特定し、
前記第1の勤務シフトに含まれる割り当て枠のうち前記1以上の第2の割り当て枠の範囲を勤務形態の割り当ての変更可能範囲として、前記第1の勤務シフトにおける勤務形態の割り当てを最適化する最適化計算を実行する、
処理を実行させるスケジュール調整プログラム。
【請求項2】
前記データベースには、前記変更事例として、変更前の第3の勤務シフトと、前記第3の勤務シフトにおいて変更が要求された割り当て枠のみが変更された第4の勤務シフトと、前記第4の勤務シフトに対して前記割り当て調整を行うことで得られた第5の勤務シフトとが対応付けて登録され、
前記類似変更事例の抽出では、前記データベースに登録された前記第3の勤務シフトの中から、前記第1の勤務シフトに類似する1以上の第6の勤務シフトを抽出し、前記1以上の第6の勤務シフトにそれぞれ対応する前記第4の勤務シフトの中から、前記第1の勤務シフトにおいて前記変更要求の対象の割り当て枠のみが変更された第7の勤務シフトを抽出し、
前記1以上の第2の割り当て枠の特定では、前記第7の勤務シフトと、前記データベースに登録された、前記第7の勤務シフトに対応する前記第5の勤務シフトとの差分に基づいて、前記1以上の第2の割り当て枠を特定する、
請求項1記載のスケジュール調整プログラム。
【請求項3】
前記コンピュータに、
前記1以上の第2の割り当て枠が特定されると、前記1以上の第2の割り当て枠のそれぞれに割り当てられた変更後の勤務形態を、前記第1の勤務シフトにおける前記変更可能範囲にそのまま割り当てて第8の勤務シフトを作成し、
前記第8の勤務シフトについて、前記第1の勤務シフトに対応する制約の充足率を算出し、
前記充足率が所定の閾値以上の場合には前記第8の勤務シフトを割り当て調整結果として出力する、
処理を実行させ、
前記最適化計算は、前記充足率が前記閾値未満の場合に実行される、
請求項1または2記載のスケジュール調整プログラム。
【請求項4】
前記最適化計算の実行では、
前記第1の勤務シフトに含まれる割り当て枠のうち前記1以上の第2の割り当て枠の範囲において前記変更可能範囲を広げながら、前記最適化計算で最適解として得られた勤務シフトについての、前記第1の勤務シフトに対応する制約の充足率が所定の閾値以上となるまで前記最適化計算を繰り返し実行する、
請求項1または2記載のスケジュール調整プログラム。
【請求項5】
コンピュータが、
所定期間における複数の時間帯のそれぞれと複数の勤務者のそれぞれとに対応する割り当て枠ごとに勤務形態が割り当てられた第1の勤務シフトの中から、第1の割り当て枠に対する勤務形態の変更要求を受け付け、
勤務シフトについての過去の変更事例が複数登録されたデータベースから、勤務形態の変更要求内容が前記変更要求による変更内容と類似する類似変更事例を抽出し、
前記類似変更事例において、変更前の第2の勤務シフトに含まれる割り当て枠の中から、変更の要求に応じた割り当て調整によって勤務形態が変更された1以上の第2の割り当て枠を特定し、
前記第1の勤務シフトに含まれる割り当て枠のうち前記1以上の第2の割り当て枠の範囲を勤務形態の割り当ての変更可能範囲として、前記第1の勤務シフトにおける勤務形態の割り当てを最適化する最適化計算を実行する、
スケジュール調整方法。
【請求項6】
所定期間における複数の時間帯のそれぞれと複数の勤務者のそれぞれとに対応する割り当て枠ごとに勤務形態が割り当てられた第1の勤務シフトの中から、第1の割り当て枠に対する勤務形態の変更要求を受け付け、
勤務シフトについての過去の変更事例が複数登録されたデータベースから、勤務形態の変更要求内容が前記変更要求による変更内容と類似する類似変更事例を抽出し、
前記類似変更事例において、変更前の第2の勤務シフトに含まれる割り当て枠の中から、変更の要求に応じた割り当て調整によって勤務形態が変更された1以上の第2の割り当て枠を特定し、
前記第1の勤務シフトに含まれる割り当て枠のうち前記1以上の第2の割り当て枠の範囲を勤務形態の割り当ての変更可能範囲として、前記第1の勤務シフトにおける勤務形態の割り当てを最適化する最適化計算を実行する、処理部、
を有するスケジュール調整装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スケジュール調整プログラム、方法および装置に関する。
【背景技術】
【0002】
病院などのシフト勤務制の職場では、一定の制約の下で勤務シフトが作成される。制約を満たすような勤務シフトを人手によって作成する場合、その作成作業の負荷が大きい。これに対して、数理最適化計算を用いることで、制約を満たすような勤務シフトを自動作成することが可能になる。また、例えば、既存の勤務シフトにおけるある割り当て枠に対して勤務態様を変更したいという変更要求があった場合にも、数理最適化計算により勤務シフトを自動修正することができる。
【0003】
ここで、勤務シフトの修正に関しては、次のような技術が提案されている。例えば、勤務の交代希望者から交代を希望する勤務部分の指定を受け付けると、その勤務部分に割り当てる候補者を、所定の終了条件を満たすまで制約条件を徐々に緩めながら繰り返し選定する勤務管理システムが提案されている。また、勤務予定表データの修正指示を受けると、各日に設定された職員配置の変更が最小になるように記憶部から日別シフト勤務パターンを選択し、選択した日別勤務パターンを用いて勤務予定表データを修正する勤務表作成システムも提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009-244919号公報
【特許文献2】特許第6741324号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、上記のように、ある割り当て枠での勤務態様の変更要求に応じて勤務シフトを修正する場合には、最適化計算の対象とする割り当て枠の範囲をできるだけ狭くすることで、計算にかかる時間を短縮できる。その反面、範囲を狭くするほど最適解が得られにくいという問題がある。
【0006】
1つの側面では、本発明は、勤務シフト修正のための計算時間を短縮することが可能なスケジュール調整プログラム、方法および装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
1つの案では、コンピュータに、所定期間における複数の時間帯のそれぞれと複数の勤務者のそれぞれとに対応する割り当て枠ごとに勤務形態が割り当てられた第1の勤務シフトの中から、第1の割り当て枠に対する勤務形態の変更要求を受け付け、勤務シフトについての過去の変更事例が複数登録されたデータベースから、勤務形態の変更要求内容が変更要求による変更内容と類似する類似変更事例を抽出し、類似変更事例において、変更前の第2の勤務シフトに含まれる割り当て枠の中から、変更の要求に応じた割り当て調整によって勤務形態が変更された1以上の第2の割り当て枠を特定し、第1の勤務シフトに含まれる割り当て枠のうち1以上の第2の割り当て枠の範囲を勤務形態の割り当ての変更可能範囲として、第1の勤務シフトにおける勤務形態の割り当てを最適化する最適化計算を実行する、処理を実行させるスケジュール調整プログラムが提供される。
【0008】
また、1つの案では、上記のスケジュール調整プログラムに基づく処理と同様の処理をコンピュータが実行するスケジュール調整方法が提供される。
さらに、1つの案では、上記のスケジュール調整プログラムに基づく処理と同様の処理を実行するスケジュール調整装置が提供される。
【発明の効果】
【0009】
1つの側面では、勤務シフト修正のための計算時間を短縮できる。
【図面の簡単な説明】
【0010】
図1】第1の実施の形態に係るスケジュール調整装置の構成例および処理例を示す図である。
図2】第2の実施の形態に係る勤務管理システムの構成例を示す図である。
図3】管理サーバのハードウェア構成例を示す図である。
図4】看護師の勤務シフトの例を示す図である。
図5】定式化について説明するための図である。
図6】管理サーバが備える処理機能の構成例を示す図である。
図7】変更前シフトデータベース、変更後シフトデータベースおよび調整後シフトデータベースのデータ構成例を示す図である。
図8】管理サーバによる勤務シフト変更処理の全体を示すフローチャートの例である。
図9】勤務シフト表の差分および距離の算出について説明するための図である。
図10】変更要求受け付け部および変更内容判別部の処理を説明するための図である。
図11】割り当て変更内容の判別処理の手順を示すフローチャートの例である。
図12】影響範囲算出部による類似勤務シフトの抽出処理を説明するための図である。
図13】影響範囲の特定処理を説明するための図である。
図14】影響範囲の特定処理の手順を示すフローチャートの例である。
図15】再割り当て処理部による初期処理を説明するための図である。
図16】初期値変更パターンを示す第1の図である。
図17】初期値変更パターンを示す第2の図である。
図18】初期値変更パターンを示す第3の図である。
図19】勤務形態の割り当て調整処理の手順を示すフローチャートの例である。
図20】調整結果の出力処理の手順を示すフローチャートの例である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るスケジュール調整装置の構成例および処理例を示す図である。図1に示すスケジュール調整装置1は、処理部2を有する。処理部2は、例えば、プロセッサである。
【0012】
処理部2は、既存の勤務シフトに対する変更要求を受け付けると、最適化計算によってこの勤務シフトを修正する。勤務シフトは、所定期間における複数の時間帯のそれぞれと、複数の勤務者のそれぞれとに対応する割り当て枠を含み、各割り当て枠には勤務形態が割り当てられている。勤務形態は、勤務の内容や勤務時間などを示す。例えば、勤務時間に関する勤務形態としては、日勤、夜勤、休みなどがある。
【0013】
図1の例では、処理部2は、勤務シフト11の変更要求12を受け付けたとする。勤務シフト11においては、勤務者A1~A4のそれぞれについて、1週間における各曜日に対応する割り当て枠に、勤務形態B1~B4のいずれか1つが割り当てられている。また、勤務シフト11には、勤務形態B1~B4に関する1以上の制約が対応付けられており、これらの1以上の制約をできるだけ満たすように勤務シフト11が作成される。また、変更要求12は、勤務者A2の水曜日における割り当て枠の勤務形態を、勤務形態B1から勤務形態B4に変更するように要求するものであるとする。
【0014】
処理部2は、このような変更要求12を受け付けると、データベース3を参照しながら勤務シフト11を修正する。データベース3には、勤務シフトについての過去の変更事例が複数登録されている。変更事例は、例えば、変更前の勤務シフトと、その勤務シフトに対する変更要求の内容と、変更前の勤務シフトが変更要求に応じてどのように修正されたかを示す情報とがわかるような情報として登録される。
【0015】
処理部2は、変更要求12を受け付けると、勤務形態の変更要求内容が変更要求12による変更内容と類似する類似変更事例を、データベース3から抽出する。図1の例では、類似変更事例として、変更前の勤務シフト21に対して、勤務者A6の水曜日における割り当て枠の勤務形態を、勤務形態B1から勤務形態B4に変更する変更要求22が発生した変更事例が抽出されたとする。
【0016】
勤務シフト21は、勤務者は勤務シフト11とは異なるものの、勤務者数は勤務シフト11と同じである。また、変更要求22は、2番目の勤務者の水曜日における割り当て枠の勤務形態を、勤務形態B1から勤務形態B4に変更するものである点で、変更要求12と一致している。このため、上記の変更事例が類似変更事例として抽出されている。
【0017】
処理部2は、抽出された類似変更事例において、変更前の勤務シフト21に含まれる割り当て枠の中から、変更要求22に応じた割り当て調整によって勤務形態が変更された1以上の割り当て枠(「変更割り当て枠」と記載する)を特定する。ここで、抽出された類似変更事例では、変更要求22に応じた割り当て調整によって最終的に勤務シフト23が作成されたとする。勤務シフト23では、変更前の勤務シフト21のうち、勤務者A5の水曜日から土曜日までの各割り当て枠と、勤務者A6の木曜日から日曜日までの割り当て枠と、勤務者A7の木曜日、土曜日および日曜日の割り当て枠とにおいて、勤務形態の割り当てが変更されている。したがって、これらの割り当て枠が変更割り当て枠として特定される。図1では、これらの割り当て枠を太い実線で表している。
【0018】
処理部2は、勤務シフト11に含まれる割り当て枠のうち変更割り当て枠の範囲を勤務形態の割り当ての変更可能範囲として、勤務シフト11における勤務形態の割り当てを最適化する最適化計算を実行する。図1では、勤務シフト11の割り当て枠のうち、変更要求12による変更対象の割り当て枠に勤務形態B4が割り当てられ、変更割り当て枠に対応する割り当て枠(すなわち変更可能範囲)を空欄にした勤務シフト13を例示している。変更割り当て枠に対応する各割り当て枠に、最適化計算の結果を基に勤務形態が再割り当てされることで、変更要求12に応じて修正された勤務シフトが作成される。
【0019】
ここで、勤務シフト23は、変更要求22に応じて勤務形態の割り当てが調整されたものである。このため、勤務シフト11のうち、勤務シフト23における変更割り当て枠の範囲のみを割り当ての変更可能範囲として最適化計算を行った場合、制約を満たす最適解が得られる可能性が高い。すなわち、上記の処理により、最適解が得られる可能性が高い必要最小限の割り当て枠を割り当ての変更可能範囲として、最適化計算を実行できるようになる。このため、勤務シフト修正のための最適化計算にかかる時間を短縮できる。
【0020】
〔第2の実施の形態〕
図2は、第2の実施の形態に係る勤務管理システムの構成例を示す図である。図2に示す勤務管理システムは、管理サーバ100とユーザ端末200a,200b,200c,・・・を含む。
【0021】
管理サーバ100は、図1に示したスケジュール調整装置1の一例であり、勤務者の勤務スケジュールを管理するサーバコンピュータである。本実施の形態では特に、管理サーバ100は、所定期間における特定の複数の勤務者による勤務シフトを管理する。例えば、管理サーバ100は、数理最適化により、勤務に関する所定の制約を満たすように上記の複数の勤務者の勤務シフトを自動作成し、勤務シフトの内容を記載した勤務シフト表を記憶する。また、管理サーバ100は、ユーザ端末200a,200b,200c,・・・に対するユーザの操作に応じて、勤務シフト表を表示装置上に表示させたり、勤務シフトの変更を受け付けることが可能になっている。
【0022】
ユーザ端末200a,200b,200c,・・・は、ユーザによって操作される端末装置である。ユーザは、例えば、勤務者の勤務スケジュールを管理する管理者や、勤務者自身である。
【0023】
なお、以下の説明では、ユーザ端末200a,200b,200c,・・・を特に区別せずに指し示す場合には、「ユーザ端末200」と記載する場合がある。
図3は、管理サーバのハードウェア構成例を示す図である。管理サーバ100は、例えば、図3に示すようなコンピュータとして実現される。図3に示す管理サーバ100は、プロセッサ101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、GPU(Graphics Processing Unit)104、入力インタフェース(I/F)105、読み取り装置106および通信インタフェース(I/F)107を有する。
【0024】
プロセッサ101は、管理サーバ100全体を統括的に制御する。プロセッサ101は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)またはPLD(Programmable Logic Device)である。また、プロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0025】
RAM102は、管理サーバ100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
【0026】
HDD103は、管理サーバ100の補助記憶装置として使用される。HDD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
【0027】
GPU104には、表示装置104aが接続されている。GPU104は、プロセッサ101からの命令にしたがって、画像を表示装置104aに表示させる。表示装置104aとしては、液晶ディスプレイや有機EL(ElectroLuminescence)ディスプレイなどを使用できる。
【0028】
入力インタフェース105には、入力装置105aが接続されている。入力インタフェース105は、入力装置105aから出力される信号をプロセッサ101に送信する。入力装置105aとしては、キーボードやポインティングデバイスなどを使用できる。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどを使用できる。
【0029】
読み取り装置106には、可搬型記録媒体106aが脱着される。読み取り装置106は、可搬型記録媒体106aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体106aとしては、光ディスク、半導体メモリなどを使用できる。
【0030】
通信インタフェース107は、ネットワーク107aを介してユーザ端末200a,200b,200c,・・・などの他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、管理サーバ100の処理機能を実現することができる。
【0031】
次に、管理サーバ100で管理される勤務シフトとして、病院における看護師の勤務シフトを例示する。この場合、管理サーバ100は、例えば、病院に設置された情報処理システムに組み込まれる。また、管理サーバ100の処理機能は、サーバコンピュータでなく、例えば、パーソナルコンピュータにおいて実現されてもよい。
【0032】
図4は、看護師の勤務シフトの例を示す図である。図4に示す勤務シフト表131は、7人の看護師N1~N7による1週間の勤務シフトを示すテーブルである。勤務シフト表131のカラムには曜日(または日付)が記載され、レコードには看護師の識別情報が登録される。また、勤務シフト表131の各フィールドには、各看護師の該当する曜日における勤務形態が登録される。本実施の形態では、「日勤」、「夜勤」、「夜勤明け」、「休み」という4種類の勤務形態が適用されるものとする。勤務形態は、例えば、図4に示す勤務形態表132として、勤務シフト表131とともに管理サーバ100に記憶される。
【0033】
また、本実施の形態では例として、勤務シフトの決定に関する次の4つの制約C1~C4が存在するものとする。
(制約C1)各曜日における日勤の勤務者は3人以上必要である。
【0034】
(制約C2)夜勤の次の日は夜勤明けとする。
(制約C3)夜勤明けの次の日は休みとする。(ただし、週末に夜勤または夜勤明けが入っている場合は適用外とする。)
(制約C4)各曜日に夜勤は1人以上必要である。
【0035】
例えば、看護師長などの管理者が制約C1~C4を満たすような勤務シフトを手作業によって作成する場合、その作業負荷が大きいという問題がある。実際には、管理者は、制約だけでなく看護師の希望なども考慮して勤務シフトを作成しなければならず、作業負荷は非常に大きなものとなる。さらに、管理者は、手術などの急な予定変更や看護師の希望の変更などが発生するたびに勤務シフトを作成し直さなければならず、作業負荷はさらに大きくなってしまう。
【0036】
これに対して、管理サーバ100は、上記の制約C1~C4を満たすような勤務シフトを、数理最適化によって自動作成することができる。数理最適化では、目的(要求)や制約が定式化され、目的や制約を満足する最適解が計算される。
【0037】
図5は、定式化について説明するための図である。上記の勤務シフト表131では、各フィールドに割り当て可能な勤務形態は1つのみである。そこで、図5に示すように、勤務シフト表131における各曜日に対してさらに4つの勤務形態にそれぞれ対応するカラムが追加される。そして、ある曜日における看護師nの勤務形態がmであることをxn,mと表す。そして、各看護師の夜勤の回数を少なくしながら、制約C1~C4を満たすことを目的とする。
【0038】
N={1,2,3,...,7},D={1,2,3,...,28},S0={4i|i=0,1,2,...,6},S1={4i+1|i=0,1,2,...,6},S2={4i+2|i=0,1,2,...,6},S3={4i+3|i=0,1,2,...,6}とすると、制約C1~C4は以下の式(1-1)~(1-6)で表され、目的関数は式(2)で表される。
【0039】
【数1】
【0040】
管理サーバ100は、式(2)の目的関数を最小化するような最適解を算出する。ただし、初期値が存在する場合は、その初期値(0または1)が制約として加えられる。また、管理サーバ100は、ある看護師のある曜日の勤務形態の希望を考慮しながら(すなわち、あるフィールドの勤務形態を固定した状態にしながら)、残りの割り当て枠(フィールド)の最適解を算出することも可能である。このように、勤務シフトを自動作成できるようにすることで、管理者の作業負荷を軽減できる。
【0041】
なお、実際の現場では、制約が満たされる勤務シフトが必ずしも採用されるとは限らず、管理者の判断によってシフト内容が調整される場合もある。管理サーバ100は、最適解として出力した勤務シフトに対する管理者からの調整操作を受け付け、調整された勤務シフトを記憶することも可能である。
【0042】
次に、勤務シフトの変更について説明する。例えば、既存の勤務シフトに対して、ある看護師のある曜日の勤務形態を変更したいという場合がある。変更される割り当て枠を「変更希望枠」と記載する。この場合、管理サーバ100は、変更希望枠の勤務形態を変更し、それ以外の割り当て枠を再調整の範囲として、その範囲における最適解を算出する。
【0043】
この計算は、既存の勤務形態の割り当てができるだけ変更されないように、再調整の範囲を絞って行うことが望ましい。これは、予定変更をできるだけ少なくして混乱を避けるという運用上の理由の他に、再調整の範囲が大きいほど計算量が増え、最適解が算出されるまでにかかる時間が長くなるという技術的な理由もある。最適化計算の負荷は大きいため、再調整の範囲が広すぎると、実用的な時間内に最適解を得ることができない場合もある。
【0044】
しかし、再調整の範囲をどのように設定するかという点には課題がある。例えば、再調整の範囲が広いほど、上記のように計算時間が長くなるが、制約を満たす解は得られやすくなる。一方、再調整の範囲を狭めると、勤務形態を変更可能な割り当て枠の数が減るので、すべての制約を満たす解を得にくくなる。したがって、再調整の適切な範囲を決定することは難しい。
【0045】
そこで、本実施の形態において、管理サーバ100は、過去の勤務シフトの変更状況を記録したデータベースから、変更希望枠が同一であった勤務シフトを抽出する。そして、管理サーバ100は、抽出された勤務シフトについての再調整後のシフト内容を基にして、現在の勤務シフト表における再調整の範囲を決定する。過去に再調整された内容から新たな再調整の範囲を決定することで、再調整の範囲を必要最小限とし、短い計算時間で最適解が算出されるようにする。
【0046】
図6は、管理サーバが備える処理機能の構成例を示す図である。図6に示すように、管理サーバ100は、記憶部110、変更要求受け付け部121、変更内容判別部122、影響範囲算出部123、再割り当て処理部124および調整結果出力部125を備える。
【0047】
記憶部110は、RAM102、HDD103などの管理サーバ100が備える記憶装置に確保される記憶領域である。記憶部110には、シフト設定情報111、変更前シフトデータベース(DB)112、変更後シフトデータベース(DB)113および調整後シフトデータベース(DB)114が記憶される。
【0048】
シフト設定情報111は、現在設定されている勤務シフトに関する情報が登録される。例えば、シフト設定情報111には、特定の複数の看護師による所定期間の勤務シフトを示す勤務シフト表が、1以上登録される。また、シフト設定情報111には、各勤務シフト表に対応付けて制約を示すデータが登録される。
【0049】
変更前シフトデータベース112、変更後シフトデータベース113および調整後シフトデータベース114には、勤務シフトの変更が行われた過去の変更事案を示す情報が登録される。これらのデータベースについては、次の図7を用いて説明する。
【0050】
図7は、変更前シフトデータベース、変更後シフトデータベースおよび調整後シフトデータベースのデータ構成例を示す図である。変更前シフトデータベース112には、過去の変更前シフト112aが1つ以上登録される。変更後シフトデータベース113には、変更前シフトデータベース112に登録されたいずれかの過去の変更前シフト112aに対応する、過去の変更後シフト113aが登録される。調整後シフトデータベース114には、変更後シフトデータベース113に登録されたいずれかの過去の変更後シフト113aに対応する、過去の調整後シフト114aが登録される。
【0051】
過去の変更前シフト112aは、過去において勤務シフトの変更が要求された際の、変更前の勤務シフト表を示す。過去の変更後シフト113aは、対応する過去の変更前シフト112aの割り当て枠(フィールド)のうち、変更が要求された変更希望枠の勤務形態のみが変更後の勤務形態に変更された勤務シフト表を示す。過去の調整後シフト114aは、対応する過去の変更後シフト113aに対して、変更希望枠以外の割り当て枠に対する勤務形態の割り当てが再調整された後の勤務シフト表を示す。
【0052】
なお、過去の調整後シフト114aは、変更要求に応じた割り当ての再調整が最適化計算によって行われたか、あるいは管理者の入力操作によって行われたかに関係なく、最終的に確定された勤務シフト表を示す。このため、過去の調整後シフト114aは、必須の制約を必ずしもすべて満たしているとは限らず、例えば管理者の裁量や経験に基づいて作成されている場合もある。
【0053】
図6に戻り、変更要求受け付け部121、変更内容判別部122、影響範囲算出部123、再割り当て処理部124および調整結果出力部125の処理は、例えば、プロセッサ101が所定のアプリケーションプログラムを実行することで実現される。これらの処理ブロックの処理については、次の図8を用いて説明する。
【0054】
図8は、管理サーバによる勤務シフト変更処理の全体を示すフローチャートの例である。
[ステップS11]変更要求受け付け部121は、ユーザ端末200から勤務形態の割り当て変更要求を受け付ける。このとき、変更要求受け付け部121は、変更対象となる既存の勤務シフト表を示す変更前シフトと、この変更前シフトのうち、変更希望枠の勤務形態のみが変更された勤務シフト表を示す変更後シフトとを取得する。
【0055】
[ステップS12]変更内容判別部122は、変更要求受け付け部121から変更前シフトと変更後シフトを取得し、これらの差分をとることで割り当て変更内容を判別する。
[ステップS13]影響範囲算出部123は、変更前シフトデータベース112、変更後シフトデータベース113および調整後シフトデータベース114を参照して、勤務シフト表に対する変更要求内容が類似する過去の変更事案を特定する。そして、影響範囲算出部123は、特定された変更事案に対応する過去の調整後シフトに基づいて、変更要求に応じた割り当ての再調整によって勤務形態の割り当てが変更された割り当て枠を、再調整によって影響が及んだ割り当て枠を示す「影響範囲」として特定する。
【0056】
[ステップS14]再割り当て処理部124は、ステップS11で取得した変更後シフトのうち、影響範囲内で勤務形態の割り当てを調整する。
[ステップS15]調整結果出力部125は、勤務形態の割り当てが調整された勤務シフトを、調整結果としてユーザ端末200に出力する。
【0057】
図9は、勤務シフト表の差分および距離の算出について説明するための図である。図8のステップS12,S13では、勤務シフト表の差分や類似度が算出される。本実施の形態では、これらの計算を行うために、勤務シフト表の各割り当て枠(フィールド)に登録された勤務形態の情報がone-hot化される。
【0058】
具体的には、勤務シフト表に対して勤務形態の行が追加され、各曜日に対応するカラムが4つの勤務形態にそれぞれ対応するカラムに分割される。そして、分割された各カラムに対応するフィールドには、該当する勤務形態が設定されている場合に「1」が設定され、設定されていない場合に「0」が設定される。これにより、元の勤務シフト表における各フィールドの情報は4桁のビット列に変換される。ある看護師のある曜日に対応するフィールドには4つの勤務形態のうちの1つだけが設定されるので、4桁のビット列のうち1桁のみが「1」となる。
【0059】
図9では、比較対象となる一方の勤務シフト表に勤務形態の行が追加された勤務シフト表141と、他方の勤務シフト表に勤務形態の行が追加された勤務シフト表142とが例示されている。ただし、勤務シフト表141,142では、看護師の数は同一であるものとする。
【0060】
勤務シフト表141では、看護師N11の月曜日に勤務形態として日勤が割り当てられているとすると、元の勤務シフト表における該当フィールドの情報はone-hot化によってビット列[1,0,0,0]に変換される。このようにして、看護師N11についての1週間分のレコードの情報は、4×7桁のビット列Bp1に変換される。同様に、看護師N12についての1週間分のレコードの情報はビット列Bp2に変換され、看護師N13についての1週間分のレコードの情報はビット列Bp3に変換され、看護師N14についての1週間分のレコードの情報はビット列Bp4に変換される。そして、各看護師に対応するビット列が結合されることで、勤務シフト表141における勤務形態の割り当て情報はビット列pに変換される。
【0061】
同様に、勤務シフト表142でも、看護師N21についての1週間分のレコードの情報はビット列Bq1に変換され、看護師N22についての1週間分のレコードの情報はビット列Bq2に変換される。また、看護師N23についての1週間分のレコードの情報はビット列Bq3に変換され、看護師N24についての1週間分のレコードの情報はビット列Bq4に変換される。そして、各看護師に対応するビット列が結合されることで、勤務シフト表142における勤務形態の割り当て情報はビット列qに変換される。
【0062】
勤務シフト表の間の差分は、各勤務シフト表に対応するビット列間の差分を計算することで得られる。具体的な例としては、ビット列の間で同じ桁のビット値同士が比較され、ビット値が異なる場合に「1」とし、ビット値が同じ場合に「0」とした差分値を示すビット列が算出される。この算出結果により、比較対象の元の勤務シフトの中から、勤務形態が異なる割り当て枠の位置情報が取得される。
【0063】
また、勤務シフトの間の類似度は、各勤務シフト表に対応するビット列の間のユークリッド距離を算出することで得られる。例えば、ビット列pの各ビット値を先頭からp1,p2,・・・,pnとし、ビット列qの各ビット値を先頭からq1,q2,・・・,qnとすると、対応する各勤務シフトの間のユークリッド距離d(p,q)は次の式(3)を用いて計算される。
【0064】
【数2】
【0065】
次に、図8に示した処理について詳しく説明する。
図10は、変更要求受け付け部および変更内容判別部の処理を説明するための図である。
【0066】
図8のステップS11において、変更要求受け付け部121は、ユーザ端末200から勤務形態の割り当て変更要求を受け付ける。ここでは例として、変更要求受け付け部121は、割り当て変更要求に応じて、図10のような変更前シフト151および変更後シフト152を取得したとする。変更前シフト151は、看護師N1~N7についての1週間分の既存の勤務シフト表である。変更要求受け付け部121は、例えば、ユーザ端末200から既存の勤務シフト表の指定を受け付け、指定された勤務シフト表をシフト設定情報111に基づいて作成し、それを変更前シフト151として取得する。
【0067】
また、変更後シフト152は、変更前シフト151の割り当て枠(フィールド)のうち1以上の割り当て枠(変更希望枠)が変更された勤務シフト表である。変更要求受け付け部121は、例えば、ユーザ端末200から変更前シフト151を修正する操作を受け付け、修正された変更前シフト151を変更後シフト152として取得する。図10では例として、看護師N4の火曜日の勤務形態について、夜勤から休みに変更する変更要求が受け付けられたとする。
【0068】
変更内容判別部122は、前述の手順により、変更前シフト151の各フィールドの情報をone-hot化してビット列に変換し、変更後シフト152の各フィールドの情報をone-hot化してビット列に変換する。そして、変更内容判別部122は、各ビット列の差分を算出することで、変更前シフト151に対する勤務形態の割り当て変更内容を判別する。
【0069】
図10の例では、看護師N4の火曜日の勤務形態が夜勤から休みに変更されている。この場合、変更後シフト152におけるフィールドの変更位置として「火曜日」「看護師N4」に対応する位置が特定され、この位置を示す変更位置情報153が出力される。変更位置情報153は、例えば、JSON(JavaScript Object Notation、JavaScriptは商標)形式で記述される。
【0070】
なお、他の例として、変更要求受け付け部121は、変更前シフト151における変更位置および変更内容を示す情報をユーザ端末200から受け付けてもよい。この場合、変更要求受け付け部121は、変更前シフト151と変更位置および変更内容を示す情報とに基づいて、変更後シフト152を作成する。また、変更位置情報153は、ユーザ端末200から受け付けた変更位置および変更内容を示す情報を基に作成されればよい。
【0071】
図11は、割り当て変更内容の判別処理の手順を示すフローチャートの例である。この図11の処理は、図8のステップS12の処理に対応する。
[ステップS21]変更内容判別部122は、変更前シフト151と変更後シフト152とを取得する。
【0072】
[ステップS22]変更内容判別部122は、変更前シフト151の各フィールドの情報をone-hot化してビット列に変換し、変更後シフト152の各フィールドの情報をone-hot化してビット列に変換する。変更内容判別部122は、各ビット列の差分を算出する。
【0073】
[ステップS23]変更内容判別部122は、差分の算出結果に基づいて、勤務形態が変更されたフィールドの位置を示す変更位置情報を作成する。変更内容判別部122は、作成された変更位置情報を、変更前シフト151および変更後シフト152を示すデータとともに影響範囲算出部123に出力する。
【0074】
図12は、影響範囲算出部による類似勤務シフトの抽出処理を説明するための図である。図8のステップS13において、影響範囲算出部123は、変更前シフトデータベース112、変更後シフトデータベース113および調整後シフトデータベース114を参照して、勤務シフト表に対する変更要求内容が類似する過去の変更事案を特定する。
【0075】
具体的には、影響範囲算出部123はまず、変更前シフトデータベース112から、変更前シフト151と類似する過去の変更前シフトを検索する。この類似検索では、影響範囲算出部123は、変更前シフト151と、変更前シフトデータベース112内の過去の変更前シフトのそれぞれとを、one-hot化によりビット列に変換する。そして、影響範囲算出部123は、変更前シフト151に対応するビット列と過去の変更前シフトのビット列とのユークリッド距離を前述の式(3)を用いて算出し、ユークリッド距離の逆数を類似度として算出する。
【0076】
影響範囲算出部123は、例えば、変更前シフト151との類似度が所定の閾値以上であった過去の変更前シフトを、変更前シフトデータベース112から抽出する。あるいは、影響範囲算出部123は、変更前シフト151との類似度が高い順に所定数の過去の変更前シフトを、変更前シフトデータベース112から抽出する。図12では、この類似検索によって過去の変更前シフト161a~161cが抽出されたとする。
【0077】
ここで、変更前シフトデータベース112には、例えば、勤務シフトに含まれる看護師の人数や、勤務シフト作成のための制約が変更前シフト151と異なる過去の変更前シフトも登録されている。上記のような類似検索により、看護師の人数や制約が変更前シフト151と同じである可能性が高い過去の変更前シフトを、変更前シフトデータベース112から抽出することが可能となる。
【0078】
次に、影響範囲算出部123は、抽出された過去の変更前シフト161a~161cのそれぞれに対応する過去の変更後シフト162a~162cを、変更後シフトデータベース113から抽出する。そして、影響範囲算出部123は、抽出された過去の変更後シフト162a~162cの中から、変更後シフト152と類似する過去の変更後シフトを検索する。この類似検索では、影響範囲算出部123は、変更後シフト152と、過去の変更後シフト162a~162cのそれぞれとを、one-hot化によりビット列に変換する。そして、影響範囲算出部123は、変更後シフト152に対応するビット列と過去の変更後シフト162a~162cのそれぞれに対応するビット列とのユークリッド距離を式(3)を用いて算出し、ユークリッド距離の逆数を類似度として算出する。
【0079】
影響範囲算出部123は、過去の変更後シフト162a~162cの中から、変更後シフト152との類似度が最も高いものを抽出する。これにより、変更前の元の勤務シフト表が変更前シフト151に類似し、かつ、変更が要求された割り当て枠の位置が変更後シフト152における変更希望枠の位置と同じである可能性が高い過去の変更後シフトを抽出することができる。図12では例として、このような過去の変更後シフトとして、過去の変更後シフト162aが抽出されたとする。
【0080】
次に、影響範囲算出部123は、抽出された過去の変更後シフト162aに対応する過去の調整後シフト163aを、調整後シフトデータベース114から抽出する。このような処理により、変更要求内容が類似する過去の変更事案として、過去の変更前シフト161a、過去の変更後シフト162aおよび過去の調整後シフト163aの組み合わせが抽出される。
【0081】
図13は、影響範囲の特定処理を説明するための図である。影響範囲算出部123は次に、抽出された過去の変更後シフト162aと、抽出された過去の調整後シフト163aとの差分を算出する。差分の算出は、過去の変更後シフト162aをone-hot化により変換したビット列と、過去の調整後シフト163aをone-hot化により変換したビット列との間で、ビットごとの差分をとることで行われる。
【0082】
影響範囲算出部123は、差分の算出により、過去の調整後シフト163aの割り当て枠の中から、過去の変更後シフト162aとは勤務形態の割り当てが異なっている割り当て枠を特定する。この処理によって特定される割り当て枠は、看護師N4の火曜日の変更に応じて勤務形態の割り当てが調整された(割り当てが変更された)割り当て枠である。影響範囲算出部123は、特定された割り当て枠の範囲を影響範囲として、その位置情報164を作成する。
【0083】
図13の例では、影響範囲に含まれる割り当て枠を太線で表している。図13では、火曜日における看護師N5の割り当て枠、水曜日における看護師N4,N5の割り当て枠、木曜日における看護師N4,N5の割り当て枠、土曜日における看護師N4,N5の割り当て枠、日曜日における看護師N4,N5の割り当て枠が、影響範囲として特定されたとする。また、図13の例では、位置情報164には、影響範囲に含まれる割り当て枠の位置情報に加えて、変更希望枠の位置情報(看護師N4の火曜日の割り当て枠)も記載されている。なお、前述の変更位置情報153と同様に、影響範囲の位置情報164は、例えばJSON形式で記述される。
【0084】
このようにして特定された影響範囲は、変更要求内容が類似し、かつ、変更要求に応じて割り当てが変更されて確定された範囲を示す。このため、変更後シフト152において同じ影響範囲内に限定して最適化計算を実行することで、最適解を短時間で得られる可能性が高いと考えられる。
【0085】
図14は、影響範囲の特定処理の手順を示すフローチャートの例である。この図14の処理は、図8のステップS13の処理に対応する。
[ステップS31]影響範囲算出部123は、変更前シフト151と類似する過去の変更前シフトを変更前シフトデータベース112から検索する。この処理では、例えば、変更前シフト151との類似度(ユークリッド距離の逆数)が所定の閾値以上である過去の変更前シフトが、変更前シフトデータベース112から1以上検索される。あるいは、変更前シフト151との類似度が高い順に所定数の過去の変更前シフトが、変更前シフトデータベース112から検索される。
【0086】
[ステップS32]影響範囲算出部123は、ステップS31で検索された過去の変更前シフトにそれぞれ対応する過去の変更後シフトを、変更後シフトデータベース113から抽出する。
【0087】
[ステップS33]影響範囲算出部123は、ステップS32で抽出された過去の変更後シフトの中から、変更前シフト151に対応する変更後シフト152と類似する過去の変更後シフトを抽出する。この処理では、変更後シフト152との類似度(ユークリッド距離の逆数)が所定の閾値以上である過去の変更後シフトの中から、最も類似度が高い過去の変更後シフトが抽出される。
【0088】
ただし、類似度が閾値以上である過去の変更後シフトが存在しなかった場合には、過去の変更事案を用いた勤務シフトの自動修正処理が不可能となる。この場合、例えば、再割り当て処理部124が、変更後シフト152における変更希望枠以外の全割り当て枠を調整範囲として最適化計算を実行する。例えば、所定の時間内に最適解が得られた場合には、最適解に基づく調整結果がユーザ端末200に表示され、所定の時間内に最適解が得られなかった場合には、調整結果が得られなかったことを示す情報がユーザ端末200に表示される。
【0089】
[ステップS34]影響範囲算出部123は、ステップS33で抽出された過去の変更後シフトに対応する過去の調整後シフトを、調整後シフトデータベース114から抽出する。
【0090】
[ステップS35]影響範囲算出部123は、ステップS33で抽出された過去の変更後シフトと、ステップS34で抽出された過去の調整後シフトとの差分に基づいて、割り当て変更要求に応じて勤務形態の割り当てが変更された影響範囲を特定する。
【0091】
図15は、再割り当て処理部による初期処理を説明するための図である。再割り当て処理部124は、まず、過去の調整後シフト163aから特定された影響範囲内の各割り当て枠に割り当てられている勤務形態を、変更後シフト152における同じ影響範囲内の各割り当て枠に対してそのまま当てはめる。例えば、過去の調整後シフト163aにおける5番目の看護師(看護師N5)の火曜日に割り当てられていた勤務形態が、変更後シフト152における5番目の看護師(看護師N5)の火曜日にそのまま割り当てられる。また、過去の調整後シフト163aにおける4番目の看護師(看護師N4)の水曜日に割り当てられていた勤務形態が、変更後シフト152における4番目の看護師(看護師N4)の水曜日にそのまま割り当てられる。
【0092】
そして、再割り当て処理部124は、このような当てはめによって割り当てが修正された変更後シフト152aについて、制約の充足率を算出する。充足率は、上記の制約C1~C4のうち充足されている制約の割合を示す。再割り当て処理部124は、充足率が所定の閾値(例えば100%)以上である場合には、割り当て修正後の変更後シフト152aを、最終的な調整結果としてユーザ端末200に出力する。
【0093】
一方、充足率が閾値未満である場合、再割り当て処理部124は、変更後シフト152aにおける影響範囲内で、勤務形態の割り当てを調整するための最適化計算を実行する。この処理では、計算のための初期値を変更しながら、制約の充足率が閾値以上となるまで最適化計算が繰り返される。具体的には、勤務形態を再割り当てする割り当て枠の範囲を、影響範囲内で徐々に広げながら最適化計算が実行される。
【0094】
ここでは例として、以下の図16図18に例示するように、初期値の変更範囲を3段階で変更しながら最適化計算が実行されるものとする。
図16は、初期値変更パターンを示す第1の図である。再割り当て処理部124は、まず、図16に示すような初期値変更パターンP1を用いて勤務形態の割り当てを調整する。
【0095】
初期値変更パターンP1では、割り当て変更が要求された看護師についての他の曜日の割り当て枠のうち、影響範囲に含まれる曜日の割り当て枠が割り当ての調整対象となる。図16の例では、看護師N4についての水曜日、木曜日、土曜日、日曜日の割り当て枠が調整対象となる。
【0096】
再割り当て処理部124は、調整対象の割り当て枠に関する変数の初期値を変更しながら最適化計算を実行する。そして、再割り当て処理部124は、得られた最適解について制約の充足率を算出し、充足率が閾値以上である場合にはその解を調整結果として出力する。一方、充足率が閾値未満である場合、再割り当て処理部124は、図17に示す初期値変更パターンP2を用いて勤務形態の割り当てを再調整する。
【0097】
図17は、初期値変更パターンを示す第2の図である。図17に示す初期値変更パターンP2では、初期値変更パターンP1での調整対象に加えて、割り当て変更が要求された曜日における、割り当て変更が要求された看護師を除く他の看護師の割り当て枠のうち、影響範囲に含まれる割り当て枠が割り当ての調整対象となる。図17の例では、火曜日における看護師N5の割り当て枠が新たな調整対象となる。
【0098】
再割り当て処理部124は、調整対象の割り当て枠に関する変数の初期値を変更しながら最適化計算を実行する。そして、再割り当て処理部124は、得られた最適解について制約の充足率を算出し、充足率が閾値以上である場合にはその解を調整結果として出力する。一方、充足率が閾値未満である場合、再割り当て処理部124は、図18に示す初期値変更パターンP3を用いて勤務形態の割り当てを再調整する。
【0099】
図18は、初期値変更パターンを示す第3の図である。図18に示す初期値変更パターンP3では、影響範囲に含まれるすべての割り当て枠が割り当ての調整対象となる。図18の例では、火曜日における看護師N5の割り当て枠、水曜日における看護師N4,N5の割り当て枠、木曜日における看護師N4,N5の割り当て枠、土曜日における看護師N4,N5の割り当て枠、日曜日における看護師N4,N5の割り当て枠が調整対象となる。再割り当て処理部124は、調整対象の割り当て枠に関する変数の初期値を変更しながら最適化計算を実行し、その解を調整結果として出力する。
【0100】
このように、変更後シフト152aにおける影響範囲内に限定して、勤務形態の割り当てを調整するための最適化計算が実行される。これにより、変更後シフト152aの全体を調整対象とする場合より計算時間を短縮できる。また、前述のように影響範囲は、変更要求内容が類似し、かつ、変更要求に応じて割り当てが変更されて確定された範囲を示す。このため、上記のように、変更後シフト152aにおける影響範囲内に限定して最適化計算を実行した場合、最適解を得られる可能性は、変更後シフト152aの全体を調整対象とした場合よりも大きくは下がらない。したがって、最適解を短時間で得られる可能性が高くなる。
【0101】
また、上記処理では、割り当ての調整範囲を影響範囲内で徐々に広げながら最適化計算が実行される。これにより、最初から影響範囲全体を調整範囲とした場合と比較して、最適解がより短時間で得られる可能性が生じ、調整結果の出力までにかかる時間の短縮を期待できるようになる。
【0102】
また、再割り当て処理部124は、上記の初期値変更パターンP1~P3を用いた最適化計算をあらかじめ決められた時間内にのみ実行し、その時間が経過すると計算を終了し、その時点での暫定解を調整結果として出力してもよい。この場合、調整結果の出力までにかかる時間が実用的な時間内に収まるようになる。
【0103】
図19は、勤務形態の割り当て調整処理の手順を示すフローチャートの例である。この図19の処理は、図8のステップS14の処理に対応する。
[ステップS41]再割り当て処理部124は、影響範囲算出部123によって抽出された過去の調整後シフトの割り当て枠のうち、影響範囲に含まれる割り当て枠に割り当てられている勤務形態を、変更後シフト152における同じ位置の割り当て枠に当てはめる。これにより、暫定的な調整後シフトである「暫定シフト」が作成される。
【0104】
[ステップS42]再割り当て処理部124は、ステップS41で作成された暫定シフトについて、変更前シフト151に対応する制約の充足率を算出する。
[ステップS43]再割り当て処理部124は、ステップS42で算出された充足率が所定の閾値(例えば100%)以上か(制約が満たされているか)を判定する。充足率が閾値以上の場合、処理がステップS49に進められ、充足率が閾値未満の場合、処理がステップS44に進められる。
【0105】
なお、変更前シフト151に対応する制約として必須の制約とそうでない制約とがある場合には、ステップS43では必須の制約についての充足率が閾値以上か否かが判定されればよい。
【0106】
[ステップS44]再割り当て処理部124は、現在の暫定シフトの影響範囲における変数の初期値を変更しながら最適化計算を実行する。この処理では、前述のように、影響範囲内で初期値の変更範囲を徐々に広げながら最適化計算が繰り返される。
【0107】
[ステップS45]再割り当て処理部124は、最適化計算の計算時間(ステップS43でNoと判定されてからの経過時間)があらかじめ指定された指定時間を超過したかを判定する。計算時間が指定時間を超過していない場合、処理がステップS46に進められ、指定時間を超過した場合、処理がステップS49に進められる。
【0108】
[ステップS46]再割り当て処理部124は、最適化計算の解が得られたかを判定する。解が得られていない場合、処理がステップS44に進められて最適化計算が継続される。一方、解が得られた場合、処理がステップS47に進められる。
【0109】
[ステップS47]再割り当て処理部124は、得られた解に基づいて現在の暫定シフトを更新する。
[ステップS48]再割り当て処理部124は、更新された暫定シフトについて制約の充足率を算出し、充足率が閾値以上か(制約が満たされているか)を判定する。閾値としては、ステップS43と同じ値が用いられればよい。充足率が閾値以上の場合、処理がステップS49に進められる。一方、充足率が閾値未満の場合、処理がステップS44に進められる。この場合、影響範囲において初期値の変更範囲を広げて最適化計算が実行される。
【0110】
[ステップS49]再割り当て処理部124は、現在の暫定シフトを調整結果(調整後シフト)に決定する。
図20は、調整結果の出力処理の手順を示すフローチャートの例である。この図20の処理は、図8のステップS15の処理に対応する。
【0111】
[ステップS51]調整結果出力部125は、再割り当て処理部124によって決定された調整後シフトをユーザ端末200に出力し、表示装置に表示させる。
[ステップS52]調整結果出力部125は、表示された調整後シフトに対するユーザの変更操作を受け付けることが可能である。調整後シフトの変更操作を受け付けた場合、処理がステップS53に進められる。一方、変更操作が行われず、表示された調整後シフトを確定する操作が行われた場合、処理がステップS54に進められる。
【0112】
[ステップS53]調整結果出力部125は、ユーザの変更操作に応じて調整後シフトにおける勤務形態の割り当てを変更する。その後、割り当てが変更された調整後シフトの確定操作が行われると、処理がステップS54に進められる。
【0113】
[ステップS54]調整結果出力部125は、調整後シフトに対応する変更前シフト151を過去の変更前シフトとして変更前シフトデータベース112に登録する。また、調整結果出力部125は、調整後シフトに対応する変更後シフト152を、変更前シフトデータベース112に登録された過去の変更前シフトに対応付けて、過去の変更後シフトとして変更後シフトデータベース113に登録する。さらに、調整結果出力部125は、調整後シフトを、変更前シフトデータベース112および変更後シフトデータベース113にそれぞれ登録された過去の変更前シフトおよび過去の変更後シフトに対応付けて、過去の調整後シフトとして調整後シフトデータベース114に登録する。
【0114】
なお、上記の第2の実施の形態では、勤務者として看護師を例示したが、勤務者は、例えばコールセンタのオペレータなど、シフト制で勤務する他の職種の勤務者であってもよい。また、上記の第1、第2の実施の形態では勤務シフト表の修正に関して説明したが、第1、第2の実施の形態におけるテーブルへの割り当て調整技術は、いわゆる人・モノ・コトなどがカラムおよびレコードに設定されたテーブルの各フィールドに、人・モノ・コトなどの複数のリソースのいずれかが割り当てられるようなケースに適用可能である。
【0115】
また、上記の各実施の形態に示した装置(例えば、スケジュール調整装置1、管理サーバ100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。
【0116】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0117】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【0118】
1 スケジュール調整装置
2 処理部
3 データベース
11,13,21,23 勤務シフト
12,22 変更要求
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20