以下、図面に基づいて本発明の実施の形態を説明する。まず、本実施の形態の概要について説明する。
本願発明者は、或る店舗のレジ周辺のエリア(以下、「チェックアウトエリア」という。)を実際に観察したところ、次のような観察結果を得た。
図1は、第一の状況における観察結果の概要を説明するための図である。図1は、昼前や夕方等、店舗内が混雑している状況下(以下、「状況A」という。)における観察結果を示す。
なお、観察対象とされた店舗の入り口は、図中左側に有る。商品が配置されている商品棚は、図中上側に左右方向に複数配列されている。レジは、図中下側の左右方向に複数配置されている。また、図中において黒丸は、顧客を示す。
上記のようなレイアウトを有する観察対象の店舗においては、店内を右回りに移動し、入り口から遠い商品棚の間の通路から、チェックアウトエリアに入る顧客が多いことが分かった。また、このような導線の結果であると思われるが、入り口から遠いレジ、図中右側のレジの待ち行列長の方が、入り口に近いレジの待ち行列長より多くなる現象が観察された。本実施の形態において、待ち行列長は、レジに並んでいる人数をいう。
なお、本実施の形態において、店舗内の顧客の移動方向(図1では、右回り)を、「売り場特性」という。売り場特性は、入り口、レジ、及び商品棚の相対的な位置関係に依存すると考えられるが、各商品棚に配置されている商品の種類にも依存すると考えられる。顧客をどのような導線で店舗内を誘導したいかによって、商品の配列が決められることが多いからである。
図2は、第二の状況における観察結果の概要を説明するための図である。図2は、店舗が新規に開店する際や特売時等、顧客が通常の混雑時(例えば、図1の状況)よりも多い状況下(以下、「状況B」という。)における観察結果を示す。当該状況下では、左側のレジと右側のレジとの間における、待ち行列長の偏りがより顕著に観察された。すなわち、図2に示されるように、右側のレジの待ち行列長と左側の列の待ち行列長との差が更に大きくなった。
図3は、第三の状況における観察結果の概要を説明するための図である。図3は、混雑していない時間帯において、中央のレジの複数台の稼動を停止させた状況下(以下、「状況C」という。)における観察結果を示す。この状況においても、左側のレジと右側のレジとの間において、待ち行列長に偏りが観察された。すなわち、右側のレジの待ち行列長の方が、左側のレジの待ち行列長よりも長くなることが分かった。
図1〜図3に示されるように、各レジの待ち行列長は、必ずしも略均等ではなく、売り場特性に応じて偏りが生じうる。したがって、本願発明者は、待ち行列理論を用いて、チェックアウトエリアの混雑状況を事前に予測するのは困難であると考えた。待ち行列理論のモデルでは、来店客がチェックアウトエリアに出現し、各来店客がチェックアウトエリア周辺の状況を判断し、レジを選択することが表現できない。すなわち、待ち行列理論では、上記の観察された状況のように、レイアウトに依存した混雑状況が形成されることは想定されていないからである。
図4は、待ち行列理論における代表的なM/M/Sモデルの概要を説明するための図である。図4に示されるように、M/M/Sモデルでは、レジを待っている顧客は、複数の列に対して1列に並び、空いたレジに入るといった規則が前提とされる。したがって、待ち行列理論では、基本的に、レジ間に待ち行列長の偏りが生じることはない。よって、状況A〜状況Cにおける観察結果を、待ち行列理論を用いて予測することは困難である。
そこで、本願発明者は、状況A〜Cを再現可能なシミュレーションを実現するために、試行錯誤の末、シミュレーション空間において顧客として振る舞うエージェントに対して、以下の3つの特性を与えることに想到した。
第一の特性は、自身のいる位置から所定の範囲内のレジを選択対象とするという特性である。当該特性を、以下、「限定特性」という。
第二の特性は、選択対象の各レジに対して、「当該レジまでの距離」及び「当該レジに並んでいる待ち行列長」に基づいて当該レジに評価値を与え、評価値が最大であるレジを選択するという特性である。当該特性を、以下、「評価特性」という。
第三の特性は、選択したレジに移動する際に他のエージェントと所定の位置関係を形成する場合には移動方向を変え、同じ座標上に複数のエージェントが存在することを避けるという特性である。当該特性を、以下、「回避特性」という。
以上の3つの特性を有するエージェントは、店舗内の売り場を模したシミュレーション空間において、例えば、図5に示されるように振る舞うように見える。
図5は、シミュレーション空間におけるエージェントの動作モデルを説明するためのフローチャートである。
ステップS11において、エージェントは、シミュレーション空間に出現する。シミュレーション空間は、例えば、シミュレーション対象の店舗内を表現する2次元空間である。エージェントの出現位置は、例えば、シミュレーション空間において、チェックアウトエリアに対する複数の入場位置のうちのいずれかである。チェックアウトエリアに対する入場位置は、商品棚の間の通路と、チェックアウトエリアが交わる位置である。但し、それ以外の場所に出現位置が設けられてもよい。
続いて、エージェントは、現在位置から進行方向において視野に含まれるレジ群を特定する(S12)。当該レジ群を、「候補レジ群」という。なお、ステップS12は、限定特性を実現するものである。
続いて、エージェントは、候補レジ群が更新されたか否かを判定する(S13)。例えば、初めてステップS12が実行された場合、当該エージェントに関しては、候補レジ群には要素が無い状態から要素が有る状態に更新されることになる。したがって、この場合、ステップS13の判定は肯定的なもの(Yes)となる。また、ステップS12の実行が2回目以降である場合、前回のステップS12において選択された候補レジ群の内容と、今回のステップS12において選択された候補レジ群の内容との一部又は全部が異なる場合、ステップS13の判定は肯定的なもの(Yes)となる。候補レジ群の内容には、候補レジ群に含まれるレジの集合のみならず、各レジの待ち行列長も含まれる。したがって、候補レジ群に含まれるレジの集合が同じであったとしても、いずれかのレジに関して待ち行列長が変化している場合、ステップS13の判定は肯定的なものとなる。
候補レジ群が更新された場合(S13でYes)、エージェントは、候補レジ群に含まれる各レジを所定の方法で評価し、評価値が最大である一つのレジを選択する(S14)。例えば、エージェントと各レジとの位置関係、各レジの待ち行列長等に基づいて、各レジの評価値が算出される。ステップS14において選択されるレジを「目的レジ」という。なお、ステップS14は、評価特性を実現するものである。
一方、候補レジ群が更新されない場合(S13でNo)、ステップS14は実行されない。
ステップS15に進み、エージェントは、目的レジの方向に所定距離直進した場合、他のエージェントと所定の位置関係を形成するか、より具体的には、他のエージェントと干渉するか否かを判定する(S15)。
干渉が予測される場合(S15でYes)、エージェントは、干渉を回避するために方向転換を行う(S16)。したがって、当該エージェントの進行方向は変化する。なお、ステップS16は、回避特性を実現するものである。続いて、エージェントは、方向転換後の進行方向において所定距離直進する(S17)。一方、干渉が予測されない場合(S15でNo)、エージェントは、方向転換することなく、所定距離直進する(S17)。
続いて、エージェントは、目的レジの待ち行列に到達したか否かを判定する(S18)。目的レジの待ち行列に到達した場合(S18でYes)、当該目的レジの待ち行列長に1が加算される。一方、目的レジの待ち行列に到達していない場合(S18でNo)、ステップS12以降が繰り返される。この際、ステップS16においてエージェントの進行方向が変更されているため、又はステップS17においてエージェントの位置が変化しているため、候補レジ群として選択されるレジは前回と異なる可能性が有る。
以下、本実施の形態において、上記のような動作モデルを有するエージェントをシミュレーション空間において実現し、各レジの待ち行列長を予測する予測装置10等について具体的に説明する。
図6は、本発明の実施の形態における予測装置のハードウェア構成例を示す図である。図6の予測装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、インタフェース装置105、表示装置106、及び入力装置107等を有する。
予測装置10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って予測装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107はキーボード及びマウス等であり、様々な操作指示を入力させるために用いられる。
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
また、ネットワークに接続する必要が無い場合、予測装置10は、インタフェース105を備えていなくてもよい。
図7は、本発明の実施の形態における予測装置の機能構成例を示す図である。図7において、予測装置10は、表示制御部11、出現処理部12、候補レジ群特定部13、目的レジ選択部14、移動先算出部15、干渉回避部16、状態更新部17、待ち行列更新部18、及び情報出力部19等を有する。これら各部は、予測装置10にインストールされる1以上のプログラムがCPU104に実行させる処理によって実現される。
予測装置10は、また、出現位置情報記憶部21、レジ情報記憶部22、エージェント情報記憶部23、設定情報記憶部24、レジ履歴記憶部25、及びエージェント履歴記憶部26等を利用する。これら記憶部は、補助記憶装置102、又は予測装置10にネットワークを介して接続される記憶装置等を用いて実現可能である。
出現位置情報記憶部21は、シミュレーション空間においてエージェントが出現する位置ごとに、座標値等の情報を記憶する。レジ情報記憶部22は、シミュレーション空間に配置される各レジに関する情報を記憶する。例えば、レジの配置位置の座標値等、予め設定される情報や、レジの待ち行列長等、シミュレーションの進行に応じて変化する値等が、レジごとに記憶される。エージェント情報記憶部23は、エージェントごとに、エージェントの現在位置、目的地、向き等の属性情報を記憶する。設定情報記憶部24は、出現位置ごとやレジにごとの設定情報以外の各種の設定情報を記憶する。例えば、各エージェントに共通な視野を規定する情報や、エージェントの移動速度等が設定情報記憶部24に記憶される。
表示制御部11は、シミュレーション空間を表示装置106に表示させる。出現処理部12は、エージェントを所定のタイミングでシミュレーション空間に出現させるための処理を実行する。具体的には、出現処理部12は、所定のタイミングで、出現対象のエージェントに対応するレコードを、エージェント情報記憶部23に生成する。候補レジ群特定部13は、エージェントごとに、当該エージェントの現在位置、向き、及び視野等に基づいて、候補レジ群を特定する。目的レジ選択部14は、エージェントごとに、候補レジ群に含まれる各レジについて、当該エージェントとの位置関係や待ち行列長等に基づいて評価を行い、評価値が最大であるレジを当該エージェントの目的レジとして選択する。
移動先算出部15は、エージェントごとに、現在位置、向き、及び移動速度等に基づいて、所定時間後のエージェントの移動先を算出する。干渉回避部16は、各エージェントを、移動先算出部15によって算出された移動先に移動させた場合に、エージェント間で干渉が発生するか否かを判定する。干渉が発生すると判定された場合、干渉回避部16は、干渉に係るエージェントに関して、向きを変更し、改めて、所定時間後の移動先を算出する。
状態更新部17は、所定時間経過するたび(一定周期毎)に、各エージェントの状態を更新する。移動先算出部15又は干渉回避部16によって算出された移動先に、各エージェントを移動させる。各エージェントの移動は、エージェントごとにエージェント情報記憶部23に記憶されている現在位置を更新することによって行われる。状態更新部17は、また、レジ処理の終了したエージェントが発生した場合、当該エージェントをシミュレーション空間から消滅させる。
待ち行列更新部18は、各レジの所定範囲へのエージェントの到達や、各レジにおけるレジ処理の終了等に応じて、各レジの待ち行列長を更新する。
出力情報記憶部は、シミュレーションの進行に応じて、各レジに関する履歴情報や、エージェントに関する履歴情報等を、レジ履歴記憶部25又はエージェント履歴記憶部26等に記憶する。レジ履歴記憶部25は、一定周期ごとに、その時の各レジの待ち行列長を記憶する。エージェント履歴記憶部26は、各エージェントの出現時期、及びレジの通過時期等を記憶する。
以下、予測装置10が実行する処理手順について説明する。図8は、予測装置が実行する処理の全体フローの一例を説明するためのフローチャートである。図8の処理は、例えば、シミュレーションの開始指示の入力に応じて開始される。なお、図8において、ステップS103以降は、シミュレーションが終了するまでのループ処理である。1回のループごとに、シミュレーション空間における時間は、予め設定された時間(例えば、0.1秒)だけ進む。以下、1回分のループを、「1サイクル」といい、1サイクル実行されることにより進行する時間を、「サイクル時間」という。
ステップS101において、表示制御部11は、シミュレーション空間の初期状態を表示装置106に表示させる。なお、シミュレーション空間における座標系は、予め設定される情報に基づいて定義される。座標系の単位は、例えば、メートルである。また、シミュレーション空間の大きさや形状についても、例えば、シミュレーション対象の店舗のレイアウト図等を参考に、予め設定される情報に基づく。
続いて、予測装置10は、変数tの値を0に初期化する。変数tは、シミュレーション空間における経過時間を記憶するための変数である。続いて、予測装置10は、シミュレーション空間における出現位置ごとに、エージェントの出現処理を実行する(S103)。ステップS103の処理の結果、いずれかの出現位置にエージェントが出現しうる。
続いて、予測装置10は、シミュレーション空間に存在するエージェントごとに、移動先の算出処理を実行する(S104)。例えば、エージェントが、現在の進行方向において所定速度でサイクル時間分だけ移動した場合の移動先の座標値が算出される。
続いて、予測装置10は、エージェント間の干渉の回避処理を実行する(S105)。すなわち、各エージェントに関して、ステップS104において算出された移動先に移動した場合、他のエージェントと干渉するか否かが判定される。また、干渉すると判定されたエージェントに関して、進行方向の変更が行われ、変更後の進行方向に基づいて、移動先が改めて算出される。
続いて、予測装置10は、エージェントごとに、状態の更新処理を実行する(S106)。例えば、各エージェントについて、ステップS104又はS105において算出された移動先への移動、レジの待ち行列への追加、レジ処理の終了に伴うシミュレーション空間からの削除等が行われる。
続いて、表示制御部11は、シミュレーション画面の表示状態を更新する(S107)。すなわち、シミュレーション画面に対して、ステップS106における処理の結果が反映される。
図9は、シミュレーション空間の表示例を示す図である。図9に示されるシミュレーション空間では、位置P1〜位置P8の8箇所がエージェントの出現位置とされる。また、レジr1〜r10の10個のレジが配置されている。位置P1〜位置P8の位置や、レジr1〜r10の位置は、予め設定された情報に基づく。図9では、更に、エージェントa1〜a30の30のエージェントがシミュレーション空間に存在する状態が示されている。このうち、エージェントa30は、移動中であり、他のエージェントは、いずれかのレジの待ち行列に並んでいる。各待ち行列において、先頭のエージェントである、エージェントa1、a3、a6、a8、a11、a14、a16、a20、a23、a26は、レジ処理中のエージェントである。
なお、本実施の形態では、便宜上、図9において、横方向をX軸とし、縦方向をY軸とする。また、各エージェントは、矩形によって表現されている。これは、カートの形状を表現したものである。
続いて、情報出力部19は、今回のサイクルの終了時における、各レジの待ち行列長を、レジ履歴記憶部25に記憶する(S108)。
図10は、レジ履歴記憶部の構成例を示す図である。図10に示されるように、レジ履歴記憶部25は、サイクルごとに、レジr1〜r10の各レジにおける待ち行列長を記憶する。レジ履歴記憶部25が記憶する待ち行列情報は、後述されるシミュレーション結果の表示等に利用される。
続いて、予測装置10は、変数tに、サイクル時間tcycleを加算する(S109)。続いて、予測装置10は、変数tの値が、予め設定された、終了時間tendを超えているか否かを判定する(S110)。変数tの値が、終了時間tend以下である場合(S110でNo)、次のサイクルが実行される。変数tの値が、終了時間tendを超える場合(S110でYes)、シミュレーションは、終了する。
続いて、ステップS103の詳細について説明する。図11は、出現位置ごとのエージェントの出現処理の処理手順の一例を説明するためのフローチャートである。図11では、一つの出現位置に関する処理が示されている。したがって、ステップS103では、出現位置P1〜P8のそれぞれについて、図11の処理が実行される。図11の説明において、処理対象とされている出現位置を、「対象出現位置」という。
ステップS201において、出現処理部12は、設定情報記憶部24に記憶されている、1時間あたりの出現数に基づいて、1サイクルあたりの出現数αを算出する。
図12は、設定情報記憶部の構成例を示す図である。設定情報記憶部24は、シミュレーション対象の店舗に合わせて予め設定される各種のパラメータを記憶する。例えば、図12では、「出現数」、「買上点数情報」、「移動速度」、「視野情報」、及び「評価傾向情報」等が記憶される例が示されている。
このうち、ステップS201では、「出現数」が利用される。「出現数」は、1時間あたりの出現数である。したがって、ステップS201において、出現処理部12は、設定情報記憶部24の「出現数」の値を、1時間のサイクル数で除することにより、1時間当たりの出現数αを算出する。例えば、サイクル時間が0.1秒である場合、400(人)÷36000(サイクル)の演算によって、出現数αが算出される。
なお、設定情報記憶部24の「出現数」には、例えば、シミュレーションを行う時間帯における1時間当たり来店客数の予測値が設定される。
続いて、出現処理部12は、対象出現位置に対する出現割合に基づいて、1サイクルあたりの対象出現位置に関する出現数の期待値βを算出する(S202)。各出現位置に対する出現割合は、出現位置情報記憶部21に記憶されている。
図13は、出現位置情報記憶部の構成例を示す図である。図13において、出現位置情報記憶部21は、出現位置ごとに、当該出現位置のX座標及びY座標と、「出現割合」等を記憶する。X座標及びY座標は、シミュレーション空間の座標系における当該出現位置のX座標及びY座標である。「出現割合」は、他の出現位置との相対的な関係において、当該出現位置からエージェントが出現する割合である。したがって、全ての出現位置の出現割合の合計は100となる。出現割合は、図1において説明した売り場特性を表現するものである。したがって、シミュレーション対象の店舗の売り場特性に基づいて設定されてもよい。
ステップS202では、以下の演算が行われることにより、期待値βが算出される。
期待値β=出現数α×対象出現位置に対する出現割合
続いて、出現処理部12は、乱数を生成し、当該乱数と期待値βとに基づいて、エージェントの出現の要否を判定する(S203)。例えば、0〜1の範囲を有し、倍精度の乱数が生成される。但し、必ずしも倍精度でなくてもよい。当該乱数の値が、期待値β以下であれば、対象出現位置においてエージェントの発生が必要であると判定される。当該乱数の値が、期待値βを超える場合は、対象出現位置においてエージェントの発生は不要であると判定される。
エージェントの出現は不要であると判定された場合(S204でNo)、対象出現位置に関して、図11の処理は終了する。エージェントの出現は必要であると判定された場合(S204でYes)、出現処理部12は、エージェント情報記憶部23に、新たなレコードを生成する(S205)。
図14は、エージェント情報記憶部の構成例を示す図である。図14において、エージェント情報記憶部23は、出現してから消滅するまでのエージェントごとに、エージェントの属性情報を含むレコードを記憶する。属性情報には、「エージェントID」、「出現時期」、「現在位置」、「移動先位置」、「買上点数」、「状態」、「候補レジ群」、「評価傾向」、「目的レジ」、「目的地」、及び「向き」等が含まれる。
「エージェントID」は、各エージェントの識別情報であり、エージェント情報記憶部23に対するレコードの追加に伴って割り当てられる。「出現時期」は、シミュレーション開始時を起点として、当該エージェントが出現した時期である。すなわち、当該レコードが追加された時期である。本実施の形態において、出現時期の単位は秒である。但し、サイクル数が単位とされてもよい。「現在位置」は、シミュレーション空間におけるエージェント現在位置のX座標及びY座標である。「移動先位置」は、現在位置から、現在の向きに所定速度でサイクル時間直進した場合の到達地点である。「買上点数」は、商品の買上点数である。「状態」は、移動中、待ち行列で待機中、又はレジで処理中のいずれかの状態であり、順番に、0、1、2によって表現される。「候補レジ群」は、現在の候補レジ群に含まれる各レジのレジID及び待ち行列長であり、初期値は空である。なお、図14において、待ち行列長は、便宜上、省略されている。「評価傾向」は、候補レジ群の中から目的レジを選択する際に、移動距離の短さを重視するタイプか、待ち行列の短さを重視するタイプかを示す情報である。前者は、0、後者は、1によって表現される。「目的レジ」は、現在の目的レジのレジIDである。レジIDは、各レジの識別情報である。「目的地」は、現在において最終目的地としている位置のX座標及びY座標である。目的地は、必ずしも目的レジの座標値とは一致しない。目的レジに待ち行列が形成されている場合は、当該待ち行列の最後尾の位置が、目的地となるからである。「向き」は、進行方向である。「向き」は、例えば、シミュレーション空間における、X軸又はY軸に対する角度によって表現される。または、現在位置のX座標及びY座標を始点とし、目的地のX座標及びY座標を終点とするベクトルによって向きが表現されてもよい。
ステップS205では、このようなエージェント情報記憶部23に新たなレコードが生成され、当該レコードの「エージェントID」、「出現時期」、「状態」、及び「向き」に値が記憶される。「出現時期」には、変数tの値が記憶される。「状態」には、「0(移動中)」が記憶される。「向き」には、例えば、Y軸に対して平行な方向のうち、レジが配置されている方向を示す値が初期値として記憶される。以下、生成されたレコードを、「対象レコード」という。対象レコードに係るエージェントを、「対象エージェント」という。
続いて、出現処理部12は、対象出現位置に関して出現位置情報記憶部21(図13)に記憶されているX座標及びY座標を、対象レコードの「現在位置」のX座標及びY座標に転記する(S206)。続いて、出現処理部12は、設定情報記憶部24(図12)の「買上点数情報」に基づいて乱数を発生させ、当該乱数に基づいて、対象エージェントの買上点数を算出する(S207)。算出された買上点数は、対象レコードの「買上点数」に記憶される。なお、「買上点数情報」は、平均と標準偏差とを含む。平均は、買上点数の平均値である。標準偏差は、買上点数の標準偏差である。このような「買上点数情報」に基づく買上点数の算出方法は、公知のアルゴリズムに基づいて行われればよい。また、他の方法によって、買上点数がランダムに決定されてもよい。更に、全てのエージェントに対して、買上点数が共通とされてもよい。
続いて、出現処理部12は、設定情報記憶部24(図12)の「評価傾向情報」に基づいて、対象エージェントの評価傾向を決定する(S208)。図12に示される「評価傾向情報」では、「距離重視」の値が「2」であり、「待ち行列長重視」の値が「8」である。「距離重視」の値と「待ち行列長重視」とは、それぞれの傾向の出現割合を示す。すなわち、距離重視の傾向を有するエージェントを2割、待ち行列長重視の傾向を有するエージェントを8割出現させることを示す。距離重視とは、レジまでの距離が短いことを重視することをいい、待ち行列長重視とは、待ち行列長が短いことを重視することをいう。
「評価傾向情報」が図12に示されるように設定されている場合、出現処理部12は、例えば、0〜1の範囲の値を有する乱数を発生させ、当該乱数の値が0.2以下であれば、対象エージェントの評価傾向を、距離重視とする。一方、出現処理部12は、当該乱数の値が0.2より大きく1以下であれば、対象エージェントの評価傾向を、待ち行列長重視とする。距離重視の場合、対象レコードの「評価傾向」には「0」が記憶され、待ち行列長重視の場合、対象レコードの「評価傾向」には「1」が記憶される。
なお、設定情報記憶部24(図12)における「評価傾向情報」は、例えば、シミュレーション対象の店舗の客層に応じて設定されてもよい。例えば、高齢者が多い店舗では、距離重視の割合を高くし、若者が多い店舗では、待ち行列長重視の割合を高くすることが考えられる。
以上で、対象エージェントは、シミュレーション空間において対象出現位置に出現したことになる。すなわち、対象エージェントの出現は、エージェント情報記憶部23に対するレコードの生成によって実現される。
続いて、図8のステップS104の詳細について説明する。図15は、エージェントごとの移動先の算出処理の処理手順の一例を説明するためのフローチャートである。図15では、一つのエージェントに関する処理が示されている。したがって、ステップS104では、エージェント情報記憶部23(図14)に記憶されている各レコード(各エージェント)について、図15の処理が実行される。図15の説明において、処理対象とされているレコードを「対象レコード」といい、対象レコードに係るエージェントを「対象エージェント」という。
ステップS301において、候補レジ群特定部13は、対象レコードの「状態」の値は「0」であるか、すなわち、対象エージェントは移動中であるか否かを判定する(S301)。対象レコードの「状態」の値が「0」である場合(S301でYes)、候補レジ群特定部13は、対象エージェントの現在位置及び向きと、設定情報記憶部24(図12)に記憶されている「視野情報」とに基づいて、対象エージェントの視野に含まれるレジを特定する(S302)。設定情報記憶部24において、「視野情報」は、「視野角度」及び「視野距離」を含む。このような「視野情報」に基づいて、対象エージェントの視野は、例えば、図16に示されるように特定される。
図16は、エージェントの視野の特定方法の一例を示す図である。図16において、円は、エージェントの現在位置を示す。円から左方向に伸びる矢印は、エージェント情報記憶部23に記憶されている、θは、視野角度である。例えば、視野角度が120度の場合、エージェントの向きを中心として、左右の60度が視野角度となる。dは、視野距離である。視野角度及び視野距離で形成される扇型が、エージェントの視野となる。
一方、各レジの配置位置は、レジ情報記憶部22を参照して特定可能である。図17は、レジ情報記憶部の構成例を示す図である。図17において、レジ情報記憶部22は、シミュレーション対象の店舗に設置されるレジごとに、「レジID」、「設置位置」、「待機位置」、「処理速度」、「待ち行列長」、「最後尾位置」、及び「処理終了時期」等を記憶する。このうち、「レジID」〜「処理速度」までは、例えば、シミュレーション対象の店舗に合わせて設定される設定項目である。「待ち行列長」〜「処理終了時期」は、シミュレーションの進行に応じて値が変化する項目である。
「レジID」は、各レジの識別情報である。「設置位置」は、レジが設置された位置に対応する、シミュレーション空間におけるX座標及びY座標である。「待機位置」は、レジ処理中の対象とされているエージェントが待機する位置に対応する、シミュレーション空間におけるX座標及びY座標である。「処理速度」は、商品1個あたりのレジ処理に要する時間である。「待ち行列長」は、現在の待ち行列長であり、初期値は0である。「最後尾位置」は、シミュレーション空間において、現在の待ち行列の最後尾の位置のX座標及びY座標であり、初期値は、「待機位置」に一致する。「処理終了時期」は、レジ処理中のエージェントに関してレジ処理が終了する時期である。「処理終了時期」の単位はサイクルであり、初期値は0である。
ステップS301では、図16において説明したように特定される視野に、「設置位置」の座標値が含まれるレジID群が特定される。
続いて、候補レジ群特定部13は、特定されたレジID群に係るレジ群(以下、「特定レジ群」という。)と、対象レコードの「候補レジ群」との間に関して、相違点の有無を判定する(S303)。具体的には、特定されたレジID群と、対象レコードの「候補レジ群」に含まれるレジID群との間に相違点が有るかが判定される。また、双方のレジID群の間に相違点が無い場合、特定されたレジID群に含まれる各レジIDに対応付けてレジ情報記憶部22に記憶されている待ち行列長と、対象レコードの「候補レジ群」に記憶されている各候補レジの待ち行列長との間に相違点が有るか否かが判定される。すなわち、現在の待ち行列長と、1サイクル前の待ち行列長との間に相違点が有るかが判定される。
レジID群及び待ち行列長の少なくともいずれか一方に関して相違点が有る場合(S303でYes)、候補レジ群特定部13は、対象レコードの「候補レジ群」の値を更新する(S304)。すなわち、ステップS302において特定されたレジID群と、当該レジID群に含まれる各レジIDに対応付けてレジ情報記憶部22に記憶されている「待ち行列長」の値とが、対象レコードの「候補レジ群」に記憶される。
続いて、目的レジ選択部14は、対象レコードの「候補レジ群」に係る各レジについて、評価値を算出する(S305)。評価値は、例えば、以下の評価式に基づいて算出される。
評価値=w1×(1/Line)+w2×(1/Distance)
評価式において、Lineは、レジの待ち行列長である。Distanceは、対象エージェントの現在位置から、レジの配置位置までの距離である。当該距離は、対象レコードの「現在位置」のX座標及びY座標と、評価対象のレジに関してレジ情報記憶部22に記憶されている「配置位置」のX座標及びY座標とに基づいて算出可能である。
また、w1及びw2は、待ち行列長又は距離に対する重み係数である。本実施の形態では、w1及びw2の値は、次のように設定される。
対象レコードの評価傾向が「0」、すなわち、対象エージェントが距離重視の場合、w1=0.25、W2=0.75
対象レコードの評価傾向が「1」、すなわち、対象エージェントが待ち行列長重視の場合、w1=0.75、W2=0.25
なお、本実施の形態において、w1及びw2の値は、固定的に0.25又は0.75であるが、w1及びw2に関しても、設定情報とされて、設定情報記憶部24に記憶されてもよい。この場合、w1及びw2の値は、シミュレーション対象の店舗の客層に応じて調整されてもよい。
続いて、目的レジ選択部14は、評価値が最大となるレジを、目的レジに選択する(S306)。目的レジ選択部14は、目的レジのレジIDを、対象レコードの「目的レジ」に記憶する。続いて、目的レジ選択部14は、対象レコードの「目的地」のX座標及びY座標に、目的レジの「最後尾位置」のX座標及びY座標を転記する(S307)。続いて、目的レジ選択部14は、対象エージェントの向きを、目的地の方向に変更する(S308)。具体的には、対象レコードの「現在位置」のX座標及びY座標を始点とし、「目的地」のX座標及びY座標を終点とするベクトル又は当該ベクトルの角度が、対象レコード「向き」に記憶される。
続いて、移動先算出部15は、対象レコードの「向き」が示す方向に、サイクル時間分だけ移動した場合に到達する移動先の座標値を算出する(S309)。この際、移動速度は、設定情報記憶部24(図12)の「移動速度」に記憶されている値が利用される。本実施の形態において「移動速度」の値は、1秒当たりの移動距離、すなわち、秒速である。したがって、例えば、サイクル時間が0.1秒である場合、「移動速度」に0.1を乗じた値が、1サイクル分の移動距離となる。
移動先算出部15は、算出された座標値のX座標及びY座標を、対象レコードの「移動先位置」のX座標及びY座標に記憶する。但し、移動先位置として算出されたX座標及びY座標が、対象レコードの「目的地」のX座標及びY座標を通過してしまう場合、対象レコードの「移動先位置」には、対象レコードの「目的地」のX座標及びY座標が転記される。
一方、ステップS303において、特定レジ群と、対象レコードの「候補レジ群」との間に相違点が無い場合(S303でNo)、目的レジ選択部14は、対象エージェントの目的レジの待ち行列の最後尾の位置と、対象エージェントの目的地の位置とが一致しているか否かを判定する(S310)。具体的には、対象レコードの「目的地」のX座標及びY座標と、対象レコードの「目的レジ」に記憶されているレジIDに関してレジ情報記憶部22に記憶されている「最後尾位置」のX座標及びY座標とが一致しているか否かが判定される。1サイクルの間にレジの待ち行列長が短くなり、両者の間にずれが生じる可能性が有るためである。
対象エージェントの目的レジの待ち行列の最後尾の位置と、対象エージェントの目的地の位置とが一致していない場合(S310でYes)、ステップS307以降が実行される。その結果、対象エージェントの目的レジの待ち行列の最後尾の位置と、対象エージェントの目的地の位置とは一致する。
更に、ステップS301において、対象レコードの「状態」の値が「0」でない場合(S301でNo)、候補レジ群特定部13は、対象レコードの「状態」の値が「1」であるか、すなわち、対象エージェントは待ち行列で待機中であるか否かを判定する(S311)。対象レコードの「状態」の値が「1」である場合(S311でYes)、ステップS309が実行される。対象レコードの「状態」の値が「1」でない場合(S311でNo)、すなわち、対象エージェントは、レジ処理中である場合、ステップS302以降は実行されずに、図15の処理は終了する。
続いて、図8のステップS105の詳細について説明する。図18は、エージェント間の干渉の回避処理の処理手順の一例を説明するためのフローチャートである。図18の処理は、二つのエージェントを含む一組に関する処理が示されている。すなわち、ステップS105では、エージェント情報記憶部23に記憶されているレコード(エージェント)のうちの二つを一組とする全ての組み合わせに関して、図18の処理が実行される。
ステップS401において、干渉回避部16は、二つのエージェントが、今回のサイクルの移動によって干渉するか否かを判定する。干渉の一形態としては、二つのエージェントの移動経路の一部が重なる例が挙げられる。この場合、二つのエージェントのそれぞれの現在位置を始点とし移動先位置を終点とする二つのベクトル又は線分が、交差するか、又は一部において重なるか否かが判定される。
図19は、現在位置を始点とし移動先位置を終点とするベクトルが交差又は重なる例を示す図である。図19において、円は、エージェントを示し、破線の矢印は、現在位置を始点とし、移動先位置を終点とするベクトルを示す。
(1)は、二つのベクトルが交差する例である。(2)は、二つのベクトルの一部が重なる例である。(2)は、特に、二つのエージェントが、待ち行列で待機中である場合に発生する可能性が有る。
当該二つのベクトルが、交差又は一部において重なる場合、二つのエージェントは干渉すると判定される。現在位置及び移動先位置は、それぞれのエージェントに関してエージェント情報記憶部23(図4)の「現在位置」及び「移動先位置」より特定可能である。
また、二つのエージェントのそれぞれの移動先位置において、二つのエージェントの範囲の少なくとも一部が重畳することが、干渉であるとされてもよい。すなわち、エージェントは、例えば、カート相当の範囲を有する。したがって、一方のエージェントの範囲の少なくとも一部が、他方のエージェントの範囲に重なる否かによって、干渉の有無が判定されてもよい。
また、その他の方法によって干渉の有無が判定されてもよい。
二つのエージェントが干渉する場合(S401でYes)、干渉回避部16は、二つのエージェントの一方を処理対象とする(S402)。以下、処理対象とされたエージェントを「対象エージェント」といい、対象エージェントに対応するエージェント情報記憶部23(図4)のレコードを、「対象レコード」という。
続いて、干渉回避部16は、対象レコードの「状態」の値は「0」であるか、すなわち、対象エージェントは移動中であるか否かを判定する(S403)。対象レコードの「状態」の値が「0」である場合(S403でYes)、干渉回避部16は、所定の回避ルールに従って、対象レコードの「向き」の値を変更する(S404)。すなわち、対象エージェントの進行方向が変更される。回避ルールは、二つのエージェントの干渉が回避されればどのようなものでもよい。例えば、図20に示されるような回避ルールが採用されてもよい。
図20は、回避ルールの一例を示す図である。図20において、(1)は、干渉すると判定された状態を示す。(1)において、破線のベクトルは、現在の向きにおける移動方向及び移動距離を示す。(1)において、二つのベクトルは交差していないが、移動先位置での範囲の重畳の有無によって干渉の有無が判定される場合、干渉すると判定されうる。
干渉すると判定された場合、(2)に示されるように、干渉する二つのエージェントの現在位置を直線で結び、当該直線上において干渉を回避する方向に、1サイクル分の移動距離の長さを有するベクトルが作成される。
続いて、(3)に示されるように、双方のエージェントに関して、当初の移動方向のベクトルと、回避方向のベクトルとの和が求められる。(4)には、当該和が示されている。当該和の方向に、二つのエージェントの向きが変更される。但し、他の方法によって、二つのエージェントの干渉が回避されてもよい。例えば、一方のみのエージェントの向きを変えることで、干渉が回避されてもよい。
なお、ステップS404では、ステップS402において処理対象とされた対象エージェントに関して、向きの変更が行われる。続いて、干渉回避部16は、対象レコードの「向き」が示す方向に、サイクル時間分だけ移動した場合に到達する移動先の座標値を算出する(S405)。算出結果は、対象レコードの「移動先位置」に記憶される。なお、ステップS405の処理内容の詳細は、図15のステップS309と同様である。
一方、ステップS403において、対象レコードの「状態」が「0」でない場合(S403でNo)、干渉回避部16は、対象レコードの「状態」の値は「1」であるか、すなわち、対象エージェントは、待ち行列で待機中か否かを判定する(S406)。対象レコードの「状態」の値が「1」である場合(S406でYes)、干渉回避部16は、対象レコードの「現在位置」のX座標及びY座標を、対象レコードの「移動先位置」のX座標及びY座標に転記する(S407)。この場合、今回のサイクルにおいて、対象エージェントは移動しないことになる。すなわち、待ち行列で待機中のエージェントに関しては、移動しないことによって干渉が回避される。
ステップS405又はS407に続いて、干渉回避部16は、一組に含まれる二つのエージェントの双方について処理が完了したか否かを判定する(S408)。一方しか処理されていない場合(S408でNo)、二つ目のエージェントについてステップS402以降が実行される。この際に、ステップS404が実行される場合であって、図20に示した回避ルールが適用される場合は、一つ目のエージェントに関してステップS404が実行された際に、二つのエージェントに関して算出されたそれぞれのベクトルの和を保持していてもよい。二つ目のエージェントに関してステップS404が実行される場合は、保持されているベクトルの和のうち、当該二つ目のエージェントに関する和が利用されてもよい。二つ目のエージェントに関してステップS404が実行される時点では、既に一つ目のエージェントの移動先位置が更新されてしまっており、一つ目のエージェントに関して更新後の移動先位置を用いた場合、図20の通りの回避ルールを適用できないからである。但し、一つ目のエージェントに関して更新後の移動先位置が用いられて、二つ目のエージェントに関して、図20に示したとおりの演算が行われてもよい。
一組に含まれる二つのエージェントの双方について処理が完了すると(S408でYes)、図18の処理は終了する。
続いて、図8のステップS106の詳細について説明する。図21は、エージェントごとの状態の更新処理の処理手順の一例を説明するためのフローチャートである。図21では、一つのエージェントに関する処理が示されている。したがって、ステップS106では、エージェント情報記憶部23(図14)に記憶されている各レコード(各エージェント)について、図21の処理が実行される。図21の説明において、処理対象とされているレコードを「対象レコード」といい、対象レコードに係るエージェントを「対象エージェント」という。
ステップS501において、状態更新部17は、対象レコードの「移動先位置」のX座標及びY座標を、対象レコードの「現在位置」のX座標及びY座標に転記する。すなわち、対象エージェントが、シミュレーション空間において、現在位置から移動先位置に移動する。
続いて、状態更新部17は、対象レコードの「状態」の値は「0」であるか、すなわち、対象エージェントは移動中であるか否かを判定する(S502)。対象レコードの「状態」の値が「0」である場合(S502でYes)、状態更新部17は、対象エージェントが目的地に到達したか否かを判定する(S503)。具体的には、対象レコードの「現在位置」のX座標及びY座標が、「目的地」のX座標及びY座標に一致するか否かが判定される。
対象エージェントが目的地に到達していない場合(S503でNo)、対象エージェントに関して、図21の処理は終了する。
対象エージェントが目的地に到達した場合(S503でYes)、状態更新部17は、対象レコードの「目的地」、「状態」、及び「向き」を更新する(S504)。具体的には、「目的地」のX座標及びY座標には、目的レジに関してレジ情報記憶部22(図17)に記憶されている、「待機位置」のX座標及びY座標が転記される。すなわち、対象エージェントの目的地が、目的レジの待ち行列の最後尾から、目的レジの待機位置に変更される。また、対象レコードの「状態」の値が、「1(待機中)」に更新される。更に、対象レコードの「向き」が、現在位置のX座標及びY座標を始点とし、更新後の「目的地」のX座標及びY座標を終点とするベクトルの向き又は当該ベクトルの角度に更新される。
続いて、待ち行列更新部18は、対象エージェントの目的レジに関して、レジ情報記憶部22(図17)に記憶されている「待ち行列長」及び「最後尾位置」の値を更新する(S505)。具体的には、「待ち行列長」の値に対して1が加算される。また、「最後尾位置」のX座標及びY座標に、対象レコードの「現在位置」のX座標及びY座標が転記される。
一方、対象レコードの「状態」の値が「0」でない場合(S502でNo)、状態更新部17は、対象レコードの「状態」の値は「1」であるか、すなわち、対象エージェントは待ち行列で待機中であるか否かを判定する(S506)。対象レコードの「状態」の値が「1」である場合(S506でYes)、状態更新部17は、対象エージェントが対象エージェントの目的レジの待ち行列において、最後尾であるか否かを判定する(S507)。対象エージェントが、当該待ち行列において最後尾であるか否かは、例えば、対象エージェントの目的レジの待ち行列に含まれる各エージェントの現在位置の中で、対象エージェントの現在位置が最後尾であるか否かが判定されればよい。対象エージェントの目的レジの待ち行列に含まれるエージェントは、例えば、エージェント情報記憶部23(図14)における「目的レジ」の値が、対象レコードの「目的レジ」の値に一致するレコードによって特定される。また、特定された各エージェントの現在位置は、エージェント情報記憶部23(図14)における「現在位置」によって特定される。
対象エージェントが目的レジの待ち行列において最後尾である場合(S503でYes)、状態更新部17は、対象レコードの「現在位置」のX座標及びY座標を、レジ情報記憶部22(図17)において目的レジに対応するレコードの「最後尾位置」に転記する(S508)。
続いて、状態更新部17は、対象エージェントが目的地に到達したか否かを判定する(S509)。ステップS509における判定方法は、ステップS503と同様である。但し、待ち行列で待機中のエージェントの目的地は、目的レジの待機位置である。したがって、ステップS509の判定は、対象エージェントが目的レジの待機位置に到達したか否か、すなわち、レジ処理の順番が回ってきたか否かの判定を意味する。
対象エージェントが目的地に到達していない場合(S509でNo)、対象エージェントに関して、図21の処理は終了する。
対象エージェントが目的地に到達した場合(S509でYes)、状態更新部17は、対象エージェントに関してレジ処理の終了時期を算出する(S510)。具体的には、対象レコードの「買上点数」の値に、対象エージェントの目的レジに関してレジ情報記憶部22(図17)に記憶されている「処理速度」の値を乗じることにより、レジ処理の所要時間が算出される。当該所要時間を、サイクル時間で除した値を、現在のサイクル数に加算することにより、当該終了時期のサイクル数が算出される。算出された終了時期は、対象レコードの「処理終了時期」に記憶される。なお、現在のサイクル数は、例えば、変数tの値を、サイクル時間tcycleで除することにより算出可能である。
続いて、状態更新部17は、対象レコードの「状態」の値を「2(処理中)」に更新する(S511)。
一方、対象レコードの「状態」の値が「1」でない場合(S506でNo)、状態更新部17は、対象レコードの「状態」の値は「2」であるか、すなわち、対象エージェントはレジ処理中であるか否かを判定する(S512)。対象レコードの「状態」の値が「2」である場合(S512でYes)、状態更新部17は、対象エージェントのレジ処理は終了したか否かを判定する(S513)。具体的には、現在のサイクル数が、対象レコードの「処理終了時期」に記憶されているサイクル数以上であるか否かが判定される。
現在のサイクル数が、対象レコードの「処理終了時期」に記憶されているサイクル数未満である場合(S513でNo)、対象エージェントに関して、図21の処理は終了する。
現在のサイクル数が、対象レコードの「処理終了時期」に記憶されているサイクル数以上である場合(S513でYes)、待ち行列更新部18は、対象エージェントの目的レジに関して、レジ情報記憶部22(図17)に記憶されている「待ち行列長」の値から1を減算する(S514)。
続いて、情報出力部19は、対象エージェントに関する履歴情報を、対象エージェントのエージェントIDに対応付けてエージェント履歴記憶部26に記憶する(S515)。
図22は、エージェント履歴記憶部の構成例を示す図である。図22において、エージェント履歴記憶部26は、エージェントごとに、「エージェントID」、「出現時期」、及び「レジ通過時期」等を記憶する。「出現時期」は、エージェントがシミュレーション空間に出現した時期である。「レジ通過時期」は、エージェントに関してレジ処理が終了した時期である。「出現時期」及び「レジ通過時期」の双方共、シミュレーション開始時からの経過秒数によって表現される。
したがって、ステップS515では、対象エージェントに対応する新たなレコードがエージェント履歴記憶部26に生成され、当該レコードの「出現時期」に、対象レコードの「出現時期」の値が記憶される。また、当該レコードの「レジ通過時期」には、変数tの値が記憶される。
なお、エージェント履歴記憶部26が記憶する履歴情報は、例えば、出現からレジ通過までの所要時間の分布の検証等に用いることができる。
続いて、状態更新部17は、対象レコードを、エージェント情報記憶部23(図14)より削除する(S516)。その結果、対象エージェントは、シミュレーション空間から消滅する。
なお、図8のステップS107において、表示制御部11は、エージェント情報記憶部23に記憶されている情報に基づいて、シミュレーション空間の表示状態を更新する。すなわち、エージェント情報記憶部23に記憶されているレコードごとに、当該レコードの「現在位置」のX座標及びY座標の位置に、エージェントを表示させる。サイクルが繰り返されることで、ユーザからは、限定特性、評価特性、及び回避特性を有するエージェントが、いずれかのレジに向かって移動しているように見える。
以上で、シミュレーションに関する処理手順の説明は終了する。なお、上記では、設定情報記憶部24に設定できる出現数は1種類(図12の例では「400」)である例を示した。しかし、例えば、1時間ごと又は30分ごと等、時間の経過に対応させて出現数の設定が可能とされてもよい。この場合、変数tの値が、出現数が変化する時期になったタイミングで(例えば、1時間経過するごとに)、図11のステップS201において使用される、1時間あたりの出現数の値が、設定された値に変更されればよい。
また、エージェントの移動速度に関しても、エージェントごとに異なるようにしてもよい。この場合、図11のステップS205のエージェントの生成時において、例えば、乱数等を利用して、エージェントの移動速度が決定されてもよい。この際、シミュレーション対象の店舗の客層に応じて、移動速度の分布が変化するようにしてもよい。
更に、レジごと、かつ、シミュレーション開始時からの経過時間ごとに、レジ処理の処理速度が異なるようにしてもよい。レジの担当者の熟練度等によって、レジ処理の処理速度が異なる可能性が有るからである。この場合、レジ処理の処理速度は、レジ情報記憶部22に記憶されてもよい。図21のステップS510では、対象エージェントの目的レジ、及び変数tに対応する経過時間に対応する処理速度に基づいて、処理終了時期が算出されればよい。
続いて、上記において説明した処理手順によって実現されるシミュレーションの実行結果について示す。
シミュレーションの条件設定の一部は、以下の通りである。図23は、本実施の形態におけるシミュレーションの条件設定の一部を示す図である。
(A)に示されるように、シミュレーション時間は、10時間である。すなわち、(A)における「時刻」は、シミュレーション開始時からの1時間単位の経過時間である。したがって、(A)では、1時間ごとに出現数が変化することが示されている。なお、各時刻の出現数は、本願発明者による10時から19時までの観察結果に基づく。したがって、当該シミュレーションは、本願発明者によって観察された店舗について、10時から19時までの待ち行列に関するシミュレーションということになる。
また、出現位置は10箇所であり、各出現位置における出現割合は、(B)に示される通りである。
また、レジは10台であり、各レジの処理速度は、(C)に示される通りである。
また、買上点数は、平均が14.3、標準偏差が10.2のガンマ分布に従う。エージェントの視野角度は、左右に120度(合計240度)、視野距離は1000cmである。エージェントによるレジの評価傾向は、「1(待ち行列長重視)」固定とし、レジの評価式におけるw1の値は、0.75、w2の値は、0.25とする。
なお、シミュレーションの目的は、時間の経過に応じた待ち行列長の変化が、観測結果に近似していること、並びに図2に示される状況B、及び図3に示される状況Cの再現を確認することである。状況Cの再現確認の際には、中央付近のレジr4、r5、及びr6の稼動が停止される。レジの稼働の停止は、例えば、停止されるレジのレコードがレジ情報記憶部22に登録されないようにしてもよい。または、レジ情報記憶部22において、稼動中又は非稼動を示す項目を設け、非稼動のレジは、登録されていないものとして扱われてもよい。
図24は、第一のシミュレーション結果を示す図である。図24には、(A)、(B)、及び(C)の3つのグラフが示されている。各グラフの横軸は時間、縦軸は人数である。
(A)は、全てのレジの待ち行列長の合計を、時系列に示したものである。横軸における0〜9の数字は、図23の(A)の表の時刻に対応する。折れ線グラフは、シミュレーション結果、すなわち、レジ履歴記憶部25(図10)が記憶する各レジの待ち行列長を、行毎に合計した値である。なお、図24では、限定特性、評価特性、及び回避特性の全ての特性が有効とされている。
9個の白抜きの円(プロット)は、実際の観察結果である。(A)より明らかなように、折れ線グラフは、各プロットの付近を通っている。すなわち、シミュレーション結果は、観察結果に近似しているといえる。
(B)は、左右5台ずつの待ち行列長の平均を、時系列に示したものである。実線の折れ線は、右5台(レジr6〜r10)、破線の折れ線は、左5台(レジr1〜r5)の待ち行列の平均を示す。(B)の横軸の時間の尺度は、(A)と異なるが、(B)における二つの折れ線の違いをより明確に把握可能とするためである。
(B)に示されるように、右5台のレジの方が、左5台のレジよりも待ち行列が長くなる傾向に有るというシミュレーション結果が得られた。すなわち、状況Bの再現が確認されたといえる。なお、(B)のグラフに関しても、レジ履歴記憶部25に記憶された情報を用いて作成可能である。
(C)は、状況Cの再現確認のためのシミュレーション結果である。すなわち、(C)は、中央付近のレジr4、r5、及びr6が非稼動の状態で、右側のレジ4台、左側のレジ3台のそれぞれの待ち行列長の平均を、時系列に示したものである。したがって、(C)は、(A)及び(B)とは別に実行されたシミュレーション結果である。
(C)に示されるように、特に、シミュレーション開始時から2時間くらいまでの期間において、右側のレジの方が、左側のレジよりも待ち行列が長くなる傾向に有るというシミュレーション結果が得られた。すなわち、状況Cの再現が確認されたといえる。なお、(C)のグラフに関しても、レジ履歴記憶部25に記憶された情報を用いて作成可能である。
図25は、第二のシミュレーション結果を示す図である。図25は、限定特性、評価特性、及び回避特性のうち、評価特性及び回避特性が無効とされた場合のシミュレーション結果である。
評価特性を無効とするためには、例えば、図15のステップS305を実行せず、ステップS306において、候補レジ群の中からランダムに目的レジが選択されるようにすればよい。
また、回避特性を無効とするためには、図18のステップS404及びS405を実行しないようにすればよい。なお、図18のステップS407は、本質的には回避特性を実現するための処理ではなく、待ち行列における並び順を維持するための処理である。
図25において、(A)、(B)、及び(C)のグラフの意味は、図24と同様である。但し、シミュレーション結果の都合上、各グラフの縦軸の尺度は、図24と異なる。
(A)において、待ち行列長のミュレーション結果は、観測結果に対して大きなずれを有する。すなわち、シミュレーション結果において、待ち行列長は再現されていない。有効とされている限定特性によって、特定のレジにエージェントが集中し、待ち行列長が長くなってしまっているためであると考えられる。
(B)では、左右のレジの間に待ち行列の偏りは確認される。但し、左側のレジと右側のレジとの待ち行列長の差が現実離れしており、状況Bは再現されていないといえる。
(C)でも、左右のレジの間に待ち行列の偏りは確認される。但し、(B)と同様、左側のレジと右側のレジとの待ち行列長の差が現実離れしており、状況Cも再現されていないといえる。
図26は、第三のシミュレーション結果を示す図である。図26は、限定特性、評価特性、及び回避特性のうち、限定特性及び回避特性が無効とされた場合のシミュレーション結果である。
限定特性を無効とするためには、図15のステップS302において、常に、全てのレジを候補レジ群とすればよい。
図26において、(A)、(B)、及び(C)のグラフの意味は、図24と同様である。但し、シミュレーション結果の都合上、(B)及び(C)のグラフの縦軸の尺度は、図24と異なる。
(A)において、待ち行列長のシミュレーション結果は、観測結果に近似しているといえる。したがって、待ち行列長については、再現されているといえる。有効とされている評価特性により、各レジの待ち行列長は、ほぼ均等になるためであると考えられる。
(B)では、右側のレジの方が、左側のレジよりも待ち行列長が長くなるといった傾向は見られない。したがって、評価特性のみでは、右側のレジへの偏りは生じず、状況Bは再現されないといえる。ほぼ同時に出現するエージェントは、出現時に待ち行列の短いレジに集中するため、突発的な偏りは生じるが、その偏りは、いずれのレジでも生じるためであると考えられる。
(C)では、左右のレジの間に、待ち行列長の差はほとんど認められない。したがって、状況Cは再現されていないといえる。評価特性のみでは、各エージェントは、非稼動のレジを超えて移動するため、左右の間に差が生じないためであると考えられる。
図27は、第四のシミュレーション結果を示す図である。図27は、限定特性、評価特性、及び回避特性のうち、回避特性が無効とされた場合のシミュレーション結果である。図27において、(A)、(B)、及び(C)のグラフの意味は、図24と同様である。但し、シミュレーション結果の都合上、各グラフの縦軸の尺度は、図24と異なる。
(A)において、待ち行列長のミュレーション結果は、観測結果に対して大きなずれを有する。すなわち、待ち行列長は再現されていない。評価特性によって、各レジに均等に並び易くなるが、限定特性によって、レジの選択範囲が限定され、それ以降方向転換が行われず、選択範囲外のレジには並ばなくなってしまうためであると考えられる。
(B)において、左右のレジの待ち行列長の間には、定量的には乖離があるが、偏りが生じる状況、すなわち、状況Bは再現されているといえる。限定特性によって、レジの選択範囲が限定されることで、左右における待ち行列長の偏りが再現され、評価特性によって、特定のレジへ集中が避けられているためであると考えられる。
(C)において、左右のレジの待ち行列長の間には、定量的には乖離があるが、偏りが生じる状況、すなわち、状況Cは再現されているといえる。限定特性によって、レジの選択範囲が限定されることで、左右における待ち行列長の偏りが再現され、評価特性によって、特定のレジへ集中が避けられているためであると考えられる。
上記より、限定特性、評価特性、及び回避特性が揃うことにより、待ち行列長、状況B、及び状況Cの再現が可能になると考えられる。
上述したように、本実施の形態によれば、シミュレーション空間において顧客の役割を担うエージェントに、限定特性、評価特性、及び回避特性を持たせることにより、実際の観察結果に近似したシミュレーション結果を得ることができる。したがって、本実施の形態の予測装置10を用いることによって、実際の状況に近似した待ち行列長等を予測できる可能性が高いといえる。すなわち、本実施の形態によれば、複数のレジの待ち状況の予測精度を向上させることができるといえる。
また、複数存在する出現位置ごとに出現率を変化させることができるため、売り場特性をも考慮して、待ち行列長等の予測を行うこともできる。
但し、出現位置は、一つであってもよい。出現位置が一つの場合であっても、限定特定及び評価特性等によって、各レジの待ち行列長の偏りを再現可能であると考えられるからである。
なお、本実施の形態では、店舗におけるレジでの待ち行列をシミュレーションの対象とされた例を示したが、本実施の形態と同様の方法で、他の状況に関してシミュレーションが行われてもよい。例えば、複数の改札が並べられた駅における改札の混雑状況や、複数のゲートが並べられた施設における入場時、又は退場時の各ゲートの混雑状況等のシミュレーションに、本実施の形態と同様の方法が用いられてもよい。また、例えば、高速道路のインターチェンジにおいて、配列された複数の料金所の混雑状況のシミュレーションに本実施の形態と同様の方法が用いられてよい。
その他、移動体が複数箇所から出現し、複数の通過地点を通過するといった状況が生じうる施設に関して、本実施の形態が適用されてもよい。この場合、移動体は、上記の高速道路の例では、車両であるように、人に限られない。
なお、本実施の形態において、レジは、通過地点の一例である。移動体データは、エージェント又はエージェント情報記憶部23のレコードの一例である。出現処理部12は、生成部の一例である。候補レジ群特定部13は、特定部の一例である。目的レジ選択部14は、選択部の一例である。干渉回避部16は、変更部の一例である。状態更新部17は、第一の更新部の一例である。待ち行列更新部18は、第二の更新部の一例である。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
以上の説明に関し、更に以下の項を開示する。
(付記1)
シミュレーション空間において移動体の進行方向を示す方向情報と、前記シミュレーション空間における1以上の移動開始地点のうちのいずれかに関する座標値と、が付与された移動体データを所定のタイミングで生成し、
一定周期で、移動体データごとに、
当該移動体データの座標値が示す位置から当該移動体データの方向情報が示す方向において所定の範囲に含まれる1以上の通過地点を特定し、
特定された1以上の通過地点の中から、当該移動体データとの位置関係、及び当該通過地点の待ち行列長に基づいて、1つの通過地点を選択し、当該移動体データの方向情報を、選択された通過地点の方向を示す値に更新し、
当該移動体データの方向情報が示す方向に所定距離移動する場合に、他の移動体データと所定の位置関係を形成するかを判定し、
前記所定の位置関係を形成すると判定された場合に、当該移動動体データの方向情報を変更し、
当該移動体データの座標値を、当該移動体データの方向情報が示す方向に所定距離移動した後の座標値に更新する処理と、
複数の通過地点のうちのいずれかの通過地点の所定の範囲内にいずれかの移動体の座標値が含まれた場合に、当該通過地点の待ち行列長を増加させ、
各通過地点の通過時間に基づいて、各通過地点の待ち行列長を減少させる処理とをコンピュータに実行させる予測プログラム。
(付記2)
前記座標値を移動体に付与する処理は、複数の移動開始地点の中から一つの移動開始地点を、各移動開始地点に設定された値の比率に基づいて選択し、選択された移動開始地点の座標値を移動体データに付与する付記1記載の予測プログラム。
(付記3)
シミュレーション空間において移動体の進行方向を示す方向情報と、前記シミュレーション空間における1以上の移動開始地点のうちのいずれかに関する座標値と、が付与された移動体データを所定のタイミングで生成する生成部と、
一定周期で、移動体データごとに、
当該移動体データの座標値が示す位置から当該移動体データの方向情報が示す方向において所定の範囲に含まれる1以上の通過地点を特定する特定部と、
特定された1以上の通過地点の中から、当該移動体データとの位置関係、及び当該通過地点の待ち行列長に基づいて、1つの通過地点を選択し、当該移動体データの方向情報を、選択された通過地点の方向を示す値に更新する選択部と、
当該移動体データの方向情報が示す方向に所定距離移動する場合に、他の移動体データと所定の位置関係を形成するかを判定し、前記所定の位置関係を形成すると判定された場合に、当該移動動体データの方向情報を変更する変更部と、
当該移動体データの座標値を、当該移動体データの方向情報が示す方向に所定距離移動した後の座標値に更新する第一の更新部とを有し、
更に、
複数の通過地点のうちのいずれかの通過地点の所定の範囲内にいずれかの移動体の座標値が含まれた場合に、当該通過地点の待ち行列長を増加させ、各通過地点の通過時間に基づいて、各通過地点の待ち行列長を減少させる第二の更新部を有する予測装置。
(付記4)
前記生成部は、複数の移動開始地点の中から一つの移動開始地点を、各移動開始地点に設定された値の比率に基づいて選択し、選択された移動開始地点の座標値を移動体データに付与する付記3記載の予測装置。
(付記5)
シミュレーション空間において移動体の進行方向を示す方向情報と、前記シミュレーション空間における1以上の移動開始地点のうちのいずれかに関する座標値と、が付与された移動体データを所定のタイミングで生成し、
一定周期で、移動体データごとに、
当該移動体データの座標値が示す位置から当該移動体データの方向情報が示す方向において所定の範囲に含まれる1以上の通過地点を特定し、
特定された1以上の通過地点の中から、当該移動体データとの位置関係、及び当該通過地点の待ち行列長に基づいて、1つの通過地点を選択し、当該移動体データの方向情報を、選択された通過地点の方向を示す値に更新し、
当該移動体データの方向情報が示す方向に所定距離移動する場合に、他の移動体データと所定の位置関係を形成するかを判定し、
前記所定の位置関係を形成すると判定された場合に、当該移動動体データの方向情報を変更し、
当該移動体データの座標値を、当該移動体データの方向情報が示す方向に所定距離移動した後の座標値に更新する処理と、
複数の通過地点のうちのいずれかの通過地点の所定の範囲内にいずれかの移動体の座標値が含まれた場合に、当該通過地点の待ち行列長を増加させ、
各通過地点の通過時間に基づいて、各通過地点の待ち行列長を減少させる処理とをコンピュータが実行する予測方法。
(付記6)
前記座標値を移動体に付与する処理は、複数の移動開始地点の中から一つの移動開始地点を、各移動開始地点に設定された値の比率に基づいて選択し、選択された移動開始地点の座標値を移動体データに付与する付記5記載の予測方法。