(57)【要約】【課題】利用者の間で不公平感が生じないようにサービス順序を決定する。【解決手段】サービス順序決定装置１は、重み付け係数データの１つを初期値Ｓ０とし（Ｓ５０１）、最良値ＳｂにＳ０を代入し、現在値ＳにＳ０を代入し、最良値の目的関数ＳｂＷｎに大きい数値を代入し（Ｓ５０２）、探索処理を繰り返す。まず、重み付け係数データからＳの近傍解を選択し（Ｓ５０４）、近傍解ごとに、タブーリストに近傍解への遷移がなければ（Ｓ５０６のＮＯ）、予約済患者の待ち時間の平均値Ｗｒ及び当日受付患者の待ち時間Ｗｎを計算する（Ｓ５０７）。ＷｒがＷｎ以下であり、かつ、Ｗｎが最小になる近傍解を最良近傍値Ｓ’として設定し、ＳをＳ’に遷移させ（Ｓ５０９）、タブーリストにＳ→Ｓ’の遷移操作を書き込む（Ｓ５１０）。Ｓ’のＷｎがＳｂＷｎより小さければ（Ｓ５１１のＹＥＳ）、最良値ＳｂにＳ’を代入し、ＳｂＷｎにＳ’のＷｎを代入する（Ｓ５１２）。【選択図】図５
2012022625.tif 000002
【特許請求の範囲】
【請求項１】
サービスを予約した利用者である、１以上の予約利用者ごとの、当日の予約時刻、サービスの所要時間、開始時刻及び終了時刻を含む予約データを記憶し、予約なしに当日受け付けた利用者である当日利用者を、前記予約利用者の間及び前後のうち、いずれか１つに割り当てたサービス順序を決定する際に用いる、各サービス順序における前記予約利用者の待ち時間及び前記当日利用者の待ち時間に重み付けを行う重み付け関数を決定する重み付け関数決定装置であって、
前記重み付け関数を示す、複数の重み付け関数データを予め記憶する手段と、
前記当日利用者の受付時刻及びサービスの所要時間を取得する手段と、
前記サービス順序ごとに、前記当日利用者の前記開始時刻として、前記受付時刻又は１つ前の前記予約利用者の終了時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出する手段と、
前記サービス順序ごとに、前記当日利用者より後の前記予約利用者の前記開始時刻として、当該予約利用者の予約時刻及び１つ前の利用者の終了時刻のうち、遅い方の時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出する手段と、
前記サービス順序ごとに、前記当日利用者の前記開始時刻から前記受付時刻を減算して、前記当日利用者の待ち時間を算出する手段と、
前記サービス順序ごとに、前記予約利用者の前記開始時刻から前記予約時刻を減算して、前記予約利用者の待ち時間を算出する手段と、
前記重み付け関数データごとに、以下の（１）〜（４）を実施する手段と、
（１）前記サービス順序ごとに、当該重み付け関数データを用いて前記予約利用者の待ち時間から重み付け待ち時間を計算する。
（２）前記サービス順序ごとに、当該重み付け関数データを用いて前記当日利用者の待ち時間から重み付け待ち時間を計算する。
（３）前記サービス順序ごとに、前記予約利用者及び前記当日利用者の重み付け待ち時間の平均値を計算し、記憶する。
（４）前記サービス順序のうち、前記重み付け待ち時間の平均値が最小になるサービス順序を特定し、当該サービス順序における前記予約利用者の待ち時間の平均値を計算し、当該サービス順序における前記当日利用者の待ち時間とともに記憶する。
前記重み付け関数データのうち、前記予約利用者の待ち時間の平均値が前記当日利用者の待ち時間以下であり、かつ、前記当日利用者の待ち時間が最小になる重み付け関数データを特定する手段と、
を備えることを特徴とする重み付け関数決定装置。
【請求項２】
サービスを予約した利用者である、１以上の予約利用者ごとの、当日の予約時刻、サービスの所要時間、開始時刻及び終了時刻を含む予約データを記憶し、予約なしに当日受け付けた利用者である当日利用者を、前記予約利用者の間及び前後のうち、いずれか１つに割り当てたサービス順序を決定する際に用いる、各サービス順序における前記予約利用者の待ち時間及び前記当日利用者の待ち時間に重み付けを行う重み付け関数を決定する重み付け関数決定装置であって、
所定の重み付け関数の２以上の係数を含む、複数の重み付け係数データを予め記憶する手段と、
前記当日利用者の受付時刻及びサービスの所要時間を取得する手段と、
前記サービス順序ごとに、前記当日利用者の前記開始時刻として、前記受付時刻又は１つ前の前記予約利用者の終了時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出する手段と、
前記サービス順序ごとに、前記当日利用者より後の前記予約利用者の前記開始時刻として、当該予約利用者の予約時刻及び１つ前の利用者の終了時刻のうち、遅い方の時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出する手段と、
前記サービス順序ごとに、前記当日利用者の前記開始時刻から前記受付時刻を減算して、前記当日利用者の待ち時間を算出する手段と、
前記サービス順序ごとに、前記予約利用者の前記開始時刻から前記予約時刻を減算して、前記予約利用者の待ち時間を算出する手段と、
前記重み付け係数データごとに、以下の（１）〜（４）を実施する手段と、
（１）前記サービス順序ごとに、当該重み付け係数データによる重み付け関数を用いて前記予約利用者の待ち時間から重み付け待ち時間を計算する。
（２）前記サービス順序ごとに、当該重み付け係数データによる前記重み付け関数を用いて前記当日利用者の待ち時間から重み付け待ち時間を計算する。
（３）前記サービス順序ごとに、前記予約利用者及び前記当日利用者の重み付け待ち時間の平均値を計算し、記憶する。
（４）前記サービス順序のうち、前記重み付け待ち時間の平均値が最小になるサービス順序を特定し、当該サービス順序における前記予約利用者の待ち時間の平均値を計算し、当該サービス順序における前記当日利用者の待ち時間とともに記憶する。
前記重み付け係数データのうち、前記予約利用者の待ち時間の平均値が前記当日利用者の待ち時間以下であり、かつ、前記当日利用者の待ち時間が最小になる重み付け係数データを特定する手段と、
を備えることを特徴とする重み付け関数決定装置。
【請求項３】
請求項２に記載の重み付け関数決定装置であって、
予め記憶した前記重み付け係数データのいずれか１つを現在値として事前に記憶し、
前記（１）〜（４）を実施する手段において、前記現在値の近傍にあり、かつ、タブーリストに記憶されていない複数の前記重み付け係数データを特定し、当該重み付け係数データによる前記重み付け関数を用いるとともに、
前記重み付け係数を特定する手段において、特定した重み付け係数データを前記現在値として記憶し、当該重み付け係数データを前記タブーリストに記憶し、前記当日利用者の待ち時間が最良値による待ち時間より小さければ、前記最良値として当該重み付け係数データを記憶し、前記最良値による待ち時間として当該当日利用者の待ち時間を記憶し、
前記（１）〜（４）を実施する手段及び前記重み付け係数データを特定する手段を所定回数繰り返して動作させる
ことを特徴とする重み付け関数決定装置。
【請求項４】
サービスを予約した利用者である、１以上の予約利用者ごとの、当日の予約時刻、サービスの所要時間、開始時刻及び終了時刻を含む予約データを記憶したコンピュータが、予約なしに当日受け付けた利用者である当日利用者を、前記予約利用者の間及び前後のうち、いずれか１つに割り当てたサービス順序を決定する際に用いる、各サービス順序における前記予約利用者の待ち時間及び前記当日利用者の待ち時間に重み付けを行う重み付け関数を決定する重み付け関数決定方法であって、
前記コンピュータは、
前記重み付け関数を示す、複数の重み付け関数データを予め記憶するステップと、
前記当日利用者の受付時刻及びサービスの所要時間を取得するステップと、
前記サービス順序ごとに、前記当日利用者の前記開始時刻として、前記受付時刻又は１つ前の前記予約利用者の終了時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出するステップと、
前記サービス順序ごとに、前記当日利用者より後の前記予約利用者の前記開始時刻として、当該予約利用者の予約時刻及び１つ前の利用者の終了時刻のうち、遅い方の時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出するステップと、
前記サービス順序ごとに、前記当日利用者の前記開始時刻から前記受付時刻を減算して、前記当日利用者の待ち時間を算出するステップと、
前記サービス順序ごとに、前記予約利用者の前記開始時刻から前記予約時刻を減算して、前記予約利用者の待ち時間を算出するステップと、
前記重み付け関数データごとに、以下の（１）〜（４）を実施するステップと、
（１）前記サービス順序ごとに、当該重み付け関数データを用いて前記予約利用者の待ち時間から重み付け待ち時間を計算する。
（２）前記サービス順序ごとに、当該重み付け関数データを用いて前記当日利用者の待ち時間から重み付け待ち時間を計算する。
（３）前記サービス順序ごとに、前記予約利用者及び前記当日利用者の重み付け待ち時間の平均値を計算し、記憶する。
（４）前記サービス順序のうち、前記重み付け待ち時間の平均値が最小になるサービス順序を特定し、当該サービス順序における前記予約利用者の待ち時間の平均値を計算し、当該サービス順序における前記当日利用者の待ち時間とともに記憶する。
前記重み付け関数データのうち、前記予約利用者の待ち時間の平均値が前記当日利用者の待ち時間以下であり、かつ、前記当日利用者の待ち時間が最小になる重み付け関数データを特定するステップと、
を実行することを特徴とする重み付け関数決定方法。
【請求項５】
サービスを予約した利用者である、１以上の予約利用者ごとの、当日の予約時刻、サービスの所要時間、開始時刻及び終了時刻を含む予約データを記憶したコンピュータが、予約なしに当日受け付けた利用者である当日利用者を、前記予約利用者の間及び前後のうち、いずれか１つに割り当てたサービス順序を決定する際に用いる、各サービス順序における前記予約利用者の待ち時間及び前記当日利用者の待ち時間に重み付けを行う重み付け関数を決定する重み付け関数決定方法であって、
前記コンピュータは、
所定の重み付け関数の２以上の係数を含む、複数の重み付け係数データを予め記憶するステップと、
前記当日利用者の受付時刻及びサービスの所要時間を取得するステップと、
前記サービス順序ごとに、前記当日利用者の前記開始時刻として、前記受付時刻又は１つ前の前記予約利用者の終了時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出するステップと、
前記サービス順序ごとに、前記当日利用者より後の前記予約利用者の前記開始時刻として、当該予約利用者の予約時刻及び１つ前の利用者の終了時刻のうち、遅い方の時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出するステップと、
前記サービス順序ごとに、前記当日利用者の前記開始時刻から前記受付時刻を減算して、前記当日利用者の待ち時間を算出するステップと、
前記サービス順序ごとに、前記予約利用者の前記開始時刻から前記予約時刻を減算して、前記予約利用者の待ち時間を算出するステップと、
前記重み付け係数データごとに、以下の（１）〜（４）を実施するステップと、
（１）前記サービス順序ごとに、当該重み付け係数データによる重み付け関数を用いて前記予約利用者の待ち時間から重み付け待ち時間を計算する。
（２）前記サービス順序ごとに、当該重み付け係数データによる前記重み付け関数を用いて前記当日利用者の待ち時間から重み付け待ち時間を計算する。
（３）前記サービス順序ごとに、前記予約利用者及び前記当日利用者の重み付け待ち時間の平均値を計算し、記憶する。
（４）前記サービス順序のうち、前記重み付け待ち時間の平均値が最小になるサービス順序を特定し、当該サービス順序における前記予約利用者の待ち時間の平均値を計算し、当該サービス順序における前記当日利用者の待ち時間とともに記憶する。
前記重み付け係数データのうち、前記予約利用者の待ち時間の平均値が前記当日利用者の待ち時間以下であり、かつ、前記当日利用者の待ち時間が最小になる重み付け係数データを特定するステップと、
を実行することを特徴とする重み付け関数決定方法。
【請求項６】
請求項５に記載の重み付け関数決定方法であって、
前記コンピュータは、
予め記憶した前記重み付け係数データのいずれか１つを現在値として事前に記憶し、
前記（１）〜（４）を実施するステップにおいて、前記現在値の近傍にあり、かつ、タブーリストに記憶されていない複数の前記重み付け係数データを特定し、当該重み付け係数データによる前記重み付け関数を用いるとともに、
前記重み付け係数を特定するステップにおいて、特定した重み付け係数データを前記現在値として記憶し、当該重み付け係数データを前記タブーリストに記憶し、前記当日利用者の待ち時間が最良値による待ち時間より小さければ、前記最良値として当該重み付け係数データを記憶し、前記最良値による待ち時間として当該当日利用者の待ち時間を記憶し、
前記（１）〜（４）を実施するステップ及び前記重み付け係数データを特定するステップを所定回数繰り返して実行する
ことを特徴とする重み付け関数決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予約済の利用者の間又は前後に当日受付の利用者を割り当てる際に用いられる、利用者の待ち時間に重み付けを行う重み付け関数を決定する装置及びその方法に関する。
【背景技術】
【０００２】
病院、美容院、飲食店等で発生する客の待ち時間を短縮するために、各客にサービスを提供する順序を最適化する手法が提案されている。  
特許文献１には、サービス順序の作成において、予約の空き時間に予約なしの当日客を割り当てる際、割り当てる空き時間が小さい場合は、各空き時間に強制的に割り当てた場合の各客の合計待ち時間を算出し、合計待ち時間が最小となる空き時間に当日客を割り当てるサービス時間割当方法及びその装置が開示されている。特許文献２には、サービス順序を決定する際、顧客間でサービス処理手順が共通し、並行処理可能な手順がある場合は、並行処理できるように順序を作成する待ち時間制御システム及びその方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４１４３１１０号公報
【特許文献２】特開２０１０−７９４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１及び２の技術は、全体の待ち時間が最小となるようにサービス順序を決定するものである。この際、待ち時間に所定の重み付け関数を用いて、待ち時間を増減させ、サービス順序を決定する際の優先度合いを調整している。例えば、当初の順序では最優先されていた、予約客や受付順の早い客の待ち時間が増加する場合に、増加分に重み付けを持たせることにより、それらの客へのサービスを優先的に行う。ただし、この重み付け関数は最適なサービス順序の作成に大きく影響するが、重み付け関数やその係数は試行錯誤により決定されている。  
このような場合、予約客と当日客のうち、実際にどちらが有利になるかは分からず、予約客の待ち時間が当日受付の客の待ち時間より長くなるときには、予約客に不公平感が生じる。一方、当日受付の客にしても、あまりにも待ち時間が長いときには、不満が生じる。
【０００５】
本発明は、上記課題を鑑みてなされたものであり、その主たる目的は、サービスの利用者の間で不公平感が生じないようにサービス順序を決定することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は、サービスを予約した利用者である、１以上の予約利用者ごとの、当日の予約時刻、サービスの所要時間、開始時刻及び終了時刻を含む予約データを記憶し、予約なしに当日受け付けた利用者である当日利用者を、前記予約利用者の間及び前後のうち、いずれか１つに割り当てたサービス順序を決定する際に用いる、各サービス順序における前記予約利用者の待ち時間及び前記当日利用者の待ち時間に重み付けを行う重み付け関数を決定する重み付け関数決定装置であって、前記重み付け関数を示す、複数の重み付け関数データを予め記憶する手段と、前記当日利用者の受付時刻及びサービスの所要時間を取得する手段と、前記サービス順序ごとに、前記当日利用者の前記開始時刻として、前記受付時刻又は１つ前の前記予約利用者の終了時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出する手段と、前記サービス順序ごとに、前記当日利用者より後の前記予約利用者の前記開始時刻として、当該予約利用者の予約時刻及び１つ前の利用者の終了時刻のうち、遅い方の時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出する手段と、前記サービス順序ごとに、前記当日利用者の前記開始時刻から前記受付時刻を減算して、前記当日利用者の待ち時間を算出する手段と、前記サービス順序ごとに、前記予約利用者の前記開始時刻から前記予約時刻を減算して、前記予約利用者の待ち時間を算出する手段と、前記重み付け関数データごとに、以下の（１）〜（４）を実施する手段と、
（１）前記サービス順序ごとに、当該重み付け関数データを用いて前記予約利用者の待ち時間から重み付け待ち時間を計算する。  
（２）前記サービス順序ごとに、当該重み付け関数データを用いて前記当日利用者の待ち時間から重み付け待ち時間を計算する。  
（３）前記サービス順序ごとに、前記予約利用者及び前記当日利用者の重み付け待ち時間の平均値を計算し、記憶する。  
（４）前記サービス順序のうち、前記重み付け待ち時間の平均値が最小になるサービス順序を特定し、当該サービス順序における前記予約利用者の待ち時間の平均値を計算し、当該サービス順序における前記当日利用者の待ち時間とともに記憶する。
【０００７】
前記重み付け関数データのうち、前記予約利用者の待ち時間の平均値が前記当日利用者の待ち時間以下であり、かつ、前記当日利用者の待ち時間が最小になる重み付け関数データを特定する手段と、を備えることを特徴とする。  
この構成によれば、利用者のサービス順序を決定する際に用いる、待ち時間の重み付け関数を決める際に、予約利用者の待ち時間平均値が当日利用者の待ち時間以下のものを選択することにより、予約利用者の当日利用者に対する不公平感をなくすことができる。そして、当日利用者の待ち時間が最小になるものを選択することにより、当日利用者の待ち時間の長さに対する不満をなくすことができる。以上によれば、サービスの利用者の間で不公平感が生じないようにサービス順序を決定することができる。
【０００８】
また、本発明は、サービスを予約した利用者である、１以上の予約利用者ごとの、当日の予約時刻、サービスの所要時間、開始時刻及び終了時刻を含む予約データを記憶し、予約なしに当日受け付けた利用者である当日利用者を、前記予約利用者の間及び前後のうち、いずれか１つに割り当てたサービス順序を決定する際に用いる、各サービス順序における前記予約利用者の待ち時間及び前記当日利用者の待ち時間に重み付けを行う重み付け関数を決定する重み付け関数決定装置であって、所定の重み付け関数の２以上の係数を含む、複数の重み付け係数データを予め記憶する手段と、前記当日利用者の受付時刻及びサービスの所要時間を取得する手段と、前記サービス順序ごとに、前記当日利用者の前記開始時刻として、前記受付時刻又は１つ前の前記予約利用者の終了時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出する手段と、前記サービス順序ごとに、前記当日利用者より後の前記予約利用者の前記開始時刻として、当該予約利用者の予約時刻及び１つ前の利用者の終了時刻のうち、遅い方の時刻を設定し、設定した前記開始時刻に前記所要時間を加算して前記終了時刻を算出する手段と、前記サービス順序ごとに、前記当日利用者の前記開始時刻から前記受付時刻を減算して、前記当日利用者の待ち時間を算出する手段と、前記サービス順序ごとに、前記予約利用者の前記開始時刻から前記予約時刻を減算して、前記予約利用者の待ち時間を算出する手段と、前記重み付け係数データごとに、以下の（１）〜（４）を実施する手段と、
（１）前記サービス順序ごとに、当該重み付け係数データによる重み付け関数を用いて前記予約利用者の待ち時間から重み付け待ち時間を計算する。  
（２）前記サービス順序ごとに、当該重み付け係数データによる前記重み付け関数を用いて前記当日利用者の待ち時間から重み付け待ち時間を計算する。  
（３）前記サービス順序ごとに、前記予約利用者及び前記当日利用者の重み付け待ち時間の平均値を計算し、記憶する。  
（４）前記サービス順序のうち、前記重み付け待ち時間の平均値が最小になるサービス順序を特定し、当該サービス順序における前記予約利用者の待ち時間の平均値を計算し、当該サービス順序における前記当日利用者の待ち時間とともに記憶する。
【０００９】
前記重み付け係数データのうち、前記予約利用者の待ち時間の平均値が前記当日利用者の待ち時間以下であり、かつ、前記当日利用者の待ち時間が最小になる重み付け係数データを特定する手段と、を備えることを特徴とする。  
この構成によれば、利用者のサービス順序を決定する際に用いる、待ち時間の重み付け関数の係数を決める際に、予約利用者の待ち時間平均値が当日利用者の待ち時間以下のものを選択することにより、予約利用者の当日利用者に対する不公平感をなくすことができる。そして、当日利用者の待ち時間が最小になるものを選択することにより、当日利用者の待ち時間の長さに対する不満をなくすことができる。以上によれば、サービスの利用者の間で不公平感が生じないようにサービス順序を決定することができる。
【００１０】
なお、予約利用者の重み付け関数と、当日利用者の重み付け関数とは、異なるものであり、異なる形式の関数か、同じ形式の関数（例えば、ｙ＝ａｘ＋ｂ、ｘ：待ち時間、ｙ：重み付け待ち時間）であっても、係数（例えば、ａ、ｂ）が異なるものとする。これは、重み付け待ち時間を計算する際に、当日利用者と比較して、予約利用者の待ち時間により多く重み付けをすることにより、予約利用者の実際の待ち時間をより短くしようとするものである。
【００１１】
また、本発明の上記重み付け関数決定装置において、予め記憶した前記重み付け係数データのいずれか１つを現在値として事前に記憶し、前記（１）〜（４）を実施する手段において、前記現在値の近傍にあり、かつ、タブーリストに記憶されていない複数の前記重み付け係数データを特定し、当該重み付け係数データによる前記重み付け関数を用いるとともに、前記重み付け係数を特定する手段において、特定した重み付け係数データを前記現在値として記憶し、当該重み付け係数データを前記タブーリストに記憶し、前記当日利用者の待ち時間が最良値による待ち時間より小さければ、前記最良値として当該重み付け係数データを記憶し、前記最良値による待ち時間として当該当日利用者の待ち時間を記憶し、前記（１）〜（４）を実施する手段及び前記重み付け係数データを特定する手段を所定回数繰り返して動作させることとしてもよい。  
この構成によれば、予め用意した重み付け係数の組み合わせについて、総当りではなく、近傍解及びタブーリストを用いた探索処理を行うことにより、コンピュータの計算量を減らすことができる。
【００１２】
なお、本発明は、重み付け関数決定方法を含む。その他、本願が開示する課題及びその解決方法は、発明を実施するための形態の欄、及び図面により明らかにされる。
【発明の効果】
【００１３】
本発明によれば、サービスの利用者の間で不公平感が生じないようにサービス順序を決定することができる。
【図面の簡単な説明】
【００１４】
【図１】サービス順序決定装置１のハードウェア構成を示す図である。
【図２】サービス順序決定装置１の記憶部１５に記憶される患者データベース１５Ａの構成を示す図である。
【図３Ａ】サービス順序決定装置１の記憶部１５に記憶されるデータの構成を示す図であり、（ａ）は待ち患者テーブル１５Ｂの構成を示し、（ｂ）は重み付け係数データ１５Ｃの構成を示し、（ｃ）は、計算係数データ１５Ｄの構成を示す。
【図３Ｂ】サービス順序決定装置１の記憶部１５に記憶されるデータの構成を示す図であり、（ａ）は近傍解係数データ１５Ｅの構成を示し、（ｂ）は目的関数データ１５Ｆの構成を示す。
【図４】サービス順序決定装置１が診察当日の患者データベース１５Ａを作成する処理を示すフローチャートである。
【図５】サービス順序決定装置１が待ち時間の重み付け関数の係数を計算する処理を示すフローチャートである。
【図６】サービス順序決定装置１が患者の待ち時間を短縮するための処理を示すフローチャートである。
【図７】サービス順序決定装置１が最適診察順序を計算する処理を示すフローチャートである。
【図８】待ち患者テーブル１５Ｂの具体例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照しながら、本発明を実施するための形態を説明する。本発明の実施の形態に係るサービス順序決定装置は、予約済の利用者のサービス時間の間又は前後（割り当て位置）に、当日受付の利用者のサービス時間を割り当てる際に、最初に待ち時間の重み付け関数の係数を計算し、次に各割り当て位置によるサービス順序について、各利用者の重み付け待ち時間の平均値を計算し、その平均値が最小になる位置を特定し、その特定した位置に当日受付利用者のサービス時間を割り当てるものである。
【００１６】
重み付け関数の係数を計算する際には、予め記憶された複数個の重み付け係数データ（係数の組み合わせ）に対して、例えば、試行錯誤的手法であるタブー探索法による探索処理を行うことにより、予約済利用者の待ち時間の平均値が当日受付利用者の待ち時間以下であり、かつ、当日受付利用者の待ち時間が最小になるような重み付け係数データを特定する。これによれば、利用者間における不公平感の軽減を図ることができる。以下では、提供されるサービスとして、病院における患者の診察を例にして説明する。
【００１７】
≪装置の構成と概要≫
図１は、サービス順序決定装置１のハードウェア構成を示す図である。サービス順序決定装置１は、通信部１１、表示部１２、入力部１３、処理部１４及び記憶部１５を備え、各部がバス１６を介してデータを送受信可能なように接続されている。通信部１１は、ネットワークを介して他の装置とＩＰ（Internet Protocol）通信等を行う部分であり、例えば、ＮＩＣ（Network Interface Card）等によって実現される。表示部１２は、処理部１４からの指示によりデータを表示する部分であり、例えば、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）等によって実現される。入力部１３は、オペレータがデータ（例えば、患者の診察順序を確認する際に、診察室を指定するためのデータ）を入力する部分であり、例えば、キーボードやマウス等によって実現される。処理部１４は、所定のメモリを介して各部間のデータの受け渡しを行うととともに、サービス順序決定装置１全体の制御を行うものであり、ＣＰＵ（Central Processing Unit）が所定のメモリに格納されたプログラムを実行することによって実現される。記憶部１５は、処理部１４からデータを記憶したり、記憶したデータを読み出したりするものであり、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の不揮発性記憶装置によって実現される。なお、サービス順序決定装置１は、病院の事務局等に設置されるが、スタンドアロンの装置（ＰＣ（Personal Computer）等）であってもよいし、ネットワークを介して複数の端末と通信可能な装置（サーバ等）であってもよい。
【００１８】
≪データの構成≫
図２、図３Ａ及び図３Ｂは、サービス順序決定装置１の記憶部１５に記憶されるデータの構成を示す図である。図２は、患者データベース１５Ａの構成を示す。患者データベース１５Ａは、病院の診療科における診察室及び診察日ごとに、患者の診察に関する予定データ及び実績データを蓄積したものであり、患者ＩＤ１５Ａ１、予約時刻１５Ａ２、受付時刻１５Ａ３、診察時間１５Ａ４、開始時刻１５Ａ５、終了時刻１５Ａ６及び待ち時間１５Ａ７を含む、患者ごとのレコードからなる。患者ＩＤ１５Ａ１は、当該診察室において当該診察日に診察を受ける（又は、受けた）患者に固有のＩＤである。予約時刻１５Ａ２が、前日までに予約済の患者の場合に、当該患者が予約した診察の開始時刻を示す。受付時刻１５Ａ３は、予約なしに当日来院した患者の場合に、当該患者を受け付けた時刻を示す。診察時間１５Ａ４は、患者の診察にかかる時間の予測値又は実績値を示す。開始時刻１５Ａ５は、患者の診察開始時刻の予測値又は実績値を示す。終了時刻１５Ａ６は、患者の診察終了時刻の予測値又は実績値を示し、開始時刻１５Ａ５に診察時間１５Ａ４を加算することにより算出され、設定される。待ち時間１５Ａ７は、患者が診察を待つ予定の（又は、実際に待った）時間を示し、予約済患者の場合、［開始時刻１５Ａ５−予約時刻１５Ａ２］により算出、設定され、当日受付患者の場合、［開始時刻１５Ａ５−受付時刻１５Ａ３］により算出、設定される。なお、患者データベース１５Ａは、診察室ごとに限らず、担当医師や医療設備ごとに患者の予定データ及び実績データを蓄積したものであってもよい。
【００１９】
図３Ａ（ａ）は、待ち患者テーブル１５Ｂの構成を示す。待ち患者テーブル１５Ｂは、患者データベース１５Ａから診察順序の確定した待ち患者の予定データを抽出したものであり、患者ＩＤ１５Ｂ１、予約時刻１５Ｂ２、受付時刻１５Ｂ３、診察時間１５Ｂ４、開始時刻１５Ｂ５、終了時刻１５Ｂ６、待ち時間１５Ｂ７、待ち時間１５Ｂ８及び重み付け待ち時間１５Ｂ９を含む、患者ごとのレコードからなる。患者ＩＤ１５Ｂ１〜待ち時間１５Ｂ７は、患者データベース１５Ａの患者ＩＤ１５Ａ１〜待ち時間１５Ａ７と同様である。待ち時間１５Ｂ８は、時分単位である待ち時間１５Ｂ７を分単位に変換したものである。重み付け待ち時間１５Ｂ９は、待ち時間１５Ｂ８を重み付け関数に代入して算出したものであり、例えば、待ち時間をｘ、重み付け待ち時間をｙとしたときに、予約済患者の重み付け関数はｙ＝１．５ｘとし、当日受付患者の重み付け関数はｙ＝ｘとする。これにより、実際の予約済患者の待ち時間が当日受付患者の待ち時間より小さくなるように、患者の待ち時間を比較、評価することができる。
【００２０】
図３Ａ（ｂ）は、重み付け係数データ１５Ｃの構成を示す。重み付け係数データ１５Ｃは、待ち時間の重み付け関数の係数であり、ｍ通りの解を示すｍ個のレコードが予め設定される。それぞれのレコードは、例えば、（ａ１、ｂ１、・・・）、（ａ２、ｂ２、・・・）、・・・、（ａｍ、ｂｍ、・・・）等の重み付け係数の組み合わせである。
【００２１】
図３Ａ（ｃ）は、計算係数データ１５Ｄの構成を示す。計算係数データ１５Ｄは、図５に示す重み付け係数の計算処理において用いられるワークデータであり、初期値１５Ｄ１、最良値１５Ｄ２、現在値１５Ｄ３、最良近傍値１５Ｄ４及び最良値の目的関数１５Ｄ５を含む。初期値１５Ｄ１は、計算処理における重み付け係数データの初期解であり、図５のフローではＳ０とする。最良値１５Ｄ２は、その時点までの探索の結果、待ち時間の目的関数Ｗｒ及びＷｎが最もよい条件になる重み付け係数データの解であり、図５のフローではＳｂとする。現在値１５Ｄ３は、計算処理における１回の探索ごとに遷移する現時点の重み付け係数データの解であり、図５のフローではＳとする。最良近傍値１５Ｄ４は、１回の探索において選択される重み付け係数データの近傍解のうち、待ち時間の目的関数Ｗｒ及びＷｎが最も好条件になる解であり、図５のフローではＳ’とする。最良値の目的関数１５Ｄ５は、重み付け係数データが最良値１５Ｄ２のときの、当日受付患者の待ち時間であり、図５のフローではＳｂＷｎとする。
【００２２】
図３Ｂ（ａ）は、近傍解係数データ１５Ｅの構成を示す。近傍解係数データ１５Ｅは、現在値１５Ｄ３の近傍にある重み付け係数データの解であり、１回の探索において重み付け係数データ１５ＣからＭ（＜ｍ）通りの解を示すＭ個のレコードが選択され、設定される。それぞれのレコードは、例えば、（ａ１、ｂ１、・・・）、（ａ２、ｂ２、・・・）、・・・、（ａＭ、ｂＭ、・・・）等の重み付け係数の組み合わせである。当該探索において、現在値１５Ｄ３は、選択された近傍解係数データ１５Ｅ（Ｍ通りの近傍解）のうち、いずれか１つのレコード（最良近傍解）に遷移する。
【００２３】
図３Ｂ（ｂ）は、目的関数データ１５Ｆの構成を示す。目的関数データ１５Ｆは、予約済患者の待ち時間の平均値及び当日受付患者の待ち時間であり、１回の探索において選択された近傍解係数データ１５Ｅのレコード（Ｍ通りの近傍解）ごとに、目的関数の値として予約済患者の待ち時間平均値Ｗｒ及び当日受付患者の待ち時間Ｗｎが設定される。
【００２４】
なお、一度行われた現在値１５Ｄ３への遷移操作が設定されるタブーリストも、記憶部１５に記憶されるものとする。
【００２５】
≪装置の処理≫
図４〜図７は、サービス順序決定装置１の処理を示すフローチャートである。本処理は、サービス順序決定装置１において、主として処理部１４が記憶部１５のデータを参照、更新しながら、患者データベース１５Ａを作成し、待ち時間の重み付け関数の係数を計算し、患者データベース１５Ａから待ち患者テーブル１５Ｂを作成し、待ち患者テーブル１５Ｂ及び待ち時間の重み付け関数を用いて各患者の最適なサービス順序を決定するものである。
【００２６】
図４は、対象となる診察日当日の患者データベース１５Ａを作成する処理を示す。まず、サービス順序決定装置１は、診察日前日のバッチ処理を行う（Ｓ４０１）。詳細には、最初に、患者ＩＤ及び予約時刻を含む予約データを取り込む。予約データは、バッチ処理の開始時刻までに受け付けた、診察日当日の診察予約に関するデータであり、他の装置に記憶されているデータをネットワーク経由で通信部１１により受信してもよいし、記憶部１５に記憶されているデータをワークメモリに読み出してもよい。次に、予約済患者ごとの診察時間を予測し、ワークメモリに設定する。診察時間を予測する方法については、過去の実績データの平均値や最頻値等を計算する統計的な方法でもよいし、特許第４１９４５７３号公報の［００７２］や特許第４２１７６８９号公報の段落［００８０］に開示された方法でもよい。
【００２７】
そして、患者ＩＤ、予約時刻及び診察時間からなるレコードを予約時刻の早い順及び診察時間の小さい順に並べ替える。続いて、予約時刻、診察時間及び各レコードの順序に基づいて、患者ごとの開始時刻、終了時刻及び待ち時間を特定し、各レコードに追加する。そのとき、開始時刻は、予約時刻又は１つ前の患者の終了時刻により決まる。終了時刻は、開始時刻に診察時間を加算することにより算出される。待ち時間は、開始時刻から予約時刻を減算することにより算出される。さらに、患者ＩＤ、予約時刻、診察時間、開始時刻、終了時刻及び待ち時間が確定した各レコードを患者データベース１５Ａへの追加分として記憶部１５に記憶する。以上のバッチ処理により、予約データから患者データベース１５Ａの予定データが設定される。
【００２８】
続いて、サービス順序決定装置１は、待ち時間の重み付け関数の係数を計算するサブルーチンをコールする（Ｓ４０２）。本処理は、Ｓ４０１のバッチ処理と同様に診察日前日に行われる処理であり、過去の実績データ（例えば、診察日前日の午前中、最初に新規患者を受け付けた際の、その新規患者のデータ及びその時点の予約済患者のデータ）を用いて重み付け係数の計算を行うものであるが、その計算処理の詳細は、後記する。そして、計算処理の結果、最適な重み付け係数を最良値１５Ｄ２として記憶部１５に記憶する（Ｓ４０３）。
【００２９】
次に、サービス順序決定装置１は、当日に発生するイベントを監視する。詳細には、所定時間の間隔を空けながら、Ｓ４０５及びＳ４０６の処理を監視終了まで繰り返すことになる（Ｓ４０４〜Ｓ４０７）。まず、当日のイベントが発生したか否かを確認する（Ｓ４０５）。イベントには、当日受付、診察開始及び診察終了があるが、イベントが発生したときには、患者ＩＤ及びイベント時刻を含むイベントデータが通信部１１により受信されるか、又は、入力部１３により取得される。当日のイベントが発生していなければ（Ｓ４０５のＮＯ）、確認を繰り返す（Ｓ４０５）。
【００３０】
当日のイベントが発生していれば（Ｓ４０５のＹＥＳ）、サービス順序決定装置１は、イベントデータを取得し、記憶部１５の患者データベース１５Ａに、対応する患者のレコード又は更新すべきデータを書き込む（Ｓ４０６）。当日受付の場合、新規受付患者の患者ＩＤ１５Ａ１及び受付時刻１５Ａ３を含むレコードを新規に追加する。診察開始の場合、該当する患者ＩＤ１５Ａ１のレコードに開始時刻１５Ａ５及び待ち時間１５Ａ７の実績値を設定する。診察終了の場合、該当する患者ＩＤ１５Ａ１のレコードに終了時刻１５Ａ６及び診察時間１５Ａ４の実績値を設定する。
【００３１】
図５は、待ち時間の重み付け関数の係数を計算する処理を示す。本処理は、図４のＳ４０２においてコールされるサブルーチンの処理であり、タブー探索法を用いる。すなわち、１回の探索において重み付け係数の現在値を、近傍値から選択された最良近傍値に遷移させながら、最良近傍値の目的関数がその時点の最良値の目的関数より好条件であれば、最良値を最良近傍値に更新する処理を行い、そのような探索処理を所定回数繰り返す。そして、その探索処理後の最良値が、最適な重み付け係数の計算値となる。
【００３２】
なお、探索処理の回数は多ければ多いほどよいが、探索処理をある程度繰り返すと、重み付け係数の最良値が変化しなくなり、収束してくるので、適当な回数が選択される。
【００３３】
初めに、サービス順序決定装置１は、予め記憶部１５に記憶された重み付け係数データ１５Ｃに含まれるｍ個のレコードのうち、１つのレコードを初期値１５Ｄ１として記憶部１５に設定し、Ｓ０とする（Ｓ５０１）。初期値１５Ｄ１は、例えば、ｍ個の中からランダムに決める。次に、最良値ＳｂにＳ０を代入し、現在値ＳにＳ０を代入し、最良値の目的関数ＳｂＷｎに待ち時間として想定されない大きい数値を代入する（Ｓ５０２）。そして、所定の探索回数に達するまでＳ５０４〜Ｓ５１２の探索処理を繰り返す（Ｓ５０３〜Ｓ５１３）。
【００３４】
まず、サービス順序決定装置１は、重み付け係数データ１５Ｃから現在値Ｓの近傍解をＭ個選択し、近傍解係数データ１５Ｅとして記憶部１５に設定する（Ｓ５０４）。近傍解としては、例えば、現在値Ｓとのハミング距離（等しい文字数を持つ二つの文字列の中で、対応する位置にある異なった文字の個数）が所定値以下のものを選択する。その近傍解Ｍ個それぞれについて、Ｓ５０６及びＳ５０７の処理を行う（Ｓ５０５〜Ｓ５０８）。
【００３５】
最初に、サービス順序決定装置１は、記憶部１５のタブーリストにおいて当該近傍解への遷移の操作が記憶されているか否かを判定する（Ｓ５０６）。当該近傍解への遷移が記憶されていれば（Ｓ５０６のＹＥＳ）、Ｓ５０７の処理をスキップし、次の近傍解の処理を行う。当該近傍解への遷移が記憶されていなければ（Ｓ５０６のＮＯ）、待ち時間の目的関数Ｗｒ、Ｗｎを計算し、目的関数データ１５Ｆとして記憶部１５に設定する（Ｓ５０７）。目的関数Ｗｒ、Ｗｎの計算では、図６のフローのうち、待ち患者テーブル１５Ｂの作成（Ｓ６０３）、新規受付患者の診察時間の予測及び設定（Ｓ６０５）、最適診察順序の計算（Ｓ６０６）の各処理を実行した後、特定された順序パターンにおける、予約済患者の待ち時間の平均値Ｗｒ及び当日受付患者の待ち時間Ｗｎを計算する。Ｗｒ及びＷｎの計算では、重み付けしない待ち時間を用いる。各処理の詳細は、後記する。
【００３６】
Ｓ５０５〜Ｓ５０８の処理の結果、近傍解係数データ１５Ｅのうち、タブーリストに記憶されていない近傍解による予約済患者の待ち時間平均値Ｗｒ及び当日受付患者の待ち時間Ｗｎが目的関数データ１５Ｆとして記憶部１５に記憶される。
【００３７】
続いて、サービス順序決定装置１は、記憶部１５の目的関数データ１５Ｆを参照して、予約済患者の待ち時間平均値Ｗｒが当日受付患者の待ち時間Ｗｎ以下であり、かつ、当日受付患者の待ち時間Ｗｎが最小になる近傍解を特定し、最良近傍値Ｓ’として記憶部１５に設定するとともに、現在値Ｓを最良近傍値Ｓ’に遷移させるべく、現在値Ｓに最良近傍値Ｓ’を代入する（Ｓ５０９）。そして、記憶部１５のタブーリストにＳ→Ｓ’の遷移操作を書き込む（Ｓ５１０）。これにより、その後の一連の探索において、同じＳ’への遷移操作が再度行われることはなく、探索処理の効率化が図られる。
【００３８】
さらに、サービス順序決定装置１は、最良近傍値Ｓ’の目的関数Ｗｎが最良値の目的関数ＳｂＷｎより小さいか否かを判定する（Ｓ５１１）。Ｓ’の目的関数ＷｎがＳｂＷｎより小さくなければ（Ｓ５１１のＮＯ）、Ｓ５１２の処理をスキップして、次の探索処理を行う（Ｓ５０４）。Ｓ’の目的関数ＷｎがＳｂＷｎより小さければ（Ｓ５１１のＹＥＳ）、最良値Ｓｂに最良近傍値Ｓ’を代入し、最良値の目的関数ＳｂＷｎに最良近傍値Ｓ’の目的関数Ｗｎを代入する（Ｓ５１２）。
【００３９】
図６は、患者の待ち時間を短縮するための処理を示す。本処理は、診察日当日に、診察室ごとに、診察業務が実施されている最中に行われる。サービス順序決定装置１は、最初に診察室を選択する（Ｓ６０１）。そして、所定時間の間隔を空けながら、当該診察室に関してＳ６０３〜Ｓ６０７の処理を診察業務終了まで繰り返す（Ｓ６０２〜Ｓ６０８）。
【００４０】
まず、サービス順序決定装置１は、記憶部１５の患者データベース１５Ａから、診察順序確定済の待ち患者のレコードを抽出し、待ち患者テーブル１５Ｂを作成する（Ｓ６０３）。診察順序確定済の待ち患者とは、前日までの予約済患者及びＳ６０７により診察順序の確定した患者が対象となる。そして、１回目の処理では、待ち患者テーブル１５Ｂを新規に作成し、記憶部１５に記憶する。２回目以降の処理では、その時点で新たな診察順序確定済の待ち患者がいるときに、当該患者のレコードを記憶部１５の待ち患者テーブル１５Ｂに追加する。次に、予約外の新規受付患者がいるか否かを判定する（Ｓ６０４）。新規の受付患者がいるときには、患者データベース１５Ａに患者ＩＤ１５Ａ１及び受付時刻１５Ａ３だけが有効なレコードが記憶されている。新規の受付患者がいなければ（Ｓ６０４のＮＯ）、Ｓ６０５〜Ｓ６０７の処理をスキップする。
【００４１】
新規の受付患者がいれば（Ｓ６０４のＹＥＳ）、サービス順序決定装置１は、新規受付患者の診察時間を予測し、予測した診察時間を患者ＩＤ及び受付時刻とともにワークメモリに設定する（Ｓ６０５）。診察時間を予測する方法については、過去の実績データの平均値や最頻値等を計算する統計的な方法でもよいし、特許第４１９４５７３号公報の［００７２］や特許第４２１７６８９号公報の段落［００８０］に開示された方法でもよい。そして、待ち患者テーブル１５Ｂを用いて、診察順序確定済の待ち患者のうち、どの患者の間に新規受付患者を割り当てるべきか、すなわち、最適診察順序を計算するサブルーチンをコールする（Ｓ６０６）。サブルーチンの処理の詳細は、後記する。その最適診察順序の計算により、新規受付患者の診察順序が確定する（Ｓ６０７）。このとき、確定した診察順序のデータを表示部１２に表示してもよいし、通信部１１により他の装置に送信してもよい。
【００４２】
なお、以上の処理では、診察室を選択し、その診察室ごとに新規受付患者を監視するように説明したが、各診察室に係る患者を新規に受け付けたときに、当該診察室に関するＳ６０５〜Ｓ６０７の処理タスクが生成され、動作するようにしてもよい。
【００４３】
図７は、最適診察順序の計算処理を示す。本処理は、図６のＳ６０６においてコールされるサブルーチンの処理であり、待ち患者テーブル１５Ｂに対して新規受付患者を配置すべき位置を決めるものである。以下、図３Ａ（ａ）及び図８の待ち患者テーブル１５Ｂの具体例を参照しながら、説明する。
【００４４】
最初に、サービス順序決定装置１は、待ち患者テーブル１５Ｂの患者数をカウントし、変数ｋに代入する（Ｓ７０１）。図３Ａ（ａ）の例によれば、変数ｋには５が代入される。なお、変数ｋは、サービス順序決定装置１のワークメモリ上に確保される。次に、変数ｊを０からｋまで変更しながら、Ｓ７０３〜Ｓ７０６の処理を繰り返す（Ｓ７０２〜Ｓ７０７）。
【００４５】
まず、サービス順序決定装置１は、待ち患者テーブル１５Ｂのｊ番目とｊ＋１番目のレコードの間に新規受付患者のレコードを配置し、そのときの全体の配置を順序パターンｊとする（Ｓ７０３）。次に、待ち患者テーブル１５Ｂの各患者の開始時刻１５Ｂ５及び終了時刻１５Ｂ６を計算し、設定する（Ｓ７０４）。
【００４６】
ｊ＝０の場合、すなわち、図８（ａ）を例にして説明すると、新規受付患者Ａのレコードを待ち患者テーブル１５Ｂの先頭に配置する際には、新規受付患者Ａの開始時刻は、受付時刻９：００になり、新規受付患者Ａの終了時刻は、開始時刻９：００に診察時間０：１５を加算した時刻９：１５になる。次の患者１の開始時刻は、その患者１の予約時刻９：００及び１つ前の患者Ａの終了時刻９：１５のうち、早くない（遅い又は同じ）方の時刻９：１５になり、その患者１の終了時刻は、開始時刻９：１５に診察時間０：１０を加算した時刻９：２５になる（以下、同様）。
【００４７】
ｊ＝２の場合、すなわち、図８（ｃ）を例にして説明すると、新規受付患者Ａのレコードを待ち患者テーブル１５Ｂの患者２と３の間に配置する際には、新規受付患者Ａの開始時刻は、患者２の終了時刻９：３０になり、新規受付患者Ａの終了時刻は、開始時刻９：３０に診察時間０：１５を加算した時刻９：４５になる。次の患者３の開始時刻は、その患者３の予約時刻９：３０及び１つ前の患者Ａの終了時刻９：４５のうち、早くない（遅い又は同じ）方の時刻９：４５になり、その患者３の終了時刻は、開始時刻９：４５に診察時間０：１４を加算した時刻９：５９になる（以下、同様）。
【００４８】
ｊ＝５の場合、すなわち、図８（ｆ）を例にして説明すると、新規受付患者Ａのレコードを待ち患者テーブル１５Ｂの末尾に配置する際には、新規受付患者Ａの開始時刻は、最後（１つ前）の予約済患者の終了時刻１０：２２になり、新規受付患者の終了時刻は、開始時刻１０：２２に診察時間０：１５を加算した時刻１０：３７になる。
【００４９】
続いて、サービス順序決定装置１は、待ち患者テーブル１５Ｂの各患者の待ち時間１５Ｂ７、待ち時間１５Ｂ８及び重み付け待ち時間１５Ｂ９を計算し、設定する（Ｓ７０５）。予約済患者の待ち時間は、開始時刻から予約時刻を減算した時間になる。当日受付患者の待ち時間は、開始時刻から受付時刻を減算した時間になる。そして、時分単位の待ち時間１５Ｂ７を、分単位の待ち時間１５Ｂ８に変換する。さらに、係数の確定した重み付け関数を用いて、待ち時間１５Ｂ８から重み付け待ち時間１５Ｂ９を計算する。
【００５０】
ｊ＝１の場合、すなわち、図８（ｂ）を例にして説明すると、当日受付患者Ａの重み付け関数はｙ＝ｘなので、重み付け待ち時間１５Ｂ９＝待ち時間１５Ｂ８＝１０［分］となる。一方、予約済患者２の重み付け関数はｙ＝１．５ｘなので、重み付け待ち時間１５Ｂ９＝１．５×待ち時間１５Ｂ８＝１．５×２５＝３７．５［分］となる。
【００５１】
なお、重み付け関数の係数としては、図５に示すＳ５０７の処理の中で最適診察順序を計算する際には、Ｓ５０４で設定された近傍解係数データ１５Ｅの各レコードが用いられる。一方、図６のＳ６０６で最適診察順序を計算する際には、Ｓ４０２で計算され、Ｓ４０３で記憶された重み付け係数（最良値１５Ｄ２）が用いられる。
【００５２】
そして、各患者の重み付け待ち時間１５Ｂ９の平均値ＡＶＧを計算し、ワークメモリに設定する（Ｓ７０６）。以上により、各順序パターンに関して、各患者の重み付け待ち時間の平均値ＡＶＧが設定される。
【００５３】
続いて、サービス順序決定装置１は、平均値ＡＶＧとして想定されない大きい数値（例えば、１００００等の数値）を最小値の格納用変数ＡＶＧｍｉｎに格納し、最適順序パターンの格納用変数Ｐを確保する（Ｓ７０８）。そして、変数ｊを０からｋまで変更しながら、Ｓ７１０〜Ｓ７１１の処理を繰り返す（Ｓ７０９〜Ｓ７１２）。まず、順序パターンｊにおける平均値ＡＶＧが最小値ＡＶＧｍｉｎより小さいか否かを判定する（Ｓ７１０）。より小さければ（Ｓ７１０のＹＥＳ）、最小値ＡＶＧｍｉｎに順序パターンｊにおける平均値ＡＶＧを代入し、最適順序パターンＰに順序パターンｊを代入する（Ｓ７１１）。なお、Ｓ７０８で予めＡＶＧｍｉｎに大きい数値が代入されているので、最初に行われるＳ７１０の判定では必ずＹＥＳになり、最小値ＡＶＧｍｉｎが更新される。より小さくなければ（Ｓ７１０のＮＯ）、Ｓ７１１の処理をスキップして、次の順序パターンｊに関する判定処理を行う（Ｓ７１０）。
【００５４】
Ｓ７０９〜Ｓ７１２のループ処理が終了すると、平均値ＡＶＧが最小のものが最適順序パターンＰに代入されることになるので、待ち患者テーブル１５Ｂのうち、Ｐ番目とＰ＋１番目の間に新規受付患者を配置した順序が最適診察順序になる（Ｓ７１３）。図８の例では、（ａ）〜（ｆ）のうち、重み付け待ち時間の平均値が最小である（ｆ）の順序パターンを最適順序として選択する。
【００５５】
上記実施の形態では、図１に示すサービス順序決定装置１内の各部を機能させるために、処理部１４で実行されるプログラムをコンピュータにより読み取り可能な記録媒体に記録し、その記録したプログラムをコンピュータに読み込ませ、実行させることにより、本発明の実施の形態に係るサービス順序決定装置１が実現されるものとする。この場合、プログラムをインターネット等のネットワーク経由でコンピュータに提供してもよいし、プログラムが書き込まれた半導体チップ等をコンピュータに組み込んでもよい。
【００５６】
以上説明した本発明の実施の形態によれば、サービス順序決定装置１において、患者の最適診察順序を計算するために、待ち時間の重み付け関数の係数を決める際に、予約済患者の待ち時間平均値Ｗｒが当日受付患者の待ち時間Ｗｎ以下のものを選択することにより、予約済患者の当日受付患者に対する不公平感をなくすことができる。そして、当日受付患者の待ち時間が最小になるものを選択することにより、当日受付患者の待ち時間の長さに対する不満をなくすことができる。以上によれば、診察を受ける患者の間で不公平感が生じないように診察順序を決定することができる。
【００５７】
≪その他の実施の形態≫
以上、本発明を実施するための形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得るとともに、本発明にはその等価物も含まれる。例えば、以下のような実施の形態が考えられる。  
（１）上記実施の形態では、病院の各診察室の医師による患者の診察についてサービス順序決定装置１を適用した例を説明したが、これに限ることなく、他のサービス提供施設、例えば、美容院や飲食店等におけるサービスについてサービス順序決定装置１を適用してもよい。サービスを提供する箇所は、病院の場合、診察室であるが、美容院の場合、席であり、飲食店の場合、テーブルや個室である。  
（２）上記実施の形態では、重み付け係数の計算処理においてタブー探索法を利用するように記載したが、重み付け係数の最良解が得られる方法であれば、他の方法であってもよい。例えば、予め設定された重み付け係数の解のすべてについて、目的関数Ｗｒ、Ｗｎを計算し、最も条件のよい解を選択する総当り的な方法でもよいし、遺伝的アルゴリズムを利用するようにしてもよい。  
（３）図５のフローチャートにおいて、Ｓ６０３で診察順序確定済の待ち患者を抽出する際に、前日までの予約済患者及びＳ６０７により診察順序の確定した患者に限ることなく、例えば、当日の午前中に午後の診察を予約する患者を対象としてもよい。  
（４）上記実施の形態では、待ち患者テーブル１５Ｂの待ち時間１５Ｂ８を定数倍して重み付け待ち時間１５Ｂ９を計算したように、重み付け関数が１次関数の例を示したが、他の形式の重み付け関数、例えば、２次関数や指数関数を用いてもよい。
さらに、上記実施の形態では、重み付け関数の形式（例えば、ｙ＝ａｘ２＋ｂｘ＋ｃ、ｘ：待ち時間、ｙ：重み付け待ち時間）が決まっていて、その関数の係数（例えば、ａ、ｂ、ｃ）を決定する手順について説明したが、重み付け関数そのものを決定するようにしてもよい。この場合、異なる形式の重み付け関数及び各形式の関数における係数の組み合わせ（重み付け関数データ）が予め設定されていて、その中から最適な重み付け関数データを特定することが考えられる。
【符号の説明】
【００５８】
１      サービス順序決定装置（重み付け関数決定装置）
１４    処理部
１５    記憶部
１５Ｂ  待ち患者テーブル（予約データ）
１５Ｂ１  患者ＩＤ（利用者）
１５Ｂ２  予約時刻
１５Ｂ３  受付時刻
１５Ｂ４  診察時間（所要時間）
１５Ｂ５  開始時刻
１５Ｂ６  終了時刻
１５Ｂ７  待ち時間
１５Ｂ８  待ち時間
１５Ｂ９  重み付け待ち時間
１５Ｄ２  最良値
１５Ｄ３  現在値
１５Ｄ５  最良値の目的関数（最良値による待ち時間）
Ｗｒ    予約済患者の待ち時間平均値（予約利用者の待ち時間の平均値）
Ｗｎ    当日受付患者の待ち時間（当日利用者の待ち時間）
【図１】
2012022625.tif 000003
【図２】
2012022625.tif 000004
【図３Ａ】
2012022625.tif 000005
【図３Ｂ】
2012022625.tif 000006
【図４】
2012022625.tif 000007
【図５】
2012022625.tif 000008
【図６】
2012022625.tif 000009
【図７】
2012022625.tif 000010
【図８】
2012022625.tif 000011