(57)【特許請求の範囲】
【請求項１】
仮想空間に存在する複数のエージェントの挙動の模擬を、互いに通信可能な複数の計算機を用いた分散処理により実現するシミュレータであって、
前記計算機の少なくとも２つは、
前記仮想空間の各分割空間についての分割範囲と、当該各分割空間に存在するエージェントにかかる処理が割り当てられている計算機とを空間割当情報として記憶する、空間割当記憶部にアクセス可能であり、
前記空間割当記憶部を参照して、少なくとも１つの隣接空間が他の計算機に割り当てられている分割空間の中から、割当を変更する候補となる分割空間を割当変更候補空間として抽出する割当変更候補空間抽出部と、
前記割当変更候補空間を割当対象となる計算機に割り当てた場合に、前記割当変更候補空間およびこれに隣接する分割空間に存在するエージェントの個数に基づいて、前記割当対象となる計算機とその他の計算機との間に生じる通信量または通信変化量を算出する通信量見積部と、
前記通信量見積部において算出された通信量または通信変化量に基づいて、前記割当変更候補空間を前記割当対象となる計算機に割り当てるか否かを決定する空間割当変更判断部と
を備える、シミュレータ。
【請求項２】
前記計算機の少なくとも２つは、
前記空間割当記憶部に記憶された空間割当情報を更新する空間割当管理部と、
前記空間割当変更判断部の決定にしたがって、前記空間割当管理部および前記割当対象となる計算機の前記空間割当管理部に対して空間割当情報の更新を要求する空間割当変更実行部と
をさらに備える、請求項１に記載のシミュレータ。
【請求項３】
前記通信量見積部は、
前記割当変更候補空間と他の計算機の分割空間との間に現在発生している通信量を、割当変更前通信量として算出するとともに、前記割当変更候補空間を前記割当対象となる計算機に割り当てた場合に、前記割当変更候補空間と前記割当対象となる計算機以外の計算機の分割空間との間に発生すると予想される通信量を、割当変更後通信量として算出し、
前記空間割当変更判断部は、
前記割当変更後通信量が前記割当変更前通信量よりも小さい場合に、前記割当変更候補空間を前記割当対象となる計算機に割り当てることを決定する、
請求項１または２に記載のシミュレータ。
【請求項４】
前記通信量見積部は、
前記割当変更候補空間の隣接空間であって自己の計算機に割り当てられている隣接空間と、前記割当対象となる計算機の分割空間との間に現在発生している通信量を考慮して、前記割当対象となる計算機とその他の計算機との間に生じる通信変化量を算出し、
前記空間割当変更判断部は、
通信量の削減量が最大となる前記通信変化量に基づいて、前記割当変更候補空間を前記割当対象となる計算機に割り当てるか否かを決定する、
請求項１または２に記載のシミュレータ。
【請求項５】
前記空間割当変更判断部は、
前記割当変更候補空間に存在するエージェントを、前記割当対象となる計算機に移動させたときに発生する、前記エージェントの個数に基づくペナルティを考慮して、
前記割当変更候補空間を前記割当対象となる計算機に割り当てるか否かを決定する、
請求項１〜４のいずれか一項に記載のシミュレータ。
【請求項６】
前記計算機の少なくとも２つは、
自己の処理負荷を算出して監視する処理負荷監視部をさらに備え、
前記空間割当変更実行部は、前記処理負荷監視部から取得した処理負荷が所定閾値以下であるときに、他の計算機からの空間割当の変更の要求を許可する、
請求項２に記載のシミュレータ。
【請求項７】
前記処理負荷監視部は、
少なくとも自己に割り当てられた分割空間に存在するエージェントの個数に基づいて、自己の処理負荷を算出する、
請求項６に記載のシミュレータ。
【請求項８】
前記通信量見積部は、
前記割当変更候補空間に存在するエージェントが、前記割当対象となる計算機に割り当てられている分割空間に移動する場合に発生する通信量をさらに考慮して、前記割当変更後通信量を算出する、
請求項３に記載のシミュレータ。
【請求項９】
前記通信量見積部は、
過去の一定時間において移動したエージェントの個数に基づいて、前記割当対象となる計算機に割り当てられている分割空間に移動する場合に発生する通信量を算出する、
請求項８に記載のシミュレータ。
【請求項１０】
仮想空間に存在する複数のエージェントの挙動の模擬を、互いに通信可能な複数の計算機を用いた分散処理により実現するシミュレーションに用いられる計算機であって、
前記仮想空間の各分割空間についての分割範囲と、当該各分割空間に存在するエージェントにかかる処理が割り当てられている計算機とを空間割当情報として記憶する空間割当記憶部と、
前記空間割当記憶部を参照して、少なくとも１つの隣接空間が他の計算機に割り当てられている分割空間の中から、割当を変更する候補となる分割空間を割当変更候補空間として抽出する割当変更候補空間抽出部と、
前記割当変更候補空間を割当対象となる計算機に割り当てた場合に、前記割当変更候補空間およびこれに隣接する分割空間に存在するエージェントの個数に基づいて、前記割当対象となる計算機とその他の計算機との間に生じる通信量または通信変化量を算出する通信量見積部と、
前記通信量見積部において算出された通信量または通信変化量に基づいて、前記割当変更候補空間を前記割当対象となる計算機に割り当てるか否かを決定する空間割当変更判断部と
を備える、計算機。
【請求項１１】
仮想空間に存在する複数のエージェントの挙動の模擬を、互いに通信可能な複数の計算機を用いた分散処理により実現するシミュレータを、コンピュータを用いて実現するためのシミュレーションプログラムであって、
前記シミュレーションプログラムは、少なくとも２つの前記計算機のコンピュータに、
前記仮想空間の各分割空間についての分割範囲と、当該各分割空間に存在するエージェントにかかる処理が割り当てられている計算機とを空間割当情報として記憶する、空間割当記憶部にアクセスする処理と、
前記空間割当記憶部を参照して、少なくとも１つの隣接空間が他の計算機に割り当てられている分割空間の中から、割当を変更する候補となる分割空間を割当変更候補空間として抽出する割当変更候補空間抽出処理と、
前記割当変更候補空間を割当対象となる計算機に割り当てた場合に、前記割当変更候補空間およびこれに隣接する分割空間に存在するエージェントの個数に基づいて、前記割当対象となる計算機とその他の計算機との間に生じる通信量または通信変化量を算出する通信量見積処理と、
前記通信量見積処理において算出された通信量または通信変化量に基づいて、前記割当変更候補空間を前記割当対象となる計算機に割り当てるか否かを決定する空間割当変更判断処理と
を実行させる、シミュレーションプログラム。
【請求項１２】
仮想空間に存在する複数のエージェントの挙動の模擬を、互いに通信可能な複数の計算機を用いた分散処理により実現する分散処理型シミュレーションを、前記計算機が実行するシミュレーション方法であって、
前記計算機は、
前記仮想空間の各分割空間についての分割範囲と、当該各分割空間に存在するエージェントにかかる処理が割り当てられている計算機とを空間割当情報として記憶する、空間割当記憶部にアクセスする工程と、
前記空間割当記憶部を参照して、少なくとも１つの隣接空間が他の計算機に割り当てられている分割空間の中から、割当を変更する候補となる分割空間を割当変更候補空間として抽出する割当変更候補空間抽出工程と、
前記割当変更候補空間を割当対象となる計算機に割り当てた場合に、前記割当変更候補空間およびこれに隣接する分割空間に存在するエージェントの個数に基づいて、前記割当対象となる計算機とその他の計算機との間に生じる通信量または通信変化量を算出する通信量見積工程と、
前記通信量見積工程において算出された通信量または通信変化量に基づいて、前記割当変更候補空間を前記割当対象となる計算機に割り当てるか否かを決定する空間割当変更判断工程と
を実行する、シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機を用いた分散処理により実現する分散処理型シミュレータに関する。
【背景技術】
【０００２】
従来、仮想環境上で個々のエージェントの挙動を模擬するシミュレータが考案されている。ここで、エージェントとして、例えば、車両やバイク、自転車、歩行者などの移動体が挙げられる。一例として、車両の挙動を模擬するシミュレータを用いて、交通量や渋滞の発生状況などを予測する技術が知られている。このような、交通流シミュレータは、道路整備やＥＴＣなどのインフラ設備の設置などの交通施策による交通の円滑化の効果を事前に評価することができるため、都市計画を行う場合の有効なツールとして活用されている。また、ドライバの認知ミス・判断ミスを模擬することで、事故の発生状況を予測することが可能な交通流シミュレータも存在する（例えば、特許文献１参照）。
【０００３】
交通流シミュレータは、コンピュータ内の仮想空間において、交通状況を再現する。交通流シミュレータの中でも、車両一台一台の挙動をモデル化するものは、ミクロ交通流シミュレータと呼ばれ、詳細な交通流を模擬することが可能である。大規模なシミュレーションを行うためには、複数の計算機リソースを用いて並列分散処理が行われる。
【０００４】
一般に、交通流シミュレータにおける分散処理では、シミュレーション対象の空間を分割して、複数の計算機リソースを割り当てた上で、各計算機リソースでは、自身に割り当てられた空間上に存在する車両の挙動を模擬する。現実世界の車両の挙動がその周辺の状況（他の車両、歩行者、信号、など）に応じて決定されるのと同様に、車両の挙動を模擬するためには、その周辺の状況（他車両情報等）を参照する必要があるが、隣接空間が別の計算機リソースに割り当てられている場合は通信によって取得しなければならない。
【０００５】
計算機リソース間で発生する通信量は、車両台数が増加するにつれて膨大になり、処理性能が低下してしまうという問題が存在する。そのため、並列分散処理における計算機リソース間の通信量を削減する技術として、特許文献２が存在する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−４７９７２号公報
【特許文献２】特開２００５−４６７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献２は、複数の計算機リソースで処理されるプログラム同士が連携して動作する環境において、同じ計算機リソース内のプログラムとの通信量と、別の計算機リソース内のプログラムとの通信量を比較した結果に応じて、プログラムを処理する計算機リソースを変更するというものであり、プログラムごとに収集した通信履歴に基づいて、計算機間の通信量を削減しようとするものである。
【０００８】
しかしながら、交通流のシミュレーションでは、各エージェントの挙動が複雑であるため、非常に短い時間間隔(数ミリ秒)で頻繁に計算機リソース間の通信を行う必要がある。このため、通信履歴を収集するという処理負荷の高い処理を行った場合、シミュレータ全体の性能低下を招くという問題がある。また、大規模なシミュレーションを行った場合、車両台数の増加とともに通信量も増加するため、通信履歴を収集する処理負荷への影響はさらに顕著となるという問題がある。
【０００９】
本発明は、上記のような点に鑑みてなされたものであり、分散処理型シミュレータにおいて、計算機間の通信量を低減することを目的する。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために、以下に開示するシミュレータは、仮想空間に存在する複数のエージェントの挙動の模擬を、互いに通信可能な複数の計算機を用いた分散処理により実現するシミュレータであって、前記計算機の少なくとも２つは、前記仮想空間の各分割空間についての分割範囲と、当該各分割空間に存在するエージェントにかかる処理が割り当てられている計算機とを空間割当情報として記憶する、空間割当記憶部にアクセス可能であり、前記空間割当記憶部を参照して、少なくとも１つの隣接空間が他の計算機に割り当てられている分割空間の中から、割当を変更する候補となる分割空間を割当変更候補空間として抽出する割当変更候補空間抽出部と、前記割当変更候補空間を割当対象となる計算機に割り当てた場合に、前記割当変更候補空間およびこれに隣接する分割空間に存在するエージェントの個数に基づいて、前記割当対象となる計算機とその他の計算機との間に生じる通信量または通信変化量を算出する通信量見積部と、前記通信量見積部において算出された通信量または通信変化量に基づいて、前記割当変更候補空間を前記割当対象となる計算機に割り当てるか否かを決定する空間割当変更判断部とを備える。
【発明の効果】
【００１１】
本願明細書の開示によれば、分散処理型シミュレータにおいて、計算機間の通信量を大幅に低減することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態における計算機を含む分散処理型シミュレータの構成の例を示す図である。
【図２Ａ】図１に示す各計算機に仮想空間内の所定領域を割り当て、複数のエージェントの挙動を模擬する場合を示す模式図の例を示す図である。
【図２Ｂ】図２に示す所定領域における車両エージェントと道路地図との関係を示す模式図の例を示す図である。
【図３】図１に示す計算機Ａの構成例を示す機能ブロック図の例を示す図である。
【図４】図１〜３に示した計算機をＣＰＵを用いて実現したハードウェア構成の例を示す図である。
【図５】計算機ＰＣ１から計算機ＰＣ２へ割当変更候補空間の割当を変更する前後における通信状況を模式的に示す図である。
【図６】計算機のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理を示すオペレーションチャートの一例を示す図である。
【図７】シミュレータを構成する一部の計算機（ＰＣ１〜３）に割り当てられている複数の分割空間の例を示す図である。
【図８】空間割当情報２６ｂの一例を示す図である。
【図９】エージェント情報２６ｃの一例を示す図である。
【図１０】シミュレーションプログラムを実行する場合において、シミュレータにシミュレーション条件を与えるための管理画面の一例を示す図である。
【図１１】計算機ＰＣ１から計算機ＰＣ２へ、割当変更候補空間の割当を変更する前後における通信状況を模式的に示す図である。
【図１２】本実施形態にかかる計算機のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理の一例を示すオペレーションチャートを示す図である。
【図１３】本実施形態の変形例にかかる計算機のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理の一例を示すオペレーションチャートを示す図である。
【図１４】本実施形態にかかる分散処理型シミュレータの構成の例を示す図である。
【図１５】計算機ＰＣ１（移動元）から計算機ＰＣ２（移動先）へ、割当変更候補空間の割当変更を要求する場合の一例を模式的に示す図である。
【図１６】移動元となる計算機（例えば、ＰＣ１）のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理の一例を示すオペレーションチャートを示す図である。
【図１７】移動先の候補となる計算機（例えば、ＰＣ２）のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理の一例を示すオペレーションチャートを示す図である。
【図１８】計算機ＰＣ１から計算機ＰＣ２へ、割当変更候補空間の割当を変更する場合における状況の一例を模式的に示す図である。
【発明を実施するための形態】
【００１３】
以下においては、本発明の実施形態について図面を用いて具体的に説明する。
【００１４】
［１．第１の実施形態］
本実施形態にかかるシミュレータは、空間を分割して複数の計算機リソースに割り当てて分散処理を行う交通流シミュレータである。この場合、エージェントは、例えば車両や歩行者等の移動体とすることができるが、本実施形態においては、車両をエージェントとする場合について説明する。
【００１５】
本実施形態の交通シミュレーションは、ある空間内に存在する車両の挙動を計算する際には、隣接する空間内に存在する車両の情報を参照する。隣接する空間が別の計算機に割り当てられている場合には通信が発生する（参照による通信）。例えば、参照される車両情報のデータサイズは固定である場合、発生する通信量は隣接空間内に存在する車両台数に比例する。この場合、隣接する空間が別の計算機に割り当てられている空間ｉとその隣接空間に存在する車両数に基づいて、現在の通信量、及び、空間ｉの割当てを変更した場合に発生する通信量を算出することが可能である。なお、ここでいう通信量は、計算機リソース間において発生する通信量であり、バスを介したＣＰＵ間または、ネットワークを介したコンピュータ間の通信を含む概念である。
【００１６】
各計算機は、割り当てられたある分割空間における処理を、その隣接空間が割り当てられた別の計算機で行った場合の通信量の見積もりを、空間内の車両台数に基づいて行う。そして、見積もった各通信量を比較して、各計算機間における分割空間の割り当てを変更する。空間内に存在する車両台数から通信量の見積もりを行うため、通信履歴を必要としない。また、自計算機に割り当てられた複数の空間のうち、隣接する空間が別の計算機リソースに割り当てられている空間のみについて、上記の処理を行えばよいため、処理負荷を増大させることなく通信量を低減することが可能である。
【００１７】
［１−１．システム構成］
図１は、本実施形態における分散処理型の交通流シミュレータのシステム構成の例を示す図である。図１に示す例では、複数の計算機Ａ〜ＤがネットワークＮを介して接続されている。計算機Ａ〜Ｄは、仮想空間に存在する複数のエージェントの挙動の模擬を、分散処理により実現する。計算機Ａ〜Ｄは、それぞれ、プロセッサとメモリと通信インターフェースを少なくとも備える独立したハードウェアである。なお、分散処理を実現する複数の計算機は、必ずしも独立した計算機である必要はない。例えば、複数のＣＰＵを備えるマルチプロセッサ型コンピュータにおいて、各ＣＰＵが、複数の計算機を連携して機能して分散処理を実現してもよい。すなわち、各計算機は、互いにデータ通信を行い、ぞれぞれでデータ処理を実行するためのリソースであればよく、特定の形態に限定されない。また、計算機の数は、図１に示す例に限られない。
【００１８】
各計算機Ａ〜Ｄには、前記仮想空間における対象領域がそれぞれ割り当てられる。各計算機Ａ〜Ｄは、割り当てられた対象領域におけるエージェントの挙動を模擬するシミュレータとなる。つまり、各計算機Ａ〜Ｄは、仮想空間に存在する複数の車両エージェントの挙動の模擬を、複数の計算機を用いた分散処理により実現する交通流シミュレータとして機能する。
【００１９】
図２Ａは、図１に示す各計算機に仮想空間内の所定領域を割り当て、複数のエージェントの挙動を模擬する場合を示す模式図の例を示す図である。図２Ａに示す例では、計算機Ａ〜Ｄを含む複数の計算機が相互に接続可能に構成されており、各計算機は自己に割り当てられた空間領域内の車両エージェントの挙動を模擬する処理を実行するとともに、車両エージェントの情報（位置、速度等）を他の計算機と相互に送受信する。例えば、計算機Ａは、割り当てられた領域Ａに存在する各車両エージェントの挙動を模擬する処理を実行するとともに、各車両エージェントの情報（位置、速度等）を他の計算機（計算機Ｂ等）と相互に交換する。
【００２０】
図２Ｂは、図２Ａに示す所定領域（例えば領域Ａ）におけるエージェントと道路地図との関係を示す模式図の例を示す図である。例えば、領域Ａに存在する車両エージェントは、道路地図上の道路を移動する場合における挙動が模擬される。
【００２１】
計算機の少なくとも１つは、仮想空間の各分割空間についての分割範囲と、当該各分割空間に存在するエージェントにかかる処理が事前に割り当てられている計算機とを空間割当情報として記憶する、空間割当記憶部にアクセス可能である。また、この計算機は、空間割当記憶部を参照して、少なくとも１つの隣接空間が他の計算機に割り当てられている分割空間の中から、割当を変更する候補となる分割空間を割当変更候補空間として抽出する。この計算機は、割当変更候補空間を割当対象となる計算機に割り当てた場合に、割当変更候補空間およびこれに隣接する分割空間に存在するエージェントの個数に基づいて、割当対象となる計算機とその他の計算機との間に生じる通信量または通信変化量を算出する。この計算機は、算出された通信量または通信変化量に基づいて、割当変更候補空間を割当対象となる計算機に割り当てるか否かを決定する。この計算機は、空間割当記憶部に記憶された空間割当情報を更新する空間割当管理部を備える。この計算機は、上記決定にしたがって、空間割当管理部および前記割当対象となる計算機の前記空間割当管理部に対して空間割当情報の更新を要求する。
【００２２】
具体的には、この計算機は、割当変更候補空間と他の計算機の分割空間との間に現在発生している通信量を、割当変更前通信量として算出するとともに、前記割当変更候補空間を前記割当対象となる計算機に割り当てた場合に、前記割当変更候補空間と前記割当対象となる計算機以外の計算機の分割空間との間に発生すると予想される通信量を、割当変更後通信量として算出する。そして、この計算機は、割当変更後通信量が前記割当変更前通信量よりも小さい場合に、割当変更候補空間を割当対象となる計算機に割り当てることを決定する。
【００２３】
本発明の一実施形態にかかるシミュレータでは、隣接空間の間で発生する通信量を車両台数に基づいて算出するため、従来に比べて新たな処理負荷の増加を抑えられる。そのため、非常に高頻度で通信を行う交通流シミュレータにおいても、計算機リソース間の通信量（ネットワーク負荷）を低減することができる。
【００２４】
例えば、分散処理を行う交通流シミュレータにおいては、計算機リソース間の通信量を増大させないためには、車両が固まって存在する空間を同じ計算機リソースに割り当てる必要がある。しかしながら、都市レベルの広域を対象とした交通シミュレーションでは、人間が、車両が固まって存在する空間を見つけ出し、同じ計算機リソースに割り当てるのは、膨大なコストが必要であった。また、交通状況は時々刻々と変化するため、そのような作業を人手で行うのは、現実には不可能であった。
【００２５】
これに対し、本発明の一実施形態にかかるシミュレータにおいては、シミュレーション対象の空間の増加に対するスケーラビリティと、空間の割り当てを動的に行うことに起因する交通状況の変化に対するフレキシビリティを併せ持つことができる。
【００２６】
［１−２．機能ブロック図］
図３は、図１に示す計算機Ａ（識別ＩＤを「ＰＣ１」とする。）の機能ブロック図の例を示す図である。他の計算機Ｂ〜Ｄ等も、計算機Ａと同様の構成にすることができる。なお、計算機Ａと同様の構成にする他の計算機の個数は１以上であることが望ましい。また、計算機Ａのみを以下に示す構成としてもよい。
【００２７】
図３に示す例では、計算機Ａは、空間割当記憶部１０１、空間割当管理部１０２、エージェント情報記憶部１０３、シミュレーション実行部１０４、エージェント情報送信部１０５、エージェント情報受信部１０６、空間内エージェント数取得部１０７、割当変更候補空間抽出部１０８、通信量見積部１０９、空間割当変更判断部１１０および、空間割当変更実行部１１１を備える。
【００２８】
空間割当記憶部１０１は、仮想空間の各分割空間について、分割範囲と割り当てられた計算機を記述した空間割当情報を記憶する。空間割当管理部１０２は、空間割当管理部に記憶された空間割当情報を更新する。エージェント情報記憶部１０３は、エージェントの少なくとも位置に関する情報を含んだエージェント情報を記憶する。
【００２９】
シミュレーション実行部１０４は、仮想空間のうち計算機Ａ（ＰＣ１）に割り当てられた対象領域の地図情報、エージェントの少なくとも位置に関する情報を含んだエージェント情報、及び他の計算機に割り当てられた領域を示す領域割当情報を参照して計算機Ａの対象領域内における各エージェントの挙動を模擬し、前記各エージェントのエージェント情報を更新する処理を繰り返し実行する。エージェント情報送信部１０５は、他の計算機リソースにエージェント情報を送信する。エージェント情報受信部１０６は、他の計算機リソースからエージェント情報を受信する。
【００３０】
空間内エージェント数取得部１０７は、分割空間の範囲とエージェントの位置を参照して、各分割空間内に存在するエージェントの数を取得する。割当変更候補空間抽出部１０８は、隣接空間が別の計算機に割り当てられた分割空間の中から割当を変更する候補となる分割空間を抽出する。通信量見積部１０９は、エージェント数に基づき、ある分割空間と隣接空間との間の通信量を算出する。空間割当変更判断部１１０は、割り当て変更候補空間の割当変更時と現在の割り当てのそれぞれの通信量を比較して、割当変更後の方が小さければ、割り当て変更することを決定する。空間割当変更実行部１１１は、全ての計算機の空間割当管理部に対して空間割当の変更を要求するとともに、エージェント情報送信部１０５に対して割り当てを変更する空間内のエージェント情報を割り当て変更先の計算機に送信するように依頼する。
【００３１】
なお、図３の計算機Ａにおいて示す各機能部は、プログラムによって実現されるＣＰＵの機能を含む概念である。ここで、プログラムとは、ＣＰＵにより直接実行可能なプログラムだけでなく、ソース形式のプログラム、圧縮処理がされたプログラム、暗号化されたプログラム等を含む概念である。
【００３２】
［１−３．計算機のハードウェア構成］
図４は、図１〜３に示した計算機をＣＰＵを用いて実現したハードウェア構成の例を示す図である。上記計算機は、ディスプレイ２１、ＣＰＵ２３、メモリ２４、キーボード／マウス２５、ハードディスク２６、光学式ドライブ２７および通信回路２８を備える。なお、ディスプレイ２１、キーボード／マウス２５または光学式ドライブ２７は、シミュレータを構成するいずれか１つの計算機に存在するようにしてもよい。
【００３３】
ハードディスク２６には、ＯＳ（オペレーティング・システム、図示せず。）、シミュレーションプログラム２６ａ、空間割当情報２６ｂ、エージェント情報２６ｃ等が記録される。なお、メモリ２５に、オペレーティング・システム（ＯＳ）（図示せず。）、シミュレーションプログラム２６ａ、空間割当情報２６ｂ、エージェント情報２６ｃ等の全部または一部を記録する構成としてもよい。
【００３４】
シミュレーションプログラム２６ａは、光学式ドライブ２７を介して、例えば、ＣＤ−ＲＯＭ等の光学式ディスク２７ａに記録されたプログラムを読み出してインストールされたものである。なお、上記インストールは、通信回路２８を用いてネットワークＮを介してサーバ装置等に記録されたプログラムをダウンロードして行うようにしてもよい。ＣＰＵ２３は、ＯＳおよびシミュレーションプログラム２６ａ等に基づいた処理を実行する。なお、本実施形態では、シミュレーションの実行結果を保存していないが保存しておき、後で、シミュレーションの実行結果を表示するようにしてもよい。
【００３５】
図３に示した計算機Ａを構成する空間割当記憶部１０１およびエージェント情報記憶部１０３は、ハードディスク２６に記録される空間割当情報２６ｂおよびエージェント情報２６ｃにそれぞれ該当する。図３に示した計算機Ａを構成する空間割当管理部１０２、シミュレーション実行部１０４、エージェント情報送信部１０５、エージェント情報受信部１０６、空間内エージェント数取得部１０７、割当変更候補空間抽出部１０８、通信量見積部１０９、空間割当変更判断部１１０および、空間割当変更実行部１１１は、ＣＰＵ２３上においてシミュレーションプログラム２６ａを実行することによって実現される。
【００３６】
［１−４．処理の概要］
図５は、計算機ＰＣ１から計算機ＰＣ２へ割当変更候補空間の割当を変更する前後における通信状況を模式的に示す図である。図５の左側（ａ）に示すように、割当変更前におけるＰＣ１の割当変更候補空間Ｓｉは、ＰＣ２の分割空間Ｓｒと通信している。このため、計算機ＰＣ１と計算機ＰＣ２と間における割当変更前通信量は、例えば、以下の式で表すことができる。
割当変更前通信量＝（分割空間（Si、Sr）内に存在する車両の台数）  ×  Du
ここで、Ｄｕは、車両１台あたりに通信するデータ量である。
【００３７】
ＰＣ１の割当変更候補空間Ｓｉが、ＰＣ２に移動すると、図５の右側（ｂ）に示すように、割当変更後におけるＰＣ２の割当変更候補空間Ｓｉは、ＰＣ１の分割空間Ｓｕ、Ｓｌ、Ｓｄと通信している。このため、計算機ＰＣ１と計算機ＰＣ２と間における割当変更後通信量は、以下の式で表される。
割当変更後通信量＝（分割空間（Si、Su、Sd、Sl）内に存在する車両の台数）  ×  Du
よって、ＰＣ１の割当変更候補空間ＳｉをＰＣ２に移動させた場合において、割当変更候補空間Ｓｉにかかる計算機ＰＣ１と計算機ＰＣ２と間における通信量である割当変更後通信量が、ＰＣ１の割当変更候補空間ＳｉをＰＣ２に移動させる前の、割当変更候補空間Ｓｉにかかる計算機ＰＣ１と計算機ＰＣ２と間における通信量である割当変更前通信量よりも小さくなる場合には、計算機ＰＣ１と計算機ＰＣ２と間における通信量を削減することができると予想できる。
【００３８】
［１−５．シミュレーションプログラムの処理内容］
図６〜図１０を用いて、上記計算機におけるシミュレーションプログラムの処理内容を説明する。図６は、計算機のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理を示すオペレーションチャートの一例を示す図である。図７は、本実施形態にかかる交通流シミュレータを構成する一部の計算機（ＰＣ１〜３）に割り当てられている複数の分割空間の例を示す図である。図８は、空間割当情報２６ｂの一例を示す図である。図９は、エージェント情報２６ｃの一例を示す図である。図１０は、シミュレーションプログラムを実行する場合において、シミュレータにシミュレーション条件を与えるための管理画面の一例である。
【００３９】
なお、図１０に示す管理画面１０００は、ネットワークＮ上のいずれか１つの計算機のディスプレイ２１上に表示され、いずれか１つの計算機のキーボード／マウス２５を用いて入力できればよい。管理画面に入力されたシミュレーション条件は、各計算機のシミュレーションプログラムに参照可能に構成される。
【００４０】
ここでは、図７に示すＰＣ１、ＰＣ２およびＰＣ３の各計算機に割り当てられた各分割空間が、他の計算機の分割空間と隣接する場合において、計算機間の通信量を削減させる処理について説明する。図１０に示す管理画面１０００に示すように、本実施形態の交通流シミュレーションの条件として、シミュレーションを実行する時間を示すシミュレーション時間１００１を「６００ｍｉｎ」、計算機の個数を示すプロセッサ数１００２を「１０００台」、道路地図に対応する領域の大きさを示す分割空間の一辺の長さ１００３を「１００ｍ」、車両の移動に伴う通信量の増加度合いを示す移動ペナルティ算出係数１００４を「１０００」としている。なお、移動ペナルティ算出係数１００４については、別の実施形態で説明する。
【００４１】
シミュレーションプログラムを実行する計算機ＰＣ１のＣＰＵ２３は、ハードディスク２６の空間割当情報２６ｂ（図８）およびエージェント情報２６ｃ（図９）を参照して、各分割空間内に存在する車両エージェントの数を取得する（オペレーションＳ６００）。例えば、図７に示すように、本実施形態では一例として、各分割空間を略矩形形状としている。このため、図８に示すように、分割空間ＩＤ８０１で識別される分割空間を特定するための分割範囲８０２は、矩形形状における２つの対角座標（例えば、地図上の南西座標と北東座標）を用いて表現している。
【００４２】
ＣＰＵ２３は、エージェント情報２６ｃ（図９）を参照してエージェントＩＤ９０１で識別される各車両エージェントの位置座標９０２が、各分割空間の分割範囲８０２（図８）にあるか否かに基づいて、各分割空間内に存在する車両エージェントの数を取得する。
【００４３】
ＣＰＵ２３は、ハードディスク２６の空間割当情報２６ｂを参照し、割当変更候補空間ｉが存在するか否かを判断する（オペレーションＳ６０１）。例えば、図８に示す空間割当情報２６ｂにおいて、ＣＰＵ２３は、担当計算機８０３が自己の計算機ＩＤ「ＰＣ１」である分割空間ＩＤ「Ｓｕ」、「Ｓｌ」、「Ｓｉ」を抽出する。続いて、ＣＰＵ２３は、抽出した各分割空間（以下、分割空間Ｓｕ、分割空間Ｓｌ、分割空間Ｓｉ等と表記する。）について、上述した分割範囲８０２における座標の一部が一致するか否か基づいて、隣接空間が他の計算機（ＰＣ２またはＰＣ３）に割り当てられている分割空間ＩＤを抽出する。例えば、図７において、分割空間Ｓｉ７０１の隣接空間として、分割空間Ｓｒ７０２およびＳｄ７０３を抽出する。
【００４４】
ここで、一例として、ＣＰＵ２３は、抽出した各分割空間内の車両エージェントの数が所定閾値以上であるか否かに基づいて、抽出した分割空間を割当変更候補空間ｉとするか否かを判断する。なぜなら、車両エージェントの数が多いほど通信量が多く発生している可能性が高く、分割空間の割当て変更により、計算機間の通信量を低減する効果が期待できるからである。
【００４５】
例えば、分割空間Ｓｉ内の車両エージェント数が所定閾値以上である場合に、分割空間Ｓｉを割当変更候補空間ｉとすることができる。また、隣接空間Ｓｒ内の車両エージェント数が所定閾値以上である場合に、分割空間Ｓｉを割当変更候補空間ｉとしてもよい。さらに、分割空間Ｓｉと隣接空間Ｓｒ内の車両エージェント数の和が所定閾値以上である場合に、分割空間Ｓｉを割当変更候補空間ｉとしてもよい。さらに加えて、分割空間Ｓｉと隣接空間Ｓｒ内の車両エージェント数の和が所定閾値以上であり、かつ、分割空間Ｓｉの方が隣接空間Ｓｒよりも車両エージェント数が少ない場合に、分割空間Ｓｉを割当変更候補空間ｉとしてもよい。なお、抽出した各分割空間内の車両エージェントの数に基づいて割当変更候補空間ｉを判断する条件は、上記に限られず、エージェントの挙動傾向やシミュレーション条件等によって適宜決定すればよい。
【００４６】
ＣＰＵ２３は、割当変更候補空間ｉと隣接空間との間の現在の通信量を算出する（オペレーションＳ６０２）。通信量を算出する場合の一例を以下に示す。例えば、Ｎｘを「分割空間Ｓｘに存在する車両台数」、Ｄｒを「車両データ量（参照）」、Ｄｕを「Ｄｒ×単位時間当たりの参照頻度」とする。なお、ここでいう「参照」とは、他の計算機に割り当てられた分割空間に存在する車両エージェントにかかる情報（位置、速度等）を通信することをいい、この通信は各計算機間において常時行われる。
【００４７】
現在の通信量として、ＰＣ１で分割空間Ｓｉを処理する場合の通信量Ｄ１は、例えば、下記の式により算出できる。
Ｄ１  ＝  （Ｎｉ×２＋Ｎｒ＋Ｎｄ）  ×  Ｄｕ
なお、ここで、「Ｎｉ×２」としているのは、ＰＣ１からＰＣ２への通信と、ＰＣ１からＰＣ３への通信があることを考慮したものである。
【００４８】
ＣＰＵ２３は、割当変更候補空間ｉを別の計算機に割り当てた場合における、割当変更候補空間ｉと隣接空間との間の通信量を算出する（オペレーションＳ６０３）。
【００４９】
現在ＰＣ１にある割当変更候補空間ｉを別の計算機ＰＣ２に割り当てて分割空間Ｓｉを処理する場合の通信量Ｄ２は、下記の式により算出できる。
Ｄ２  ＝  （Ｎｉ×２＋Ｎｕ＋Ｎｌ＋Ｎｄ）  ×  Ｄｕ
なお、ここで、「Ｎｉ×２」としているのは、ＰＣ２からＰＣ１への通信と、ＰＣ２からＰＣ３への通信があることを考慮したものである。
【００５０】
同様に、割当変更候補空間ｉを別の計算機ＰＣ３に割り当てて分割空間Ｓｉを処理する場合の通信量Ｄ３は、下記の式により算出できる。
Ｄ３  ＝  （Ｎｉ×２＋Ｎｕ＋Ｎｌ＋Ｎｒ）  ×  Ｄｕ
なお、ここで、「Ｎｉ×２」としているのは、ＰＣ３からＰＣ１への通信と、ＰＣ３からＰＣ１への通信があることを考慮したものである。
【００５１】
ＣＰＵ２３は、割当変更後の通信量が現在の通信量（割当変更前の通信量）よりも小さくなるか否かを判断する（オペレーションＳ６０４）。例えば、上記式において、Ｎｉ=20,Ｎｕ=1,Ｎｌ=1,Ｎｒ=10,Ｎｄ=5とすると、Ｄ１、Ｄ２、Ｄ３は下記の式によりそれぞれ算出できる。
Ｄ１=55×Du  、  Ｄ２=47×Du  、  Ｄ３=52×Du
この場合、Ｄｕは固定値であるので、Ｄ２が最小の通信量と判断でき、割当変更後の通信量Ｄ２が現在の通信量（割当変更前の通信量）Ｄ１よりも小さくなる。
【００５２】
一方、Ｎｉ=20,Ｎｕ=8,Ｎｌ=7,Ｎｒ=10,Ｎｄ=5とすると、Ｄ１、Ｄ２、Ｄ３は下記の式によりそれぞれ算出できる。
Ｄ１=55×Du  、  Ｄ２=60×Du  、  Ｄ３=65×Du
この場合、Ｄｕは固定値であるので、Ｄ１が最小の通信量と判断でき、割当変更後の通信量Ｄ２，Ｄ３は現在の通信量（割当変更前の通信量）Ｄ１よりも小さくならない。
【００５３】
ＣＰＵ２３は、割当変更後の通信量が現在の通信量（割当変更前の通信量）よりも小さくなる場合があると判断すれば（オペレーションＳ６０４、Ｙｅｓ）、割当変更候補空間ｉの割当てを変更する（オペレーションＳ６０５）。具体的には、空間割当情報２６ｂ（図８）において、割当変更候補空間ｉの担当計算機を、割当て先の対象となった計算機のＩＤに更新する。また、割当て先の対象となった計算機を含む全ての計算機に対して、空間割当情報２６ｂの割当変更候補空間ｉの担当計算機を、割当て先の対象となった計算機のＩＤに更新するように要求する。
【００５４】
例えば、割当変更候補空間Ｓｉについて、ＰＣ１からＰＣ２に割当てを変更する場合には、空間割当情報２６ｂ（図８）において、割当変更候補空間Ｓｉの担当計算機「ＰＣ１」を、割当て先の対象となった計算機のＩＤ「ＰＣ２」に更新し、同様の更新をネットワークＮ上の全ての計算機（ＰＣ２、ＰＣ３、…）に要求する。
【００５５】
ＣＰＵ２３は、割当変更候補空間Ｓｉに存在する車両エージェントのデータを移動させる（オペレーションＳ６０６）。具体的には、割当変更候補空間Ｓｉに存在する車両エージェントの各データをエージェント情報２６ｃ（図９）から抽出して、割当変更候補空間Ｓｉの割当て先の対象となった計算機に送信する。例えば、割当変更候補空間Ｓｉに、エージェントＩＤ９０１が「Ａ２」の車両エージェントが存在している場合、エージェント情報２６ｃに記録されているエージェントＩＤ９０１「Ａ２」のデータ（位置座標９０２、速度９０３、車種情報９０４、操作量９０５、走行距離９０６、走行時間９０７、目的地情報９０８、ドライバ特性９０９等）を、計算機ＰＣ２に送信する。
【００５６】
送信を受けて、割当変更先の計算機ＰＣ２は、エージェントＩＤ９０１が「Ａ２」のデータを、計算機ＰＣ２のハードディスク２６上に記録されているエージェント情報２６ｃに記録する。これにより、割当変更候補空間Ｓｉに存在する車両エージェントの挙動の模擬を、計算機ＰＣ１から計算機ＰＣ２に割当てを変更して処理させることができる。そして、計算機ＰＣ１と計算機ＰＣ２との間における割当変更候補空間Ｓｉの割当変更後の通信量は、割当変更前の通信量に比べて小さいため、割当変更候補空間Ｓｉにかかる通信量を削減することができる。
【００５７】
図３の機能ブロック図において示した「割当変更候補空間抽出部」は、一例として、図６のオペレーションＳ６００，Ｓ６０１の処理機能を含む。また、「通信量見積部」は、一例として、図６のオペレーションＳ６０２，Ｓ６０３の処理機能を含む。さらに、「空間割当変更判断部」は、一例として、図６のオペレーションＳ６０４の処理機能を含む。さらに、「空間割当管理部」は、一例として、図６のオペレーションＳ６０５の処理機能を含む。さらに、「空間割当変更実行部」は、一例として、図６のオペレーションＳ６０６の処理機能を含む。
【００５８】
［２．第２の実施形態］
本実施形態にかかるシミュレータの計算機は、割当変更候補空間の隣接空間であって自己の計算機に割り当てられている隣接空間と、割当対象となる計算機の各分割空間との間に現在発生している通信量を考慮して、割当変更候補空間を割当対象となる計算機に移動させた場合の通信変化量を算出し、計算機間全体において通信量が削減できるか否かを判断する。これにより、割当変更候補空間だけでなく、隣接空間がどの計算機と通信しているかまで考慮することによって、全体の通信量が削減するように空間割当を変更することが可能となる。つまり、隣接空間の間で発生する通信量を車両台数に基づいて算出して通信量の削減の可否を判断する場合に、計算機間で発生する通信量の実質的な変動を考慮することができる。
【００５９】
［２−１．処理の概要］
本実施形態にかかる分散処理型シミュレータの構成、本実施形態の各計算機に仮想空間内の所定領域を割り当て、複数のエージェントの挙動を模擬する場合を示す模式図、本実施形態の所定領域における車両エージェントと道路地図との関係を示す模式図、本実施形態の計算機の構成例を示す機能ブロック図および、この計算機をＣＰＵを用いて実現したハードウェア構成は、それぞれ第１の実施形態において示した図１〜４と同様である。本実施形態では、第１の実施形態と同様、計算機Ａ（ＰＣ１）、計算機Ｂ（ＰＣ２）および、計算機Ｃ（ＰＣ３）を用いて分散処理を行う例を説明する。シミュレーション対象とする分割空間の初期割り当て状況は第１の実施形態と同じとする。
【００６０】
図１１は、計算機ＰＣ１から計算機ＰＣ２へ、割当変更候補空間の割当を変更する前後における通信状況を模式的に示す図である。図１１に示すように、ＰＣ１における割当変更候補空間Ｓｉの隣接空間ＳｕおよびＳｄは、割当変更前後において、ＰＣ２の分割空間ＳａおよびＳｂとそれぞれ通信している。よって、ＰＣ１の割当変更候補空間ＳｉをＰＣ２に移動させたとしても、ＰＣ１の分割空間ＳｕおよびＳｄと、ＰＣ２の各分割空間との通信量に変動はない。すなわち、割当変更候補空間ＳｉをＰＣ２に移動させた後において、ＰＣ２の割当変更候補空間ＳｉとＰＣ１の分割空間ＳｕおよびＳｄとの通信が発生したとしても、この通信によってＰＣ１とＰＣ２との間において通信量が増加するものではない。
【００６１】
［２−２．シミュレーションプログラムの処理内容］
図１２は、本実施形態にかかる計算機のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理を示すオペレーションチャートの一例を示す図である。また、本実施形態にかかる交通流シミュレータを構成する一部の計算機（ＰＣ１〜３）に割り当てられている複数の分割空間、空間割当情報２６ｂ、エージェント情報２６ｃは、それぞれ第１の実施形態において示した図７〜９と同様である。本実施形態においては、第１の実施形態と同様に、図７に示すように、ＰＣ１、ＰＣ２およびＰＣ３の各計算機間における通信量を削減させる処理について説明する。
【００６２】
図１２におけるオペレーションＳ１２００、Ｓ１２０１、Ｓ１２０４およびＳ１２０５の各処理は、第１の実施形態で説明したオペレーションＳ６００、Ｓ６０１、Ｓ６０５および、Ｓ６０６の各処理と同様である。よって、図１２のオペレーションＳ１２０２およびＳ１２０３について説明する。
【００６３】
ＣＰＵ２３は、割当変更候補空間ｉを別の計算機に割り当てた場合の通信変化量を算出する（オペレーションＳ１２０２）。通信量を算出する場合の一例を以下に示す。第１の実施形態と同様に、例えば、Ｎｘを「分割空間Ｓｘに存在する車両台数」、Ｄｒを「車両データ量（参照）」、Ｄｕを「Ｄｒ×単位時間当たりの参照頻度」とする。なお、ここでいう「参照」とは、他の計算機に割り当てられた分割空間に存在する車両エージェントにかかる情報（位置、速度等）を通信することをいい、この通信は各計算機間において常時行われる。
【００６４】
ＰＣ１で分割空間Ｓｉを処理する場合の通信変化量Ｒ１は、割当変更候補空間ｉの割当先に変更がないので、通信変化量Ｒ１は０である。
【００６５】
また、割当変更候補空間ｉを別の計算機ＰＣ２に割り当てて分割空間Ｓｉを処理する場合の通信変化量Ｒ２は、下記の式により算出できる。
Ｒ２  ＝  （＋Ｎｌ−Ｎｒ）  ×  Ｄｕ
さらに、割当変更候補空間ｉを別の計算機ＰＣ３に割り当てて分割空間Ｓｉを処理する場合の通信変化量Ｒ３は、下記の式により算出できる。
Ｒ３  ＝  （＋Ｎｌ−Ｎｄ）  ×  Ｄｕ
例えば、上記式において、Ｎｉ=20,Ｎｕ=1,Ｎｌ=1,Ｎｒ=10,Ｎｄ=5とすると、Ｒ１、Ｒ２、Ｒ３は下記の式によりそれぞれ算出できる。
Ｒ１=0  、  Ｒ２=−9×Du  、  Ｒ３=−4×Du
この場合、Ｄｕは固定値であるので、Ｒ２が最小の通信変化量と判断でき、ＰＣ２への割当変更後の通信量が現在の通信量（割当変更前の通信量）よりも小さくなると予想できる。
【００６６】
一方、Ｎｉ=20,Ｎｕ=8,Ｎｌ=7,Ｎｒ=10,Ｎｄ=5とすると、Ｒ１、Ｒ２、Ｒ３は下記の式によりそれぞれ算出できる。
Ｒ１=0  、  Ｒ２=−3×Du  、  Ｒ３=＋3×Du
この場合、Ｄｕは固定値であるので、Ｒ２が最小の通信変化量と判断でき、ＰＣ２への割当変更後の通信量が現在の通信量（割当変更前の通信量）よりも小さくなると予想できる。
【００６７】
ＣＰＵ２３は、割当変更後の通信量が現在の通信量（割当変更前の通信量）よりも小さくなると判断すれば（オペレーションＳ１２０３、Ｙｅｓ）、割当変更候補空間ｉの割当てを変更する（オペレーションＳ１２０４）。
【００６８】
以上により、隣接空間の間で発生する通信量を車両台数に基づいて算出して通信量の削減の可否を判断する場合に、計算機間で発生する通信量の実質的な変動を考慮することができる。
【００６９】
［２−３．変形例］
割当変更候補空間ｉを別の計算機に割り当てる場合、割り当て変更に伴う処理が必要となる。例えば、割当変更候補空間ｉに存在するすべての車両エージェントのデータを、移動先の計算機に送信する処理が必要となる。そこで、このような処理コストをペナルティとして表現し、このペナルティと通信削減量との比較を行い、通信削減量がペナルティよりも大きい場合に割当を変更するように構成してもよい。なお、この場合、車両数に比例したペナルティを設定するのが妥当である。
【００７０】
これにより、割当変更に伴う割当変更候補空間内の車両データの移動により、逆に通信量が増加してしまうことを防止して、割当変更による通信量の削減効果を高めることができる。
【００７１】
図１３は、本実施形態の変形例にかかる計算機のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理を示すオペレーションチャートの一例を示す図である。
【００７２】
図１３におけるオペレーションＳ１２００〜Ｓ１２０３、Ｓ１２０４〜Ｓ１２０５の各処理は、図１２で説明した各処理と同様である。図１３では、オペレーションＳ１２０３に続いて、オペレーションＳ１２０３ａを実行する。Ｓ１２０３では、算出した通信変化量のうち最も削減効果の大きい移動先の計算機に割当変更候補空間ｉを移動させた場合における通信削減量が、所定の割当変更ペナルティより大きくなる場合に、Ｓ１２０４を実行して空間割当を変更する構成としている。割当変更ペナルティを算出する場合の一例を以下に示す。例えば、Ｐｘを「空間Ｓｘに割り当てを変更する場合のペナルティ」、Ｎｘを「空間Ｓｘに存在する車両台数」、Ａを「比例定数」とする。なお、Ｎｘは、車両台数の他に、車両の移動に伴うデータ量や通信回線の負荷状況、計算機の処理能力等に基づく値であってもよい。Ａには、図１０に示す管理画面１０００により入力された移動ペナルティ算出係数１００４を用いる。
【００７３】
ＰＣ１で分割空間Ｓｉを処理する場合のペナルティＰ１は、割当変更候補空間ｉの割当先に変更がないので、０である。
【００７４】
また、割当変更候補空間ｉを別の計算機ＰＣ２に割り当てて分割空間Ｓｉを処理する場合のペナルティＰ１は、下記の式により算出できる。
Ｐ２  ＝  Ｎｉ  ×  Ａ
さらに、割当変更候補空間ｉを別の計算機ＰＣ３に割り当てて分割空間Ｓｉを処理する場合のペナルティＰ３は、下記の式により算出できる。
Ｐ３  ＝  Ｎｉ  ×  Ａ
ＣＰＵ２３は、ペナルティを考慮しても割当変更後の通信量が現在の通信量（割当変更前の通信量）よりも小さくなると判断すれば（オペレーションＳ１２０３ａ、Ｙｅｓ）、割当変更候補空間ｉの割当てを変更する（オペレーションＳ１２０４）。
【００７５】
以上により、割当変更に伴う割当変更候補空間内の車両データの移動により、逆に通信量が増加してしまうことを防止して、割当変更による通信量の削減効果を高めることができる。
【００７６】
［３．第３の実施形態］
本実施形態にかかるシミュレータの計算機において、空間割当てを変更するのは、変更先の計算機リソースの処理負荷が許容範囲であるときに限る。そのために、変更元の計算機リソースの空間割当変更部は、変更先の計算機リソースが割当て変更を許諾するかを問い合わせる。交通シミュレーションでは、処理負荷はシミュレーション対象の車両数にほぼ比例すると考えられるので、変更先の計算機は、車両数が上限値を越えない場合に許諾するようにすればよい。
【００７７】
本実施形態にかかるシミュレータの計算機は、自己の処理負荷を算出して監視する。この計算機は、算出した処理負荷が所定閾値以下であるときに、他の計算機からの空間割当の変更の要求を許可する。特に、この計算機は、自己に割り当てられた分割空間に存在するエージェントの個数に基づいて、自己の処理負荷を算出する。これにより、所定の計算機に、割当変更候補空間の割当変更の処理が特定の計算機に集中して、この計算機の処理負荷が許容範囲を超えてしまうことを防止することができる。
【００７８】
［３−１．処理の概要］
本実施形態にかかる分散処理型シミュレータの構成、本実施形態の各計算機に仮想空間内の所定領域を割り当て、複数のエージェントの挙動を模擬する場合を示す模式図、本実施形態の所定領域における車両エージェントと道路地図との関係を示す模式図、本実施形態の計算機をＣＰＵを用いて実現したハードウェア構成は、それぞれ第１の実施形態において示した図１〜４と同様である。
【００７９】
図１４は、本実施形態にかかる分散処理型シミュレータを構成する計算機Ａの機能ブロック図の例を示す図である。図１４の構成では、図３において示した計算機Ａの各機能部に加えて、処理負荷監視部１４０をさらに備える。
【００８０】
本実施形態では、第１の実施形態と同様、計算機Ａ（ＰＣ１）、計算機Ｂ（ＰＣ２）および、計算機Ｃ（ＰＣ３）を用いて分散処理を行う例を説明する。シミュレーション対象とする分割空間の初期割り当て状況は第１の実施形態と同じとする。
【００８１】
図１５は、計算機ＰＣ１（移動元）から計算機ＰＣ２（移動先）へ、割当変更候補空間の割当変更を要求する場合を模式的に示す図である。ＰＣ１の空間割当変更実行部は、割当変更候補空間ＳｉをＰＣ２へ割当て変更により移動させた方が全体の通信量を削減できると判断した場合、ＰＣ２に対して空間割当変更要求を行う。
【００８２】
ＰＣ１からの空間割当変更要求を受けて、ＰＣ２の空間割当変更実行部は、ＰＣ２における処理負荷を適宜監視している処理負荷監視部から処理負荷を取得し、処理負荷が所定閾値以下である場合にＰＣ１からの空間割当変更要求を許可する。この場合、割当変更候補空間Ｓｉは、ＰＣ１およびＰＣ２のそれぞれの空間割当管理部によって、ＰＣ２で処理されるように空間割当記憶部を更新する。一方、処理負荷が所定閾値を超えている場合にはＰＣ１からの空間割当変更要求を却下する。この場合、割当変更候補空間Ｓｉの割当は変更されない。
【００８３】
［３−２．シミュレーションプログラムの処理内容］
図１６は、移動元となる計算機（例えば、ＰＣ１）のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理を示すオペレーションチャートの一例を示す図である。図１７は、移動先の候補となる計算機（例えば、ＰＣ２）のＣＰＵ２３で実行されるシミュレーションプログラムに基づく処理を示すオペレーションチャートの一例を示す図である。また、本実施形態にかかる交通流シミュレータを構成する一部の計算機（ＰＣ１〜３）に割り当てられている複数の分割空間、空間割当情報２６ｂ、エージェント情報２６ｃは、それぞれ第１の実施形態において示した図７〜９と同様である。本実施形態においては、第２の実施形態と同様に、図７に示すように、ＰＣ１、ＰＣ２およびＰＣ３の各計算機間における通信量を削減させる処理について説明する。
【００８４】
図１６におけるオペレーションＳ１６００〜Ｓ１６０３、１６０６および、Ｓ１６０７の各処理は、第２の実施形態で説明したオペレーションＳ１２００〜Ｓ１２０５の各処理と同様である。よって、図１６のオペレーションＳ１６０４およびＳ１６０５について説明する。
【００８５】
ＣＰＵ２３は、割当変更候補空間ｉを別の計算機に割り当てた場合の通信変化量を算出し（オペレーションＳ１６０２）、割当変更候補空間ｉを割り当てる別の計算機を決定すると（オペレーションＳ１６０３、Ｙｅｓ）、決定した別の計算機に対して、割当変更候補空間ｉの割当ての変更依頼を行う（オペレーションＳ１６０４）。
【００８６】
例えば、ＰＣ１のＣＰＵ２３は、自己に割り当てられている割当変更候補空間ＳｉをＰＣ２に移動させた方が全体の通信量を削減できると判断した場合、ＰＣ２に対して、割当ての変更依頼を行う。割当ての変更依頼を受けると、ＰＣ２のシミュレーションプログラムは、図１７のオペレーションチャートにしたがって、空間割当変更の許可または却下をＰＣ１に通知する。
【００８７】
具体的には、ＰＣ２のＣＰＵ２３は、空間割当変更要求を受けると（オペレーションＳ１７００，Ｙｅｓ）、ＰＣ２においてシミュレーション中の車両数を取得する（オペレーションＳ１７０１）。例えば、ハードディスク２６の空間割当情報２６ｂ（図８）およびエージェント情報２６ｃ（図９）を参照して、ＰＣ２に割り当てられた各分割空間内に存在する車両エージェントの数をすべて取得する。次に、ＰＣ２のＣＰＵ２３は、車両台数が閾値以下である場合に（オペレーションＳ１７０２，Ｙｅｓ）、空間割当変更の許可を通知する。一方、車両台数が閾値を超えている場合に（オペレーションＳ１７０２，Ｎｏ）、空間割当変更の却下を通知する。
【００８８】
ＰＣ２からの空間割当変更の許可または却下の通知受けると、ＰＣ１のＣＰＵ２３は、変更依頼が許可された場合には、割当変更候補空間Ｓｉに存在する車両エージェントのデータをＰＣ２に移動させる（オペレーションＳ１６０７）。
【００８９】
なお、上記オペレーションＳ１７０２においては、ＰＣ２のＣＰＵ２３は、変更依頼の可否を決定するための処理負荷の例として、車両台数を用いているが処理負荷の判断要素はこれに限定されない。例えば、ＣＰＵ使用率やメモリ使用率などに基づいて判断してもよい。
【００９０】
以上により、所定の計算機に、割当変更候補空間の割当変更の処理が特定の計算機に集中して、この計算機の処理負荷が許容範囲を超えてしまうことを防止することができる。
【００９１】
図１４の機能ブロック図において示した「処理負荷監視部」は、一例として、図１７のオペレーションＳ１７０１の処理機能を含む。
【００９２】
［４．第４の実施形態］
本実施形態にかかるシミュレータの計算機は、割当変更候補空間に存在するエージェントが、前記割当対象となる計算機に割り当てられている分割空間に移動する場合に発生する通信量をさらに考慮して、前記割当変更後通信量を算出する。特に、過去の一定時間において移動したエージェントの個数に基づいて、前記割当対象となる計算機に割り当てられている分割空間に移動する場合に発生する通信量を算出する。これにより、エージェントが分割空間をまたいで移動する場合の通信量を考慮して、通信量を有効に削減できるように空間割当を変更することが可能となる。また、過去の一定時間において移動したエージェントの個数を考慮するため、未来の一定時間に発生が予測される空間間移動の発生数を予測して、空間割当の変更を判断することができる。
【００９３】
［４−１．処理の概要］
本実施形態にかかる分散処理型シミュレータの構成、本実施形態の各計算機に仮想空間内の所定領域を割り当て、複数のエージェントの挙動を模擬する場合を示す模式図、本実施形態の所定領域における車両エージェントと道路地図との関係を示す模式図、本実施形態の計算機の構成例を示す機能ブロック図および、この計算機をＣＰＵを用いて実現したハードウェア構成は、それぞれ第１の実施形態において示した図１〜４と同様である。本実施形態では、第１の実施形態と同様、計算機Ａ（ＰＣ１）、計算機Ｂ（ＰＣ２）および、計算機Ｃ（ＰＣ３）を用いて分散処理を行う例を説明する。シミュレーション対象とする分割空間の初期割り当て状況は第１の実施形態と同じとする。
【００９４】
図１８は、計算機ＰＣ１に割り当てられた分割空間から、計算機ＰＣ２に割り当てられた分割空間へ車両が移動する場合における状況を模式的に示す図である。交通シミュレータにおいて、車両ａは分割された空間の境界を越えて移動する（空間間移動）ため、この移動に伴い、例えば車両ａの存在する空間が分割空間Ｓｉから分割空間Ｓｒへと変わっていく。よって、移動先ＰＣ２の分割空間Ｓｒが別の計算機リソースであるＰＣ２に割り当てられている場合には通信が発生する（空間間移動による通信）。なぜなら、車両ａをＰＣ２において模擬するために必要なエージェント情報をＰＣ２に記憶させるためである。
【００９５】
空間の境界を越えて移動する際に、送受信される車両のエージェント情報のデータサイズは固定であるため、発生する通信量は空間間移動の発生頻度に比例する。そこで、上記構成に、空間間移動の発生頻度を推定する構成を加え、通信量見積部は、割当変更後通信量の見積もり時において、空間間移動時に発生すると予測される通信量を見積もりに加算または減算する。なお、過去の一定時間に発生した車両移動数等に基づいて、単位時間当たりの空間間移動の発生数を算出することが可能である。
【００９６】
［４−２．シミュレーションプログラムの処理内容］
本実施形態にかかる交通流シミュレータを構成する一部の計算機（ＰＣ１〜３）に割り当てられている複数の分割空間、空間割当情報２６ｂ、エージェント情報２６ｃは、それぞれ第１の実施形態において示した図７〜９と同様である。本実施形態においては、第１の実施形態と同様に、図７に示すように、ＰＣ１、ＰＣ２およびＰＣ３の各計算機間における通信量を削減させる処理について説明する。
【００９７】
本実施形態にかかる計算機のＣＰＵ２３で実行されるシミュレーションプログラムは、第１の実施形態において示した図６と基本的に同様である。但し、オペレーションチャートにおけるオペレーションＳ６０２およびＳ６０３の具体的処理内容が異なる。よって、図６のオペレーションＳ６０２およびＳ６０３について説明する。
【００９８】
ＣＰＵ２３は、割当変更候補空間ｉと隣接空間との間の現在の通信量を算出する（オペレーションＳ６０２）。通信量を算出する場合の一例を以下に示す。例えば、第１の実施形態と同様に、Ｎｘを「分割空間Ｓｘに存在する車両台数」、Ｄｒを「車両データ量（参照）」、Ｄｕを「Ｄｒ×単位時間当たりの参照頻度」とする。本実施形態では、さらに、Ｄｍを「移動時の車両データ量」、Ｔ[ｘ，ｙ]を「単位時間当たりの空間ｘと空間ｙとの間の車両移動回数の期待値」、Ｄｔ[ｘ，ｙ]を「Ｄｍ  ×  Ｔ[ｘ，ｙ]」とする。なお、ここでいう「参照」とは、他の計算機に割り当てられた分割空間に存在する車両エージェントにかかる情報（位置、速度等）を通信することをいい、この通信は各計算機間において常時行われる。これに対して、別の計算機に割り当てられた空間への移動時においては、移動先の計算機でシミュレーションを継続するための全てのエージェント情報を通信する。
【００９９】
Ｔ[ｘ，ｙ]を示す「単位時間当たりの空間ｘと空間ｙとの間の車両移動回数の期待値」における期待値は、過去の一定時間において移動したエージェントの個数に基づく値である。例えば、過去１時間における移動数に基づいて期待値を算出すればよい。なお、期待値は、車両エージェントが移動する道路状況（道路の大きさ、車線数、幹線道路か否か、交差点の有無）等に基づいて決定してもよい。
【０１００】
現在の通信量として、ＰＣ１で分割空間Ｓｉを処理する場合の通信量Ｄ１は、下記の式により算出できる。
Ｄ１  ＝  （Ｎｉ×２＋Ｎｒ＋Ｎｄ）  ×  Ｄｕ  ＋  Ｄｔ[i,r]  ＋  Ｄｔ[i,d]
ＣＰＵ２３は、割当変更候補空間ｉを別の計算機に割り当てた場合における、割当変更候補空間ｉと隣接空間との間の通信量を算出する（オペレーションＳ６０３）。
【０１０１】
現在ＰＣ１にある割当変更候補空間ｉを別の計算機ＰＣ２に割り当てて分割空間Ｓｉを処理する場合の通信量Ｄ２は、下記の式により算出できる。
Ｄ２  ＝  （Ｎｉ×２＋Ｎｕ＋Ｎｌ＋Ｎｄ）  ×  Ｄｕ  ＋  Ｄｔ[i,u]  ＋  Ｄｔ[i,l]  ＋  Ｄｔ[i,d]
同様に、割当変更候補空間ｉを別の計算機ＰＣ３に割り当てて分割空間Ｓｉを処理する場合の通信量Ｄ３は、下記の式により算出できる。
Ｄ３  ＝  （Ｎｉ×２＋Ｎｕ＋Ｎｌ＋Ｎｒ）  ×  Ｄｕ  ＋  Ｄｔ[i,u]  ＋  Ｄｔ[i,r]  ＋  Ｄｔ[i,l]
第１の実施形態と同様に、ＣＰＵ２３は、割当変更後の通信量が現在の通信量（割当変更前の通信量）よりも小さくなるか否かを判断し（オペレーションＳ６０４）、割当変更後の通信量が現在の通信量（割当変更前の通信量）よりも小さくなる場合があると判断すれば、割当変更候補空間ｉの割当てを変更する（オペレーションＳ６０５）。
【０１０２】
以上により、エージェントが分割空間をまたいで移動する場合の通信量を考慮して、通信量を有効に削減できるように空間割当を変更することが可能となる。また、過去の一定時間において移動したエージェントの個数を考慮するため、未来の一定時間に発生が予測される空間間移動の発生数を予測して、空間割当の変更を判断することができる。
【０１０３】
［５．その他の実施形態］
［５−１．２つ以上の割当変更候補空間を変更］
隣接空間に存在する車両台数との関係によっては、空間１つの割り当てを変更すると通信量が増加するが、隣接空間と２つ同時に変更すると、通信量が削減することもある。そこで、空間割当変更部は、２つ以上の割当変更候補空間を同時に変更した場合の通信量も比較して、割り当てを変更する空間を決定するようしてもよい。
【０１０４】
［５−２．空間割当の記憶］
また、交通状況は、時間毎、曜日毎に再現性がある。例えば、同じ曜日の同じ時間帯に混雑する、等である。そこで、空間割り当てを記録し、再利用することが考えられる。そのため、上記構成に、空間の割り当てを記憶しておき、シミュレーション時刻に応じて空間割当てを読み込む構成としてもよい。この場合、シミュレーション開始時から通信量が低い状態を保つことが可能になる。
【０１０５】
［５−３．実施形態の組み合わせ］
上記実施形態１〜４において説明した構成の一部または全部を、２以上組み合わせた構成としてもよい。
【０１０６】
［５−４．各機能ブロックの実現方法］
上記実施形態においては、図３に示す各機能ブロックを、ソフトウェアを実行するＣＰＵの処理によって実現している。しかし、その一部もしくは全てを、ロジック回路等のハードウェアによって実現してもよい。なお、プログラムの一部の処理をさらに、オペレーティング・システム（ＯＳ）にさせるようにしてもよい。
【符号の説明】
【０１０７】
１０１  空間割当管理部
１０２  空間割当記憶部
１０３  エージェント情報記憶部
１０４  シミュレーション実行部
１０５  エージェント情報送信部
１０６  エージェント情報受信部
１０７  空間内エージェント数取得部
１０８  割当変更候補空間抽出部
１０９  通信量見積部
１１０  空間割当変更判断部
１１１  空間割当変更実行部
【図１】
0005434380.tif 000002
【図２Ａ】
0005434380.tif 000003
【図２Ｂ】
0005434380.tif 000004
【図３】
0005434380.tif 000005
【図４】
0005434380.tif 000006
【図５】
0005434380.tif 000007
【図６】
0005434380.tif 000008
【図７】
0005434380.tif 000009
【図８】
0005434380.tif 000010
【図９】
0005434380.tif 000011
【図１０】
0005434380.tif 000012
【図１１】
0005434380.tif 000013
【図１２】
0005434380.tif 000014
【図１３】
0005434380.tif 000015
【図１４】
0005434380.tif 000016
【図１５】
0005434380.tif 000017
【図１６】
0005434380.tif 000018
【図１７】
0005434380.tif 000019
【図１８】
0005434380.tif 000020