(57)【要約】【課題】仮想ドライバの知覚ミス、認識ミス、判断ミスによって交通事故が発生するような交通流シミュレーション装置であって、演算すべき車両台数が増加しても、ハードウエアに対する負荷の増加が少ないシミュレーション装置を提供する。【解決手段】演算が必要な移動体を絞り込むために、視野内に含まれるセクションを抽出し、抽出されたセクション内に存在する移動体を、存在情報マトリクスを用いて抽出する。３次元空間に存在する抽出された移動体に対して、仮想ドライバであるエージェントの仮想スクリーン上での２次元平面情報と奥行き配置情報を算出することで可視判定を行い、死角となる位置関係にある移動体を除外する。そして、除外されずに残った物体を基準に移動体を移動させ、交通事故が発生するか否かをシミュレーションする。【選択図】図７
2008203913.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーション対象地区の交通流をシミュレーションする装置であって、該装置は、
情報を記憶する記憶手段であって、
移動体の３次元位置と姿勢角と寸法とに関する移動体情報と、
仮想ドライバ又は仮想歩行者であるエージェントの視点の３次元位置と視野とに関するエージェント情報と、
シミュレーション対象地区を、複数の移動体が存在し得る程度の範囲を有する区画に分割して作成する複数のセクションの位置に関するセクション座標情報と、
前記各セクション内に存在する移動体の数と識別番号とに関する存在情報マトリクス情報と、
前記複数のセクション同士が交通網として連続して遷移可能であるか否かに関する遷移可能セクションマトリクス情報と、
を記憶する記憶手段と、
前記エージェント情報とセクション座標情報とを用いて、指定されたエージェントの視野内に含まれるセクションを抽出するセクション抽出手段と、
前記存在情報マトリクス情報を用いて前記セクション抽出手段により抽出されたセクションに存在する移動体を抽出し、抽出された各移動体に対する移動体情報と前記指定されたエージェントのエージェント情報とを用いて、３次元空間に存在する前記抽出された各移動体に対する、前記指定されたエージェントの仮想スクリーン上での２次元平面情報と前記抽出された各移動体の奥行き配置情報とを算出し、前記２次元平面情報と奥行き配置情報とを用いて、前記指定されたエージェントからの前記抽出された各移動体の可視判定を行うことで死角となる位置関係にある移動体を除外する、エージェントの知覚を模擬する知覚模擬手段と、
前記知覚模擬手段に基づき前記指定されたエージェントが移動体を操作する移動体運動模擬手段と、
前記移動体運動模擬手段による操作後の移動体の移動体情報とセクション座標情報とを用いて移動体のセクション間の遷移を検出し、遷移があれば前記遷移可能セクションマトリクス情報を用いて遷移した移動体が存在するセクションを特定し、遷移した移動体について前記存在情報マトリクス情報を更新する、移動体存在情報管理手段と、
を具備することを特徴とする交通流シミュレーション装置。
【請求項２】
請求項１に記載の交通流シミュレーション装置において、
前記記憶手段は、さらに、静止物体の３次元位置と寸法とに関する静止物体情報を記憶し、
前記存在情報マトリクス情報は、さらに、前記各セクション内に存在する静止物体の数と識別番号とに関する情報を含み、
前記知覚模擬手段は、さらに、前記存在情報マトリクス情報を用いて前記セクション抽出手段により抽出されたセクションに存在する静止物体も抽出し、抽出された各静止物体に対する静止物体情報も用いて、３次元空間に存在する前記抽出された各移動体及び各静止物体に対する、前記指定されたエージェントの仮想スクリーン上での２次元平面情報と前記抽出された各移動体及び各静止物体の奥行き配置情報とを算出し、前記２次元平面情報と奥行き配置情報とを用いて、前記指定されたエージェントからの前記抽出された各移動体及び各静止物体の可視判定を行うことで死角となる位置関係にある移動体及び静止物体を除外する、
ことを特徴とする交通流シミュレーション装置。
【請求項３】
請求項１又は請求項２に記載の交通流シミュレーション装置であって、さらに、前記知覚模擬手段により除外されず残った移動体に対して、所定の確率で移動体をさらに除外する見落とし処理手段を具備することを特徴とする交通流シミュレーション装置。
【請求項４】
請求項１乃至請求項３の何れかに記載の交通流シミュレーション装置であって、さらに、該装置を複数用い、
各装置には、そのシミュレーション対象地区として少なくとも１つのセクションがそれぞれ割り振られており、
各装置の前記記憶手段は、各装置に割り振られたセクションに関するセクション割り振り情報を記憶し、
各装置の前記知覚模擬手段は、前記セクション割り振り情報を参照し、抽出されたセクションが他の装置に割り振られたセクションの場合には、そのセクションに割り振られた他の装置の存在情報マトリクス情報を参照して抽出されたセクションに存在する移動体に対する移動体情報を受信し、
各装置の前記移動体存在情報管理手段は、前記セクション割り振り情報を参照し、遷移した移動体が存在する特定されたセクションが他の装置に割り振られたセクションの場合には、そのセクションに割り振られた他の装置に移動体情報を送信し、他の装置は、受信した移動体情報について前記存在情報マトリクス情報を更新する、
ことを特徴とする交通流シミュレーション装置。
【請求項５】
請求項１乃至請求項４の何れかに記載の交通流シミュレーション装置であって、さらに、前記知覚模擬手段により知覚された移動体に対して認識模擬を行う認識模擬手段を有し、該認識模擬手段は、前記指定されたエージェントから見た各移動体に対する意味付けを行うことを特徴とする交通流シミュレーション装置。
【請求項６】
請求項１乃至請求項５の何れかに記載の交通流シミュレーション装置をコンピュータで実現するための交通流シミュレーションプログラムであって、コンピュータを上記各手段として機能させるための交通流シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は交通網を移動する移動体の動きを模擬する交通流シミュレーション装置に関し、特に、車両や二輪車、船舶、歩行者等の移動体の操作者の知覚特性を考慮した交通流シミュレーション装置に関する。
【背景技術】
【０００２】
都市計画等で新たに道路を設計する場合や、交通量の増加に伴って既存の道路の改善、拡張等を行う場合には、シミュレーションを行って交通量や渋滞の発生等を予測し、車線や交差点の配置、幅員等の設計が行われる。そのための交通流シミュレーションシステムとして、交通状況に影響を与える変動要因である、曜日、時刻、天候、イベントの有無、長期休暇中であるか、という変量を考慮してより個々のケースに対応した交通量を予測するシミュレーション技術が知られている（特許文献１）。
【０００３】
また、通行できない度合いを数値化した通行困難度分布に基づいて移動体の進行方向や速度を決定するシミュレーション技術も知られている（特許文献２）。これは、通行困難領域や他の移動体の通行困難度を移動体からの視界に変換した見かけの通行困難度分布を生成し、これに基づいて車両を操作するシミュレーション装置である。
【０００４】
さらに、解析対象となる領域を分割した複数のセルをセルラオートマトンによりモデル化し、各セルにカテゴリ等の所定の状態量を定義しておき、車両として定義したセルの位置からは見ることができないセルを除外し、車両が駐車スペースを選択する指標となる魅力値を参照して、車両が移動すべきセルを決定する交通流シミュレータも知られている（特許文献３）。
【０００５】
一方、交通事故の低減を目的として既存の道路の改善等の施策を立案する場合には、交通安全施策の事故削減に対する効果を交通流シミュレーションによって事前に予測することはこれまでほとんど行われていない。交通安全施策の事故削減に対する効果を直接的に評価するものではないが、既存若しくは設計段階の交差点や道路において、自動車モデル定義情報と状況情報に基づき自動車モデル群を古典力学に従って運動させ、ドライバモデル定義情報とシミュレーション実施条件情報とシミュレーション過程の状況情報に基づきドライバモデル群に運転行動をさせ、交差点や道路の幾何学的、物理的特徴に基づいてドライバモデル群から危険度情報を取得する危険度評価装置が知られている程度である（特許文献４）。
【０００６】
【特許文献１】特開平０５−２５０５９４号公報
【特許文献２】特開２００４−１９９２８７号公報
【特許文献３】特開２０００−１３２７８３号公報
【特許文献４】特開２００２−１４０７８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
交通安全施策の事故削減に対する効果を、交通流シミュレーション装置によって事前に評価するためには、実交通での複雑な相互作用によって作り出される事故発生プロセスを忠実に模擬することによって交通事故が発生するような交通流シミュレーション装置が必要となる。すなわち、実交通における交通事故の主要因は、ドライバの知覚、認識、判断ミスにあると言われており、理想的な交通流シミュレーションは、仮想ドライバの「知覚」、「認識」、「判断」、「操作」という一連の認知的行為によって交通流シミュレーション内の仮想車両一台一台が移動することで複雑な交通流を出現させるインタラクティブな仕組みを具えたものであり、さらには「知覚」、「認識」、「判断」におけるドライバのミスを模擬し、それによって交通事故が発生するようにプログラムされていなければならない。
【０００８】
ここで、交通流シミュレーションプログラムにおいて仮想ドライバが「知覚」するとは、交通流シミュレーション装置内のシミュレーション対象地区の領域（例えば交差点や単路等からなる道路）に広範囲にわたって存在している複数の仮想車両並びに信号機及び建物等の静止物体の中から、当該仮想ドライバが搭乗している仮想車両の近くに位置する仮想車両及び／又は静止物体であって、遮蔽物によって遮蔽されていない可視な仮想車両及び／又は静止物体を検索することを意味する。また、仮想ドライバが「認識」するとは、仮想ドライバの知覚によって検索された仮想車両が先行車であるのか、対向車であるのか、信号機は赤なのか青なのかといったラベル付けを行うことを意味する。そして、仮想ドライバが「判断」するとは、認識された自車両の周りの仮想車両及び／又は静止物体の配置状況から、当該仮想ドライバに与えられた運転目的地へ到達するために必要な運転行動を決定することを意味する。さらに「操作」するとは、仮想車両を意図したように移動させるための仮想車両への入力を決定することを表す。
【０００９】
このような仮想ドライバの「知覚」、「認識」、「判断」、「操作」という模擬を行い、仮想ドライバ自らが判断して実際のドライバと同じように行動するシミュレーション装置は、従来は存在しなかった。
【００１０】
特許文献１や特許文献４では、上記のような仮想ドライバの模擬は行われておらず、実際のドライバと同じように行動するシミュレーションは行えなかった。
【００１１】
また、特許文献２では、仮想ドライバの「知覚」、「認識」という模擬を、移動体からの視界に変換した見かけの通行困難度分布に一元的に置き換えてしまっているため、仮想ドライバ自体の知覚ミス、具体的には前方不注意等が原因の事故等までシミュレーションすることができなかった。また、仮想ドライバの死角も考慮されていないため、実際の状況に即したシミュレーションも行えなかった。
【００１２】
さらに、特許文献３では、大きさの等しい１つのセルに１つのカテゴリしか指定できないものであり、セル内の車両の位置という概念は存在しないため、厳密なシミュレーションを行う場合にはセルを細かくしていく必要があった。しかしながら、セルを細かくしていった場合、車両の大きさを考慮すると１つのセルの大きさには車両が収まらないことが起こり得る。したがってセルを細かくするのにも限界があった。また、仮に複数のセルで１つの車両を表現しようとしてもそのための何らかの仕組みが必要となるが、特許文献３にはその記載はない。さらに、セル毎に状態量を変化させなければならないため、セルを細かくしていった場合にはセル数が増大するため計算時間が爆発的に増大してしまう恐れもあった。このように、特許文献３では、処理の複雑度や計算負荷の観点から、厳密なシミュレーションを行うのには適していなかった。
【００１３】
さらに、特許文献３における、車両として定義したセルの位置からは見ることができないセルを除外する概念は、単に仮想ドライバの視野方向の障害物から後側にあるセルをすべて取り除いているに過ぎない。駐車場における駐車スペースを探すという目的の単純なシミュレーションであればこれでも構わないが、実際の状況に即した交通流のシミュレーションを行おうとした場合、仮想ドライバの視野方向の障害物から後側にある移動体や静止物体が可視可能か否かが重要になってくる。特許文献３の技術ではこの後側の物体の可視判定が行えないため、例えば後側の大型車の可視判定や信号機の知覚・認識も行うことができないので、実際の状況に即したシミュレーションは不可能であった。また、障害物の後側にあるセルをすべて取り除く処理についても、セルを細かくしていった場合にはセル数が増大するため、大量のセルの中から後側の影になるセルを抽出するのには処理時間がかなり多く必要となってしまうことも容易に想像できる。
【００１４】
したがって、高速な処理が可能であり、且つ実際の状況に即した交通流のシミュレーションが行えるシミュレーション装置の開発が望まれていた。
【００１５】
本願発明は、上記の課題に鑑み発明されたものであって、仮想ドライバの知覚ミス、認識ミス、判断ミスによって交通事故が発生するような交通流シミュレーション装置であって、演算すべき移動体や静止物体の数が増加しても、ハードウエアに対する負荷の増加が少ないシミュレーション装置を提供することを課題とする。
【課題を解決するための手段】
【００１６】
上述した本発明の目的を達成するために、本発明による交通流シミュレーション装置は、情報を記憶する記憶手段であって、移動体の３次元位置と姿勢角と寸法とに関する移動体情報と、仮想ドライバ又は仮想歩行者であるエージェントの視点の３次元位置と視野とに関するエージェント情報と、シミュレーション対象地区を、複数の移動体が存在し得る程度の範囲を有する区画に分割して作成する複数のセクションの位置に関するセクション座標情報と、各セクション内に存在する移動体の数と識別番号とに関する存在情報マトリクス情報と、複数のセクション同士が交通網として連続して遷移可能であるか否かに関する遷移可能セクションマトリクス情報と、を記憶する記憶手段を有する。また、交通流シミュレーション装置は、エージェント情報とセクション座標情報とを用いて、指定されたエージェントの視野内に含まれるセクションを抽出するセクション抽出手段と、存在情報マトリクス情報を用いてセクション抽出手段により抽出されたセクションに存在する移動体を抽出し、抽出された各移動体に対する移動体情報と指定されたエージェントのエージェント情報とを用いて、３次元空間に存在する抽出された各移動体に対する、指定されたエージェントの仮想スクリーン上での２次元平面情報と抽出された各移動体の奥行き配置情報とを算出し、２次元平面情報と奥行き配置情報とを用いて、指定されたエージェントからの抽出された各移動体の可視判定を行うことで死角となる位置関係にある移動体を除外する、エージェントの知覚を模擬する知覚模擬手段と、知覚模擬手段に基づき指定されたエージェントが移動体を操作する移動体運動模擬手段と、移動体運動模擬手段による操作後の移動体の移動体情報とセクション座標情報とを用いて移動体のセクション間の遷移を検出し、遷移があれば遷移可能セクションマトリクス情報を用いて遷移した移動体が存在するセクションを特定し、遷移した移動体について存在情報マトリクス情報を更新する、移動体存在情報管理手段と、を具備するものである。
【００１７】
ここで、記憶手段は、さらに、静止物体の３次元位置と寸法とに関する静止物体情報を記憶し、存在情報マトリクス情報は、さらに、各セクション内に存在する静止物体の数と識別番号とに関する情報を含み、知覚模擬手段は、さらに、存在情報マトリクス情報を用いてセクション抽出手段により抽出されたセクションに存在する静止物体も抽出し、抽出された各静止物体に対する静止物体情報も用いて、３次元空間に存在する抽出された各移動体及び各静止物体に対する、指定されたエージェントの仮想スクリーン上での２次元平面情報と抽出された各移動体及び各静止物体の奥行き配置情報とを算出し、２次元平面情報と奥行き配置情報とを用いて、指定されたエージェントからの抽出された各移動体及び各静止物体の可視判定を行うことで死角となる位置関係にある移動体及び静止物体を除外しても良い。
【００１８】
さらに、知覚模擬手段により除外されず残った移動体又は静止物体に対して、所定の確率で移動体又は静止物体をさらに除外する見落とし処理を行っても良い。
【００１９】
またさらに、交通流シミュレーション装置を複数用い、各装置には、そのシミュレーション対象地区として少なくとも１つのセクションがそれぞれ割り振られており、各装置の記憶手段は、各装置に割り振られたセクションに関するセクション割り振り情報を記憶し、各装置の知覚模擬手段は、セクション割り振り情報を参照し、抽出されたセクションが他の装置に割り振られたセクションの場合には、そのセクションに割り振られた他の装置の存在情報マトリクス情報を参照して抽出されたセクションに存在する移動体に対する移動体情報を受信し、各装置の移動体存在情報管理手段は、セクション割り振り情報を参照し、遷移した移動体が存在する特定されたセクションが他の装置に割り振られたセクションの場合には、そのセクションに割り振られた他の装置に移動体情報を送信し、他の装置は、受信した移動体情報について存在情報マトリクス情報を更新するようにしても良い。
【００２０】
さらに、知覚模擬手段により知覚された移動体に対して認識模擬を行う認識模擬手段を有し、該認識模擬手段は、指定されたエージェントから見た各移動体に対する意味付けを行うようにしても良い。
【００２１】
また、このような交通流シミュレーション装置をコンピュータで実現するための本発明の交通流シミュレーションプログラムは、コンピュータを上記各手段として機能させるためのプログラムである。
【発明の効果】
【００２２】
本発明の交通流シミュレーション装置には、仮想ドライバであるエージェントが実際のドライバの知覚を模擬しているため、より現実の状況に近い交通流のシミュレーションが可能であるという利点がある。また、シミュレーション範囲内において移動体や静止物体の数が増加しても、存在情報マトリクス情報を用いて多数の移動体や静止物体の中から演算すべき移動体や静止物体を瞬時に抽出可能となるため、処理速度の向上及び、単位時間あたりの処理数の向上、システムに対する負荷を低減させる等の利点も有する。さらに、仮想ドライバの知覚ミス等も再現可能であるため、より正確に実際の状況に即した交通流のシミュレーションが可能であるという利点もある。
【発明を実施するための最良の形態】
【００２３】
以下、本発明を実施するための最良の形態を図示例と共に説明する。なお、以下、本明細書中では、「移動体」とは、自動車等の車両を対象に説明するが、本発明はこれに限定されず、船舶や航空機等、ドライバの操作によって移動するものであれば種々の物体が含まれても良い。また、本発明による仮想ドライバや仮想歩行者等、人間を模擬したものを、エージェントと呼ぶこととする。さらに、移動体は歩行者等も含む概念であっても良く、この場合には移動体とエージェントを同一視することが可能となる。
【００２４】
図１は、本発明の交通流シミュレーション装置の概略模式図である。交通流シミュレーション装置１は、パーソナルコンピュータ等の電子計算機であり、ＣＰＵ等の演算手段２、当該演算手段２によって処理されるデータ若しくは処理後のデータを記憶するハードディスク、ＲＡＭ、ＲＯＭ等の記憶手段３、入出力手段４等を備える。
【００２５】
記憶手段３には、本願発明におけるエージェントに関する情報やそれに応じて動作をシミュレーションするプログラム等が記憶されている。また、記憶手段３には、交通網の情報、具体的には道路に関するデータが記憶されており、さらに、この道路上で移動する移動体に関する情報、例えば車両の位置の情報やその大きさ、移動方向、移動速度等のデータも記憶されている。
【００２６】
なお、交通流シミュレーション装置１は、勿論１台でも構わないが、複数のコンピュータにより分散処理することも可能である。この場合、後述の存在情報マトリクスを用いることで、コンピュータ間の通信すべき必要最小限の情報を特定することが可能となり、コンピュータ間のトラフィックを軽減し処理速度を向上することも可能となる。
【００２７】
以下、エージェントについて説明する。図２は、本発明におけるエージェントを説明するためのブロック図である。図示の通り、エージェント２０は、知覚部２０１と認識部２０２と判断部２０３と操作部２０４とから主になるものである。このエージェント２０により移動体が操作される。シミュレーションを行うときに、指定されたエージェントにより操作されて移動させられる移動体を中心に説明すると、知覚部２０１は、記憶手段３に記憶されたエージェントに関する情報、具体的にはエージェントの視点の３次元位置と視野に関する情報を基に、指定されたエージェントから見て死角となる位置関係にある物体を、演算手段２により演算して検知し、知覚対象から死角となる物体を除外する。なお、死角となる位置関係にある物体には、歩行者や他の移動体は勿論のこと、信号機や街路樹、建物等の静止物体等、種々のオブジェクトが含まれる。死角は、他の移動体の影の位置や曲がった道路の先、建物の影等、様々な要因で生ずる。このようにして知覚部２０１でエージェントの知覚模擬を行う。
【００２８】
そして、この知覚部２０１の知覚結果に基づき、知覚された他の移動体の存在や位置、移動方向等を認識部２０２で識別し、それらと衝突を避けるために、このまま進むべきか止まるべきか、曲がるべきか等の判断を判断部２０３で行った上で、移動体を操作部２０４により操作する。これにより、実際のドライバが死角にいた歩行者を轢いてしまう等のシミュレーションを、実際に近い形で行うことが可能となる。
【００２９】
また、より現実に近いシミュレーションが可能となるように、知覚部２０１により除外されずに残った物体に対して、所定の確率で物体をさらに除外する見落とし処理を行うようにしても良い。これは、死角にならずに本来は見えているにも関わらず、脇見運転を行った場合のように見落とすことを模擬するために行う。これにより、さらに実際に近い形でシミュレーションを行うことが可能となる。なお、他のパラメータ、例えばドライバの年齢や運転嗜好、運転経験、生理的・精神的状態、安全態度等の個性を考慮したパラメータを追加しても良い。
【００３０】
なお、交通流シミュレーションを行うすべての移動体に対して死角になっているか否かを判断するのは処理時間の観点から無駄が多い。すなわち、交通流シミュレーション装置の実現、すなわちエージェントの認知的行為のプログラム化にあたって、演算処理量の最も多くなるのは「知覚」のための近接可視な仮想車両の検索処理である。最もシンプルなプログラム化の方法は、総当りによって仮想車両間の距離と可視性を調べることである。しかし、この方法によって多数存在している各車両それぞれについて位置関係等を演算により取得するには、領域内に存在する車両台数をＮとすると、１台の車両につき、Ｎ−１回の演算が必要であるから、Ｎ（Ｎ−１）回の演算が必要になり、Ｎが大きくなると計算量が膨大となってしまう。また、各車両は交通流として、次々と領域上を刻々と遷移していくものであり、時間の経過に合わせて、前述した車両間の相対的位置関係に基づいた検索処理を繰り返す必要がある。このように、総当りによる検索方法では演算処理量の増加に伴って使用するハードウエアに対する負担が多くなり、シミュレーション結果を算出する時間が長くなってしまう。交通事故は滅多に発生しない稀なイベントであり、交通安全施策の事故削減に対する効果を評価するためにはシミュレーション内の時間で少なくとも２〜３ヶ月分は計算を行う必要があり、シミュレーションの実行速度が遅いと実用に供しない。
【００３１】
したがって、本発明の交通流シミュレーションにおいては、セクション座標情報と存在情報マトリクス情報とを用いて演算すべき移動体や静止物体を抽出して絞り込む処理を行うことで、シミュレーションの高速化を図っている。ここで、セクション座標情報とは、シミュレーション対象区画を、複数の移動体が存在し得る程度の範囲を有する区画に分割して作成した複数のセクションの位置に関する情報である。また、存在情報マトリクス情報とは、各セクション内に存在する移動体の数と識別番号とに関する情報である。これにより、まず指定されたエージェントの視野内に含まれるセクションを抽出し、抽出されたセクションに存在する移動体を存在情報マトリクス情報により高速に抽出することが可能となる。このため、エージェントの視野内に存在する移動体を抽出することが可能となり、高速に視野外の移動体を除外することが可能となる。
【実施例】
【００３２】
以下、上述の交通流シミュレーション装置を実現するための、より具体的な例を説明する。図１の記憶手段３には、シミュレーション設定データとして道路に関するデータが記憶されており、本実施例においては、一例として東京都中央区の「三原橋交差点」を中心とした領域についての道路に関するデータが記憶されている。当該道路に関するデータとしては、セクション座標データ、存在情報マトリクスデータ、及び遷移可能セクションマトリクスデータがある。
【００３３】
まず、セクション座標データについて説明する。図３（ａ）は、シミュレーション対象地区として「三原橋交差点」を中心とした半径約１００ｍｍの地域を表した地図である。同地図に記載した２点鎖線による複数の円は、交差点の中央を中心として半径約２０ｍ毎に描いた線である。本実施例では、当該「三原橋交差点」付近の地図（主として車道）を演算処理可能なデータとするために、シミュレーション対象地区を所定の区画に分割したセクションに関する座標データを作成する。なお、当該座標データは、北緯・東経によって表される絶対座標の他、代替的にＸＹ座標（道路座標と呼ぶ）を用いてモデル化した座標データであっても良い。本実施例においては、後者のＸＹ座標を用いてモデル化した座標データを作成し、以後の演算に使用する。図３（ｂ）は、図３（ａ）に記載した地図の中心部を交差する２本の幹線道路をモデル化するために、交差点の中央から約２０ｍ単位で車線を区切り、当該区切られた領域を１つのセクションとしてそれぞれ符号（Ｓ１〜Ｓ２８）を付したものである。なお、図示例では車道についてのみセクションを作成したが、必要により車道以外の街路樹や建物が存在し得る領域にもセクションを作成しても良い。また、図３（ｂ）では、交差点の中央からの等間隔にセクションを定義しているが、必ずしも等間隔にセクションを作成しなければいけないというわけではない。セクションの大きさは、当該道路の交通量に応じて、例えば交通量が多い箇所は密に、交通量が少ない箇所は大きく、というように、任意に設定が可能である。但し、上述のような視野内のセクションを抽出することにより移動体を抽出する高速化の手法を有効ならしめるためには、セクションは複数の移動体、すなわち少なくとも２つ以上の移動体が存在し得る程度の範囲を有するように区画分割されて作成される必要がある。このように、セクションの大きさは、小さすぎると視野内のセクションの抽出に時間がかかる一方、大きすぎると抽出したセクション内に存在する物体の視野内判定に時間がかかるものであるため、交通量や物体の存在数に応じて、適宜決定される。
【００３４】
図４は、図３（ｂ）に示した各セクションＳ１〜Ｓ２８で示した領域を、交差点の中央の座標を（Ｘ，Ｙ）＝（０，０）としたＸＹ座標によってモデル化したものである。本実施例においては同図に表したようにセクション座標（道路座標）によって各セクションを定義する。例えば、図３（ｂ）に示した交差点内を４分割した各セクションＳ１、Ｓ２、Ｓ３、Ｓ４で示された領域は、モデル化した図４記載の道路座標では次の（Ｘ，Ｙ）座標で表される。すなわち、セクションＳ１とは（Ｘ０，Ｙ０）と（Ｘ１，Ｙ１）で定義される領域、セクションＳ２とは（Ｘ−１，Ｙ０）と（Ｘ０，Ｙ１）で定義される領域、セクションＳ３とは（Ｘ−１，Ｙ−１）と（Ｘ０，Ｙ０）で定義される領域、セクションＳ４とは（Ｘ０，Ｙ−１）と（Ｘ１，Ｙ０）で定義される領域として代替的に表される。なお、図４では説明の便宜上、座標値を０、１、２のような整数値としたが、実際の道路座標系の座標値としては、実際の寸法値に近似した実数値が入力されるようになっていても良い。また、実際の道路は起伏があったり高架道路があったりするため、ＸＹＺ座標により３次元でモデル化しても良い。
【００３５】
以上説明したように、セクション座標データとは、シミュレーション対象地区を所定の大きさの区画に分割してモデル化した際のセクションの位置を定義するための座標系を表す道路データである。
【００３６】
次に、存在情報マトリクスデータについて説明する。図５は、セクション内における移動体の存在情報を示す表である。同表は、道路上の各セクション内に存在する車両の数と識別番号を、逐次時間の経過とともに表すための表である。当該表として表されるデータは、セクション番号を指定すれば、そこに存在する車両の台数及び識別番号を取り出すことができるデータ群である。
【００３７】
なお、図示例では存在情報マトリクスデータとしては車両についてのみの情報を示しているが、本発明はこれに限定されず、歩行者等を含めた移動体の存在情報が含まれていても良い。すなわち、車両の識別番号と台数の代わりに、エージェントの識別番号と人数を取り出すことができるデータ郡としても良い。さらに、存在情報マトリクスデータは、各セクション内に存在する信号機や街路樹等の静止物体の数と識別番号も有するようにしても良い。また、移動体の存在を示すための存在情報マトリクスデータとは別に、静止物体のみの存在を示す静止物体存在情報マトリクスデータを別途設け、セクション内に存在する物体を特定するときには移動体存在情報マトリクスデータと静止物体存在情報マトリクスデータの２つを用いて、移動体と静止物体を抽出するようにしても良い。さらに、存在情報マトリクスデータは、説明上、車両の識別番号と台数を示す情報としたが、記憶される情報が識別番号のみであっても、識別番号の数をカウントすることで容易に台数は把握できるものである。
【００３８】
次に、遷移可能セクションマトリクスデータを、図６を用いて説明する。図６は、遷移マトリクスを示す表である。遷移マトリクスとは、道路座標上の任意のセクションが他のどのセクションと連続しているのかを配列した隣接領域データである。なお、後ほど説明するように、車両（車両モデル）は２次元平面上を運動学に従って連続的に移動するものであり、あるセクションから別のセクションへと離散化された空間を瞬間的に移動するわけではないので、あくまで当該遷移マトリクスとは、セクション内に存在する車両の直近の移動可能範囲を表したものである。
【００３９】
さらに、記憶手段３には、シミュレーション設定データとして、車両に関する移動体データやエージェントに関するエージェントデータが記憶されている。また、その他の物体として、例えば信号機に関するデータや歩行者に関するデータも記憶されていても良い。
【００４０】
移動体データとは、道路上を移動する例えば車両をモデル化した車両データであり、車両の寸法や３次元位置に関する情報を保持し、時間と共に運動学に従って位置、姿勢角が変更されるものである。各車両は、車両毎に異なる識別番号（本実施例においては、自然数）が付されており、３次元位置（Ｘｖ，Ｙｖ，Ｚｖ）で表される浮動小数点型の変数による３次元位置情報と、角度Фｖで表される車両の姿勢角と、車両の幅、高さ、奥行き等を意味する寸法の情報を有している。なお、寸法は簡略的にモデル化したものでも良いし実際の車両をベースに詳細にモデル化したものであっても良い。
【００４１】
また、エージェントデータとは、仮想ドライバや仮想歩行者の視点の３次元位置、視野方向と視野角（θｖ，αｖ）等の視野情報、知覚された他の物体のデータ格納用変数、車両操縦コマンド等、各種情報を有するデータである。なお、エージェントの視点については、直接的に３次元位置を与えても良いし、エージェントの身長（座高）等の情報と車両の座席の高さ等の情報を用いて３次元位置を与えても良い。また、視野方向については、絶対座標を基準に視野角を与えても良いし、車両の姿勢角の中心線を基準に車両に対する相対角として視野角を与えても良い。
【００４２】
さて、これらの各データを用いた交通流のシミュレーションの処理工程を、図７を用いて説明する。図７は、本発明の交通流シミュレーション装置の処理工程を説明するためのフローチャートである。シミュレーションが開始されると、記憶手段３に記憶された道路座標（図４参照）、存在情報マトリクス（図５参照）、遷移可能セクションマトリクス（図６参照）、車両等の移動体データ、エージェントデータ、信号機等の静止物体データ、歩行者データ等の各種データが読み込まれると共に、各データが保有する変数等の初期化が行われる（ステップＳ１）。なお、静止物体データは車両データと区別なく扱い、単に時間的変化がない移動体データとして静止物体を扱うようにしても良い。また、歩行者データについても、エージェントデータ自体を歩行者データや運転手データを含むものとして扱うようにしても良い。
【００４３】
次いで、交通流シミュレーションが作り出す仮想世界の中における時間であって、その時間で何時間分（あるいは何日分、何ヶ月分）のシミュレーションを行うのかという実行時間と、交通流シミュレーションが作り出す仮想世界の中における時間を何秒単位で進めるのかというシミュレーション時間間隔（あるいはサンプリング時間と呼ぶ）等を入出力手段４等を用いて設定する（ステップＳ２）。本実施例における交通流シミュレーションでは、仮想世界の中における時間で１時間分のシミュレーションを行うとすると、実際に計算に掛かる実時間は数分であっても、交通流シミュレーションの中の時間では１時間経過したことになる。また、サンプリング時間は、交通流シミュレーションが作り出す仮想世界の中における時間を進める単位であり、例えば、０．１秒毎に仮想世界の中における時間を進める。したがって、０．１秒単位で実行時間１時間分の計算を行うとすると、６０分×６０秒×１０回＝３６０００回の繰り返し計算が行われることになる。
【００４４】
続くステップを説明すると、シミュレーション対象地区座標上に存在するエージェントすべてについて、エージェント毎に、知覚の模擬シミュレーション（ステップＳ３〜Ｓ７）を行った後、当該知覚の模擬に基づいて移動体である車両を判断・操作（ステップＳ８）する。すなわち、エージェントの知覚の模擬に基づいて必要な運転操作を判断し、移動体の操作を実行する。そして、この判断・操作に基づいて、実際に各移動体を移動させる模擬（ステップＳ１０）を行い、各移動体の移動に伴うセクション間の遷移があった場合の処理（ステップＳ１１〜Ｓ１３）を行い、一回のサンプリング時間分時間を進める（ステップＳ１４）というものである。以降、指定された実行時間に至るまで、上記の処理がサンプリング時間毎に繰り返される。以下、これらのステップをより詳細に説明する。
【００４５】
エージェントの知覚の模擬に関するシミュレーションでは、まず視野内のセクションの特定が行われる（ステップＳ４）。この処理は、指定されたエージェントの視点の３次元位置を基準として、エージェントの視野情報を用いて視野に含まれるセクションを特定するものである。視野情報には、視野角が含まれるが、視野角とは、視線・目線の方向である視野方向を中心とした、視覚で認識として可能な角度であって、本実施例においては例えば一般的に言われている±６０度ほどの範囲に設定される。視野外とは当該視野角の範囲外をいうものである。人間は、自分の周囲３６０度すべての方向を同時に見る事はできず、ある一瞬に良く見る事の出来る範囲（視野）は、顔が前を向いている方向（正確には視線・目線の方向）を中心として、±６０度ほどの範囲であると言われている。したがって、例えば、前を向いて車を運転しているとき、自分の後ろにいる車は（ルームミラーなしでは）見る事ができない。また、自分が後ろを向いていれば、後ろの車は知覚対象となり、反対に自車の前方にいる車が視野外となる。したがって、エージェントの視点の３次元位置と視野方向と視野角が含まれる視野情報とを用いて、エージェントの視野内のセクションの抽出が行われる。ここで、ルームミラー等による視野の拡大についても考慮しても勿論良い。
【００４６】
なお、計算効率等を考慮しなければ、指定されたエージェント以外のすべての移動体や静止物体に対して知覚の模擬を行っても良いが、シミュレーションの高速化のためには計算時間を減らす必要がある。そこで、本発明では、まず視野内のセクションの抽出を行い、抽出されたセクション内に存在する移動体や静止物体を存在情報マトリクスデータを用いて抽出することを行っている。これによりすべての移動体や静止物体に対して視野内に存在するか否かの判断を行う必要がないので、シミュレーションの高速化が図れる。このように、本発明のシミュレーション装置では、物体位置は物体が独自に持っており、セクションにはそこに存在する物体の識別番号のみが記憶されているので、物体の位置情報と物体の存在情報の独立化を行っている。これにより計算の効率化が図れる。
【００４７】
次に、抽出されたセクション内に存在する物体に対して、エージェントの視野外の物体の除外が行われる（ステップＳ５）。この処理は、ステップＳ４で特定された視野内のセクションに存在する物体の中から、指定されたエージェントから見た視野角の中に含まれる他の車両や歩行者等の移動体や、信号機や建物等の静止物体を得るために、視野外の移動体や静止物体を除外する処理である。すなわち、まずセクション単位で大まかに物体を抽出し、その抽出された物体の中から視野外の物体を除外して、最終的に可視判定を行うべき物体を特定している。具体的には、指定されたエージェントの視野に関する視野情報を用いて、抽出された各移動体や各静止物体が視野に含まれるか否かを判定する。
【００４８】
図８は、自車（指定されたエージェントが搭乗する車両）と他の車両等の物体との位置関係をＸＹ座標を用いて表した図である。なお、視野に関しては２次元平面で説明するが、３次元空間において視野に含まれるか否かを判定する必要がある場合には３次元空間に拡張すれば良い。まず、自車の位置を（ＸＶ、ＹＶ）とし、他の物体の位置を（Ｘｐ、Ｙｐ）とする。また、自車の姿勢角をФＶ、エージェントの視野方向と視野角を（θＶ，αＶ）とする。
【００４９】
以下に、自車に搭乗しているエージェントから視認可能な前方角度（視野角）の範囲内に他の物体が存在しているか否かを判定するための演算内容を説明する。自車両位置（ＸＶ、ＹＶ）に対する他の物体の相対位置ｒ（ｒｒｅｌＸ，ｒｒｅｌＹ）は、次式で表せる。
【数１】
2008203913.tif 000003
また、左右の視野の限界を与えるベクトルｓ１、ｓ２は、それぞれ数２、数３で表せる。
【数２】
2008203913.tif 000004
【数３】
2008203913.tif 000005
上記数２、数３を用いてｒを表すと、次式になる。
【数４】
2008203913.tif 000006
線形代数学によれば、ａ＞０かつｂ＞０であれば、ｒはｓ１とｓ２に挟まれる領域に存在することになるから、ａ，ｂを求めれば、他の物体がエージェントの視野内にいるか視野外にいるかを判別することができる。
【００５０】
ここで、ａ，ｂは次式で表せる。
【数５】
2008203913.tif 000007
ここで、ｓｉｎα＞０であることから、ａ，ｂはそれぞれ数６、数７で求められる。
【数６】
2008203913.tif 000008
【数７】
2008203913.tif 000009
この演算の結果、ａ，ｂが共に０よりも大きい場合（ａ＞０，ｂ＞０）には他の物体の相対位置ｒは視野内であり、ａ又はｂの何れかが０以下であるならば他の物体の相対位置ｒは視野外であると判定する。
【００５１】
なお、以上の数１から数７の処理は、エージェントの視野内のセクションに存在している他の物体すべてについて行うものであり、視野内にある移動体や静止物体の識別番号を保存するとともに、物体の総数をカウントする。
【００５２】
このようにして視野外の物体を除外した後、隠れ物体の除外処理を行う（ステップＳ６）。この処理は、ステップＳ５にて除外されて残った視野内に存在する物体に対して、指定されたエージェントから見て死角となる位置関係にある物体、すなわち、他の車両や建物等の障害物によって遮蔽されたために知覚することが出来ない隠れ物体を除外する処理である。
【００５３】
実際のドライバは、死角になって隠れて見えないものを見ることができないので、本発明の交通流シミュレーションでも同様の模擬を行う。実際に事故が起きる原因として、何かの陰に隠れていて見えなかったものが急に出てきて衝突したというようなことがあるので、そのような状況を模擬するために、隠れて見えないものの情報をエージェントに伝えないために当該処理をするものである。本実施例における交通流シミュレーション装置では、このような知覚・認識・判断のミスによって事故の発生をシミュレーションするものであり、いつ事故が発生するかは、実際の交通流における事故の発生と同様に、まったく確率的になっている。
【００５４】
このような死角となる物体の除外処理は、図９に示すように、抽出された視野内の物体の位置と姿勢角(ＸＯ，ＹＯ，ＺＯ，ΦＯ)、物体の寸法である長さ、幅、高さ(ｌ，ｗ，ｈ)、エージェントの視野方向と視点の座標(θＶ，ＸＥ，ＹＥ，ＺＥ)、指定されたエージェントが搭乗する移動体の位置と姿勢角（ＸＶ，ＹＶ，ФＶ）に基づいて行われるものである。なお、抽出された視野内の物体が静止物体の場合には、静止物体の存在位置が明らかであるため、姿勢角は用いなくても良い。また、エージェント自体、すなわち歩行者としたエージェントをシミュレーションしたい場合等には、指定されたエージェント自体の位置に基づき除外処理を行えば良い。
【００５５】
この死角となる物体の除外処理は、指定されたエージェント前方の仮想スクリーン上における３次元空間に存在する抽出された各物体の見え方、すなわち仮想スクリーン上での２次元平面情報と、エージェントから各物体までの距離に関する各物体の奥行き配置情報とを算出し、各物体のエージェントからの可視判定を行うものである。具体的には、図９に示すように、視野外の物体の除外によって抽出された複数の視野内の物体（入力されたオブジェクト）について、エージェント前方の仮想スクリーンへの透視変換を施し、仮想スクリーン上での２次元平面情報を得ると共に、エージェントからの距離を算出する処理を行う（Step１）。そして、奥行き配置情報を得るために、抽出された物体を、自車（エージェント）からの距離によってソートする処理を行い（Step２）、奥から手前に向かって可視判定を行い、可視物体を決定する処理を行うこと（Step３）。これにより視野内の可視物体の総数と識別番号を得るものである。なお、ソート処理にはクイックソートのアルゴリズムを用いるのが好ましい。また、仮想スクリーンとは、処理の便宜上導入したものであり、人間の網膜に相当するものである。例えば、同じ大きさの物体でも、それが自分から遠くに置かれていれば小さく見え、近くなら大きく見える。このように、物体がどのように見えるかは、物体の大きさそのもののほかに、どの位置にあるか、どの方向を向いているかが重要となる。物体の大きさと置かれている距離、姿勢角を同時に考慮して、エージェントからどのように見えるかを知るには、透視変換（遠近法）と呼ばれる方法で、３次元空間を２次元平面へ移せば良く、その２次元平面のことをここでは仮想スクリーンと呼んでいる。なお、「仮想」とあるのは、実際のドライバはこのようなことをしておらず、便宜上導入しただけなので仮想としている。
【００５６】
図１０は、前記Step１の具体的な処理の内容を説明するための説明図である。車両に搭乗するエージェントの視点の道路座標系における座標（Ｘｅ，Ｙｅ，Ｚｅ）は、次式で表される。
【数８】
2008203913.tif 000010
【００５７】
また、他の車両を略長方形状の物体と仮定すると、道路座標系における当該他の車両の四隅の座標（Ｘ１，Ｙ１，±Ｚ１）、（Ｘ２，Ｙ２，±Ｚ２）、（Ｘ３，Ｙ３，±Ｚ３）、（Ｘ４，Ｙ４，±Ｚ４）は、それぞれ数９、数１０、数１１、数１２で表される。
【数９】
2008203913.tif 000011
【数１０】
2008203913.tif 000012
【数１１】
2008203913.tif 000013
【数１２】
2008203913.tif 000014
【００５８】
これら物体を仮想スクリーン上に投影するための前処理として、これら物体の４隅の（Ｘ，Ｙ）座標系での値を、エージェントの視線の方向をｘ軸、仮想スクリーンの横方向をｙ軸とする（ｘ，ｙ）座標系での値に座標変換して表すと、次式のように表すことができる。
【数１３】
2008203913.tif 000015
【００５９】
なお、図１０中、ｄは、エージェントから仮想スクリーンまでの距離を表している。この距離によって、投影された図の縮尺が変わる。但し、投影される物体同士の相対的な大小関係が変わるわけではないので、隠れ物体を除外するというためには、この値をいくつに設定するかということはあまり重要ではない。本実施例では、ｄをエージェントからフロントガラスまでの距離程度として、１．０ｍと設定している。
【００６０】
上記のようにして得た物体の４隅の座標を透視変換すると、仮想スクリーン上に透視される物体の座標は次式で表せる。
【数１４】
2008203913.tif 000016
そして、仮想スクリーン上に透視された物体の輪郭を与える座標は次式のように決定される。
【数１５】
2008203913.tif 000017
【００６１】
また、エージェントからの距離は次式によって算出することができる（Step２）。
【数１６】
2008203913.tif 000018
これによって、仮想スクリーン上での形状（２次元平面情報）と、エージェントから各物体までの距離が分かるので、エージェントから遠い物体から順番にソートして物体の奥行き配置情報を得て、後述の可視判定を行うことができる状態となる。なお、ソートにはクイックソートのアルゴリズム、具体的にはＺソート法のアルゴリズムを用いれば良い。
【００６２】
次に可視判定（Step３）について説明する。可視判定は、上記数１６によって算出された自車と他の車両及び他の物体との距離の遠近によって、近い（最前面）側から遠い（最奥面）側に向かって物体を並び変えて物体の奥行き配置情報を得た後に、これらの物体が可視可能であるか否かを判定する処理である。図１１は、可視判定ベクトルを表している。可視判定ベクトルとは物体の奥行き情報と可視不可視を判定できる配列であり、最前面側に位置する物体から最奥面に位置する物体のそれぞれについて、エージェント（自車）から見えるか否かを「１」「０」で表した要素である。可視判定の具体的な手順を以下に説明するが、ベクトルの要素とは、例えば、ａ＝［０  １］というベクトルがあったときに、０や１等、ベクトルを構成する数値のことを「要素」といい、可視判定ベクトルの最後の要素というと、可視判定ベクトルを構成する数値の並びの中で、一番最後の数値のことを意味する。本実施例の場合、可視判定ベクトルを構成する数値とエージェントが知覚可能な物体とは一対一に対応しているので、要素＝物体と考えることができる。したがって、可視判定ベクトルの最後の要素を１にするということは、一番遠くにある物体は可視であるとすることを意味する。可視判定は、具体的には以下の手順で行われる。
（１）可視判定ベクトルの最後の要素の値を１にする
（２）Ｉ＝１〜Ｎ−１について、以下の（３）、（４）を繰り返す
（３）可視判定ベクトルのＮ−Ｉ番目の要素の値を１にする。すなわち、Ｎ−Ｉ番目の物体とエージェントの間に物体が無いと仮定する。
（４）Ｎ−Ｉ番目の物体と、可視判定ベクトルの要素の値が１であるＮ−Ｉ番目以降の物体との遮蔽判定を行う。すなわち、Ｎ−Ｉ番目の物体よりも奥にある可視可能物体とを比較して可視判定を行う。可視の場合は、可視判定ベクトルの値はそのまま、また必要があれば可視領域の修正を行い、不可視の場合は、可視判定ベクトルの値を０に変更する
【００６３】
ここで、上記の遮蔽判定についてより具体的に説明する。図１２は、遮蔽判定を説明するための図であり、Ｉ＝２番目の物体がＩ＝１番目の物体によって遮蔽されているのか否かを判定する場合を表したものである。仮想スクリーン上におけるＩ＝１番目の物体（オブジェクト１）の外形の座標は、（ｙｍａｘ１，ｚｍａｘ１），（ｙｍｉｎ１，ｚｍｉｎ１）によって表される。また、仮想スクリーン上におけるＩ＝２番目の物体（オブジェクト２）の外形の座標は、（ｙｍａｘ２，ｚｍａｘ２），（ｙｍｉｎ２，ｚｍｉｎ２）によって表される。そして、オブジェクト２がオブジェクト１によって遮蔽されているか否かは、以下のように判定する。
ｙｍａｘ１＞ｙｍａｘ２、ｙｍｉｎ１＜ｙｍｉｎ２、ｚｍａｘ１＞ｚｍａｘ２、ｚｍｉｎ１＜ｚｍｉｎ２
この条件をすべて満たす場合には、オブジェクト２はオブジェクト１に完全に遮蔽されているので不可視と判断する。
ｙｍａｘ１＞ｙｍａｘ２、ｙｍｉｎ１＞ｙｍｉｎ２、ｙｍａｘ２＞ｙｍｉｎ１
この条件をすべて満たす場合には、オブジェクト２はオブジェクト１に部分的に遮蔽されているので可視と判断すると共に、ｙｍａｘ２＝ｙｍｉｎ１に変更する。
ｙｍａｘ１＜ｙｍａｘ２、ｙｍｉｎ１＜ｙｍｉｎ２、ｙｍａｘ１＞ｙｍｉｎ２
この条件をすべて満たす場合には、オブジェクト２はオブジェクト１に部分的に遮蔽されているので可視と判断すると共に、ｙｍｉｎ２＝ｙｍａｘ１に変更する。
ｙｍｉｎ１＞ｙｍａｘ２、ｙｍｉｎ２＞ｙｍａｘ１、ｚｍｉｎ１＞ｚｍａｘ２、ｚｍｉｎ２＞ｚｍａｘ１
この条件の何れかを満たす場合には、オブジェクト２はオブジェクト１を遮蔽していないので可視と判断する。
【００６４】
図１３は、隠れ物体の除外についての具体例を表したものであり、図１３（ａ）は一例としての自車と他の物体の上から見た配置を表しており、図１３（ｂ）は、自車に搭乗するエージェントから見た仮想スクリーン上に表される他の各物体の輪郭（２次元平面情報）を表したものである。図１３（ａ）の場合、エージェントから見て一番手前側から「大型車」（Ｉ＝１）、「乗用車」（Ｉ＝２）、「乗用車」（Ｉ＝３）、「信号機」（Ｉ＝４）の順で各物体が並んでいる。当該各物体の並び順は、数１６に示した式に基づいて算出される。図１３（ａ）に示した各物体の配置を、エージェントの仮想スクリーン上での２次元平面情報として表すと図１３（ｂ）のようになる。すなわち、一番手前側に「大型車」（Ｉ＝１）が見え、当該「大型車」によって「乗用車」（Ｉ＝３）及び「信号機」（Ｉ＝４）が隠され、「乗用車」（Ｉ＝２）の一部が「大型車」によって隠された状態になっている。この場合の、「乗用車」（Ｉ＝３）及び「信号機」（Ｉ＝４）が「隠れ物体」となる。
【００６５】
各物体が「隠れ物体」であるか否かの判定は、図１１、図１２を用いて説明した可視判定ベクトルによって行われる。具体的には、図１４に示すように、はじめに一番遠い「信号機」（Ｉ＝４）の可視判定ベクトルのＩ＝４の要素の値を「１」とする。次に、「信号機」（Ｉ＝４）が「乗用車」（Ｉ＝３）によって遮蔽されているか否かを判断する。この例では遮蔽されていないので、可視判定ベクトルのＩ＝４の要素の値には「１」を記録し、「乗用車」（Ｉ＝３）の要素の値にも「１」を記録する。次いで、「乗用車」（Ｉ＝３）が「乗用車」（Ｉ＝２）によって遮蔽されているか否か、及び「信号機」（Ｉ＝４）が「乗用車」（Ｉ＝２）によって遮蔽されているか否かを判断する。この例では、「信号機」（Ｉ＝４）及び「乗用車」（Ｉ＝３）は「乗用車」（Ｉ＝２）によって遮蔽されていないので、可視判定ベクトルのＩ＝２、Ｉ＝３、Ｉ＝４の要素の値にはそれぞれ「１」が記録される。なお、「乗用車」（Ｉ＝３）は、「乗用車」（Ｉ＝２）と一部重なる部分があるので、「乗用車」（Ｉ＝３）の可視領域を修正する。次いで、「乗用車」（Ｉ＝２）が「大型車」（Ｉ＝１）によって遮蔽されているか否か、「乗用車」（Ｉ＝３）が「大型車」（Ｉ＝１）によって遮蔽されているか否か、及び「信号機」（Ｉ＝４）が「大型車」（Ｉ＝１）によって遮蔽されているか否かを判断する。図示した例では、「乗用車」（Ｉ＝２）は「大型車」（Ｉ＝１）に遮蔽されておらず、前記可視領域が修正された「乗用車」（Ｉ＝３）及び「信号機」（Ｉ＝４）が「大型車」（Ｉ＝１）に遮蔽されていると判断されるので、可視判定ベクトルのＩ＝１、Ｉ＝２の要素の値には「１」が記録され、Ｉ＝３、Ｉ＝４の要素の値には「０」が記録される。
【００６６】
以上の処理により、この状態における可視判定ベクトルは「１１００」となり、可視判定ベクトルが「０」である「乗用車」（Ｉ＝３）及び「信号機」（Ｉ＝４）は、死角となる位置関係にあるということで除外される。
【００６７】
このように、本発明では、物体の２次元平面情報と奥行き配置情報を用いることで、装置（エージェント）に物体の可視判定が行えるようにしている点に特徴がある。単に表示画面にＣＧを映し出すための従来のＣＧ技術の場合には、画面を実際に見る人間が物体の可視判定を行うに過ぎないが、本発明ではコンピュータ上等で実現されるエージェントが物体の可視判定を行わなければいけないため、上述のような可視判定ベクトルによる物体の可視判定の概念が重要となる。
【００６８】
そして、この死角となる位置関係にある物体の除外後、視野内の可視物体を見落とすというヒューマン・エラーを模擬する処理を行う（図７のステップＳ７）。この処理は、図１５に示すように、その前までの処理によって除外されず残った視野内の可視物体の総数と識別番号及び見落としが発生する確率に基づき行われるものである。図１５に示すように、まず一様分布に従う０から１までの間の実数値をランダムに発生させる。次に、当該ランダムに発生させた数値が、上記「見落としが発生する確率」よりも小さい（ｙｅｓ）か否（ｎｏ）かを判定する。上記ランダムに発生させた数値が「見落としが発生する確率」よりも小さい（ｙｅｓ）場合には、見落としによって知覚されない物体として除外する処理を行う。また、ランダムに発生させた数値が「見落としが発生する確率」よりも大きい（ｎｏ）場合には、知覚された物体として、総数と識別番号を記憶用変数に記憶する処理を行う。
【００６９】
以上のように、図７に示した知覚の模擬（ステップＳ４〜ステップＳ７）を行った後に、知覚の模擬による情報に基づいて、エージェントに対して判断及び車両の操作を行わせる（ステップＳ８）。なお、エージェントが車両に搭乗していれば車両の操作を行わせるが、エージェントが歩行者である場合には自らの歩行動作を行わせることになる。次いで、シミュレーション領域内に存在するすべてのエージェントについて、同様に知覚の模擬及び当該知覚の模擬による情報に基づくエージェントの判断及び車両の操作を行わせる処理を行わせる。
【００７０】
これらの処理の後、指定されたエージェントが搭乗する自車についてエージェントによる車両の操作に基づき車両の運動模擬、移動を行わせる処理を行い（ステップＳ１０）、自車の移動に基づいて次に説明するセクション間遷移の検出（ステップＳ１１）、セクション間の遷移の判定（ステップＳ１２）、存在情報マトリクスの更新（ステップＳ１３）等の処理を行う。
【００７１】
ステップＳ１０に示す車両の運動模擬及び移動処理を行った後、車両が別のセクションへと移動した場合には、存在情報マトリクスの内容を書き換える必要があるので、以下に示す処理内容によって存在情報マトリクスの更新を行う。
【００７２】
以下、図１６等を用いて、ステップＳ１１のセクション間遷移の検出からステップＳ１３の存在情報マトリクスの更新までの処理について説明する。車両の位置、これまでにいたセクション番号、各セクションの２隅の座標が、それぞれ（ＸＶ，ＹＶ）、Ｓｉ、（ＸＳｍａｘ，ＹＳｍａｘ）（ＸＳｍｉｎ，ＹＳｍｉｎ）で与えられる。また、前述した図６に示す遷移可能セクションマトリクスに示した情報が与えられる。各セクションの２隅の座標及び遷移可能セクションについては、シミュレーション実行前に予め設定されている。これらの情報に基づき、各車両についてセクション間の遷移（移動）を検出し（ステップＳ１１）、遷移があった場合（ステップＳ１２）に、存在情報マトリクスの更新（ステップＳ１３）が行われる。
【００７３】
図１７は、セクション間の遷移検出についての説明図である。まず、（ＸＶ，ＹＶ）、Ｓｉ、（ＸＳｍａｘ，ＹＳｍａｘ）（ＸＳｍｉｎ，ＹＳｍｉｎ）を基に、これまでのセクションに物体が存在しているか否かの確認（存在確認）を行う。存在確認は、図１８を用いて以下に説明する方法で行われる。同図において、車両の位置は（ＸＶ１，ＹＶ１）、（ＸＶ２，ＹＶ２）で表される。このとき、セクションの左下、右上の頂点から車両までの位置ベクトルは、次式で与えられる。
【数１７】
2008203913.tif 000019
これらの位置ベクトルの要素を用いて、次式に示すＰＸとＰＹを算出する。
【数１８】
2008203913.tif 000020
このＰＸとＰＹを用いて、ＰＸ≦０及びＰＹ≦０の場合には車両はセクション内に存在すると判断され、ＰＸ＞０又はＰＹ＞０の場合には車両はセクション内に存在しないと判断される。
【００７４】
このような判断によって、これまでのセクション内にまだ存在していると判断された場合には、決定されたセクション番号Ｓｊを入力されたセクション番号Ｓｉとする。一方、これまでのセクション内に存在していないと判断された場合には、図６に示す遷移可能セクションで指定されるセクションについて存在確認を行い、車両が存在しているセクションを探し出し、その番号を決定されたセクション番号Ｓｊとする。
【００７５】
セクション間の遷移の判定（ステップＳ１２）では、決定されたセクション番号Ｓｊと入力されたセクション番号Ｓｉとを比較し、それらが異なる場合には、セクション間の遷移が起ったか否かを示す変数Ｆｌａｇ＿Ｔｒａｎｓを１とし、同じ場合には０とする。以上の処理により、車両が存在しているセクションと変数Ｆｌａｇ＿Ｔｒａｎｓの値（０又は１）が得られる。
【００７６】
次に、図１９、図２０を用いて存在情報マトリクスの更新について具体的に説明する。図１９（ａ）は、修正前の存在情報マトリクスを表しており、セクションＳｉ内に存在する車両台数は４台であり、セクション内に存在する車両の識別番号は、「７」「Ｗ」「９」「１０」でありそれぞれ当該順序で並んでいる状態を表している。また、当該セクションＳｉに隣接するセクションＳｊ内に存在する車両台数は３台であり、セクション内に存在する車両の識別番号は、「２」「４」「１３」であり、それぞれ当該順序で並んでいる状態を表している。
【００７７】
図１９（ａ）に示した状態から、車両「Ｗ」がセクションＳｉからセクションＳｊに遷移した場合の存在情報マトリクスの修正について説明する。存在情報マトリクスの修正を行う場合には、「遷移前のセクション番号」、「遷移後のセクション番号」、「車両の識別番号」に基づいて次の処理が行われる（図１８参照）。存在情報マトリクスのｉ行目（セクションＳｉ）から、値がＷの列を探す。そして、Ｗがあった部位に０を代入するとともに、０を代入した部位の右側列に他の車両（他の識別番号）がある場合には左に詰め、車両総数を１減らす処理を行う。当該処理によって、図１９（ａ）に示した存在情報マトリクスが、図１９（ｂ）のセクションＳｉの行に示すように修正される。
【００７８】
次に、存在情報マトリクスのｊ行目から、値が０になる初めの列の要素にＷを代入し、車両総数に１を足す。以上の処理により、車両（一例として識別番号＝Ｗの車両）がセクション間を遷移した場合の存在情報マトリクスの更新が行われる。
【００７９】
なお、静止物体については、静止しているので遷移はないため、セクション間の遷移の検出は行う必要はないが、静止物体の情報を、時間的移動がないというだけで移動体と区別無く扱っている場合には、上記と同様の手法で処理を実行すれば良い。また、存在情報マトリクスとは分けて静止物体存在情報マトリクスを用いる場合には、修正後の存在情報マトリクスと静止物体存在情報マトリクスの２つを用いて以降の処理を行うようにしても良い。
【００８０】
上述のように、セクション間の遷移を検出し遷移があった場合には存在情報マトリクスの更新処理をシミュレーション領域内に存在するすべての車両（エージェント）に対して行った後、シミュレーション内の時間をサンプリング時間分だけ進める処理を行い（ステップＳ１４）、一つの処理サイクルを終了し、以降最初に設定された実行時間まで同様の処理を繰り返するようになっている。
【００８１】
上記に述べたような本発明の交通流シミュレーションにより、エージェントの知覚・認識・判断・操作という一連の認知的行為によって仮想車両一台一台が移動し、さらにはエージェントが知覚ミス・認識ミス・判断ミスによって交通事故が発生するような交通流シミュレーションを、高速に実行することができるようになる。このような交通流シミュレーションでは、例えば、車線変更をしようとしたときに、ちょうど自車のエージェントから死角になっている領域に車両が隠れてしまっていたため、その存在に気付かずに車線変更を実行して衝突してしまう状況や、脇見をしていたために先行車が減速したことに気付かず、気付いてブレーキをかけたときにはもう間に合わずに追突してしまう状況等、現実に起る多くの事故を模擬できることになる。
【００８２】
さらに、交通安全施策の導入前と導入後について、当該交通流シミュレーションをそれぞれ実施し、その結果得られる事故率などを比較すれば、事故削減に対する効果を直接的に評価することが可能となる。既に述べたように、交通事故は極めて稀なイベントであり、交通流シミュレーションにおいても、シミュレーション内の時間で最低でも２〜３か月分の計算を行う必要があるので、本願発明による高速化の価値はきわめて高い。
【００８３】
なお、事故発生の判定は、一つの処理サイクルの終了後、次の処理サイクルが始まる前に行う。事故発生の判定は、最も接近している車両を探索し、その距離が車両の大きさより小さくなったか否かで行えば良い。これをシミュレーション領域中に存在しているすべての車両について行う。事故発生の判定を行うにあたっても、総当たりによる演算を行うとすると、総数Ｎ台の車両が存在するとすれば、合計でＮ（Ｎ−１）／２回の衝突判定のための演算が必要となる。明らかに、車両同士の距離が離れすぎていて接触を起こす可能性の全くない組み合わせについても事故判定をする総当たり的な演算は無駄であり、シミュレーション時間の遅延、ハードウエアに対する負荷の増大といった問題を招く。しかしながら、本願発明に係るシミュレーション装置は、道路に関する情報として道路領域を細分化した存在情報マトリクスを設けることにより細分化した各領域に存在している車両や静止物体の存在情報を持たせている。さらに、前記細分化した領域が隣接しているか否かを判別できる遷移可能セクションマトリクスを有しており、存在情報マトリクスと遷移可能セクションマトリクスとを組み合わせることによって、演算が必要な車両、静止物体の組み合わせを特定することができる。このため、ドライバの知覚の模擬のための近接車両の探索のためだけではなく、事故発生の判定を行うにあたっても全く事故の発生する可能性の無い車両の組み合わせを排除し、計算量の低減を図ることができるという特徴を有している。
【００８４】
また、複数台のコンピュータを並列的に動作させて交通流シミュレーションを行う場合、グリッドコンピューティングのように分散処理を行うのではなく、分割されたセクションをグループ分けして、各グループ内のシミュレーションをそれぞれのコンピュータが行うようにすることが好ましい。本発明の交通流シミュレーション装置においては、存在情報マトリクスを利用してセクション内にいる車両や静止物体、エージェントの識別番号を管理している。したがって、隣接するセクションを担当するコンピュータにそのセクション内の車両等の位置情報の提供を要求すると、要求を受信したコンピュータでは、そのコンピュータが管理している車両等のすべての位置情報を送信する必要はなく、要求に応じたセクション内の車両等の位置情報のみを送信するだけで済む。
【００８５】
より具体的には、各コンピュータには、そのシミュレーション対象地区として少なくとも１つのセクションがそれぞれ割り振られている。なお、割り当てられるセクションは１つでも複数でも構わない。そして、各コンピュータに割り振られたセクションの情報、すなわち、どのセクションをどのコンピュータが担当しているかという情報は、セクション割り振り情報として各コンピュータに記憶されている。そして、ドライバの知覚の模擬を行うときに、視野内に含まれるセクションとして抽出されたセクションが他のコンピュータに割り振られたセクションであるか否かをセクション割り振り情報を参照して判断する。この結果、抽出されたセクションが他のコンピュータに割り振られたセクションの場合には、そのセクションに割り振られた他の装置の存在情報マトリクス情報を参照して抽出されたセクションに存在する移動体に対する移動体情報を得る。すなわち、そのセクションに割り振られた他のコンピュータへ移動体情報を要求することで、他のコンピュータに割り振られたセクションに存在する移動体に対する移動体情報を得ることが可能となる。したがって、要求を受けた他のコンピュータは存在情報マトリクス情報によりセクションに存在する移動体の位置情報のみを送信するだけで良い。さらに、移動体を操作した後には、遷移可能セクションマトリクスを用いて、遷移したセクションが他のコンピュータに割り振られたセクションであるか否かをセクション割り振り情報を参照して判断する。他のコンピュータに割り振られたセクションに遷移した場合には、そのセクションに割り振られたコンピュータに移動体情報を送信することで、遷移先の他のコンピュータの存在情報マトリクスが更新される。このように、各コンピュータ間では、要求に応じたセクション内の車両等の位置情報のみを送受信するだけで良いので、送受信データ量の低減、シミュレーションの実行速度の高速化が図れるという特徴を有する。
【００８６】
次に、交通流シミュレーションにおける仮想ドライバの「知覚」、「認識」、「判断」、「操作」という模擬の内の「認識」処理について説明する。図２を再度参照すると、本発明のエージェント２０は、知覚部２０１と認識部２０２と判断部２０３と操作部２０４とから主になるものである。これまで説明してきたように、本発明では、知覚部２０１で他の物体の可視判定を行い、他の移動体の知覚模擬を行う。そして、知覚部２０１による知覚模擬の結果、知覚された他の移動体や静止物体の存在やその位置、移動方向等を認識部２０２で認識する。以下、認識模擬についてより詳細に説明する。
【００８７】
認識部２０２は、知覚部２０１により知覚された移動体や静止物体に対して認識模擬を行うものである。認識部２０２では、知覚された各移動体に対して、エージェントから見た意味付けを行う。ここで、意味付けとは、指定されたエージェントによって知覚された移動体が、エージェントから見てどういう状態にある移動体なのかを認識させることを言う。すなわち、認識部２０２は、エージェントから見て他の移動体が先行車両なのか、側方車両なのか、対向車両なのか、交差車両なのか等を、知覚された他の移動体の存在位置や移動方向といった情報に基づいて判断するものである。移動体以外にも静止物体、例えば信号機の場合には、信号機が何色なのかといった現示情報を取得しても良い。これにより、続く判断部２０３で、認識された移動体と衝突を避けるためにこのまま進むべきか止まるべきか、曲がるべきか等の判断を行うことが可能となる。
【００８８】
さて、認識部２０２における意味付けの方法の一例としては、知覚した移動体の速度ベクトルを用いる方法が挙げられる。自車の速度ベクトルと知覚された移動体の速度ベクトルとのなす角度を参照することにより、エージェントは移動体が対向車両なのか否かといった判断が行えるようになる。但し、静止している移動体、例えば右折待ちをしている移動体に対しては移動していないので速度ベクトルはゼロとなってしまうため、速度ベクトルだけでは指定されたエージェントから見て「右折待ちをしている」という意味付けを行うことはできない。そこで、以下のような意味付けをさらに行っても良い。例えば、道路網に複数のウェイポイント（トラックポイント）が与えられ、これを用いて車両の走行ルートが与えられるようにする。各エージェントは複数のウェイポイントの位置を示すウェイポイントマップを有している。また、各車両は、自車の進むべきルートが予めウェイポイントを用いて決められており、現在走行中の位置がどのウェイポイントの間にいるかという情報を持っている。そして、指定されたエージェントから知覚された移動体に意味付けを行うときには、知覚された移動体が、現在の位置及びこれから向かうべきウェイポイントに関する情報を指定されたエージェントに与えるようにする。現在の位置及びこれから向かうべきウェイポイントを与えることで、次に進むべき方向をエージェントから認識できるようになるため、ウェイポイントマップにより、移動体が先行車両なのか対向車両なのか等を認識できるようになる。また、現在の位置及び次に進むべきウェイポイントの位置が与えられれば、上述の「右折待ちをしている」というような意味付けも容易に行うことが可能となる。また、エージェント側から見ると、他の車両の今後進むべきルートすべてを認識できるようにしているわけではないため、次に進むウェイポイントのみから今後の車両の動きを予測することになる。したがって、現実の世界における認識動作により近い模擬を行うことが可能となる。さらに、移動体の速度ベクトルもエージェントに与えれば、後何秒後に衝突するか等の認識も行うことが可能となる。またさらに、移動体のウィンカに関する情報もエージェントに与えることで、移動体が次に曲がりたいということをエージェントに認識させることも可能である。逆に、移動体がウィンカを出さずに右折してきた場合等の処理については、エージェントからは移動体は直進すると認識されていたのに突然右折してきたという認識ができるようになるため、より現実に近いシミュレーションを行うことが可能となる。
【００８９】
このように、知覚された各移動体に対してそれぞれ意味付けを行うことにより、エージェントから見て他の移動体が先行車両なのか、側方車両なのか、対向車両なのか、交差車両なのか、さらには赤信号なのか青信号なのか等を判断できる状態となる。本発明の交通流シミュレーション装置は、上述のような意味付けを行うことで認識処理が行われた後に、例えばそれらと衝突を避けるために、このまま進むべきか止まるべきか、曲がるべきか等の判断を判断部２０３で行った上で、移動体を操作部２０４により操作するものである。これら一連の操作により、仮想ドライバの「知覚」、「認識」、「判断」、「操作」という模擬をより現実の世界に近い形で実現できるようになった。
【００９０】
なお、本発明の交通流シミュレーション装置は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【図面の簡単な説明】
【００９１】
【図１】図１は、本発明のシミュレーション装置のブロック図である。
【図２】図２は、本発明におけるエージェントを説明するためのブロック図である。
【図３】図３は、シミュレーション領域の一例を示す地図および分割した小領域の図である。
【図４】図４は、シミュレーション領域である道路をモデル化した図である。
【図５】図５は、存在情報マトリクスの一例を表す表である。
【図６】図６は、遷移可能セクションマトリクスの一例を表す表である。
【図７】図７は、本発明のシミュレーション処理のフローチャートである。
【図８】図８は、一の車両に対して視野外となる物体を除外する算出処理を説明するために用いる図である。
【図９】図９は、一の車両から見て死角となる位置に存在する物体を除外する算出処理を説明するためのフローチャートである。
【図１０】図１０は、図９のフローチャートで行われる演算処理を説明するために用いる図である。
【図１１】図１１は、図９のフローチャートで行われる可視判定を説明するために用いる図である。
【図１２】図１２は、図１１の可視判定で行われる遮蔽判定を説明するために用いる図である。
【図１３】図１３は、隠れ物体の除外の具体例を説明するための図である。
【図１４】図１４は、図１３の隠れ物体の除外において行われる可視判定を説明するために用いる図である。
【図１５】図１５は、見落としの処理を説明するためのフローチャートである。
【図１６】図１６は、車両の移動から存在情報マトリクスの更新までの処理内容を説明するためのフローチャートである。
【図１７】図１７は、図１６に示した処理中の、車両のセクション間の遷移の有無を検出する処理を説明するための図である。
【図１８】図１８は、図１７に示した処理における演算処理を説明するために用いる図である。
【図１９】図１９は、図１６に示した処理中の、存在情報マトリクスの更新処理の内容を説明するための図である。
【図２０】図２０は、図１９に示した処理を説明するためのフローチャートである。
【符号の説明】
【００９２】
１    交通シミュレーション装置
２  演算手段
３  記憶手段
４  入出力手段
２０    エージェント
２０１    知覚部
２０２    認識部
２０３    判断部
２０４    操作部
【図１】
2008203913.tif 000021
【図２】
2008203913.tif 000022
【図３】
2008203913.tif 000023
【図４】
2008203913.tif 000024
【図５】
2008203913.tif 000025
【図６】
2008203913.tif 000026
【図７】
2008203913.tif 000027
【図８】
2008203913.tif 000028
【図９】
2008203913.tif 000029
【図１０】
2008203913.tif 000030
【図１１】
2008203913.tif 000031
【図１２】
2008203913.tif 000032
【図１３】
2008203913.tif 000033
【図１４】
2008203913.tif 000034
【図１５】
2008203913.tif 000035
【図１６】
2008203913.tif 000036
【図１７】
2008203913.tif 000037
【図１８】
2008203913.tif 000038
【図１９】
2008203913.tif 000039
【図２０】
2008203913.tif 000040