(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024028010
(43)【公開日】2024-03-01
(54)【発明の名称】スケジューリングプログラム、スケジューリング方法及び情報処理装置
(51)【国際特許分類】
G06Q 10/0631 20230101AFI20240222BHJP
G16H 40/20 20180101ALI20240222BHJP
【FI】
G06Q10/06 302
G16H40/20
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022131303
(22)【出願日】2022-08-19
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】楠嶺 生宏
(72)【発明者】
【氏名】川▲崎▼ 邦将
(72)【発明者】
【氏名】大塚 浩
【テーマコード(参考)】
5L049
5L099
【Fターム(参考)】
5L049AA06
5L099AA01
(57)【要約】
【課題】公平且つ効率的なスケジューリングを行うスケジューリングプログラム、スケジューリング方法及び情報処理装置を提供する。
【解決手段】複数のタスクのそれぞれについて、指定された開始時刻及び終了時刻を取得し、優先度が与えられた複数のルールを基に、所定の条件下で優先度に変更を加えて、いずれか1つ又は複数のタスクの開始時刻及び終了時刻を調整し、調整した後のタスクに対して、予め決められた制約条件を満たすように数理最適化技術を用いて所定リソースを割り当てる処理をコンピュータに実行させる。
【選択図】
図13
【特許請求の範囲】
【請求項1】
複数のタスクのそれぞれについて、指定された開始時刻及び終了時刻を取得し、
優先度が与えられた複数のルールを基に、所定の条件下で前記優先度に変更を加えて、いずれか1つ又は複数の前記タスクの前記開始時刻及び前記終了時刻を調整し、
前記調整した後の前記タスクに対して、予め決められた所定リソースの割り当てにおける制約条件を満たすように数理最適化技術を用いて前記所定リソースを割り当てる
処理をコンピュータに実行させることを特徴とするスケジューリングプログラム。
【請求項2】
前記開始時刻及び前記終了時刻を基に、前記複数のタスクうち前記制約条件に違反したタスクを抽出し、
前記抽出したタスクのうちのいずれか1つ又は複数の前記タスクの前記開始及び終了時刻を調整することを特徴とする請求項1に記載のスケジューリングプログラム。
【請求項3】
前記複数のタスクにおいて前記制約条件の違反がない状態まで、前記開始時刻及び前記終了時刻の調整を繰り返し、
前記制約条件の違反がない状態で、前記所定リソースの割り当てを実行する
処理を前記コンピュータに実行させることを特徴とする請求項2に記載のスケジューリングプログラム。
【請求項4】
前記抽出したタスクの開始時刻が許容範囲の中で最速となるように、前記開始時刻及び終了時刻を調整する処理を前記コンピュータに実行させることを特徴とする請求項2に記載のスケジューリングプログラム。
【請求項5】
複数のルールは、前記複数のタスクの全てが有する要素に基づき調整対象から外す固定タスクを決定するための第1ルール及び移動回数の上限である基本移動回数を基に調整回数の公平性を確保する第2ルールを含み、
前記第2ルールは前記第1ルールより優先度が高く、前記第2ルールに基づき前記固定タスクが決定されない場合に、前記第1ルールを基に前記固定タスクを決定し、
前記第2ルールにおける前記基本移動回数を前記抽出したタスクの全ての調整回数が超えた場合、前記第2ルールより前記第1ルールの優先度を高くして、前記第1ルールを基に固定タスクを決定し、
前記抽出したタスクから前記固定タスクを除いた残タスクの前記開始時刻及び前記終了時刻を調整する
処理を前記コンピュータに実行させることを特徴とする請求項2に記載のスケジューリングプログラム。
【請求項6】
前記複数のルールには、特定タスクを前記固定タスクとするための第3ルールが含まれ、
前記第3ルールを基に前記固定タスクとされた前記特定タスクを前記抽出したタスクから除外し、
前記抽出したタスクのうち前記特定タスク以外のタスクから、前記第1ルール及び前記第2ルールを基に前記固定タスクをさらに決定する
処理を前記コンピュータに実行させることを特徴とする請求項5に記載のスケジューリングプログラム。
【請求項7】
情報処理装置が、
複数のタスクのそれぞれについて、指定された開始時刻及び終了時刻を取得し、
優先度が与えられた複数のルールを基に、所定の条件下で前記優先度に変更を加えて、いずれか1つ又は複数の前記タスクの前記開始時刻及び前記終了時刻を調整し、
前記調整した後の前記タスクに対して、予め決められた制約条件を満たすように数理最適化技術を用いて予め決められた所定リソースを割り当てる
処理を実行することを特徴とするスケジューリング方法。
【請求項8】
複数のタスクのそれぞれについて指定された開始時刻及び終了時刻を取得して、優先度が与えられた複数のルールを基に、所定の条件下で前記優先度に変更を加えて、いずれか1つ又は複数の前記タスクの前記開始時刻及び前記終了時刻を調整する調整部と、
前記調整部により前記調整が行われた前記タスクに対して、予め決められた制約条件を満たすように数理最適化技術を用いて予め決められた所定リソースを割り当てる割当計算部と
を備えたことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スケジューリングプログラム、スケジューリング方法及び情報処理装置に関する。
【背景技術】
【0002】
病院におけるスケジューリング業務では、目的や制約の異なる多様なスケジューリング調整が要求される。スケジューリング調整としては、例えば、医師や看護師などのスタッフの残業時間が少なくなるようにスケジューリングを組む場合や、点数の高い手術をもれなく実施して売り上げを計上できるようスケジューリングを組む場合などがある。
【0003】
このような様々な観点から組まれるスケジューリングについて、なるべく各スケジューリングの要望を満たすように調整することが重要である。例えば、ある病院では、予約システムに対して、医師などの予約者が、手術の開始時刻及び終了時刻の希望を登録して事前予約を行う。そして、予約の締め切り後、それら事前予約が行われた各手術について、手術部の責任者などが、手術室、使用機器及び担当スタッフの割り当てを行う。この割り当て作業には、作業者の非常に多くの時間や工数が割かれることになる。この作業の負荷を軽減して作業を効率化し、コストを削減するために、数理最適化技術を用いた割り当て作業の自動化が近年図られている。
【0004】
なお、スケジューリングの技術として、満たすことが条件であるハード制約と満たした方がよいソフト制約がある中で、ソフト制約に優先度を設定して、優先度に応じて許容できるエラー数を調整する技術が提案されている。また、機械学習を用いて手術に要するリソースを推定し、リソースの推定結果とリソースに関する制約条件とから手術スケジュールを生成するシステムが提案されている。また、タスク完了時刻が最速となるようにタスク割り当てを行う際に、複数時点での最適化を1度に行って時間方向での大域最適解を得る技術が提案されている。また、点検要件に基づいて点検作業のリストを生成し、各点検作業を遂行する作業員の人数を特定し、作業者の制約に基づいて点検作業のスケジュールを決定する技術が提案されている。また、技術グループ毎にスキルレベルを決定し、定義されたスキルを有する人員の各技術グループに割り当ててスケジューリングを行う技術が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2015-222464号公報
【特許文献2】特開2021-64350号公報
【特許文献3】特開2016-91286号公報
【特許文献4】米国特許出願公開第2014/0330606号明細書
【特許文献5】米国特許第8612272号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、割り当て作業を線形問題として定式化した際に解が不定になるのを避けるべく制約条件を緩めた場合、手術に関する割り当て作業においては、問題の特性上意味のないスケジュール結果が割り当てられてしまうおそれがあり好ましくない。例えば、機器の制約条件を緩めた場合、本当に使用したい器械が他の手術に廻ってしまい、手術が適切に行えなくなるなどといった事態が考えられる。そのため、手術に関する割り当て作業では、制約条件を緩めずに、調整可能な予知のある割り当てタスクのデータを調整することが好ましい。ここでの割り当てタスクとは、実行すべき個々の手術にあたる。
【0007】
各手術に対して割り当てる各要素を調整する場合、従来のスケジューリングシステムでは、予め入力された手術の希望開始時刻や希望終了時刻を、割り当て作業の問題が解けるようにずらすことを基本方針として動作することが考えられる。しかしながら、安直に全体をずらした結果、当初の希望であった開始時刻及び終了時刻から実際の開始時刻や終了時刻が大きく乖離したスケジュールになることも考えられ、予約者の間で不公平感が発生する可能性がある。このように従来のスケジューリングシステムでは、不公平感を抑え且つ効率的なスケジューリングを行うことは困難である。
【0008】
開示の技術は、上記に鑑みてなされたものであって、公平且つ効率的なスケジューリングを行うスケジューリングプログラム、スケジューリング方法及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本願の開示するスケジューリングプログラム、スケジューリング方法及び情報処理装置の一つの態様において、複数のタスクのそれぞれについて、指定された開始時刻及び終了時刻を取得し、優先度が与えられた複数のルールを基に、所定の条件下で前記優先度に変更を加えて、いずれか1つ又は複数の前記タスクの前記開始時刻及び前記終了時刻を調整し、前記調整した後の前記タスクに対して、予め決められた制約条件を満たすように数理最適化技術を用いて所定リソースを割り当てる処理をコンピュータに実行させる。
【発明の効果】
【0010】
1つの側面では、本発明は、公平且つ効率的なスケジューリングを行うことができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、実施例に係るスケジューリングシステムのブロック図である。
【
図4】
図4は、第1の具体例に係る事前予約情報から取得されたタスク情報を示す図である。
【
図5】
図5は、第1の具体例に係る各タスクに対する各リソースの割り当てを表す変数の設定イメージを示す図である。
【
図6】
図6は、第1の具体例に係るタスク情報の遷移を示す図である。
【
図7】
図7は、第1の具体例における求解による変数に対する値の割当結果の一例を示す図である。
【
図8】
図8は、スケジュール表示画面の一例を示す図である。
【
図9】
図9は、第2の具体例に係るタスク情報の遷移を示す図である。
【
図10】
図10は、第2の具体例に係る各タスクに対する各リソースの割り当てを表す変数の設定イメージを示す図である。
【
図11】
図11は、第2の具体例における求解による変数に対する値の割当結果を示す図である。
【
図12】
図12は、リソース割当処理のフローチャートである。
【発明を実施するための形態】
【0012】
以下に、本願の開示するスケジューリングプログラム、スケジューリング方法及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するスケジューリングプログラム、スケジューリング方法及び情報処理装置が限定されるものではない。
【実施例0013】
図1は、実施例に係るスケジューリングシステムのブロック図である。本実施例に係るスケジューリングシステム100は、病院に配置されたシステムであって、手術のスケジューリングを行う。スケジューリングシステム100は、サーバ1及び端末装置2を有する。サーバ1と端末装置2とは、ネットワークで接続される。
【0014】
サーバ1は、事前予約された各手術の予約内容を基に、各手術の開始時刻の決定及び手術に対する手術室や看護師などといったエージェント毎のリソースの割り当てを行う。エージェントは割り当てる要素のカテゴリにあたり、リソースは各エージェントに含まれる具体的な1つ1つの要素である。例えば、看護師というエージェントには、具体的な看護師A~Cなどが含まれる。以下では、エージェント毎のリソースの割り当てを、単に「リソースの割り当て」と呼ぶ。サーバ1は、
図1に示すように、通信制御部11、割当計算部12、入力データ調整部13、入力データ格納部14及び割当結果格納DB(Data Base)15を有する。
【0015】
入力データ格納部14は、
図2に示すような医師から入力された各医師が執刀する手術の事前予約情報16を格納する。
図2は、事前予約情報を示す図である。事前予約情報16は、例えば、手術の識別情報であるタスク名、開始時刻、終了時刻、執刀医、作成日時及びタスク移動回数などが登録される。ここで、タスク移動回数は、タスクに対するリソース割当処理で使用される情報であり、事前予約情報16に含まれなくてもよい。本実施例では、タスク移動回数は、事前予約情報16の登録者により登録される情報ではなく、初期値である0が事前予約情報16に自動登録される。また、事前予約情報16は、患者の情報など
図2に示した以外の情報が登録されてもよい。以下では、手術のことをタスクと呼ぶ場合がある。
【0016】
割当結果格納DB15は、
図3に示すような割当処理完了後の割当結果17が格納されるデータベースである。
図3は、割当結果の一例を示す図である。割当結果17は、例えば、
図3に示すように、タスク名、開始時刻、終了時刻、手術時間、執刀医、事前予約情報の作成日時及び割当リソースが登録される。
【0017】
通信制御部11は、端末装置2と接続される。通信制御部11は、各手術へのリソースの割当作成依頼を端末装置2の割当作成依頼部21から受信する。そして、通信制御部11は、リソースの割り当て作業の実行を割当計算部12に指示する。
【0018】
その後、割当計算部12によるリソース割当処理が完了し割当結果が割当結果格納DB15に格納されると、通信制御部11は、作成された割当結果17の情報を割当結果格納DB15から取得する。そして、通信制御部11は、割当作成依頼の応答として割当結果17の情報を端末装置2の割当作成依頼部21へ送信する。
【0019】
割当計算部12は、各タスクへのリソースを割り当ての制約条件を予め有する。例えば、割当計算部12は、作業者から入力された制約条件を端末装置2から通信制御部11を介して取得してもよい。制約条件には、例えば、各手術に割り当てる看護師の最低人数、1つの手術に1つ手術室といった対応関係、特定の手術に対する特定のスキルを有する看護師の割り当て、各リソースは同時時間帯に1つのタスクに参加可能といった条件などが含まれる。
【0020】
割当計算部12は、事前予約情報16を入力データ格納部14から読み込む。また、割当計算部12は、タスクである手術に対して割り当てを行うリソースの情報を、端末装置2から通信制御部11を介して取得する。リソースには、例えば、手術室、看護師、手術に用いる機器などのエージェント毎の個別の要素の情報が含まれる。
【0021】
次に、割当計算部12は、タスクとリソースとの関係を示すように制約条件を定式化する。そして、割当計算部12は、定式化した制約条件に事前予約情報16に含まれるタスク情報を用いて、事前予約情報16で設定された条件で制約条件違反が無い状態か否かを判定する。タスク情報には、少なくとも、タスク名、並びに、各タスクの開始時刻及び終了時刻が含まれる。
【0022】
制約条件違反が無い状態の場合、割当計算部12は、数理最適化技術を用いてリソースの割り当てを行う。具体的には、割当計算部12は、定式化された制約条件に事前予約情報16から取得したタスク情報を代入して、求解を実施して、各タスクに対するリソースの割り当てを決定する。
【0023】
これに対して、制約条件の違反が存在する場合、割当計算部12は、制約条件の違反が発生したタスク群を特定する。以下では、制約条件の違反が発生したタスク群を、「違反したタスク群」と呼ぶ。次に、割当計算部12は、違反したタスク群の情報及びタスク情報を通知して、違反したタスク群の時間調整を入力データ調整部13に依頼する。
【0024】
その後、割当計算部12は、時間調整が行われたタスク情報を入力データ調整部13から取得する。そして、割当計算部12は、時間調整が行われたタスク情報を用いて制約条件の違反が存在するか否かを判定する。制約条件の違反が無い状態の場合、割当計算部12は、求解を実施して、各タスクに対するリソースの割り当てを決定する。制約条件の違反が存在する場合、割当計算部12は、制約条件違反が無い状態になるまで、違反したタスク群の調整処理の依頼を繰り替えし、制約条件違反が無い状態になると、数理最適化技術を用いたリソースの割り当てを実施する。
【0025】
ここで、時間調整において調整不可の状態が発生すると、割当計算部12は、調整不可の通知を入力データ調整部13から取得する。その場合、割当計算部12は、通信制御部11を介して、調整不可のアラートを端末装置2へ送信する。
【0026】
各タスクに対するリソース割当処理が完了すると、割当計算部12は、各タスクの開始時刻、終了時刻、所要時間、執刀医及び割当結果を含む割当結果17を割当結果格納DB15に格納する。この際、割当計算部12は、各タスクの事前予約が作成された作成日時など他の情報も割当結果17に登録してもよい。
【0027】
入力データ調整部13は、違反したタスク群の情報及びタスク情報を割当計算部12から取得する。そして、入力データ調整部13は、違反したタスク群の開始時刻及び終了時刻を制約違反が解消されるように調整する。具体的には、入力データ調整部13は、以下のように時間調整処理を実行する。
【0028】
入力データ調整部13は、時間調整のためのルールを予め保持する。時間調整のためのルールには、基本ルール、特殊ルール及び公平ルールの3つが含まれる。
【0029】
基本ルールは、全てのタスクが有する要素に基づき時間調整対象から外す固定タスクを決定するためのルールである。固定タスクとは、既に与えられている開始時刻及び終了時刻を固定して調整対象から外されるタスクであり、優先して時間が割り当てられるタスクである。基本ルールは、リソースの割当処理の全体において各タスクに平等に用いられる一般的なルールである。基本ルールは、例えば、時間調整において、開始時間が速いタスクを優先する、所要時間が短いタスクを優先する、予定作成日時が早いタスクを優先するなどとするルールである。基本ルールが複数ある場合、それらの基本ルールには順位付けが行われる。順位の高い基本ルールから順に優先するタスクが決定される。基本ルールは、個々のリソースの割当処理の作業者ではなく、スケジュール管理の全体を統括する管理者などにより設定されることができる。この基本ルールが、「第1ルール」の一例にあたる。
【0030】
特殊ルールは、特定のタスクを固定タスクとするためのルールである。特殊ルールは、個々のリソースの割当処理毎に決められるルールであり、特定のタスクや特定のリソースについてのルールであってもよい。特殊ルールは、例えば、事前予約情報16におけるタスクの作成者の勤務スケジュールの空き時間がX時間未満のタスクを優先して時間調整を行うといったルールである。特殊ルールは、個々のリソースの割当処理毎に、リソースの割り当ての作業者により設定されることができる。この特殊ルールが、「第3ルール」の一例にあたる。
【0031】
公平ルールは、各タスクの調整回数に基づき固定タスクを決定するための基準となる基本移動回数を基に調整回数の公平性を確保するルールである。公平ルールは、時間調整による各タスクの移動回数を公平にするためのルールである。公平ルールは、調整対象とされて移動された回数に関する移動回数条件を有し、その移動回数条件を満たしたタスクを優先して時間調整を行わせるルールである。公平ルールは、例えば、移動回数の上限である基本移動回数をN回とする移動回数条件を有し、移動回数がN回に達したタスクを優先して時間調整を行わせるといったルールである。公平ルールは、個々のリソースの割当処理の作業者ではなく、スケジュール管理の全体を統括する管理者などにより設定されることができる。この公平ルールが、「第2ルール」の一例にあたる。
【0032】
さらに、入力データ調整部13は、基本ルール、特殊ルール及び公平ルールのそれぞれに優先度を付けて時間調整を行う。具体的には、入力データ調整部13は、通常は、特殊ルール、公平ルール、基本ルールの順で優先度を付けて、なるべく優先度が高いルールにしたがって時間調整を行う。ただし、時間調整を繰り返した結果として公平ルールの基準にどう回数に全てのタスクの移動回数が達した場合は、優先度を変更して、特殊ルール、基本ルール、公平ルールの順で優先度を付けて時間調整を行う。
【0033】
例えば、入力データ調整部13は、違反したタスク群の中に、特殊ルールに合致するタスクが存在するか否かを判定する。特殊ルールに合致するタスクが存在する場合、入力データ調整部13は、そのタスクを固定タスクに決定する。ただし、特殊ルールには違反が許されないルールが存在する場合があり、その特殊ルールを満たすことが困難な場合には、入力データ調整部13は、調整困難の通知を割当計算部12へ出力する。
【0034】
特殊ルールに合致するタスクが存在しない場合、入力データ調整部13は、違反したタスク群の全てのタスクの移動回数が公平ルールの基本移動回数に達しているか否かを判定する。移動回数が基本移動回数に達したタスクが存在する場合、入力データ調整部13は、そのタスクを固定タスクに決定する。これにより、入力データ調整部13は、各タスクの移動回数を基本移動回数内に抑えることができ、時間調整におけるタスク間の公平性を確保することができる。
【0035】
また、違反したタスク群に含まれる全てのタスクの移動回数が基本移動回数に達した場合、入力データ調整部13は、公平ルールよりも基本ルールを優先するように優先度を変更して、基本ルールにしたがって固定タスクを決定する。ただし、入力データ調整部13は、基本移動回数に達した各タスクの移動回数に差異がある場合には、移動回数の少ないタスクを選択して、その選択したタスクの中から基本ルールに応じて固定タスクを決定してもよい。
【0036】
違反したタスク群のうち固定タスクを決定した後、入力データ調整部13は、予め決められた時間調整ルールにしたがって、違反したタスク群に含まれる固定タスク以外のタスクの開始時刻を調整する。例えば、時間調整ルールが開始時刻を催促にする、言い換えればなるべく開始時刻を早くするといったルールの場合、入力データ調整部13は、固定タスク以外の各タスクの開始までの時間が最短となるように、各タスクの開始時刻を決定して時間調整を行う。さらに、入力データ調整部13は、時間調整を行ったタスクのタスク移動回数を1つインクリメントする。そして、入力データ調整部13は、時間調整したタスク情報を割当計算部12へ出力する。
【0037】
端末装置2は、手術のスケジューリングの作業者が操作する情報処理端末である。端末装置2は、割当作成依頼部21及び表示部22を有する。
【0038】
割当作成依頼部21は、入力装置などを用いた作業者から手術のスケジューリングの指示を受けて、各手術へのリソースの割当作成依頼をサーバ1へ送信する。その後、割当作成依頼部21は、各手術へのリソースの割当結果17の情報をサーバ1から取得する。そして、割当作成依頼部21は、取得した各手術へのリソース割当情報を表示部22へ出力する。
【0039】
表示部22は、各手術へのリソース割当情報をモニタなどに表示させて、作業者に通知する。作業者は、表示部22により表示された情報を参照することで、各手術に対するリソースの割り当てを確認することができる。
【0040】
ここで、各タスクへのリソースの割当処理の第1の具体例を説明する。
図4は、第1の具体例に係る事前予約情報から取得されたタスク情報を示す図である。ここでは、
図4に示すタスク情報101を基に、リソースの割当処理を行う場合で説明する。
【0041】
また、割当計算部12は、各タスクにリソースを割り当てる際の制約条件として、以下の第1~第4制約条件を有する。第1制約条件は、リソース割り当ての制約条件として各手術には看護師を2人割り当てるという条件である。第2制約条件は、各手術には必ず手術室を1室割り当てるという条件である。第3制約条件は、オペ#3は特殊なスキルを有する看護師Dを割り当てるという条件である。第4制約条件は、各リソースは同時間帯の1つのタスクに割り当てられるという条件である。
【0042】
また、入力データ調整部13は、以下の第1及び第2基本ルールを有する。第1基本ルールは、開始時間が早いタスクを優先するというルールである。第2基本ルールは、執刀時間が短いタスクを優先するというルールである。さらに、入力データ調整部13は、第1基本ルールを第2基本ルールよりも優先度を高く設定する。また、入力データ調整部13は、執刀医S2はスケジュール多忙のため調整不可であるという特殊ルールを有する。さらに、入力データ調整部13は、各タスクの基本移動回数は1回とし、対象とするタスクの移動回数に差がある場合には、移動回数の多い方を優先して時間を割り当てるという公平ルールを有する。
【0043】
この場合、割当計算部12は、
図4に示すタスク情報101を取得する。次に、割当計算部12は、
図5のように、各タスクに対する各リソースの割り当てを表す変数x11~x14、x21~x24、x31~x34、x41~x44、x51~x54、x61~x64、x71~x74、x81~x84及びx91~x94を設定する。
図5は、第1の具体例に係る各タスクに対する各リソースの割り当てを表す変数の設定イメージを示す図である。ここでは、各変数は、0又は1の値を取る。ある変数は、対応するタスクに対応するリソースが割り当てられた場合には値が1であり、逆に、割り当てられていない場合は値が0である。
図5において、変数の後の括弧内の値は、割当が決まっているリソースを表す変数である。この場合、各手術における執刀医は決定しているため、各手術を手担当する執刀医を表す変数の値は決まっている。
【0044】
次に、割当計算部12は、タスク情報101と
図5の変数とを用いて第1~第4制約条件を定式化する。
【0045】
具体的には、割当計算部12は、第1制約条件を次の数式(1)のように定式化する。
【0046】
x31+x41+x51+x61=2,x32+x42+x52+x62=2,x33+x43+x53+x63=2,x34+x44+x54+x64=2・・・(1)
【0047】
また、割当計算部12は、第2制約条件を次の数式(2)のように定式化する。
【0048】
x11+x21=1,x12+x22=1,x13+x23=1,x14+x24=1・・・(2)
【0049】
また、割当計算部12は、第3制約条件を次の数式(3)のように定式化する。
【0050】
x63=1・・・(3)
【0051】
また、割当計算部12は、9:30~10:00における第4制約条件を次の数式(4)のように定式化する。
【0052】
x11+x12+x13≦1,x21+x22+x23≦1,x31+x32+x33≦1,x41+x42+x43≦1,x51+x52+x53≦1,x61+x62+x63≦1,x71+x72+x73≦1,x81+x82+x83≦1,x91+x92+x93≦1・・・(4)
【0053】
また、割当計算部12は、10:00~10:30における第4制約条件を次の数式(5)のように定式化する。
【0054】
x12+x13≦1,x22+x23≦1,x32+x33≦1,x42+x43≦1,x52+x53≦,x62+x63≦1,x72+x73≦1,x82+x83≦1,x92+x93≦1・・・(5)
【0055】
また、割当計算部12は、10:30~11:00における第4制約条件を次の数式(6)のように定式化する。
【0056】
x13+x14≦1,x23+x24≦1,x33+x34≦1,x43+x44≦1,x53+x54≦1,x63+x64≦1,x73+x74≦1,x83+x84≦1,x93+x94≦1・・・(6)
【0057】
そして、割当計算部12は、変数に対して既に決定済みの値を代入し、且つ、値が決まっていない変数につては0又は1の値を自由にとって、定式化した制約条件を全て満たすことが可能か否かを判定する。この場合、x71=x72=1であり、割当計算部12は、数式(4)におけるx71+x72+x73≦1が満たされておらず、第4制約条件に違反すると判定する。そして、割当計算部12は、x71+x72+x73≦1を満たすために、オペ#1及び#2を第4制約条件に違反したタスク群として特定する。次に、割当計算部12は、違反したタスク群としてオペ#1及び#2を入力データ調整部13に通知する。
【0058】
入力データ調整部13は、1回目の時間調整として、オペ#1及び#2の時間調整を開始する。まず、入力データ調整部13は、オペ#1及び#2のうち特殊ルールに合致するタスクがあるか否かを判定する。ここでは、オペ#1及び#2ともに手術を行うのは執刀医S1であり、入力データ調整部13は、オペ#1及び#2はいずれも特殊ルールに抵触しないと判定する。
【0059】
次に、入力データ調整部13は、公平ルールに抵触するタスクが存在するか否かを判定する。ここでは、オペ#1及び#2ともに移動回数が0であり基本移動回数に達していないため、入力データ調整部13は、オペ#1及び#2はいずれも公平ルールに抵触しないと判定する。
【0060】
そこで、入力データ調整部13は、第1基本ルールでオペ#1とオペ#2との優劣を判定する。この場合、オペ#1がオペ#2よりも開始時刻が早いため、入力データ調整部13は、第1基本ルールによりオペ#1を優先するとして、オペ#1を固定タスクとする。そして、入力データ調整部13は、固定タスク以外のタスクであるオペ#2の時間の調整を行う。具体的には、入力データ調整部13は、オペ#2の時間をオペ#1と重ならないで且つ開始までの時間が最短になるように調整する。すなわち、入力データ調整部13は、オペ#2の開始時刻を10:00とし、終了時刻を11:00とする。さらに、入力データ調整部13は、オペ#2の移動回数を1つインクリメントして1にする。これにより、入力データ調整部13は、1回目の時間調整を終了する。
【0061】
図6は、第1の具体例に係るタスク情報の遷移を示す図である。
図6における、タスク情報102は、入力データ調整部13による1回目の時間調整後のタスク情報である。タスク情報102に示すように、1回目の時間調整により、オペ#2は、開始時刻が10:00であり、終了時刻が11:00であり、移動回数が1と設定される。
【0062】
次に、割当計算部12は、
図6で示したタスク情報102を用いて、数式(1)~(6)と同様に、第1~第4制約条件を定式化する。そして、割当計算部12は、制約違反のチェックを再度行う。この場合、割当計算部12は、10:30~11:00の時間帯で、オペ#2、#3及び#4が実施予定だが、手術室R1及びR2は2つなので、第2制約条件において違反が発生すると判定する。そして、割当計算部12は、オペ#2~#4を第2制約条件に違反したタスク群として特定する。次に、割当計算部12は、違反したタスク群としてオペ#2~#4を入力データ調整部13に通知する。
【0063】
入力データ調整部13は、2回目の時間調整として、オペ#2~#4の時間調整を開始する。まず、入力データ調整部13は、オペ#1及び#2のうち特殊ルールに合致するタスクがあるか否かを判定する。ここでは、オペ#3の手術を行うのが執刀医S2であることから、入力データ調整部13は、オペ#3が特殊ルールに抵触すると判定する。そして、入力データ調整部13は、オペ#3を固定タスクとする。
【0064】
次に、入力データ調整部13は、残りのオペ#2及び#4について、オペ#2が公平ルールの基本移動回数に達しており、且つ、オペ#2とオペ#3とは時間が重複しないことから、オペ#2を固定タスクとする。
【0065】
そして、入力データ調整部13は、固定タスク以外の残りのタスクであるオペ#4の時間を調整する。具体的には、入力データ調整部13は、オペ#4の時間をオペ#2及び#3と重ならないで且つ開始までの時間が最短になるように調整する。すなわち、入力データ調整部13は、オペ#4の開始時刻を11:00とし、終了時刻を12:30とする。さらに、入力データ調整部13は、オペ#4の移動回数を1つインクリメントして1にする。これにより、入力データ調整部13は、2回目の時間調整を終了する。
【0066】
図6における、タスク情報103は、入力データ調整部13による2回目の時間調整後のタスク情報である。タスク情報103に示すように、2回目の時間調整により、オペ#4は、開始時刻が11:00であり、終了時刻が12:30であり、移動回数が1と設定される。
【0067】
次に、割当計算部12は、
図6で示したタスク情報103を用いて、第1~第4制約条件を以下のように定式化する。
【0068】
具体的には、割当計算部12は、第1制約条件を次の数式(7)のように定式化する。
【0069】
x31+x41+x51+x61=2,x32+x42+x52+x62=2,x33+x43+x53+x63=2,x34+x44+x54+x64=2・・・(7)
【0070】
また、割当計算部12は、第2制約条件を次の数式(8)のように定式化する。
【0071】
x11+x21=1,x12+x22=1,x13+x23=1,x14+x24=1・・・(8)
【0072】
また、割当計算部12は、第3制約条件を次の数式(9)のように定式化する。
【0073】
x63=1・・・(9)
【0074】
また、割当計算部12は、9:30~10:00における第4制約条件を次の数式(10)のように定式化する。
【0075】
x11+x13≦1,x21+23≦1,x31+x33≦1,x41+x43≦1,x51+x53≦1,x61+x63≦1,x71+x73≦1,x81+x83≦1,x91+x93≦1・・・(10)
【0076】
また、割当計算部12は、10:00~11:00における第4制約条件を次の数式(11)のように定式化する。
【0077】
x12+x13≦1,x22+x23≦1,x32+x33≦1,x42+x43≦1,x52+x53≦1,x62+x63≦1,x72+x73≦1,x82+x83≦1,x92+x93≦1・・・(11)
【0078】
ここで、割当計算部12は、11:00以降についてはオペ#4が時間の重複なく割り当てられているための第4制約条件の定式化を省略してもよい。
【0079】
そして、割当計算部12は、数式(7)~(11)を用いて、制約違反のチェックを再度行う。この場合、割当計算部12は、制約条件の違反なしの状態であると判定する。制約条件の違反なしの状態になると、割当計算部12は、例えば、ソルバーを用いて数式(7)~(11)に対する最適化問題の求解を実施する。割当計算部12は、求解を実施することで、
図7のリソース割当情報104に示すように
図5に示した各変数に対して値を割り当てる。
図7は、第1の具体例における求解による変数に対する値の割当結果の一例を示す図である。
図7の場合、値が1の変数がそのリソースが対応する手術に割り当てられたことを表し、値が0の変数がそのリソースが対応する手術に非割当であることを表す。
【0080】
ここでは、割当計算部12は、
図6のタスク情報103で示される手術時間に合わせて、オペ#1~#4に各リソースをリソース割当情報104に示すように割り当てる。例えば、割当計算部12は、9:00~10:00のオペ#1に、手術室R1、看護師A、看護師B、執刀医S1を割り当てる。また、割当計算部12は、10:00~11:00のオペ#2に、手術室R1、看護師A、看護師B、執刀医S1を割り当てる。また、割当計算部12は、9:30~11:00のオペ#3に、手術室R2、看護師C、看護師D、執刀医S2を割り当てる。また、割当計算部12は、11:00~12:30のオペ#4に、手術室R1、看護師B、看護師D、執刀医S3を割り当てる。
【0081】
そして、通信制御部11は、
図6に示したタスク情報103及び
図7に示したリソースのリソース割当情報104を割当結果格納DB15から取得して、端末装置20の割当作成依頼部21へ送信する。割当作成依頼部21は、受信したタスク情報103及びリソース割当情報104の情報を表示部22に出力してモニタなどに表示させる。
【0082】
図8は、スケジュール表示画面の一例を示す図である。表示部22は、モニタに
図8に示すスケジュール表示画面110を表示させる。本実施例では、スケジュール表示画面110は、カレンダー111及び手術予定リスト112を有する。
【0083】
表示部22は、カレンダー111の特定の日がマウスなどによりクリックされ選択されると、選択された日の手術の予定を手術予定リスト112に表示する。例えば、
図8は、表示部22は、タスク情報103及びリソース割当情報104に対応する日にちが選択された場合に、スケジュール表示画面110をモニタに表示させる。この場合、表示部22は、手術予定リスト112の中に選択された日に行われるオペ#1~#4をモニタに表示させる。また、表示部22は、手術室R1及びR2毎に時間軸113に合わせて、実施される各オペ#1~#4をモニタに表示させる。さらに、スケジュール表示画面110の中のオペ#1~#4のいずれかがマウスによるクリックなどで選択されると、表示部22は、選択された手術の詳細をモニタに表示させる。手術の詳細には、看護師や執刀医といった割り当てられたリソースの情報などが含まれる。
【0084】
次に、各タスクへのリソースの割当処理の第2の具体例を説明する。第1の具体例では、公平ルールと基本ルールとの優先度が変化しなかったが、第2の具体例は、公平ルールと基本ルールとの優先度が変化する場合のリソースの割当処理の一例を示す。
図9は、第2の具体例に係るタスク情報の遷移を示す図である。
図9に示すタスク情報121は、第2の具体例に係る事前予約情報から取得されたタスク情報である。ここでは、タスク情報121を基に、リソースの割当処理を行う場合で説明する。また、タスク情報121に示されたタスクであるオペ#1~#5に対して割り当てる各エージェントのリソースが、執刀医S1~S5、手術室R1、看護師A~Dである。
【0085】
また、割当計算部12は、各タスクにリソースを割り当てる際の制約条件として、第1の具体例と同様の第1~第4制約条件を有する。また、入力データ調整部13は、第1の具体例と同様の第1及び第2基本ルール、特殊ルール及び公平ルールを有する。
【0086】
この場合、割当計算部12は、
図9に示すタスク情報121を取得する。次に、割当計算部12は、
図10に示す、各タスクに対する各リソースの割り当てを表す変数x11~x15、x21~x25、x31~x35、x41~x45、x51~x55、x61~x65、x71~x75、x81~x85及びx91~x95を設定する。
図10は、第2の具体例に係る各タスクに対する各リソースの割り当てを表す変数の設定イメージを示す図である。ここでも、各変数は、0又は1の値を取る。
図10において、変数の後の括弧内の値は、割当が決まっているリソースを表す変数である。この場合、各手術における執刀医は決定しているため、執刀医を表す変数の値は決まっている。
【0087】
次に、割当計算部12は、タスク情報121と
図10の変数とを用いて第1~第4制約条件を定式化する。そして、割当計算部12は、定式化に基づく問題設定により、9:30~10:00において手術室R1の1室に対してオペ#1~3が希望されているため、第2制約条件が満たされていないと判定する。そして、割当計算部12は、9:30~10:00において第2制約条件を満たすために、オペ#1~#3を第2制約条件に違反したタスク群として特定する。次に、割当計算部12は、違反したタスク群としてオペ#1~#3を入力データ調整部13に通知する。
【0088】
入力データ調整部13は、1回目の時間調整として、オペ#1~#3の時間調整を開始する。まず、入力データ調整部13は、オペ#1~#3のうち特殊ルールに合致するタスクがあるか否かを判定する。ここでは、オペ#3の手術を行うのが執刀医S2であり、入力データ調整部13は、オペ#3が特殊ルールに抵触すると判定する。そして、入力データ調整部13は、オペ#3を固定タスクとする。
【0089】
次に、入力データ調整部13は、オペ#1及び#2ともにオペ#3に時間が重複するためいずれも固定タスクとせずに、オペ#1及び#2の時間を調整する。具体的には、入力データ調整部13は、オペ#1の時間をオペ#3と重ならないで且つ開始までの時間が最短になるように調整する。すなわち、入力データ調整部13は、オペ#1の開始時刻を11:00とし、終了時刻を12:00とする。次に、入力データ調整部13は、オペ#2の時間をオペ#3及び#1と重ならないで且つ開始までの時間が最短になるように調整する。すなわち、入力データ調整部13は、オペ#2の開始時刻を12:00とし、終了時刻を13:00とする。さらに、入力データ調整部13は、オペ#1及び#2の移動回数を1つインクリメントして1にする。これにより、入力データ調整部13は、1回目の時間調整を終了する。
【0090】
図9における、タスク情報122は、入力データ調整部13による1回目の時間調整後のタスク情報である。タスク情報122に示すように、1回目の時間調整により、オペ#1は、開始時刻が11:00であり、終了時刻が12:00であり、移動回数が1と設定され、オペ#2は、開始時刻が12:00であり、終了時刻が13:00であり、移動回数が1と設定される。
【0091】
次に、割当計算部12は、タスク情報122を用いて、第1~第4制約条件を定式化する。そして、割当計算部12は、制約違反のチェックを再度行う。この場合、割当計算部12は、10:30~11:00の時間帯で、オペ#3及び#4が実施予定だが、手術室R1は1つなので、第2制約条件において違反が発生すると判定する。そして、割当計算部12は、オペ#3及び#4を第2制約条件に違反したタスク群として特定する。次に、割当計算部12は、違反したタスク群としてオペ#3及び#4を入力データ調整部13に通知する。
【0092】
入力データ調整部13は、2回目の時間調整として、オペ#3及び#4の時間調整を開始する。まず、入力データ調整部13は、オペ#3及び#4のうち特殊ルールに合致するタスクがあるか否かを判定する。ここでは、入力データ調整部13は、オペ#3が特殊ルールに抵触すると判定して、オペ#3を固定タスクとする。
【0093】
そして、入力データ調整部13は、オペ#4時間を調整する。具体的には、入力データ調整部13は、オペ#4の時間をオペ#3と重ならないで且つ開始までの時間が最短になるように調整する。すなわち、入力データ調整部13は、オペ#4の開始時刻を11:00とし、終了時刻を12:30とする。さらに、入力データ調整部13は、オペ#4の移動回数を1つインクリメントして1にする。これにより、入力データ調整部13は、2回目の時間調整を終了する。
【0094】
図9におけるタスク情報123は、入力データ調整部13による2回目の時間調整後のタスク情報である。タスク情報123に示すように、2回目の時間調整により、オペ#4は、開始時刻が11:00であり、終了時刻が12:30であり、移動回数が1と設定される。
【0095】
次に、割当計算部12は、タスク情報123を用いて、第1~第4制約条件を定式化する。そして、割当計算部12は、制約違反のチェックを再度行う。この場合、割当計算部12は、11:00~11:30の時間帯で、オペ#1及び#4が実施予定だが、手術室R1は1つなので、第2制約条件において違反が発生すると判定する。そして、割当計算部12は、オペ#1及び#4を第2制約条件に違反したタスク群として特定する。次に、割当計算部12は、違反したタスク群としてオペ#1及び#4を入力データ調整部13に通知する。
【0096】
入力データ調整部13は、3回目の時間調整として、オペ#1及び#4の時間調整を開始する。まず、入力データ調整部13は、オペ#1及び#4のうち特殊ルールに合致するタスクがあるか否かを判定する。ここでは、入力データ調整部13は、オペ#1及び#4のいずれも特殊ルールに抵触しないと判定とする。次に、入力データ調整部13は、オペ#1及び#4の移動回数が1であり、公平ルールの基本移動回数に達しているため、基本ルールの適用を決定する。次に、入力データ調整部13は、執刀時間がオペ#1の方がオペ#4より短いため、オペ#1を固定タスクとする。すなわち、この場合、入力データ調整部13は、基本ルールと公平ルールとの優先度を逆転させて、基本ルールを適用する。
【0097】
そして、入力データ調整部13は、オペ#4時間を調整する。具体的には、入力データ調整部13は、オペ#4の時間をオペ#1と重ならないで且つ開始までの時間が最短になるように調整する。すなわち、入力データ調整部13は、オペ#4の開始時刻を12:00とし、終了時刻を13:30とする。さらに、入力データ調整部13は、オペ#4の移動回数を1つインクリメントして2にする。これにより、入力データ調整部13は、3回目の時間調整を終了する。
【0098】
図9におけるタスク情報124は、入力データ調整部13による3回目の時間調整後のタスク情報である。タスク情報124に示すように、3回目の時間調整により、オペ#4は、開始時刻が12:00であり、終了時刻が13:30であり、移動回数が2と設定される。
【0099】
次に、割当計算部12は、タスク情報124を用いて、第1~第4制約条件を定式化する。そして、割当計算部12は、制約違反のチェックを再度行う。この場合、割当計算部12は、12:00~12:30の時間帯で、オペ#2及び#4が実施予定だが、手術室R1は1つなので、第2制約条件において違反が発生すると判定する。そして、割当計算部12は、オペ#2及び#4を第2制約条件に違反したタスク群として特定する。次に、割当計算部12は、違反したタスク群としてオペ#2及び#4を入力データ調整部13に通知する。
【0100】
入力データ調整部13は、4回目の時間調整として、オペ#2及び#4の時間調整を開始する。まず、入力データ調整部13は、オペ#2及び#4のうち特殊ルールに合致するタスクがあるか否かを判定する。ここでは、入力データ調整部13は、オペ#2及び#4のいずれも特殊ルールに抵触しないと判定とする。次に、入力データ調整部13は、オペ#1の移動回数が1であり、オペ#4の移動回数が2であることから、公平ルールからオペ#4を固定タスクとする。
【0101】
そして、入力データ調整部13は、オペ#2の時間を調整する。具体的には、入力データ調整部13は、オペ#2の時間をオペ#4と重ならないで且つ開始までの時間が最短になるように調整する。すなわち、入力データ調整部13は、オペ#2の開始時刻を13:30とし、終了時刻を14:30とする。さらに、入力データ調整部13は、オペ#2の移動回数を1つインクリメントして2にする。これにより、入力データ調整部13は、4回目の時間調整を終了する。
【0102】
図9におけるタスク情報125は、入力データ調整部13による4回目の時間調整後のタスク情報である。タスク情報125に示すように、4回目の時間調整により、オペ#2は、開始時刻が13:30であり、終了時刻が14:30であり、移動回数が2と設定される。
【0103】
次に、割当計算部12は、
図9で示したタスク情報125を用いて、第1~第4制約条件を以下のように定式化する。
【0104】
具体的には、割当計算部12は、第1制約条件を次の数式(12)のように定式化する。
【0105】
x31+x41+x51+x61=2,x32+x42+x52+x62=2,x33+x43+x53+x63=2,x34+x44+x54+x64=2,x35+x45+x55+x65=2・・・(12)
【0106】
また、割当計算部12は、第2制約条件を次の数式(13)のように定式化する。
【0107】
x11=1,x12=1,x13=1,x14=1,x15=1・・・(13)
【0108】
また、割当計算部12は、第3制約条件を次の数式(14)のように定式化する。
【0109】
x63=1・・・(14)
【0110】
また、割当計算部12は、9:30~11:00で行われるオペ#3に関する第4制約条件を次の数式(15)のように定式化する。
【0111】
x13≦1,x23≦1,x33≦1,x43≦1,x53≦1,x63≦1,x73≦1,x83≦1,x93≦1,x103≦1・・・(15)
【0112】
また、割当計算部12は、11:00~12:00で行われるオペ#1に関する第4制約条件を次の数式(16)のように定式化する。
【0113】
x11≦1,x21≦1,x31≦1,x41≦1,x51≦1,x61≦1,x71≦1,x81≦1,x91≦1,x101≦1・・・(16)
【0114】
また、割当計算部12は、12:00~13:30で行われるオペ#4に関する第4制約条件を次の数式(17)のように定式化する。
【0115】
x14≦1,x24≦1,x34≦1,x44≦1,x54≦1,x64≦1,x74≦1,x84≦1,x94≦1,x104≦1・・・(17)
【0116】
また、割当計算部12は、13:30~14:30で行われるオペ#2に関する第4制約条件を次の数式(18)のように定式化する。
【0117】
x12≦1,x22≦1,x32≦1,x42≦1,x52≦1,x62≦1,x72≦1,x82≦1,x92≦1,x102≦1・・・(18)
【0118】
また、割当計算部12は、15:30~16:30で行われるオペ#5に関する第4制約条件を次の数式(19)のように定式化する。
【0119】
x15≦1,x25≦1,x35≦1,x45≦1,x55≦1,x65≦1,x75≦1,x85≦1,x95≦1,x105≦1・・・(19)
【0120】
ただし、各オペ#1~#5についての第4制約条件が時間の重複なく割り当てられているため、割当計算部12は、数式(15)~(19)で示した定式化を省略してもよい。
【0121】
そして、割当計算部12は、数式(12)~(19)を用いて、制約違反のチェックを再度行う。この場合、割当計算部12は、違反なしと判定する。そして、割当計算部12は、例えば、ソルバーを用いて、数式(12)~(19)に対する最適化問題の求解を実施する。割当計算部12は、求解を実施することで、
図11のリソース割当情報126に示すように
図10に示した各変数に対して値を割り当てる。
図11は、第2の具体例における求解による変数に対する値の割当結果を示す図である。
図11の場合、値が1の変数がそのリソースが対応する手術に割り当てられたことを表し、値が0の変数がそのリソースが対応する手術に非割当であることを表す。
【0122】
ここでは、割当計算部12は、
図9のタスク情報125で示される手術時間に合わせて、オペ#1~#5に各リソースをリソース割当情報126に示すように割り当てる。例えば、割当計算部12は、9:30~11:00のオペ#3に、手術室R1、看護師C、看護師D、執刀医S3を割り当てる。また、割当計算部12は、11:00~12:00のオペ#1に、手術室R1、看護師A、看護師B、執刀医S1を割り当てる。また、割当計算部12は、12:00~13:30のオペ#4に、手術室R1、看護師B、看護師C、執刀医S4を割り当てる。また、割当計算部12は、13:30~14:30のオペ#2に、手術室R1、看護師A、看護師B、執刀医S2を割り当てる。また、割当計算部12は、15:30~16:30のオペ#5に、手術室R1、看護師A、看護師D、執刀医S5を割り当てる。
【0123】
図12は、リソース割当処理のフローチャートである。次に、
図12を参照して、本実施例に係るサーバ1によるリソース割当処理の流れを説明する。
【0124】
割当計算部12は、事前予約情報を入力データ格納部14から取得する(ステップS11)。
【0125】
次に、割当計算部12は、事前予約情報からタスクの開始時刻及び終了時刻を含むタスク情報を取得する。次に、割当計算部12は、タスク情報を基に、保持する制約条件を定式化する。そして、割当計算部12は、定式化した制約条件をすべて満たすことが可能か否かを判定して、制約条件違反をチェックする(ステップS12)。
【0126】
そして、割当計算部12は、制約条件違反をチェック結果に基づいて、制約条件の違反を検知したか否かを判定する(ステップS13)。
【0127】
制約条件の違反を検知した場合(ステップS13:肯定)、割当計算部12は、違反したタスク群を入力データ調整部13に通知する。入力データ調整部13は、違反したタスク群の時間調整処理を実施する(ステップS14)。その後、リソース割当処理は、ステップS12へ戻る。
【0128】
これに対して、制約条件の違反を検知しない場合(ステップS13:否定)、割当計算部12は、制約条件を定式化した問題の求解を実施する(ステップS15)。
【0129】
図13は、時間調整処理のフローチャートである。次に、
図13を参照して、本実施例に係る入力データ調整部13による時間調整処理の流れを説明する。
図13のフローに記載した処理は、
図12のステップS14で実施される処理の一例にあたる。
【0130】
入力データ調整部13は、制約条件に違反したタスク群の情報を割当計算部12から取得する(ステップS101)。
【0131】
次に、入力データ調整部13は、特別ルールに合致するタスクが存在するか否かを判定する(ステップS102)。
【0132】
特別ルールに合致するタスクが存在する場合(ステップS102:肯定)、入力データ調整部13は、特別ルールに合致するタスクを固定タスクに決定する(ステップS103)。
【0133】
次に、入力データ調整部13は、特別ルールに合致した固定タスクの時間が重複するか否かを判定する(ステップS104)。固定タスクの時間が重複した場合(ステップS104:肯定)、入力データ調整部13は、調整不可を割当計算部12に通知する。割当計算部12は、通信制御部11を介して調整不可のアラートを端末装置2へ送信する(ステップS105)。その後、入力データ調整部13は、リソースの割当処理を終了する。
【0134】
これに対して、固定タスクの時間が重複しない場合(ステップS104:否定)、入力データ調整部13は、ステップS106へ進む。また、特別ルールに合致するタスクが存在しない場合(ステップS102:否定)、入力データ調整部13は、ステップS106へ進む。そして、入力データ調整部13は、固定タスク及び除外タスクを除いた残りのタスクの移動回数が全て基本移動回数以上か否かを判定する(ステップS106)。
【0135】
残りのタスクの中に移動回数が基本移動回数未満のタスクが存在する場合(ステップS106:否定)、入力データ調整部13は、移動回数が基本移動回数に達していないタスクの中から基本ルールにしたがって固定候補タスクを選択する(ステップS107)。その後、入力データ調整部13は、ステップS111へ進む。
【0136】
これに対して、残りのタスクの移動回数が全て基本移動回数以上の場合(ステップS106:肯定)、入力データ調整部13は、残りのタスクの全てが同じ移動回数か否かを判定する(ステップS108)。
【0137】
残りのタスクの全てが同じ移動回数の場合(ステップS108:肯定)、入力データ調整部13は、残りのタスクの中から基本ルールにしたがって固定候補タスクを選択する(ステップS109)。その後、入力データ調整部13は、ステップS111へ進む。
【0138】
これに対して、残りのタスクの中に移動回数が異なるタスクが存在する場合(ステップS108:否定)、入力データ調整部13は、残りのタスクのうち移動回数が最小のタスクから基本ルールにしたがって固定候補タスクを選択する(ステップS110)。その後、入力データ調整部13は、ステップS111へ進む。
【0139】
次に、入力データ調整部13は、既存の固定タスクと固定候補タスクとの時間が重複するか否かを判定する(ステップS111)。
【0140】
既存の固定タスクと固定候補タスクとの時間が重複しない場合(ステップS111:否定)、入力データ調整部13は、選択した固定候補タスクを固定タスクと決定する(ステップS112)。
【0141】
これに対して、既存の固定タスクと固定候補タスクとの時間が重複する場合(ステップS111:肯定)、入力データ調整部13は、選択した固定候補タスクを固定タスクとする対象から除外する(ステップS113)。
【0142】
次に、入力データ調整部13は、固定タスク及び除外したタスクを除く残りのタスクが1つか否かを判定する(ステップS114)。残りのタスクが複数存在する場合(ステップS114:否定)、入力データ調整部13は、ステップS106へ進む。
【0143】
これに対して、残りのタスクが1つである場合(ステップS114:肯定)、入力データ調整部13は、違反したタスク群のうち固定タスク以外のタスクを開始までの時間が最短となるように調整する(ステップS115)。
【0144】
その後、入力データ調整部13は、時間調整したタスクの移動回数を1つインクリメントする(ステップS116)。
【0145】
以上に説明したように、本実施例に係るスケジューリングシステムで用いられるサーバは、事前予約されたタスクが予め決められたリソースの割り当てについての制約条件を満たすか否かを判定する。そして、事前予約が制約条件を満たさなければ、サーバは、適応させる優先度が決められた複数のルールにしたがいタスクの時間を調整し、既定の優先度で調整困難になると、ルールの優先度を変更して時間調整を行う。ルールには、各タスクに対する時間調整の処理を公平に行うようにする公平ルールが含まれる。そして、時間調整により制約条件を全て満たすことが可能な各タスクの開始時刻が決定すると、サーバは、時間調整後の条件で数理最適化技術を用いて各タスクに割り当てるリソースを決定する。
【0146】
これにより、各医者が希望実施時間などの基本情報を入力した手術の事前予約に対して、手術部の担当者が実施手術室や器機、担当看護師を調整する業務を、調整の際に発生する可能性がある各医者の不公平さを解消しつつ割当結果の作成を自動化することができる。これにより、手術部の担当者の作業工数を削減できる。また、数理最適化技術を用いたリソースの割り当ての際に、解が不定にならず、且つ、予約時の開始時刻及び終了時刻との差異が少ないタスクの開始時刻及び終了時刻を算出できる。したがって、不公平感を抑えた適切なスケジューリングを行うことができ、公平且つ効率的なスケジュールを容易に作成することが可能となる。
【0147】
また、以上の実施例では、病院における手術のスケジューリングを例に説明したが、各タスクに対するリソースの割り当ての制約条件を緩めることが困難なスケジューリングであれば、他のスケジューリングにも用いることが可能である。例えば、病院における各種処理の場合、特別な機械の割り当てなどといった緩めることが困難な制約条件が多く、様々な処理に実施例に係るスケジューリングシステムを用いることが可能である。例えば、リハビリや放射線検査などのスケジューリングに、実施例で説明したスケジューリング方法を適用することも可能である。
【0148】
(ハードウェア構成)
図14は、サーバのハードウェア構成図である。
図1に示したサーバ1は、例えば、
図14に示すように、CPU(Central Processing Unit)91、メモリ92、ハードディスク93及びネットワークインタフェース94を有する。CPU91は、バスを介して、メモリ92、ハードディスク93及びネットワークインタフェース94に接続される。
【0149】
ネットワークインタフェース94は、サーバ1と外部装置との通信のためのインタフェースである。ネットワークインタフェース94は、例えば、CPU91と端末装置2との間の通信を中継する。ネットワークインタフェース94は、
図2に例示した通信制御部11の機能を実現する。
【0150】
ハードディスク93は、補助記憶装置である。ハードディスク93は、例えば、
図1に例示した、入力データ格納部14及び割当結果格納DB15の機能を実現する。また、ハードディスク93は、例えば、
図1に例示した、通信制御部11、割当計算部12及び入力データ調整部13の機能を実現するプログラムを含む各種プログラムを格納する。
【0151】
メモリ92は、主記憶装置である。メモリ92は、例えば、DRAM(Dynamic Random Access Memory)を用いることができる。
【0152】
CPU91は、ハードディスク93から各種プログラムを読み出してメモリ92に展開して実行する。これにより、CPU91は、
図1に例示した、通信制御部11、割当計算部12及び入力データ調整部13の機能を実現することができる。