(57)【特許請求の範囲】
【請求項１】
領域に存在する対象物の動きを模擬する複数の模擬装置に接続される分散処理装置であって、
複数の前記模擬装置に対し、所定領域が分割された小領域を少なくとも１つずつ割り当てる割り当て部と、
前記割り当て部により前記小領域が割り当てられた前記模擬装置の各々から前記対象物の数を取得する取得部と、
前記取得部により取得された前記対象物の数から、前記模擬装置間で生じた前記対象物の数のばらつきを示す統計量を算出する算出部と、
前記算出部により算出された前記統計量が所定範囲外か否かを判定する判定部と、
前記判定部により前記統計量が所定範囲外と判定された場合に、各々の前記模擬装置により動きが模擬される前記対象物の数が特定範囲内になるように前記所定領域を分割する分割部と
を有することを特徴とする分散処理装置。
【請求項２】
前記取得部は、前記対象物の数を取得する取得時間が経過するたびに前記対象物の数を取得することを特徴とする請求項１に記載の分散処理装置。
【請求項３】
前記取得部は、前記算出部により算出された前記統計量に応じて、前記取得時間を変えることを特徴とする請求項２に記載の分散処理装置。
【請求項４】
前記判定部は、前記算出部により算出された前記統計量に応じて、前記所定範囲を変えることを特徴とする請求項１から請求項３のいずれか１項に記載の分散処理装置。
【請求項５】
前記所定領域は、ネットワークで接続されたノードにより構成される領域であり、前記小領域は、前記ネットワークの部分ネットワークであり、前記対象物は、前記部分ネットワーク内のノード間に存在することを特徴とする請求項１から請求項４のいずれか１項に記載の分散処理装置。
【請求項６】
前記ノードは交差点であり、前記ネットワークは前記交差点を接続する道路であり、前記対象物は車両であることを特徴とする請求項５に記載の分散処理装置。
【請求項７】
領域に存在する対象物の動きを模擬する複数の模擬装置に接続される分散処理装置の分散処理方法であって、
複数の前記模擬装置に対し、所定領域が分割された小領域を少なくとも１つずつ割り当てる割り当てステップと、
前記割り当てステップにより前記小領域が割り当てられた前記模擬装置の各々から前記対象物の数を取得する取得ステップと、
前記取得ステップにより取得された前記対象物の数から、前記模擬装置間で生じた前記対象物の数のばらつきを示す統計量を算出する算出ステップと、
前記算出ステップにより算出された前記統計量が所定範囲外か否かを判定する判定ステップと、
前記判定ステップにより前記統計量が所定範囲外と判定された場合に、各々の前記模擬装置により動きが模擬される前記対象物の数が特定範囲内になるように前記所定領域を分割する分割ステップと、
を有することを特徴とする分散処理方法。
【請求項８】
領域に存在する対象物の動きを模擬する複数の模擬装置に接続される分散処理装置のコンピュータに、
複数の前記模擬装置に対し、所定領域が分割された小領域を少なくとも１つずつ割り当てる割り当てステップ、
前記割り当てステップにより前記小領域が割り当てられた前記模擬装置の各々から前記対象物の数を取得する取得ステップ、
前記取得ステップにより取得された前記対象物の数から、前記模擬装置間で生じた前記対象物の数のばらつきを示す統計量を算出する算出ステップ、
前記算出ステップにより算出された前記統計量が所定範囲外か否かを判定する判定ステップ、
前記判定ステップにより前記統計量が所定範囲外と判定された場合に、各々の前記模擬装置により動きが模擬される前記対象物の数が特定範囲内になるように前記所定領域を分割する分割ステップ、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理装置、分散処理方法、及びプログラムに関する。
【背景技術】
【０００２】
交通渋滞などの複雑な事象をシミュレーションする技術として、マルチエージェントシミュレーション（以下、「ＭＡＳ」という）が知られている。ＭＡＳでは、行動規範を持つエージェントを相互作用させるシミュレーションが行われる。
大規模なＭＡＳは、処理量が非常に大きいため、汎用的な計算機が処理を行うことは困難である。そこで、大規模なＭＡＳの処理を行うためにスーパーコンピュータが用いられることがある（例えば、非特許文献１参照）。
【０００３】
こうした背景から、ＭＡＳの処理を並列分散処理で行う技術が提案されている。並列分散処理では、分散された処理装置が並列して処理を行うとともに、同期処理が行われるため、各々の処理装置の処理時間が均等であることが好ましい。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ＩＢＭプロフェッショナル論文  Ｘ１０言語を用いた超並列大規模交通流シミュレーション。PROVISION.2012,no.72,p.74-80.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の並列分散処理では、エージェントの相互作用がなされていくと、処理装置ごとの処理負荷が偏っていき、その結果処理時間が長くなるという問題点があった。
【０００６】
本発明は、このような事情に鑑みてなされたもので、その目的は、並列分散処理を高速に行うことが可能な分散処理装置、分散処理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上述した課題を解決するために、本発明の一態様は、領域に存在する対象物の動きを模擬する複数の模擬装置に接続される分散処理装置であって、複数の前記模擬装置に対し、所定領域が分割された小領域を少なくとも１つずつ割り当てる割り当て部と、前記割り当て部により前記小領域が割り当てられた前記模擬装置の各々から前記対象物の数を取得する取得部と、前記取得部により取得された前記対象物の数から、前記模擬装置間で生じた前記対象物の数のばらつきを示す統計量を算出する算出部と、前記算出部により算出された前記統計量が所定範囲外か否かを判定する判定部と、前記判定部により前記統計量が所定範囲外と判定された場合に、各々の前記模擬装置により動きが模擬される前記対象物の数が特定範囲内になるように前記所定領域を分割する分割部とを有することを特徴とする。
【０００８】
また、本発明の一態様は、上記の分散処理装置において、前記取得部は、前記対象物の数を取得する取得時間が経過するたびに前記対象物の数を取得することを特徴とする。
【０００９】
また、本発明の一態様は、上記の分散処理装置において、前記取得部は、前記算出部により算出された前記統計量に応じて、前記取得時間を変えることを特徴とする。
【００１０】
また、本発明の一態様は、上記の分散処理装置において、前記判定部は、前記算出部により算出された前記統計量に応じて、前記所定範囲を変えることを特徴とする。
【００１１】
また、本発明の一態様は、上記の分散処理装置において、前記所定領域は、ネットワークで接続されたノードにより構成される領域であり、前記小領域は、前記ネットワークの部分ネットワークであり、前記対象物は、前記部分ネットワーク内のノード間に存在することを特徴とする。
【００１２】
また、本発明の一態様は、上記の分散処理装置において、前記ノードは交差点であり、前記ネットワークは前記交差点を接続する道路であり、前記対象物は車両であることを特徴とする。
【００１３】
上述した課題を解決するために、本発明の一態様は、領域に存在する対象物の動きを模擬する複数の模擬装置に接続される分散処理装置の分散処理方法であって、複数の前記模擬装置に対し、所定領域が分割された小領域を少なくとも１つずつ割り当てる割り当てステップと、前記割り当てステップにより前記小領域が割り当てられた前記模擬装置の各々から前記対象物の数を取得する取得ステップと、前記取得ステップにより取得された前記対象物の数から、前記模擬装置間で生じた前記対象物の数のばらつきを示す統計量を算出する算出ステップと、前記算出ステップにより算出された前記統計量が所定範囲外か否かを判定する判定ステップと、前記判定ステップにより前記統計量が所定範囲外と判定された場合に、各々の前記模擬装置により動きが模擬される前記対象物の数が特定範囲内になるように前記所定領域を分割する分割ステップとを有することを特徴とする。
【００１４】
上述した課題を解決するために、本発明の一態様は、領域に存在する対象物の動きを模擬する複数の模擬装置に接続される分散処理装置のコンピュータに、複数の前記模擬装置に対し、所定領域が分割された小領域を少なくとも１つずつ割り当てる割り当てステップ、前記割り当てステップにより前記小領域が割り当てられた前記模擬装置の各々から前記対象物の数を取得する取得ステップ、前記取得ステップにより取得された前記対象物の数から、前記模擬装置間で生じた前記対象物の数のばらつきを示す統計量を算出する算出ステップ、前記算出ステップにより算出された前記統計量が所定範囲外か否かを判定する判定ステップ、前記判定ステップにより前記統計量が所定範囲外と判定された場合に、各々の前記模擬装置により動きが模擬される前記対象物の数が特定範囲内になるように前記所定領域を分割する分割ステップ、を実行させるためのプログラムである。
【発明の効果】
【００１５】
以上説明したように、この発明によれば、並列分散処理を高速に行うことが可能な分散処理装置、分散処理方法、及びプログラムを提供できる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る分散処理システムを含む概略構成を示す図である。
【図２】入力データの一例を示す図である。
【図３】模擬データの一例を示す図である。
【図４】分散処理装置の概略構成を示す図である。
【図５】所定領域を示す地図データの一例を示す図である。
【図６】車両数データを示す図である。
【図７】並列分散処理の開始時に行われる処理手順を示したフローチャートである。
【図８】分割処理の処理手順を示したフローチャートである。
【図９】ノードのリストを示す図である。
【図１０】小領域リストを示す図である。
【図１１】並列分散処理の実行中に行われる処理手順を示したフローチャートである。
【図１２】タイマ設定処理の処理手順を示したフローチャートである。
【発明を実施するための形態】
【００１７】
図１は、本発明の実施形態に係る分散処理システム１００を含む概略構成を示す図である。本実施形態に係る分散処理システム１００は、マルチエージェントシミュレーションによって交通シミュレーションを行うシステムである。本実施形態において、エージェントは、車両、信号機等である。
【００１８】
分散処理システム１００は、分散処理装置２００、ｎ個の模擬装置３００−１、３００−２、３００−３、…３００−ｎで構成される。以下の説明において、模擬装置３００−１、３００−２、３００−３、…３００−ｎに共通の説明をする場合には、単に模擬装置３００と表現する。
【００１９】
図１に示されるように、分散処理装置２００は、複数の模擬装置３００に接続される。模擬装置３００は、領域が割り当てられると、その領域に存在する対象物の動きを模擬する。本実施形態における対象物は、エージェントの１つである車両である。従って模擬装置３００は、車両の動きを模擬する。
【００２０】
分散処理装置２００には、後述する入力データが入力される。分散処理装置２００は、入力データから道路や車両に関する地図データ（ネットワークデータ）を作成し、各々の模擬装置３００に処理を割り当てる。具体的に、分散処理装置２００は、地図データに示される所定領域（例えば、東京２３区等）を、小領域に分割する。そして、分散処理装置２００は、複数の模擬装置３００に対し、所定領域が分割された小領域を１つずつ割り当てる。これにより、複数の模擬装置３００による並列分散処理が開始される。並列分散処理において、模擬装置３００は、分散処理装置２００により割り当てられた小領域における車両の動きを模擬する。
【００２１】
各々の模擬装置３００は、模擬が終了すると、分散処理装置２００に模擬が終了したことを出力する。全ての模擬装置３００から模擬が終了したことが出力されると、分散処理装置２００は、模擬が終了したと判定する。そして、分散処理装置２００は、割り当てた小領域における模擬結果を模擬装置３００から取得し、後述する模擬データを出力する。
【００２２】
本実施形態において、模擬装置３００は、１つのＣＰＵ（Central Processing Unit）と、ＲＯＭ（Read Only Memory）と、ＲＡＭ（Random Access Memory）とを含む。また、ＣＰＵはシングルコアで、同時に実行可能なスレッドは１つである。さらに、各々の模擬装置３００に搭載されているＣＰＵは同一スペックである。
【００２３】
ここで以下の説明で用いられる用語について説明する。まず「ノード」は、交差点と行き止まりの道路の先端を示す。このうち交差点は、道路交通法第２条第１項第５号での定義と同じく、十字路、丁字路その他二以上の道路が交わる場合における当該二以上の道路（歩道と車道の区別のある道路においては、車道）の交わる部分をいう。「エッジ」は、道路を示す。「次数」は、ノードのエッジ数である。例えば、ノードが十字路の場合、ノードのエッジ数は、「４」となる。「プローブ」は車両を示す。シミュレーション時間とは、模擬装置３００が車両の動きを模擬する時間帯を示す。例えば、午前９時から午前１０時までなど、ある地域における午前９時から午前１０時までの車両の動きを模擬する時間帯がシミュレーション時間である。これらを踏まえ、まず入力データについて説明する。
【００２４】
図２は、分散処理装置２００に入力される入力データの一例を示す図である。入力データは、道路形状データ、道路属性データ、交差点位置データ、交差点属性データ、道路ネットワークデータ、道路センサ情報データ、プローブの行先情報データ、密度データ、信号機データ、及び交通量データで構成される。
【００２５】
このうち、道路形状データは、道路リンク（エッジ）とノードとの対応情報である。具体的に道路形状データは、２つのノード間を結ぶエッジにおいて、このエッジと２つのノードとの対応を示すデータである。道路属性データは、右左折後のノードの対応情報である。具体的に道路属性データは、ノードと、このノードで右左折した後に向かうノードとの対応を示すデータである。
【００２６】
交差点位置データは、交差点の緯度経度を示すデータである。交差点属性データは、交差点と信号機の対応情報である。具体的に交差点位置データは、交差点の信号の有無を示すデータである。道路ネットワークデータは、道路の緯度経度情報である。本実施形態における道路は、複数の点（緯度、経度）を結ぶことで表現される。道路ネットワークデータは、点の緯度経度情報を示すデータである。
【００２７】
道路センサ情報データは、道路のセンサ（例えば、光ビーコン等）の位置を示すデータである。プローブの行先情報データは、曜日、時間、道路ごとの遷移確率を示すデータである。遷移確率とは、例えば日曜の午前９時０分に、あるＴ字路において、車両が左に曲がる確率と右に曲がる確率である。
密度データは、曜日、時間ごとの全道路の交通量（車両数）を示すデータである。信号機データは、道路ごとの信号機の情報である。具体的に信号機データは、ある道路の信号機の青時間の長さや、点灯順番等を示すデータである。交通量情報データは、時間ごとの交通量の情報である。具体的に交通量情報データは、道路ごとの１時間当たりの交通量、車両の平均速度、制限速度、及び車両台数等が２４時間分含まれるデータである。
【００２８】
図３は、分散処理装置２００が出力する模擬データの一例を示す図である。分散処理装置２００は、模擬装置３００の各々から模擬結果を取得し、上記模擬データを出力する。模擬データは、プローブデータ、信号機データ、グラフデータ、及び渋滞情報データで構成される。
【００２９】
プローブデータは、シミュレーション時間におけるプローブの動作情報である。信号機データは、シミュレーション時間における信号機の動作情報である。グラフデータは、シミュレーション時間における待ち時間と平均速度のグラフデータである。待ち時間とは、車両が赤信号で停止した時間である。平均速度とは、全車両の平均速度である。渋滞情報データは、シミュレーション時間における渋滞個所の情報可視化データである。
【００３０】
以上説明した模擬データにより、分散処理装置２００は、シミュレーション時間における車両の動作、信号機の動作、車両の待ち時間と平均速度、及び渋滞個所を例えばモニタ等に表示したりすることができる。
【００３１】
図４は、分散処理装置２００の概略構成を示す図である。分散処理装置２００は、データ入力部２０１、地図データ作成部２０２、分割部２０３、割り当て部２０４、車両数取得部２０５、標準偏差算出部２０６、判定部２０７、及び模擬データ出力部２０８で構成される。
データ入力部２０１は、図２で示した入力データを取得する。入力データは、例えば他の端末からネットワークを介して入力される。データ入力部２０１は、入力データを地図データ作成部２０２に出力する。地図データ作成部２０２は、入力データから地図データを作成する。地図データ作成部２０２は、作成した地図データを分割部２０３に出力する。地図データについては後述する。
【００３２】
分割部２０３は、地図データに示される所定領域を、小領域に分割する。このとき、分割部２０３は、模擬装置３００により動きが模擬される車両の数が特定範囲内になるように所定領域を分割する。分割部２０３は、分割した小領域を割り当て部２０４に出力する。本実施形態では、特定範囲を、車両総数／小領域数の±５％以内としている。例えば所定領域内の車両総数が１０００台で、小領域総数が１０個の場合、分割部２０３は、各々の小領域に含まれる車両の数が９５台から１０５台となるように所定領域を分割する。
【００３３】
本実施形態において、車両の数が特定範囲内になるように所定領域を分割する理由は、車両の数に模擬装置３００の処理時間がほぼ正比例するためである。よって、車両の数が特定範囲内になるように所定領域を分割することで、模擬装置３００ごとの処理負荷の偏りを抑制できるため、並列分散処理を高速に行うことが可能となる。
割り当て部２０４は、複数の模擬装置３００に対し、所定領域が分割された小領域を１つずつ割り当てる。小領域を割り当てられた各模擬装置３００は、割り当てられた小領域内の車両の動きを模擬する。
【００３４】
車両数取得部２０５は、小領域が割り当てられた模擬装置３００の各々から車両の数を取得する。交通シミュレーションでは、車両や信号機等の相互作用により、小領域に存在する車両の数は増減する。そこで、車両数取得部２０５は、車両の数を取得する取得時間が経過するたびに車両の数を取得する。例えば、取得時間が５分であれば、車両数取得部２０５は、５分ごとに車両の数を取得する。なお、後述するように、車両数取得部２０５は、取得時間を変えることが可能である。
【００３５】
本実施形態における模擬装置３００の数はｎ個であるため、車両数取得部２０５は、ｎ個の車両の数Ｘ１、…、Ｘｎを取得する。車両数取得部２０５は、取得したｎ個の車両の数Ｘ１、…、Ｘｎを標準偏差算出部２０６に出力する。
標準偏差算出部２０６は、車両の数Ｘ１、…、Ｘｎから、模擬装置３００間で生じたばらつきを示す統計量を算出する。本実施形態では、ばらつきを示す統計量として標準偏差を用いている。標準偏差算出部２０６は、ｎ個の車両数Ｘ１、…、Ｘｎから、標準偏差ｓを算出する。標準偏差算出部２０６は、車両数Ｘ１、…、Ｘｎの平均値をＸとしたとき、以下の式により標準偏差ｓを算出する。
ｓ＝（（（Ｘ１−Ｘ）２＋（Ｘ２−Ｘ）２＋…（Ｘｎ−Ｘ）２）／ｎ）１／２
【００３６】
標準偏差算出部２０６は、算出した標準偏差ｓを、車両数取得部２０５、及び判定部２０７に出力する。判定部２０７は、算出された標準偏差ｓが所定範囲外か否かを判定する。本実施形態では、閾値θを用いて、所定範囲を区間[０、θ]としている。従って、判定部２０７は、標準偏差ｓが、０≦ｓ≦θの場合には、所定範囲内と判定し、θ＜ｓの場合には、所定範囲外と判定する。判定部２０７は、標準偏差ｓが所定範囲外と判定した場合に、標準偏差ｓが所定範囲外と判定したことを分割部２０３に出力する。
【００３７】
分割部２０３は、標準偏差ｓが所定範囲外と判定したことが判定部２０７から出力されると、分割部２０３は全ての模擬装置３００に対して模擬を停止させる。そして、分割部２０３は各々の模擬装置３００により動きが模擬される車両の数が上述した特定範囲内になるように所定領域を分割する。割り当て部２０４は、複数の模擬装置３００に対し、所定領域が分割された小領域を１つずつ割り当てる。小領域を割り当てられた各模擬装置３００は、割り当てられた小領域内の車両の動きの模擬を再開する。
【００３８】
分散処理装置２００は、模擬が終了するまで、繰り返し車両の数を取得し、標準偏差を算出し、標準偏差に応じて分割を行う。そして、各々の模擬装置３００が模擬を終了すると、模擬データ出力部２０８は各々の模擬装置３００から模擬結果を取得し、上述した模擬データを出力する。
【００３９】
図５は、所定領域を示す地図データの一例を示す図である。図５に示される地図データには、７つのノード（交差点）Ｎ−１、…、Ｎ−７、及びノード間に存在する車両数が示されている。図５に示されるように、所定領域は、ネットワークで接続されたノードにより構成される領域である。なお、ネットワークは道路に対応するが、隣接する２つのノードを接続する道路をエッジと表現することがある。
また、図５に示される全ての道路は、対面走行可能である。従って、車両数は、一方のノードから他方のノードに向かう車両と、他方のノードから一方のノードに向かう車両の数が示される。例えば、ノードＮ−１からノードＮ−２に向かう車両の数は１であり、ノードＮ−２からノードＮ−１に向かう車両の数は３である。
【００４０】
図６は、地図データに示したノード間に存在する車両の数を示す車両数データを示す図である。車両数データは、始点ノードから終点ノードへ向かっている車両の数を示すデータである。上述したように、例えばノードＮ−１からノードＮ−２に向かう車両の数は１であるので、始点ノードをノードＮ−１とし、終点ノードをＮ−２とした車両数データは１である。
【００４１】
車両数データは、分割部２０３が小領域に分割する際に参照される。例えば、所定領域が図５に示される地図データで示され、かつ小領域を２つとする場合、分割部２０３は、車両数データを参照して、図５の分割線２１０に示されるように、小領域Ａ、Ｂに所定領域を分割する。すなわち、ネットワークを２つの部分ネットワークに分割する。小領域Ａに存在する車両の数は１１であり、小領域Ｂに存在する車両の数も１１である。小領域Ａ、Ｂを割り当てられた２つの模擬装置３００は、いずれも１１台の車両の動きを模擬することとなる。従って、２つの模擬装置３００の処理時間は、ほぼ同じ時間となるので、並列分散処理を高速に行うことが可能となる。
【００４２】
図７は、分散処理装置２００において並列分散処理の開始時に行われる処理手順を示したフローチャートである。データ入力部２０１は、図２で示した入力データを取得する（ステップＳ１０１）。地図データ作成部２０２は、入力データから地図データを作成する（ステップＳ１０２）。分割部２０３は、地図データに示される所定領域を、小領域に分割する分割処理を行う（ステップＳ１０３）。
【００４３】
割り当て部２０４は、複数の模擬装置３００に対し、所定領域が分割された小領域を１つずつ割り当てる（ステップＳ１０４）。これにより、複数の模擬装置３００による並列分散処理が開始される（ステップＳ１０５）。次いで、車両数取得部２０５は、初期タイマ設定を行い（ステップＳ１０６）、処理を終了する。このステップＳ１０６において、車両数取得部２０５は車両の数を取得する取得時間を標準タイマ値の５分に設定する。
【００４４】
図８は、ステップＳ１０３の分割処理の処理手順を示したフローチャートである。分割部２０３は、まずノードごとにエッジ数を算出する（ステップＳ２０１）。次いで、分割部２０３は、エッジ数の小さい順にノードをソートしてリスト化する（ステップＳ２０２）。図９は、ノードのリストを示す図である。ノードＩＤは、ノードを一意に識別する識別子である。エッジ数は、ノードＩＤに対応するノードのエッジ数を示す。図９の場合、例えばノードＩＤが１、５、７、１１のノードのエッジ数は１である。
【００４５】
次いで、分割部２０３は、エッジ数が最小のノードを基準にノードを集約してクラスタを作成する（ステップＳ２０３）。クラスタとは、小領域を作成する過程で生じる領域である。具体的に分割部２０３は、例えば図９に示されるリストの場合、ノードＩＤが１に対応するノードに隣接するノードを集約したクラスタを作成する。なお、隣接するノードが、車両の数が特定範囲内にならないようなノードのみの場合には、隣接しないノードを集約してクラスタを作成してもよい。
【００４６】
分割部２０３は、クラスタに集約されたノードをリストから削除する（ステップＳ２０４）。分割部２０３は、全ノードがクラスタに集約されたか否かを判定する（ステップＳ２０５）。ここで分割部２０３は、リストにノードが残っている場合には否定判定し、リストにノードが残っていない場合には肯定判定する。
分割部２０３は、全ノードがクラスタに集約されていない場合には（ステップＳ２０５でＮＯ）、上記ステップＳ２０２に戻り、リストに残っているノードをエッジ数の小さい順にソートしてリスト化する（ステップＳ２０２）。そして、再びステップＳ２０３以降の処理を行う。
【００４７】
分割部２０３は、全ノードがいずれかのクラスタに集約された場合には（ステップＳ２０５でＹＥＳ）、１つのクラスタを１つの小領域とした小領域リストを作成し（ステップＳ２０６）、処理を終了する。図１０は、小領域リストを示す図である。小領域リストは、ノードＩＤと、小領域を識別する識別子である小領域ＩＤとで構成される。このように、小領域リストは、ノードＩＤに対応するノードが、いずれの小領域に属するかを示すリストである。図１０の場合、例えばノードＩＤが２と５に対応するノードは、小領域ＩＤが１の小領域に属することが示されている。
【００４８】
図１１は、分散処理装置２００において並列分散処理の実行中に行われる処理手順を示したフローチャートである。車両数取得部２０５は、取得時間が経過したか否かを判定する（ステップＳ３０１）。すなわち車両数取得部２０５は、取得時間としてセットしたタイマがタイムアウトしたか否かを判定する。
【００４９】
取得時間が経過した場合には（ステップＳ３０１でＹＥＳ）、車両数取得部２０５は、ｎ個の車両の数Ｘ１、…、Ｘｎを取得する（ステップＳ３０２）。次いで、標準偏差算出部２０６は、ｎ個の車両数Ｘ１、…、Ｘｎから、標準偏差ｓを算出する（ステップＳ３０３）。判定部２０７は、算出された標準偏差ｓが所定範囲外（θ＜ｓ）か否かを判定する（ステップＳ３０４）。
【００５０】
標準偏差ｓが所定範囲外の場合には（ステップＳ３０４でＹＥＳ）、分割部２０３は、上述した分割処理を行い（ステップＳ３０５）、ステップＳ３０６に進む。一方、標準偏差ｓが所定範囲外ではない場合には（ステップＳ３０４でＮＯ）、ステップＳ３０６に進む。
次いで、車両数取得部２０５は、取得時間を設定するタイマ設定処理を行い（ステップＳ３０６）、ステップＳ３０１に戻る。
ステップＳ３０１において、取得時間が経過していない場合には（ステップＳ３０１でＮＯ）、模擬データ出力部２０８は、模擬が終了したか否かを判定する（ステップＳ３０７）。
【００５１】
模擬が終了していない場合には（ステップＳ３０７でＮＯ）、ステップＳ３０１に戻る。一方、模擬が終了した場合には（ステップＳ３０７でＹＥＳ）、模擬データ出力部２０８は、各々の模擬装置３００から模擬結果を取得し（ステップＳ３０８）、模擬データを出力して（ステップＳ３０９）、本処理を終了する。
【００５２】
図１２は、ステップＳ３０６のタイマ設定処理の処理手順を示したフローチャートである。車両数取得部２０５は、区間[０、＋∞）を３つに分割した区間Ａ、Ｂ、Ｃと標準偏差ｓとを比較してタイマ値を設定する。３つに分割された区間は、Ａ＝[０、θ／３）、Ｂ＝[θ／３、２θ／３）、及びＣ＝[２θ／３、＋∞）である。区間Ａ、Ｂ、Ｃの順に、ばらつきが大きくなる。車両数取得部２０５は、並列分散処理を高速に行うため、ばらつきが大きい場合には、標準タイマ値と比較して取得時間を短くする。一方、ばらつきが小さい場合には、車両数取得部２０５は、標準タイマ値と比較して取得時間を長くする。
【００５３】
車両数取得部２０５は、θ／３≦ｓ＜２θ／３か否かを判定する（ステップＳ３０１）。すなわち、標準偏差ｓが区間Ｂに存在するか否かを判定する。標準偏差ｓが区間Ｂに存在する場合には（ステップＳ３０１でＹＥＳ）、車両数取得部２０５は、上述した標準タイマ値を設定し（ステップＳ３０２）、処理を終了する。
標準偏差ｓが区間Ｂに存在しない場合には（ステップＳ３０１でＮＯ）、車両数取得部２０５は、２θ／３≦ｓか否かを判定する（ステップＳ３０３）。すなわち、標準偏差ｓが区間Ｃに存在するか否かを判定する。標準偏差ｓが区間Ｃに存在する場合には（ステップＳ３０３でＹＥＳ）、車両数取得部２０５は、短タイマ値を設定し（ステップＳ３０４）、処理を終了する。短タイマ値とは、標準タイマ値より短いタイマ値であり、本実施形態では２分としている。
標準偏差ｓが区間Ｃに存在しない場合には（ステップＳ３０１でＮＯ）、標準偏差ｓは区間Ａに存在することとなるため、車両数取得部２０５は、長タイマ値を設定し（ステップＳ３０５）、処理を終了する。長タイマ値とは、標準タイマ値より長いタイマ値であり、本実施形態では８分としている。
【００５４】
タイマ設定処理に示されるように、本実施形態では、標準偏差算出部２０６により算出された標準偏差ｓに応じて、取得時間を変える。一般的に、標準偏差ｓが区間Ｃに存在する場合には、区間Ｃに存在しない場合と比較して、標準偏差ｓが閾値θを短時間で超える可能性が高い。一方、標準偏差ｓが区間Ａに存在する場合には、区間Ａに存在しない場合と比較して、標準偏差ｓが閾値θを超えるまでには長時間を要する可能性が高い。
従って、標準偏差ｓが区間Ｃに存在する場合には短タイマ値を設定することで、模擬装置３００間のばらつきを抑制することができるため、並列分散処理を高速に行うことが可能となる。一方、標準偏差ｓが区間Ａに存在する場合には長タイマ値を設定することで、車両の数を取得するための負荷が減少するため、並列分散処理を高速に行うことが可能となる。
【００５５】
タイマ設定処理では、標準偏差ｓに応じて、取得時間を変えているが、標準偏差ｓに応じて、所定範囲である区間[０、θ]を変えるようにしてもよい。例えば、標準偏差ｓが区間Ｃに連続して数回存在した場合、すなわち、標準偏差ｓが閾値θを超えないが高止まり状態となった場合には、閾値φ（＜θ）を用いて所定範囲を区間[０、φ]に変えるようにしてもよい。あるいは、所定範囲を変えることなく、所定領域を分割するようにしてもよい。高止まり状態は、比較的大きな偏りが生じている状態のため、そのような状態が継続すると模擬装置の処理時間に比較的大きな差が生じる可能性が高い。そこで、所定範囲を変えたり、所定領域を分割することで、並列分散処理を高速に行うことが可能となる。
【００５６】
以上説明したように、本実施形態に係る分散処理装置は、領域に存在する対象物（例えば、車両等）の動きを模擬する複数の模擬装置（例えば、模擬装置３００−１、３００−２、３００−３、…３００−ｎ）に接続される分散処理装置（例えば、分散処理装置２００等）であって、複数の前記模擬装置に対し、所定領域（例えば、図５に示される所定領域等）が分割された小領域（例えば、図５に示される小領域Ａ、Ｂ等）を少なくとも１つずつ割り当てる割り当て部（例えば、割り当て部２０４等）と、前記割り当て部により前記小領域が割り当てられた前記模擬装置の各々から前記対象物の数を取得する取得部（例えば、車両数取得部２０５等）と、前記取得部により取得された前記対象物の数から、前記模擬装置間で生じた前記対象物の数のばらつきを示す統計量（例えば、標準偏差等）を算出する算出部（例えば、標準偏差算出部２０６等）と、前記算出部により算出された前記統計量が所定範囲外か否かを判定する判定部（例えば、判定部２０７等）と、前記判定部により前記統計量が所定範囲外と判定された場合に、各々の前記模擬装置により動きが模擬される前記対象物の数が特定範囲内になるように前記所定領域を分割する分割部（例えば、分割部２０３等）とを有することを特徴とする。
【００５７】
この構成によれば、模擬装置間で生じた対象物の数のばらつきが所定範囲外と判定された場合に、対象物の数が特定範囲内になるように所定領域を分割することで、模擬装置間で生じる対象物の数のばらつきを抑制させることができるので、並列分散処理を高速に行うことが可能となる。
【００５８】
本実施形態における模擬装置３００は、シングルコアで同時に実行可能なスレッドは１つであったが、これに限るものではない。割り当て部２０４は、模擬装置が同時に実行可能なスレッド数と同じ数の小領域を割り当てる。これは、車両の動きを模擬する処理がスレッド単位で行われるためである。１つのＣＰＵは少なくとも１つのスレッドを実行可能であることから、割り当て部２０４は、小領域を少なくとも１つずつ模擬装置に割り当てる。例えば、コアが４つで、各々のコアが同時に２つのスレッドを実行可能な模擬装置の場合、割り当て部２０４は、１つの模擬装置に対し８つの小領域を割り当てる。
【００５９】
本実施形態における対象物は車両であったが、これに限るものではない。対象物の他の例として、人、航空機、貨物、及びウイルス等が挙げられる。例えば、対象物を人とした場合、本実施形態における道路を人が通行可能な道路とし、車両を人とすることで本実施形態を適用できる。こうして人の動きを模擬することで、人の渋滞等が予測可能である。従って、例えばより効率よく非難可能な避難経路を作成することができる。
航空機は、飛行可能な空域が定められているため、対象物を航空機とした場合、本実施形態における道路を空域とし、車両を航空機とすることで本実施形態を適用できる。対象物を貨物とした場合、本実施形態における道路を流通経路とし、車両を貨物とすることで本実施形態を適用できる。対象物をウイルスとした場合、本実施形態における道路を人とし、車両をウイルスとすることで本実施形態を適用できる。こうしてウイルスの動きを模擬することで得られた模擬結果は、ウイルスの予測感染経路を示している。従って、ウイルスの動きを模擬することで得られた模擬結果は、感染を未然に防ぐきっかけを作ることができる。
さらに、口コミの伝搬も模擬できる。例えば、本実施形態における道路を人とし、車両を口コミを行う人とすることで本実施形態を適用できる。こうして人が商品をどのように口コミによって普及させるかを模擬することで得られた模擬結果は、メーカーや店舗が新商品の販売方法を検討する際の検討材料となる。
【００６０】
本実施形態における統計量は標準偏差であったが、これに限るものではない。統計量の他の例として、分散、偏差等が挙げられる。偏差は、本実施形態ではＸ−Ｘｋ（ｋ＝１〜ｎ）であり、ｎ個存在するが、いずれかの偏差の絶対値が所定の閾値より大きい場合に所定領域を分割するようにしてもよい。偏差を用いることで、例えばイベントの開始または終了等により１つの小領域だけ急激に車両が増加または減少した場合にも即座に所定領域を分割することができる。なお、標準偏差と偏差とを併用したり、分散と偏差を併用するようにしてもよい。
【００６１】
本実施形態においては、特定範囲を車両総数／小領域数の±５％以内とし、所定範囲を区間[０、θ]としたがこれに限るものではない。特定範囲及び所定範囲は、模擬装置の能力、所定領域や小領域の規模等に応じて適宜定めるようにしてもよい。さらに、本実施形態では、図１２に示したように、所定範囲を３つに分割してタイマ値を設定したが、所定範囲を２つまたは４つ以上に分割してタイマ値を設定するようにしてもよい。
【００６２】
本実施形態における地図データは、ノードとエッジで構成される静的なデータに、動的なデータである車両数を加えたデータとなっている。図５に示されるような、ネットワーク上に動的な何らかの値（車両数）を付加したネットワークは、重み付きネットワークと言われる。従って、本実施形態は、エージェントの相互作用によって重みが偏る重み付きネットワークを用いたマルチエージェントシミュレーションに適用できる。なお、本実施形態に示した分割処理は、重み付きネットワークにおいて、重みが特定範囲となるようにネットワークを分割する処理であり、そのアルゴリズムの一例として図８のフローチャートを示したが、重みが特定範囲となるようにネットワークを分割可能な任意のアルゴリズムを用いて分割処理を行ってもよい。
【００６３】
本実施形態によれば、スーパーコンピュータを用いることなくマルチエージェントシミュレーションを並列分散処理により高速に行うことが可能となるため、従来技術と比較して、マルチエージェントシミュレーションを行うためのコストを大幅に削減することができる。
【００６４】
上述した実施形態における分散処理装置２００の処理をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＦＰＧＡ（Field Programmable Gate Array）等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【００６５】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６６】
１００  分散処理システム、２００  分散処理装置、
３００−１、３００−２、３００−３、…３００−ｎ、３００  模擬装置、
２０１  データ入力部、２０２  地図データ作成部、２０３  分割部、
２０４  割り当て部、２０５  車両数取得部、２０６  標準偏差算出部、
２０７  判定部、２０８  模擬データ出力部
【図１】
0006607794.tif 000002
【図２】
0006607794.tif 000003
【図３】
0006607794.tif 000004
【図４】
0006607794.tif 000005
【図５】
0006607794.tif 000006
【図６】
0006607794.tif 000007
【図７】
0006607794.tif 000008
【図８】
0006607794.tif 000009
【図９】
0006607794.tif 000010
【図１０】
0006607794.tif 000011
【図１１】
0006607794.tif 000012
【図１２】
0006607794.tif 000013