(57)【要約】【課題】移動体同士が衝突を回避する動作を適切に模倣しつつ、高速に移動シミュレーションを実行することができる移動体シミュレーションシステムを提供する。【解決手段】決定部７１は、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その全ての仮想移動体の速度が同一であるという第１の条件を満たしている矩形空間に対して、その全ての仮想移動体の矩形空間における進行方向に沿った軸の座標値にそれぞれ、その全ての仮想移動体に共通の速度に応じた距離を加算することによって、その全ての仮想移動体の単位時間経過後の位置を計算する一括計算方式を決定する。【選択図】図２５
2018142107.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ内に表現された複数の仮想移動体の単位時間経過後の位置の計算を繰り返すことによって、現実の移動体の移動のシミュレーションを行う移動体シミュレーションシステムであって、
分岐点および折れ目を含まない仮想空間として予め定められた空間である矩形空間毎に、矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する計算方式を決定する決定部と、
矩形空間を１つずつ選択し、選択した矩形空間に対して決定されている計算方式に従って、前記矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する位置計算部とを備え、
前記決定部は、
矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、前記全ての仮想移動体の速度が同一であるという第１の条件を満たしている矩形空間に対して、前記全ての仮想移動体の前記矩形空間における進行方向に沿った軸の座標値にそれぞれ、前記全ての仮想移動体に共通の速度に応じた距離を加算することによって、前記全ての仮想移動体の単位時間経過後の位置を計算する一括計算方式を決定し、
前記第１の条件を満たしていない矩形空間に対して、当該矩形空間内の仮想移動体を１つずつ選択し、選択した仮想移動体の速度および他の仮想移動体の位置に基づいて、選択した仮想移動体の単位時間経過後の位置を計算する逐次計算方式を決定する
ことを特徴とする移動体シミュレーションシステム。
【請求項２】
決定部は、
矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、当該矩形空間内に存在する仮想移動体の速度が複数種類存在し、いずれの速度の仮想移動体の最後尾の仮想移動体よりも前方に当該最後尾の仮想移動体よりも遅い速度の仮想移動体が存在しないという第２の条件を満たしている矩形空間に対して、速度が共通である仮想移動体の集合毎に、集合に属する全ての仮想移動体の前記矩形空間における進行方向に沿った軸の座標値にそれぞれ、前記集合に属する全ての仮想移動体に共通の速度に応じた距離を加算することによって、各速度の仮想移動体の単位時間経過後の位置を計算する第２の一括計算方式を決定し、
第１の条件と第２の条件の両方を満たしていない矩形領域に対して逐次計算方式を決定する
請求項１に記載の移動体シミュレーションシステム。
【請求項３】
位置計算部は、
選択した矩形空間に対して決定されている計算方式に従って、前記矩形空間内に存在する仮想移動体の単位時間経過後の位置を計算したときに、当該位置が前記矩形空間の外部となる場合、前記仮想移動体の単位時間経過後の位置が、前記矩形空間と次の矩形空間とを繋ぐ節空間であると決定する
請求項１または請求項２に記載の移動体シミュレーションシステム。
【請求項４】
位置計算部は、
選択した矩形空間と、当該選択した矩形空間の１つ手前の矩形空間とを繋ぐ節空間内に、当該選択した矩形空間に進む仮想移動体が存在する場合、当該仮想移動体の単位時間経過後の位置が、当該選択した矩形空間の前記節空間側の端部であると決定する
請求項１から請求項３のうちのいずれか１項に記載の移動体シミュレーションシステム。
【請求項５】
矩形空間毎に速度別で仮想移動体の数を記録する配列を作成する配列作成部を備え、
位置計算部は、選択した矩形空間内に存在する仮想移動体の単位時間経過後の位置を決定した場合に前記配列に記録された値を更新し、
決定部は、前記配列を参照して、矩形空間毎に計算方式を決定する
請求項１から請求項４のうちのいずれか１項に記載の移動体シミュレーションシステム。
【請求項６】
コンピュータ内に表現された複数の仮想移動体の単位時間経過後の位置の計算を繰り返すことによって、現実の移動体の移動のシミュレーションを行う移動体シミュレーション方法であって、
コンピュータが、
分岐点および折れ目を含まない仮想空間として予め定められた空間である矩形空間毎に、矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する計算方式を決定し、
矩形空間を１つずつ選択し、選択した矩形空間に対して決定されている計算方式に従って、前記矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算し、
前記計算方式を決定する際に、
矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、前記全ての仮想移動体の速度が同一であるという第１の条件を満たしている矩形空間に対して、前記全ての仮想移動体の前記矩形空間における進行方向に沿った軸の座標値にそれぞれ、前記全ての仮想移動体に共通の速度に応じた距離を加算することによって、前記全ての仮想移動体の単位時間経過後の位置を計算する一括計算方式を決定し、
前記第１の条件を満たしていない矩形空間に対して、当該矩形空間内の仮想移動体を１つずつ選択し、選択した仮想移動体の速度および他の仮想移動体の位置に基づいて、選択した仮想移動体の単位時間経過後の位置を計算する逐次計算方式を決定する
ことを特徴とする移動体シミュレーション方法。
【請求項７】
コンピュータが、
計算方式を決定する際に、
矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、当該矩形空間内に存在する仮想移動体の速度が複数種類存在し、いずれの速度の仮想移動体の最後尾の仮想移動体よりも前方に当該最後尾の仮想移動体よりも遅い速度の仮想移動体が存在しないという第２の条件を満たしている矩形空間に対して、速度が共通である仮想移動体の集合毎に、集合に属する全ての仮想移動体の前記矩形空間における進行方向に沿った軸の座標値にそれぞれ、前記集合に属する全ての仮想移動体に共通の速度に応じた距離を加算することによって、各速度の仮想移動体の単位時間経過後の位置を計算する第２の一括計算方式を決定し、
第１の条件と第２の条件の両方を満たしていない矩形領域に対して逐次計算方式を決定する
請求項６に記載の移動体シミュレーション方法。
【請求項８】
コンピュータ内に表現された複数の仮想移動体の単位時間経過後の位置の計算を繰り返すことによって、現実の移動体の移動のシミュレーションをコンピュータに実行させる移動体シミュレーションプログラムであって、
前記コンピュータに、
分岐点および折れ目を含まない仮想空間として予め定められた空間である矩形空間毎に、矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する計算方式を決定する決定処理、および、
矩形空間を１つずつ選択し、選択した矩形空間に対して決定されている計算方式に従って、前記矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する位置計算処理を実行させ、
前記決定処理で、
矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、前記全ての仮想移動体の速度が同一であるという第１の条件を満たしている矩形空間に対して、前記全ての仮想移動体の前記矩形空間における進行方向に沿った軸の座標値にそれぞれ、前記全ての仮想移動体に共通の速度に応じた距離を加算することによって、前記全ての仮想移動体の単位時間経過後の位置を計算する一括計算方式を決定させ、
前記第１の条件を満たしていない矩形空間に対して、当該矩形空間内の仮想移動体を１つずつ選択し、選択した仮想移動体の速度および他の仮想移動体の位置に基づいて、選択した仮想移動体の単位時間経過後の位置を計算する逐次計算方式を決定させる
ための移動体シミュレーションプログラム。
【請求項９】
コンピュータに、
決定処理で、
矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、当該矩形空間内に存在する仮想移動体の速度が複数種類存在し、いずれの速度の仮想移動体の最後尾の仮想移動体よりも前方に当該最後尾の仮想移動体よりも遅い速度の仮想移動体が存在しないという第２の条件を満たしている矩形空間に対して、速度が共通である仮想移動体の集合毎に、集合に属する全ての仮想移動体の前記矩形空間における進行方向に沿った軸の座標値にそれぞれ、前記集合に属する全ての仮想移動体に共通の速度に応じた距離を加算することによって、各速度の仮想移動体の単位時間経過後の位置を計算する第２の一括計算方式を決定させ、
第１の条件と第２の条件の両方を満たしていない矩形領域に対して逐次計算方式を決定させる
請求項８に記載の移動体シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の移動体の移動のシミュレーションを実行する移動体シミュレーションシステム、移動体シミュレーション方法および移動体シミュレーションプログラムに関する。
【背景技術】
【０００２】
多数の人の流れや、多数の車両の流れ等をコンピュータ状態で表現し、人の流れや車両の流れ等の将来の状態を予測するマルチエージェントシミュレーションが知られている。マルチエージェントシミュレーションにおけるエージェントとは、コンピュータ内に表現される個々の移動体である。例えば、人の移動のシミュレーションを実行する場合には、エージェントはコンピュータ内に表現された個々の人であり、自動車の移動のシミュレーションを実行する場合には、エージェントはコンピュータ内に表現された個々の自動車である。
【０００３】
特許文献１には、人の行動を高速に推測する避難者行動装置が記載されている。特許文献１に記載の装置は、避難者を人数ｎ毎のグループに分割し、グループを代表する代表行動者を示す人モデルを配置する。そして、特許文献１に記載の装置は、代表行動者が保つべき距離を算出し、次に、代表行動者の移動を算出する。さらに、特許文献１に記載の装置は、その代表行動者の移動をそのグループの移動に置換することによって、避難者全員の移動を算出する。特許文献１に記載の装置は、このような処理によって、シミュレーションの時間を概ね１／ｎに短縮している。
【０００４】
特許文献２には、群衆行動を予測するオブジェクト指向の歩行者シミュレーションシステムが記載されている。特許文献２に記載のシステムは、歩行者が他のオブジェクトに衝突するか否かを判定し、衝突する場合には、歩行速度と目標物への方向に基づき、歩行者の位置の計算を繰り返す。
【０００５】
特許文献３には、車両群の先頭車両の速度をＶｒとし、その車両群の最後尾の車両の速度をＶｈとしたときに、｜Ｖｒ−Ｖｈ｜≒０であるならば、その車両群を、同一速度で走る車両の集合体であるとみなすことが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１２８３７７号公報
【特許文献２】特開２００５−５０１１７号公報
【特許文献３】特開平１１−２６５４９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以下、コンピュータ内に表現された移動体を、仮想移動体と記す。仮想移動体の数が増加すると、シミュレーションにおける計算時間が増大する。
【０００８】
また、リアルタイムに複数の移動体の移動のシミュレーションを行う場合に、状況の変化に応じて、仮想移動体の行動パターンを変化させて、再度、シミュレーションを行うことが必要になる場合もある。
【０００９】
これらの点を鑑み、複数の移動体の移動のシミュレーション（以下、単に移動シミュレーションと記す。）の高速化が必要とされている。
【００１０】
特許文献１に記載の装置は、代表行動者が保つべき距離を算出し、次に、代表行動者の移動を算出し、さらに、代表行動者の移動をグループの移動に置換する。この処理によって、シミュレーション時間が短縮される。しかし、シミュレーションにおいて、異なるグループに属している代表者以外の避難者が衝突する場合が生じ得るので、仮想移動体同士の衝突を回避するような適切な移動シミュレーションができるとは限らない。
【００１１】
また、特許文献３に記載の技術では、前述のように、車両群の先頭車両の速度をＶｒとし、その車両群の最後尾の車両の速度をＶｈとしたときに、｜Ｖｒ−Ｖｈ｜≒０であるならば、その車両群を、同一速度で走る車両の集合体であるとみなす。しかし、この技術では、先頭車両の速度Ｖｒ、および、最後尾の車両の速度Ｖｈのみに着目して、車両群に属する車両の速度が同一か否かを判断していることになる。実際には、車両群の中には、先頭車両や最後尾の車両とは異なる速度で走行している車両も存在し得る。従って、特許文献３に記載の技術を移動シミュレーションに適用した場合においても、仮想移動体同士の衝突を回避するような適切な移動シミュレーションができるとは限らない。
【００１２】
そこで、本発明は、移動体同士が衝突を回避する動作を適切に模倣しつつ、高速に移動シミュレーションを実行することができる移動体シミュレーションシステム、移動体シミュレーション方法および移動体シミュレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明による移動体シミュレーションシステムは、コンピュータ内に表現された複数の仮想移動体の単位時間経過後の位置の計算を繰り返すことによって、現実の移動体の移動のシミュレーションを行う移動体シミュレーションシステムであって、分岐点および折れ目を含まない仮想空間として予め定められた空間である矩形空間毎に、矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する計算方式を決定する決定部と、矩形空間を１つずつ選択し、選択した矩形空間に対して決定されている計算方式に従って、その矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する位置計算部とを備え、決定部が、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その全ての仮想移動体の速度が同一であるという第１の条件を満たしている矩形空間に対して、その全ての仮想移動体の矩形空間における進行方向に沿った軸の座標値にそれぞれ、その全ての仮想移動体に共通の速度に応じた距離を加算することによって、その全ての仮想移動体の単位時間経過後の位置を計算する一括計算方式を決定し、第１の条件を満たしていない矩形空間に対して、当該矩形空間内の仮想移動体を１つずつ選択し、選択した仮想移動体の速度および他の仮想移動体の位置に基づいて、選択した仮想移動体の単位時間経過後の位置を計算する逐次計算方式を決定することを特徴とする。
【００１４】
また、本発明による移動体シミュレーション方法は、コンピュータ内に表現された複数の仮想移動体の単位時間経過後の位置の計算を繰り返すことによって、現実の移動体の移動のシミュレーションを行う移動体シミュレーション方法であって、コンピュータが、分岐点および折れ目を含まない仮想空間として予め定められた空間である矩形空間毎に、矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する計算方式を決定し、  矩形空間を１つずつ選択し、選択した矩形空間に対して決定されている計算方式に従って、その矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算し、計算方式を決定する際に、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その全ての仮想移動体の速度が同一であるという第１の条件を満たしている矩形空間に対して、その全ての仮想移動体の矩形空間における進行方向に沿った軸の座標値にそれぞれ、その全ての仮想移動体に共通の速度に応じた距離を加算することによって、その全ての仮想移動体の単位時間経過後の位置を計算する一括計算方式を決定し、第１の条件を満たしていない矩形空間に対して、当該矩形空間内の仮想移動体を１つずつ選択し、選択した仮想移動体の速度および他の仮想移動体の位置に基づいて、選択した仮想移動体の単位時間経過後の位置を計算する逐次計算方式を決定することを特徴とする。
【００１５】
また、本発明による移動体シミュレーションプログラムは、コンピュータ内に表現された複数の仮想移動体の単位時間経過後の位置の計算を繰り返すことによって、現実の移動体の移動のシミュレーションをコンピュータに実行させる移動体シミュレーションプログラムであって、コンピュータに、分岐点および折れ目を含まない仮想空間として予め定められた空間である矩形空間毎に、矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する計算方式を決定する決定処理、および、矩形空間を１つずつ選択し、選択した矩形空間に対して決定されている計算方式に従って、その矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する位置計算処理を実行させ、決定処理で、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その全ての仮想移動体の速度が同一であるという第１の条件を満たしている矩形空間に対して、その全ての仮想移動体の矩形空間における進行方向に沿った軸の座標値にそれぞれ、その全ての仮想移動体に共通の速度に応じた距離を加算することによって、その全ての仮想移動体の単位時間経過後の位置を計算する一括計算方式を決定させ、その第１の条件を満たしていない矩形空間に対して、当該矩形空間内の仮想移動体を１つずつ選択し、選択した仮想移動体の速度および他の仮想移動体の位置に基づいて、選択した仮想移動体の単位時間経過後の位置を計算する逐次計算方式を決定させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、移動体同士が衝突を回避する動作を適切に模倣しつつ、高速に移動シミュレーションを実行することができる。
【図面の簡単な説明】
【００１７】
【図１】仮想移動空間の例を示す模式図である。
【図２】矩形空間内の位置を示すための座標軸を示す模式図である。
【図３】単位時間経過後の仮想移動体の位置の例を示す説明図である。
【図４】本発明の第１の実施形態の移動体シミュレーションシステムの例を示すブロック図である。
【図５】テーブル作成部の構成例を示すブロック図である。
【図６】分布テーブルの例を示す模式図である。
【図７】計算方式テーブルの例を示す模式図である。
【図８】決定部の構成例を示すブロック図である。
【図９】移動計算部の構成例を示すブロック図である。
【図１０】第１の実施形態の処理経過の例を示すフローチャートである。
【図１１】ステップＳ２の処理経過の例を示すフローチャートである。
【図１２】ステップＳ３の処理経過の例を示すフローチャートである。
【図１３】分布テーブルの例を示す模式図である。
【図１４】ステップＳ３終了時における計算方式テーブルの例を示す模式図である。
【図１５】ステップＳ４の処理経過の例を示すフローチャートである。
【図１６】ステップＳ４の処理経過の例を示すフローチャートである。
【図１７】選択矩形空間内に存在する各仮想移動体の例を示す模式図である。
【図１８】第２の条件を満たす矩形空間の例を示す模式図である。
【図１９】第２の実施形態におけるステップＳ３の処理経過の例を示すフローチャートである。
【図２０】第２の実施形態におけるステップＳ３の処理経過の例を示すフローチャートである。
【図２１】第２の実施形態におけるステップＳ４の処理経過の例を示すフローチャートである。
【図２２】第２の実施形態におけるステップＳ４の処理経過の例を示すフローチャートである。
【図２３】第２の実施形態におけるステップＳ４の処理経過の例を示すフローチャートである。
【図２４】本発明の各実施形態に係るコンピュータの構成例を示す概略ブロック図である。
【図２５】本発明の移動体シミュレーションシステムの概要を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を図面を参照して説明する。
【００１９】
本発明の移動体シミュレーションシステムは、例えば、経路誘導時における複数の移動体を、複数の仮想移動体として表現し、多数の移動体の移動シミュレーションを実行する。経路誘導の例として、例えば、イベントが行われた大規模会場から周辺の駅への退場誘導や、緊急時の避難誘導が挙げられる。経路誘導は、これらの例に限定されない。
【００２０】
前述のように、仮想移動体は、コンピュータ内に表現された移動体である。仮想移動体は、例えば、人を表現したものであっても、自動車等の車両を表現したものであってもよい。以下の説明では、仮想移動体が人を表現したものである場合を例にして説明する。
【００２１】
本発明の移動体シミュレーションシステムは、コンピュータ内に表現された複数の仮想移動体の単位時間経過後の位置の計算を繰り返すことによって、現実の移動体の移動シミュレーションを行う。連続する単位時間の境界を「時間ステップ」と称する。従って、ある時間ステップから次の時間ステップまでの時間は、単位時間である。
【００２２】
また、移動シミュレーションにおいて、移動体が移動する経路（例えば、街の道路網等）が、コンピュータ内で仮想空間として表現される。以下、この仮想空間を仮想移動空間と記す。
【００２３】
図１は、仮想移動空間の例を示す模式図である。仮想移動空間は、経路の分岐点または折れ目を表現する節空間１０１，１０２と、節空間同士を繋ぐ矩形空間１０３，１０４，１０５とによって表現される。また、節空間が複数の矩形空間を繋いでいると言うこともできる。
【００２４】
矩形空間１０３〜１０５は、分岐点および折れ目を含まない仮想空間である。また、節空間１０１，１０２も仮想空間である。
【００２５】
図１に例示する節空間１０２のように、１つの節空間が３つ以上の矩形空間を繋いでいてもよい。
【００２６】
矩形空間１０３〜１０５は、矩形の空間として定められる。一方、節空間１０１，１０２は、どの複数の矩形空間を繋いでいるのかが表現されていればよく、節空間１０１，１０２の形状は定められていなくてもよい。
【００２７】
節空間および矩形空間の数や、節空間と矩形空間との連結構造は、図１に示す例に限定されない。
【００２８】
各矩形空間の長さおよび幅、並びに、節空間と矩形空間との連結構造は、シミュレーション対象の現実の経路の地図情報に基づいて予め定められる。節空間および矩形空間は、それぞれ複数存在し、個々の節空間および個々の矩形空間に、それぞれ個別の識別情報（空間の識別情報）が付与される。その結果、空間の識別情報によって、個々の節空間および個々の矩形空間を区別することができる。
【００２９】
以下の説明では、避難誘導時における移動シミュレーションを例にして説明する。そして、説明を簡単にするため、各矩形空間における仮想移動体の進行方向は予め定められているものとする。後述するように、仮想移動体を表す移動体情報には、仮想移動体が進む経路を示す経路計画情報が含まれている。その経路計画情報では、仮想移動体が進む経路が、各矩形空間に定められた進行方向に沿うように定められているものとする。
【００３０】
なお、大多数の仮想移動体の流れとは反対方向に進む仮想移動体が存在してもよい。すなわち、矩形空間に定められた進行方向とは反対方向に進むことが経路計画情報で定められた仮想移動体が存在していてもよい。ただし、以下の説明では、各仮想移動体は、各矩形空間に定められた進行方向に沿って進むように定められている場合を例にして説明する。
【００３１】
各矩形空間は、同一の形状で同一の大きさの複数のセルによって分割される。セルの形状は、例えば、正方形である。矩形空間内に存在する仮想移動体は、その矩形空間内のいずれかのセルの中心点に位置することができる。図２は、矩形空間内の位置を示すための座標軸を示す模式図である。矩形空間に対して定められている仮想移動体の進行方向に沿った軸をＸ軸とする。また、矩形空間の幅方向に沿った軸をＹ軸とする。このＸ軸およびＹ軸によって、各セルの中心を座標点とする格子点座標空間を定めることができる。そして、矩形空間に存在する仮想移動体の位置を定めることができる。なお、同一セル上に複数の仮想移動体が存在する場合を、移動体の衝突とみなす。
【００３２】
矩形空間では、矩形空間内の位置が座標で表される。一方、節空間内の位置は、座標で表さず、また、節空間内での仮想移動体の移動も考慮しない。すなわち、節空間は、仮想移動体が、ある矩形空間から次の矩形空間に進む過程で一時的に存在する空間として扱われる。
【００３３】
各矩形空間の長さおよび幅、各矩形空間内のセル、並びに、矩形空間と節空間との連結構造を表した情報を、移動空間情報と記す。移動空間情報には、個々の矩形空間の識別情報および個々の節空間の識別情報も含まれている。移動空間情報は、シミュレーション前の時点で予め作成される。
【００３４】
次に、仮想移動体を表す移動体情報について説明する。移動体情報は、仮想移動体毎に定められる。１つの移動体情報は、１つの仮想移動体を表し、移動体情報と仮想移動体とは一対一に対応している。各移動体情報も、シミュレーション前の時点で予め作成される。
【００３５】
１つの移動体情報は、対応する仮想移動体のＩＤ（Identification）と、その仮想移動体の速度と、その仮想移動体のクラスと、その仮想移動体の経路計画情報と、その仮想移動体の所属空間情報および座標と、その移動仮想移動体の移動モデルとを含む。以下、クラス、経路計画情報、所属空間情報および座標、移動モデルについて説明する。
【００３６】
クラスは、速度によって仮想移動体を分類した場合のグループを表す。速度とクラスとは一対一に対応し、２つの仮想移動体の速度の値が少しでも異なっていれば、その２つの仮想移動体のクラスは異なる。速度およびクラスを定めることによって、例えば、健常者を表す仮想移動体、高齢者を表す仮想移動体、車いす利用者を表す仮想移動体等を区別することができる。また、例えば、健常者を表す仮想移動体に対応する速度およびクラスの組み合わせは、１種類でなくてもよい。例えば、健常者を表す仮想移動体同士であっても、速度が異なっていてもよい。前述のように、速度の値が少しでも異なっていれば、クラスも異なる。
【００３７】
経路計画情報とは、仮想移動体の出発地点となる節空間から目的地点となる節空間までの間にその仮想移動体が経由する節空間および矩形空間を表す経路情報である。前述のように、以下の説明では、各仮想移動体の経路計画情報は、仮想移動体が進む経路が、各矩形空間に定められた進行方向に沿うように定められているものとする。従って、どの矩形空間においても、矩形空間内に存在する仮想移動体の進行方向は、矩形空間に定められた進行方向と同じであるものとする。すなわち、どの矩形空間においても、矩形空間内に存在する仮想移動体の進行方向が同一であるものとする。
【００３８】
ただし、大多数の仮想移動体の流れとは反対方向に進む仮想移動体を表現する場合には、その仮想移動体の経路計画情報として、矩形空間に定められた進行方向とは反対方向の経路情報が定められていてもよい。
【００３９】
所属空間情報は、仮想移動体が存在している節空間または矩形空間を表す情報である。所属空間情報は、仮想移動体が存在している節空間または矩形空間の識別情報で表される。すなわち、仮想移動体が節空間に存在している場合には、所属空間情報として、その節空間の識別情報が記述され、仮想移動体が矩形空間に存在している場合には、所属空間情報として、その矩形空間の識別情報が記述される。
【００４０】
また、座標は、仮想移動体が矩形空間に存在している場合における、その矩形空間内でのその仮想移動体の位置を示す座標である。なお、前述のように、節空間内の位置は、座標で表されない。そのため、仮想移動体が節空間に存在している場合には、座標として、「座標なし」を示す情報が記述される。
【００４１】
所属空間情報および座標は、移動シミュレーションの進行とともに、更新される。シミュレーション前に予め仮想移動体情報を作成するときには、所属空間情報および座標として、仮想移動体の初期位置に応じた所属空間情報および座標を記述しておけばよい。
【００４２】
移動モデルは、１つの時間ステップｔにおいて、次の時間ステップｔ＋１までの単位時間内に、仮想移動体がどの位置に移動するかを決定するための計算式やルールである。各実施形態では、全ての移動体情報で、共通の移動モデルが定められているものとする。
【００４３】
以下に示す各実施形態では、全ての移動体情報で共通の移動モデルとして、以下の（１）〜（３）に示す事項が定められている場合を例にする。以下の説明における前方、左、右はそれぞれ、進行方向に沿って移動する仮想移動体から見た前方、左、右を意味する。
【００４４】
（１）仮想移動体が存在するセルの１つ前方のセルに、他の仮想移動体が存在していなければ、（「仮想移動体の速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算することによって、仮想移動体の速度により単位時間内で移動可能な最大距離に相当するセル数を計算する。なお、記号“／”は、除算を表す。そして、仮想移動体が存在するセルの前方方向に存在するそのセル数分のセルのいずれにも、他の仮想移動体が存在しなければ、そのセル数分だけ、仮想移動体を前方に移動させた位置を、単位時間経過後の仮想移動体の位置と定める。また、仮想移動体が存在するセルの前方方向におけるそのセル数分のセルのいずれかに他の仮想移動体が存在していれば、他の仮想移動体が存在しているセルの１つ手前のセルの中心位置を、単位時間経過後の仮想移動体の位置と定める。
【００４５】
（２）仮想移動体が存在するセルの１つ前方のセルに、他の仮想移動体が存在している場合、仮想移動体が存在するセルの左隣のセルおよびその１つ前方のセルに、仮想移動体が存在しているか否かを確認する。仮想移動体が存在するセルの左隣のセルおよびその１つ前方のセルに仮想移動体が存在していなければ、仮想移動体を左隣のセルに移動させる。このことは、仮想移動体が、１つ前方のセルに存在する他の仮想移動体を避けるために、左側に移動したことを意味する。また、仮想移動体が存在するセルの左隣のセルおよびその１つ前方のセルの少なくとも一方に他の仮想移動体が存在する場合、または、左側にセルが存在しない場合、仮想移動体が存在するセルの右隣のセルおよびその１つ前方のセルに、仮想移動体が存在しているか否かを確認する。そして、仮想移動体が存在するセルの右隣のセルおよびその１つ前方のセルに仮想移動体が存在していなければ、仮想移動体を右隣のセルに移動させる。このことは、仮想移動体が、１つ前方のセルに存在する他の仮想移動体を避けるために左側に移動しようとしたが左側に移動できずに、右側に移動したことを意味する。そして、（「仮想移動体の速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算することによって、仮想移動体の速度により単位時間内で移動可能な最大距離に相当するセル数を計算する。元の位置の左隣のセル（右隣に移動させた場合には右隣のセル）の前方方向におけるそのセル数分のセルのいずれにも、他の仮想移動体が存在しなければ、そのセル数分だけ仮想移動体を前方に移動させた位置を、単位時間経過後の仮想移動体の位置と定める。元の位置の左隣のセル（右隣に移動させた場合には右隣のセル）の前方方向に存在するそのセル数分のセルのいずれかに他の仮想移動体が存在していれば、他の仮想移動体が存在しているセルの１つ手前のセルの中心位置を、単位時間経過後の仮想移動体の位置と定める。
【００４６】
（３）仮想移動体が存在するセルの右隣のセルおよびその１つ前方のセルの少なくとも一方に他の仮想移動体が存在する場合、または、右側にセルが存在しない場合、現在、仮想移動体が存在しているセルの中心位置を、単位時間経過後の仮想移動体の位置と定める。すなわち、この場合、仮想移動体の位置は変化しない。このことは、仮想移動体が、１つ前方のセルに存在する他の仮想移動体を避けようとしても、左側にも右側にも移動することができずに、元の位置に停滞していることを意味する。
【００４７】
なお、上記の（２）において、仮想移動体を左隣または右隣に移動させる際の移動距離は、単位時間内で移動可能な最大距離に含めずに、無視している。これは、位置決定処理を簡単にするためである。
【００４８】
また、上記の移動モデルは例示であり、移動モデルは、上記の例に限定されない。例えば、上記の移動モデルは、１つ前方のセルに存在する仮想移動体を避けるために、左側に移動することを、右側に移動することよりも優先しているが、右側に移動することを優先していてもよい。
【００４９】
本発明の移動体シミュレーションシステムは、時間ステップ毎に、各仮想移動体の単位時間経過後の位置を計算する。そして、移動体シミュレーションシステムは、その位置に応じて、各移動体情報内の座標や所属空間情報を更新する。このように、仮想移動体の単位時間経過後の位置を計算することを移動計算と称する。
【００５０】
図３は、単位時間経過後の仮想移動体の位置の例を示す説明図である。ある時間ステップにおいて、図３に示すように、矩形空間３０５に仮想移動体３０２，３０３，３０７，３０８が存在していたとする。また、矩形空間３０５とその１つ手前の矩形空間（図示略）とを繋ぐ節空間３０４に、仮想移動体３０１が存在していたとする。
【００５１】
仮想移動体３０７の移動計算を行う際に、仮想移動体３０７が存在するセルの１つ前方のセルに仮想移動体３０８が存在していたとする。この場合、移動体シミュレーションシステムは、前述の移動モデルに従って、仮想移動体３０７を左隣のセルに移動させ、さらに、単位時間内で移動可能な最大距離に相当するセル数分だけ移動させる（前述の（２）、および、図３を参照）。また、移動体シミュレーションシステムは、前述の移動モデルに従って、移動体３０２，３０８を、単位時間内で移動可能な最大距離に相当するセル数分だけ移動させる（前述の（１）、および、図３を参照）。
【００５２】
なお、仮想移動体の単位時間経過後の位置が、仮想移動体が存在していた矩形空間の外部となる場合には、その仮想移動体の単位時間経過後の位置を、その矩形空間と次の矩形空間（図３において図示略）とを繋ぐ節空間に定める。図３に示す例では、移動体シミュレーションシステムは、仮想移動体３０３の単位時間経過後の位置を、節空間３０６に定める。
【００５３】
また、移動体シミュレーションシステムは、移動計算の対象としている矩形空間３０５とその１つ手前の矩形空間（図３において図示略）とを繋ぐ節空間３０４に存在している仮想移動体３０１の単位時間経過後の位置を、矩形空間３０５の節空間３０４側の端部のセルの中心位置に定める。図３に示す例では、矩形空間３０５の節空間３０４側の端部のセルは複数（４つ）存在する。移動体シミュレーションシステムは、端部に存在する複数のセル３１１〜３１４のうち、任意のセルの中心位置を、仮想移動体３０１の単位時間経過後の位置としてよい。図３に示す例では、仮想移動体３０１の単位時間経過後の位置を、セル３１４の中心位置としている。
【００５４】
１つの矩形空間内に存在する仮想移動体のクラスの種類数が１であれば、矩形空間内に存在する全ての仮想移動体の速度は同一である。また、本例では、矩形空間内に存在する仮想移動体の進行方向が同一である。この場合、単位時間内で移動可能な最大距離に相当するセル数は、その全ての仮想移動体で同一である。また、この場合、仮想移動体同士の衝突は生じない。従って、全ての仮想移動体を一括して移動させることができる。そして、このように、その矩形空間に存在する各仮想移動体の移動計算を一括して行うことにより、シミュレーションを高速化することができる。
【００５５】
また、１つの矩形空間内に存在する仮想移動体の速度が同一であり、かつ、矩形空間内に存在する仮想移動体の進行方向が同一であるという条件が満たされていない場合には、移動体シミュレーションシステムは、仮想移動体の移動計算を逐次的に行う。すなわち、移動体シミュレーションシステムは、その矩形空間内の仮想移動体を１つずつ選択し、順番に移動計算を行う。これは、仮想移動体同士の衝突が生じさせずに、移動計算を行うためである。
【００５６】
実施形態１．
図４は、本発明の第１の実施形態の移動体シミュレーションシステムの例を示すブロック図である。本発明の第１の実施形態の移動体シミュレーションシステム４０１は、シナリオ取得部４０２と、テーブル作成部４０３と、決定部４０４と、移動計算部４０５と、終了判定部４０６とを備える。
【００５７】
シナリオ取得部４０２は、シナリオを取得する。シナリオとは、予め作成されている移動空間情報と、各仮想移動体に対応する各移動体情報とを合わせた情報群である。シナリオを変更することで、シミュレーション内容を変更することができる。例えば、移動体シミュレーションシステム４０１の管理者は、予め、外部の情報処理装置または情報記録媒体にシナリオを記憶させておけばよい。シナリオ取得部４０２は、その情報処理装置または情報記録媒体にアクセスして、その情報処理装置に記憶されているシナリオを取得すればよい。
【００５８】
また、シナリオ取得部４０２は、移動体シミュレーションシステム４０１が備えるメモリ（図４において図示略）に、取得したシナリオを記憶させる。メモリに記憶されたシナリオは、適宜、テーブル作成部４０３、決定部４０４、移動計算部４０５および終了判定部４０６によって参照される。また、各移動体情報内の所属空間情報および座標は、シミュレーションの進行に伴い、適宜、更新される。
【００５９】
テーブル作成部４０３は、シナリオ取得部４０２が取得したシナリオに基づいて、分布テーブルおよび計算方式テーブルを作成する。分布テーブルは、矩形空間毎に、クラス毎の仮想移動体の数を記録するためのテーブルである。換言すれば、分布テーブルは、矩形空間毎に速度別で仮想移動体の数を記録するためのテーブルである。計算方式テーブルは、矩形空間毎に、移動計算の計算方式を記録するためのテーブルである。
【００６０】
決定部４０４は、分布テーブルを参照し、矩形空間毎に、仮想移動体の移動計算の計算方式を決定する。すなわち、決定部４０４は、矩形空間毎に、矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する方式を決定する。
【００６１】
決定部４０４は、矩形空間毎に、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その全ての仮想移動体の速度が同一であるという条件（以下、第１の条件と記す。）を満たしているか否かを判定する。そして、決定部４０４は、第１の条件を満たしている矩形空間に対して、矩形空間内に存在する全ての仮想移動体の進行方向に沿った軸の座標値（Ｘ座標）にそれぞれ、その全ての仮想移動体に共通の速度に応じた距離を加算することによって、その全ての仮想移動体の単位時間経過後の位置を計算する方式を用いることを決定する。この計算方式を、一括計算方式と記す。
【００６２】
なお、仮想移動体のＸ軸の座標値にそれぞれ、その全ての仮想移動体に共通の速度に応じた距離を加算するという処理は、各実施形態では、例えば、仮想移動体が存在しているセルの中心（格子点）のＸ座標に、（「共通速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算することによって得られるセル数を加算するという処理で実現される。
【００６３】
また、決定部４０４は、第１の条件を満たしていない矩形空間に対して、矩形空間内の仮想移動体を１つずつ選択し、選択した仮想移動体の速度および他の仮想移動体の位置に基づいて、選択した仮想移動体の単位時間経過後の位置を計算する方式を用いることを決定する。この計算方式を、逐次計算方式と記す。
【００６４】
決定部４０４は、矩形空間毎に決定した計算方式を、計算方式テーブルに記録する。
【００６５】
移動計算部４０５は、矩形空間を１つずつ選択し、選択した矩形空間に対して決定されている計算方式に従って、選択した矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する。移動計算部４０５は、計算方式テーブルを参照することによって、選択した矩形空間に対して決定されている計算方式を識別する。
【００６６】
決定部４０４の処理、および、その処理に続く移動計算部４０５の処理が繰り返されることによって、シミュレーションが進行する。終了判定部４０６は、その繰り返し処理の終了条件が満たされた否かを判定する。決定部４０４および移動計算部４０５は、終了判定部４０６によって終了条件が満たされたと判定されるまで、処理を繰り返す。
【００６７】
例えば、全ての仮想移動体が目的地点に到達したこと、および、処理の繰り返し数が予め定められた値に達したことのいずれかが満たされたことを、上記の終了条件としてもよい。この場合、終了判定部４０６は、全ての仮想移動体が目的地点に到達した場合、または、処理の繰り返し数が予め定められた値に達した場合に、終了条件が満たされたと判定する。ただし、終了条件として、他の条件が用いられてもよい。
【００６８】
図５は、テーブル作成部４０３の構成例を示すブロック図である。テーブル作成部４０３は、分布テーブル作成部５０１と、計算方式テーブル作成部５０２とを備える。
【００６９】
分布テーブル作成部５０１は、分布テーブルを作成する。前述のように、矩形空間毎に、クラス毎の仮想移動体の数を記録するためのテーブルである。図６は、分布テーブルの例を示す模式図である。クラスの種類数をＭとし、“１”から“Ｍ”までのＭ個のクラスが存在するものとする。また、矩形空間の数をＮとし、各矩形空間の識別情報が“１”〜“Ｎ”で表されるものとする。この場合、分布テーブル作成部５０１は、分布テーブルとして、図６に示すように、要素数がＭ×Ｎである２次元配列を作成すればよい。分布テーブル作成部５０１は、シナリオに含まれる各仮想移動体の初期位置に応じた所属空間情報と、各仮想移動体のクラスとを参照して、分布テーブルの各テーブル値（各要素の値）の初期値を記録する。例えば、第ｍ行第ｎ列の要素には、矩形空間“ｎ”内に存在するクラス“ｍ”の仮想移動体の数を記録する。
【００７０】
計算方式テーブル作成部５０２は、計算方式テーブルを作成する。前述のように、計算方式テーブルは、矩形空間毎に、移動計算の計算方式を記録するためのテーブルである。図７は、計算方式テーブルの例を示す模式図である。本例では、計算方式テーブル作成部５０２は、計算方式テーブルとして、要素数がＮである１次元配列を作成すればよい。各要素には、計算方式を示す値が記録される。例えば、一括計算方式を“１”で表し、逐次計算方式を“２”で表すことする。そして、各矩形空間に対して決定された計算方式に対応する値が計算方式テーブルに記録される。ただし、計算方式テーブル作成部５０２が計算方式テーブルを作成した時点では、計算方式テーブルの各要素の値は定まっていない。
【００７１】
なお、分布テーブルおよび計算方式テーブルは、節空間に対応する要素は含まない。
【００７２】
図８は、決定部４０４の構成例を示すブロック図である。決定部４０４は、分布テーブル参照部８０１と、計算方式決定部８０２と、計算方式テーブル更新部８０３とを備える。
【００７３】
分布テーブル参照部８０１は、分布テーブルを参照し、各矩形空間内に存在する仮想移動体のクラスの種類数を取得する。
【００７４】
計算方式決定部８０２は、そのクラスの種類数に基づいて、各矩形空間に対して、仮想移動体の移動計算の計算方式を決定する。
【００７５】
計算方式テーブル更新部８０３は、各矩形空間に対して決定された計算方式に対応する値を計算方式テーブルに記録することによって、計算方式テーブルを更新する。
【００７６】
図９は、移動計算部４０５の構成例を示すブロック図である。移動計算部４０５は、計算方式テーブル参照部９０１と、一括計算部９０２と、逐次計算部９０３と、節空間処理部９０６と、流入出判定部９０４と、分布テーブル更新部９０５とを備える。
【００７７】
計算方式テーブル参照部９０１は、矩形空間を１つずつ順番に選択する。そして、計算方式テーブル参照部９０１は、計算方式テーブルを参照して、選択した矩形空間に対して決定された移動計算の計算方式を取得する。
【００７８】
一括計算部９０２は、選択された矩形空間に対して決定されている計算方式が一括計算方式である場合に、その矩形空間内の各仮想移動体の移動計算を、一括計算方式で実行する。
【００７９】
逐次計算部９０３は、選択された矩形空間に対して決定されている計算方式が逐次計算方式である場合に、その矩形空間内の各仮想移動体の移動計算を、逐次計算方式で実行する。
【００８０】
節空間処理部９０６は、選択された矩形空間と、その矩形空間の１つ手前の矩形空間とを繋ぐ節空間内に、選択された矩形空間に進む仮想移動体が存在する場合、その仮想移動体の単位時間経過後の位置が、選択された矩形空間におけるその節空間側の端部であると決定する。選択された矩形空間におけるその節空間側の端部には、複数のセルが並ぶ。節空間処理部９０６は、その複数のセルのうち、任意の１つのセルを選択し、そのセルの中心位置を、節空間内の移動体の単位時間経過後の位置として決定すればよい。例えば、図３に示す例において、矩形空間３０５が選択されているとする。節空間処理部９０６は、節空間３０４に存在する仮想移動体３０１の単位時間経過後の位置として、セル３１１〜３１４のうちのいずれか１つのセルの中心位置を決定すればよい。
【００８１】
流入出判定部９０４は、選択された矩形空間から流出した仮想移動体の数を、クラス別にカウントする。選択された矩形空間から流出した仮想移動体とは、一括計算部９０２または逐次計算部９０３による移動計算の結果、単位時間経過後の位置が、選択された矩形空間と次の矩形空間とを繋ぐ節空間に定められた仮想移動体である。
【００８２】
流入出判定部９０４は、節空間処理部９０６の処理の結果、選択された矩形空間に節空間から流入した仮想移動体の数を、クラス別にカウントする。
【００８３】
分布テーブル更新部９０５は、選択された矩形空間から流出した仮想移動体のクラス別の数、および、選択された矩形空間に流入した仮想移動体のクラス別の数に基づいて、分布テーブル更新部９０５を更新する。
【００８４】
シナリオ取得部４０２、テーブル作成部４０３、決定部４０４、移動計算部４０５および終了判定部４０６は、例えば、移動体シミュレーションプログラムに従って動作するコンピュータのＣＰＵ（Central Processing Unit ）によって実現される。この場合、ＣＰＵは、例えば、コンピュータのプログラム記憶装置（図４において図示略）等のプログラム記録媒体からプログラムを読み込み、そのプログラムに従って、シナリオ取得部４０２、テーブル作成部４０３、決定部４０４、移動計算部４０５および終了判定部４０６として動作すればよい。また、シナリオ取得部４０２、テーブル作成部４０３、決定部４０４、移動計算部４０５および終了判定部４０６がそれぞれ別々のハードウェアによって実現されてもよい。
【００８５】
また、移動体シミュレーションシステム４０１は、２つ以上の物理的に分離した装置が有線または無線で接続されている構成であってもよい。
【００８６】
次に、本実施形態の処理経過について説明する。図１０は、本実施形態の処理経過の例を示すフローチャートである。
【００８７】
シナリオ取得部４０２は、シナリオ（移動空間情報と、各仮想移動体に対応する各移動体情報とを合わせた情報群）を取得する（ステップＳ１）。例えば、シナリオ取得部４０２は、予め作成されたシナリオを記憶している外部の情報処理装置にアクセスして、シナリオを取得すればよい。シナリオ取得部４０２は、移動体シミュレーションシステム４０１が備えるメモリ（図４において図示略）に、取得したシナリオを記憶させる。
【００８８】
次に、テーブル作成部４０３は、ステップＳ１で取得されたシナリオに基づいて、分布テーブルおよび計算方式テーブルを作成する（ステップＳ２）。ステップＳ２において、テーブル作成部４０３は、分布テーブルの各テーブル値の初期値を記録する。
【００８９】
次に、決定部４０４は、分布テーブルを参照し、各矩形空間の計算方式を決定する（ステップＳ３）。決定部４０４は、矩形空間毎に、第１の条件が満たされているか否かを判定する。そして、決定部４０４は、第１の条件が満たされている矩形空間に対しては一括計算方式を用いることを決定する。また、決定部４０４は、第１の条件が満たされていない矩形空間に対しては逐次計算方式を用いることを決定する。決定部４０４は、矩形空間毎に、決定した計算方式に対応する値を、計算方式テーブルに記録する。
【００９０】
次に、移動計算部４０５は、矩形空間毎に、決定された計算方式で、各仮想移動体の移動計算を行う（ステップＳ４）。移動計算部４０５は、計算方式テーブルを参照することによって、個々の矩形空間に対して決定された計算方式を識別すればよい。移動計算部４０５は、移動計算の結果に応じて、各仮想移動体に対応する各移動体情報に含まれる所属空間情報および座標を更新する。また、移動計算部４０５は、移動計算の結果に応じて、分布テーブルも更新する。
【００９１】
続いて、終了判定部４０６は、シミュレーションの終了条件が満たされたか否かを判定する（ステップＳ５）。この終了条件は、ステップＳ３〜Ｓ５の繰り返し処理の終了条件であるということもできる。例えば、終了判定部４０６は、全ての仮想移動体が目的地点に到達した場合、または、処理の繰り返し数が予め定められた値に達した場合に、終了条件が満たされたと判定する。
【００９２】
終了条件が満たされていなければ（ステップＳ５におけるＮＯ）、決定部４０４、移動計算部４０５および終了判定部４０６は、ステップＳ３〜Ｓ５の処理を再度実行する。
【００９３】
また、終了条件が満たされていれば（ステップＳ５におけるＹＥＳ）、移動体シミュレーションシステム４０１は、移動シミュレーションを終了する。
【００９４】
図１１は、ステップＳ２（図１０参照）の処理経過の例を示すフローチャートである。なお、ステップＳ１からステップＳ２に移行した時点では、ステップＳ１で取得されたシナリオに対する更新はまだ行われていない。すなわち、ステップＳ２を実行する時点では、各移動体情報には、各仮想移動体の初期位置に応じた所属空間情報および座標が含まれている。
【００９５】
ステップＳ２において、分布テーブル作成部５０１は、各移動体情報に含まれているクラスに基づいて、仮想移動体のクラスの種類数を特定する。さらに、分布テーブル作成部５０１は、移動空間情報を参照して、矩形空間の数を特定する。そして、分布テーブル作成部５０１は、仮想移動体のクラスの種類数と、矩形空間の数とに基づいて、分布テールを作成する（ステップＳ２１）。例えば、クラスの種類数がＭであり、矩形空間の数がＮであるならば、分布テーブル作成部５０１は、分布テーブルとして、要素数がＭ×Ｎである２次元配列（図６を参照）を作成すればよい。
【００９６】
次に、分布テーブル作成部５０１は、各移動体情報に含まれている所属空間情報およびクラスに基づいて、分布テーブルの各テーブル値の初期値を記録する（ステップＳ２２）。分布テーブル作成部５０１は、各移動体情報に含まれている所属空間情報およびクラスを参照し、矩形空間とクラスとの組み合わせ毎に、その組み合わせに合致する仮想移動体の数をカウントし、そのカウント結果をその組み合わせに対応する分布テーブル内の要素に記録する。例えば、分布テーブル作成部５０１は、所属空間情報が“ｎ”であり、クラスが“ｍ”となっている移動体情報の数をカウントし、分布テーブルの第ｍ行第ｎ列の要素に、そのカウント結果を初期値として記録する。分布テーブル作成部５０１は、分布テーブルの他の各要素に対しても、同様に、初期値を記録する。
【００９７】
次に、計算方式テーブル作成部５０２は、矩形空間の数に基づいて、計算方式テーブルを作成する（ステップＳ２３）。計算方式テーブル作成部５０２は、例えば、ステップＳ２１で分布テーブル作成部５０１が特定した矩形空間の数を参照してもよい。例えば、矩形空間の数がＮであるならば、計算方式テーブルとして、要素数がＮである１次元配列（図７参照）を作成すればよい。
【００９８】
ステップＳ２３の終了によって、ステップＳ２が終了する。なお、ステップＳ２の終了時点で、計算方式テーブルの各要素の値は記録されていなくてよい。
【００９９】
図１２は、ステップＳ３（図１０参照）の処理経過の例を示すフローチャートである。図１３は、分布テーブルの例を示す模式図である。以下、ステップＳ３の開始時点において、分布テーブルが図１３に示す状態になっている場合を例にして説明する。図１３に示す例では、矩形空間“１”には、クラス“２”の仮想移動体が５つ存在し、他の各クラスの仮想移動体の数は０であることを表している。すなわち、矩形空間“１”に存在する仮想移動体のクラスの種類は“２”のみであり、矩形空間“１”に存在する仮想移動体のクラスの種類数は１である。また、図１３に示す例では、矩形空間“２”には、クラス“１”の仮想移動体が２つ存在し、クラス“２”の仮想移動体が６つ存在し、クラス“Ｍ”の仮想移動体の数は０であることを表している。すなわち、矩形空間“２”に存在する仮想移動体のクラスの種類として少なくとも“１”，“２”が存在し、矩形空間“２”に存在する仮想移動体の種類数は少なくとも２以上の値である。
【０１００】
ステップＳ３において、計算方式決定部８０２は、未だ選択されていない矩形空間を１つ選択する（ステップＳ３１）。以下、図１２の説明において、ステップＳ３１で選択された矩形空間を選択矩形空間と記す。
【０１０１】
次に、分布テーブル参照部８０１は、分布テーブルを参照し、選択矩形空間に存在する仮想移動体のクラスの種類数を取得する（ステップＳ３２）。
【０１０２】
分布テーブル参照部８０１は、分布テーブルにおいて、選択矩形空間に対応する列で０以外の値が格納されている要素の数をカウントし、そのカウント結果を、選択矩形空間に存在する仮想移動体のクラスの種類数とすればよい。
【０１０３】
例えば、選択矩形空間が矩形空間“１”であるとする。この場合、分布テーブル参照部８０１は、分布テーブルにおける矩形空間“１”に対応する列で、０以外の値が格納されている要素の数をカウントすればよい。図１３に示す例では、矩形空間“１”に対応する列で、０以外の値が格納されている要素の数は、１個（クラス“２”のみ）である。従って、この場合、選択矩形空間に存在する仮想移動体のクラスの種類数は１である。
【０１０４】
また、例えば、選択矩形空間が矩形空間“２”であるとする。この場合、分布テーブル参照部８０１は、分布テーブルにおける矩形空間“２”に対応する列で、０以外の値が格納されている要素の数をカウントすればよい。矩形空間“１”に対応する列で、０以外の値が格納されている要素は、少なくとも２個存在する。従って、この場合、選択矩形空間に存在する仮想移動体のクラスの種類数は２以上の値である。
【０１０５】
ステップＳ３２の後、計算方式決定部８０２は、選択矩形空間が第１の条件を満たしているか否かを判定する（ステップＳ３３）。前述のように、第１の条件は、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その全ての仮想移動体の速度が同一であるという条件である。
【０１０６】
計算方式決定部８０２は、所属空間情報として選択矩形空間の識別情報を含む移動体情報に含まれている経路計画情報を参照することによって、その移動体情報に対応する仮想移動体の選択矩形空間における進行方向を判定することができる。従って、計算方式決定部８０２は、所属空間情報として選択矩形空間の識別情報を含む全ての移動体情報に含まれる経路計画情報を参照することによって、選択矩形空間内に存在する全ての仮想移動体の進行方向が同一であるか否かを判定すればよい。
【０１０７】
また、選択矩形空間に存在する仮想移動体のクラスの種類数が１であるということは、選択矩形空間に存在する全ての仮想移動体の速度が同一であることを意味する。また、選択矩形空間に存在する仮想移動体のクラスの種類数が２以上であるということは、選択矩形空間に存在する複数の仮想移動体の速度の種類が２種類以上存在することを意味する。従って、計算方式決定部８０２は、選択矩形空間に存在する仮想移動体のクラスの種類数が１であるか否かを判定することによって、選択矩形空間に存在する全ての仮想移動体の速度が同一であるか否かを判定すればよい。
【０１０８】
また、既に説明したように、本例では、各仮想移動体の経路計画情報は、仮想移動体が進む経路が、各矩形空間に定められた進行方向に沿うように定められている。すなわち、どの矩形空間においても、矩形空間内に存在する仮想移動体の進行方向が同一である。このように、どの矩形空間においても、矩形空間内に存在する仮想移動体の進行方向が同一であることが予め分かっている場合には、計算方式決定部８０２は、移動体情報を参照せずに、選択矩形空間内に存在する全ての仮想移動体の進行方向が同一であると判定してよい。すなわち、計算方式決定部８０２は、選択矩形空間に存在する仮想移動体のクラスの種類数が１であるか否かによって、第１の条件が満たされているか否かを判定してもよい。この場合、計算方式決定部８０２は、選択矩形空間に存在する仮想移動体のクラスの種類数が１であれば、第１の条件が満たされていると判定し、クラスの種類数が１でなければ、第１の条件が満たされていないと判定してもよい。
【０１０９】
ただし、どの矩形空間においても、矩形空間内に存在する仮想移動体の進行方向が同一であることが予め分かっていない場合には、計算方式決定部８０２は、前述のように、選択矩形空間内に存在する全ての仮想移動体の進行方向が同一であるか否かを、移動体情報を参照することによって判定する。
【０１１０】
選択矩形空間が第１の条件を満たしている場合（ステップＳ３３におけるＹＥＳ）、計算方式決定部８０２は、選択矩形空間の決定方式を一括計算方式に決定する（ステップＳ３４）。
【０１１１】
ステップＳ３４の後、計算方式テーブル更新部８０３は、計算方式テーブル内の選択矩形空間に対応する要素の値を、一括計算方式に対応する値（“１”とする。）に更新する（ステップＳ３５）。例えば、選択矩形空間が矩形空間“１”であり、ステップＳ３５に移行した場合、計算方式テーブル更新部８０３は、計算方式テーブル内の矩形空間“１”に対応する要素の値を１に更新する。
【０１１２】
また、選択矩形空間が第１の条件を満たしていない場合（ステップＳ３３におけるＮＯ）、計算方式決定部８０２は、選択矩形空間の決定方式を逐次計算方式に決定する（ステップＳ３６）。
【０１１３】
ステップＳ３６の後、計算方式テーブル更新部８０３は、計算方式テーブル内の選択矩形空間に対応する要素の値を、逐次計算方式に対応する値（“２”とする。）に更新する（ステップＳ３７）。例えば、選択矩形空間が矩形空間“２”であり、ステップＳ３７に移行した場合、計算方式テーブル更新部８０３は、計算方式テーブル内の矩形空間“２”に対応する要素の値を２に更新する。
【０１１４】
ステップＳ３５の後、および、ステップＳ３７の後、計算方式決定部８０２は、全ての矩形空間を選択したか否かを判定する（ステップＳ３８）。
【０１１５】
未選択の矩形空間が残っている場合（ステップＳ３８におけるＮＯ）、決定部４０４は、ステップＳ３１以降の処理を繰り返す。
【０１１６】
全ての矩形空間が選択済みである場合（ステップＳ３８におけるＹＥＳ）、ステップＳ３が終了する。図１４は、ステップＳ３終了時における計算方式テーブルの例を示す模式図である。移動計算部４０５は、図１４に例示する計算方式テーブルを参照することによって、各矩形空間に対して決定された計算方式を識別できる。なお、計算方式テーブルの内容は、分布テーブルの内容によって変化する。
【０１１７】
図１５および図１６は、ステップＳ４（図１０参照）の処理経過の例を示すフローチャートである。
【０１１８】
ステップＳ４において、計算方式テーブル参照部９０１は、未だ選択されていない矩形空間を１つ選択する（ステップＳ４１）。以下、図１５および図１６の説明において、ステップＳ４１で選択された矩形空間を選択矩形空間と記す。
【０１１９】
次に、計算方式テーブル参照部９０１は、計算方式テーブルを参照し、選択矩形空間に対して決定された計算方式を取得し（ステップＳ４２）、その計算方式が一括計算方式であるか否かを判定する（ステップＳ４３）。
【０１２０】
選択矩形空間に対して決定された計算方式が一括計算方式である場合（ステップＳ４３におけるＹＥＳ）、一括計算部９０２は、選択矩形空間内に存在する各仮想移動体の移動計算を、一括計算方式で行う。具体的には、一括計算部９０２は、選択矩形空間内に存在する各仮想移動体で共通の速度に応じたセル数を算出する。一括計算部９０２は、（「共通速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算することによって、そのセル数を算出する。一括計算部９０２は、選択矩形空間内に存在する各仮想移動体それぞれのＸ座標に、そのセル数を加算することによって、各仮想移動体の単位時間経過後の位置を計算する（ステップＳ４４）。なお、一括計算部９０２は、各仮想移動体それぞれのＹ座標は変化させない。
【０１２１】
上記のセル数は、共通速度により単位時間内で移動可能な最大距離に相当するセル数である。従って、上記の演算は、選択矩形空間内の各仮想移動体のＸ軸の座標値に、共通速度に応じた距離を加算する処理であると言うことができる。
【０１２２】
図１７は、選択矩形空間内に存在する各仮想移動体の例を示す模式図である。矩形空間３０５が、選択矩形空間である。選択矩形空間３０５内の各仮想移動体３２１〜３２５の進行方向およびクラス（速度）は同一である。各仮想移動体３２１〜３２５の進行方向およびクラスであるので、各仮想移動体３２１〜３２５同士の衝突は生じない。そのため、一括計算方式を適用可能である。一括計算部９０２は、仮想移動体３２１〜３２５で共通の速度を用いて、（「共通速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算することによって、その共通速度で単位時間内で移動可能な最大距離に相当するセル数を計算する。このセル数が３であるとする。一括計算部９０２は、各仮想移動体３２１〜３２５それぞれのＹ座標は変化させずに、各仮想移動体３２１〜３２５それぞれのＸ座標に、上記のセル数を加算することによって、単位時間経過後の各仮想移動体３２１〜３２５の位置を計算する。
【０１２３】
なお、単位時間経過後の位置は、次の時間ステップにおける位置と言うこともできる。
【０１２４】
一括計算部９０２は、計算した位置に応じて、各仮想移動体に対応する各移動体情報に含まれる座標を更新する。例えば、仮想移動体３２１〜３２４は、選択矩形空間３０５から流出しない。この場合、一括計算部９０２は、仮想移動体３２１〜３２４に対応する各移動体情報に含まれる座標を更新し、所属空間情報については更新しない。
【０１２５】
図１７に示す例では、仮想移動体３２５の単位時間経過後の位置は、仮想移動体が存在していた選択矩形空間３０５の外部となる。すなわち、仮想移動体３２５は、選択矩形空間３０５から流出することになる。一括計算部９０２は、仮想移動体３２５の単位時間経過後の位置が、選択矩形空間３０５と次の矩形空間（図示略）とを繋ぐ節空間３０６であると決定する。この場合、一括計算部９０２は、仮想移動体３２５に対応する移動体情報に含まれる所属空間情報を、節空間３０６の識別情報に更新し、座標を「座標なし」を示す情報に更新する。
【０１２６】
また、一括計算部９０２は、選択矩形空間から流出する仮想移動体が存在する場合、その仮想移動体のＩＤを、流入出判定部９０４に通知する。図１７に示す例では、一括計算部９０２は、仮想移動体３２５のＩＤを流入出判定部９０４に通知する。
【０１２７】
選択矩形空間に対して決定された計算方式が一括計算方式でない場合（ステップＳ４３におけるＮＯ）、逐次計算部９０３は、選択矩形空間に存在する各仮想移動体を１つずつ選択し、選択した仮想移動体の速度および他の移動体の位置に基づいて、選択した仮想移動体の単位時間経過後の位置を計算する（ステップＳ４５）。
【０１２８】
本例では、全ての仮想移動体の移動モデルは共通であり、その移動モデルとして、前述の（１）〜（３）に示す事項が定められている。逐次計算部９０３は、選択した仮想移動体の単位時間経過後の位置をその移動モデルに従って計算する。以下、選択した仮想移動体を、単に仮想移動体と記す。
【０１２９】
逐次計算部９０３は、仮想移動体が存在するセルの１つ前方のセルに、他の仮想移動体が存在していなければ、（「仮想移動体の速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算することによって、仮想移動体の速度により単位時間内で移動可能な最大距離に相当するセル数を計算する。そして、逐次計算部９０３は、仮想移動体が存在するセルの前方方向に存在するそのセル数分のセルのいずれにも、他の仮想移動体が存在しなければ、そのセル数分だけ、仮想移動体を前方に移動させた位置を、単位時間経過後の仮想移動体の位置と定める。また、仮想移動体が存在するセルの前方方向におけるそのセル数分のセルのいずれかに他の仮想移動体が存在しているならば、逐次計算部９０３は、他の仮想移動体が存在しているセルの１つ手前のセルの中心位置を、単位時間経過後の仮想移動体の位置と定める。
【０１３０】
また、仮想移動体が存在するセルの１つ前方のセルに、他の仮想移動体が存在している場合、逐次計算部９０３は、仮想移動体が存在するセルの左隣のセルおよびその１つ前方のセルに、仮想移動体が存在しているか否かを確認する。仮想移動体が存在するセルの左隣のセルおよびその１つ前方のセルに仮想移動体が存在していなければ、逐次計算部９０３は、仮想移動体を左隣のセルに移動させる。すなわち、逐次計算部９０３は、仮想移動体のＹ座標に１を加算する。また、仮想移動体が存在するセルの左隣のセルおよびその１つ前方のセルの少なくとも一方に他の仮想移動体が存在する場合、または、左側にセルが存在しない場合、逐次計算部９０３は、仮想移動体が存在するセルの右隣のセルおよびその１つ前方のセルに、仮想移動体が存在しているか否かを確認する。そして、仮想移動体が存在するセルの右隣のセルおよびその１つ前方のセルに仮想移動体が存在していなければ、逐次計算部９０３は、仮想移動体を右隣のセルに移動させる。すなわち、仮想移動体のＹ座標から１を減算する。そして、逐次計算部９０３は、（「仮想移動体の速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算することによって、仮想移動体の速度により単位時間内で移動可能な最大距離に相当するセル数を計算する。元の位置の左隣のセル（右隣に移動させた場合には右隣のセル）の前方方向におけるそのセル数分のセルのいずれにも、他の仮想移動体が存在しなければ、逐次計算部９０３は、そのセル数分だけ仮想移動体を前方に移動させた位置を、単位時間経過後の仮想移動体の位置と定める。元の位置の左隣のセル（右隣に移動させた場合には右隣のセル）の前方方向に存在するそのセル数分のセルのいずれかに他の仮想移動体が存在していれば、逐次計算部９０３は、他の仮想移動体が存在しているセルの１つ手前のセルの中心位置を、単位時間経過後の仮想移動体の位置と定める。
【０１３１】
また、仮想移動体が存在するセルの右隣のセルおよびその１つ前方のセルの少なくとも一方に他の仮想移動体が存在する場合、または、右側にセルが存在しない場合、逐次計算部９０３は、現在、仮想移動体が存在しているセルの中心位置を、単位時間経過後の仮想移動体の位置と定める。
【０１３２】
逐次計算部９０３は、以上のように、選択した仮想移動体の単位時間経過後の位置を計算する。逐次計算部９０３は、その位置の計算結果に応じて、選択した仮想移動体に対応する移動体情報に含まれる座標を更新する。選択した仮想移動体が選択矩形空間から流出しない場合には、逐次計算部９０３は、所属空間情報は更新しない。選択した仮想移動体が選択矩形空間から流出する場合（すなわち、単位時間経過後の位置が選択矩形空間３０５の外部となる場合）、逐次計算部９０３は、選択した仮想移動体に対応する移動体情報に含まれる所属空間情報を、選択矩形空間と次の矩形空間とを繋ぐ節空間の識別情報に更新し、座標を「座標なし」を示す情報に更新する。
【０１３３】
また、逐次計算部９０３は、選択矩形空間から流出する仮想移動体が存在する場合、その仮想移動体のＩＤを、流入出判定部９０４に通知する。
【０１３４】
ステップＳ４４の後、および、ステップＳ４５の後、節空間処理部９０６は、選択矩形空間と、選択矩形空間の１つ手前の矩形空間とを繋ぐ節空間内に、選択矩形空間に進む仮想移動体が存在する場合、その仮想移動体の単位時間経過後の位置を決定する（ステップＳ４６）。節空間処理部９０６は、選択矩形空間におけるその節空間側の端部に並ぶ複数のセルのうち、任意のセルを選択し、そのセルの中心位置を、その仮想移動体の単位時間経過後の位置として決定すればよい。この場合、節空間処理部９０６は、その仮想移動体に対応する移動体情報に含まれる所属空間情報を、選択矩形空間の識別情報に更新し、座標を、上記のセルの中心位置の座標に更新する。また、その仮想移動体は、選択矩形空間に流入したことになる。節空間処理部９０６は、その仮想移動体のＩＤを流入出判定部９０４に通知する。
【０１３５】
なお、節空間に３つ以上の矩形空間が接続されている場合、その節空間から選択矩形空間以外の矩形空間に進む仮想移動体も存在し得る。節空間処理部９０６は、ステップＳ４６において、選択矩形空間以外の矩形空間に進む仮想移動体については無視する。
【０１３６】
次に、流入出判定部９０４は、直近のステップＳ４４またはステップＳ４５で一括計算部９０２または逐次計算部９０３から通知された仮想移動体のＩＤに基づいて、選択矩形空間から流出した仮想移動体の数をクラス別にカウントする。さらに、流入出判定部９０４は、直近のステップＳ４６で節空間処理部９０６から通知された仮想移動体のＩＤに基づいて、選択矩形空間に流入した仮想移動体の数をクラス別にカウントする（ステップＳ４７）。仮想移動体のＩＤとクラスは、移動体情報で対応付けられているので、流入出判定部９０４は、選択矩形空間からの仮想移動体流出数および選択矩形空間への仮想移動体流入数をそれぞれ、クラス別にカウントすることができる。
【０１３７】
次に、分布テーブル更新部９０５は、ステップＳ４７における仮想移動体流出数および仮想移動体流入数のクラス別のカウント結果に基づいて、分布テーブルにおける選択矩形空間に対応する要素の値を更新する（ステップＳ４８）。
【０１３８】
例えば、選択矩形空間が、矩形空間“２”であるとする。また、選択矩形空間から流出したクラス“１”の仮想移動体の数、選択矩形空間から流出したクラス“２”がそれぞれ２であるとする。また、選択矩形空間に流入したクラス“１”の仮想移動体の数、選択矩形空間に流入したクラス“１”の仮想移動体の数がそれぞれ１であるとする。
【０１３９】
この場合、分布テーブル更新部９０５は、図１３に例示する分布テーブルの矩形空間“２”に対応する要素を更新する。上記の例では、分布テーブル更新部９０５は、図１３に例示する分布テーブルの第１行第２列の要素の値を、２から、１（＝２−２＋１）に更新する。また、分布テーブル更新部９０５は、図１３に例示する分布テーブルの第２行第２列の要素の値を、６から、５（＝６−２＋１）に更新する。分布テーブル更新部９０５は、第２列の他の要素についても、ステップＳ４７でのカウント結果に基づいて更新する。
【０１４０】
ステップＳ４８の後、計算方式テーブル参照部９０１は、全ての矩形空間を選択したか否かを判定する（ステップＳ４９）。
【０１４１】
未選択の矩形空間が残っている場合（ステップＳ４９におけるＮＯ）、移動計算部４０５は、ステップＳ４１以降の処理を繰り返す。
【０１４２】
全ての矩形空間が選択済みである場合（ステップＳ４９におけるＹＥＳ）、ステップＳ４が終了する。
【０１４３】
分布テーブル更新部９０５は、ステップＳ４８に移行する毎に、分布テーブルの１列分の要素を更新し、結果的に、分布テーブルを更新する。
【０１４４】
ステップＳ４の終了後、再度ステップＳ３に移行した場合、決定部４０４は、上記のように更新された分布テーブルを参照することによって、再度、矩形空間毎に計算方式を決定する。
【０１４５】
本実施形態によれば、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その全ての仮想移動体の速度が同一であるという条件を満たしている矩形空間に対して、一括計算部９０２は、一括計算方式で仮想移動体の移動計算を行う。一括計算方式では、矩形空間内に存在する仮想移動体毎にセル数を計算する必要がない。一括計算部９０２は、矩形空間内に存在する各仮想移動体で共通の速度を用いて、（「共通速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を１回計算すればよい。そして、一括計算部９０２は、その結果得られたセル数を、矩形空間内の各仮想移動体のＸ座標に加算すればよい。
【０１４６】
本実施形態によれば、上記のように、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その全ての仮想移動体の速度が同一であるという条件を満たしている矩形空間に対して、上記のように、少ない計算量で仮想移動体の移動計算を行える。また、その条件を満たしているということは、衝突が生じないことが保証されていると言える。さらに、逐次計算方式でも、移動モデルに従って、衝突が生じないように、仮想移動体の移動計算を行う。従って、本実施形態によれば、移動体同士が衝突を回避する動作を適切に模倣しつつ、高速に移動シミュレーションを実行することができる。
【０１４７】
また、高速に移動シミュレーションを実行できることにより、例えば、道路等の状況の変化に合わせて誘導方針を変更した場合であっても、再シミュレーションをリアルタイムに実行することができる。
【０１４８】
実施形態２．
第２の実施形態における移動体シミュレーションシステムの構成は、第１の実施形態と同様に、図４に示すブロック図で表すことができる。また、移動体シミュレーションシステム４０１が備えるテーブル作成部４０３、決定部４０４、移動計算部４０５の構成もそれぞれ、第１の実施形態と同様に、図５、図８、図９に示すブロック図で表すことができる。以下、適宜、これらの図面を参照して、本発明の第２の実施形態について説明する。
【０１４９】
なお、シナリオ取得部４０２、テーブル作成部４０３および終了判定部４０６は、第１の実施形態におけるシナリオ取得部４０２、テーブル作成部４０３および終了判定部４０６と同様であり、説明を省略する。
【０１５０】
また、第２の実施形態の処理経過は、第１の実施形態と同様に、図１０に示すフローチャートで表すことができる。ただし、第２の実施形態では、決定部４０４および移動計算部４０５の動作が、第１の実施形態とは一部異なる。そのため、ステップＳ３，Ｓ４（図１０参照）の処理が、第１の実施形態とは一部異なる。ステップＳ１，Ｓ２，Ｓ５は、第１の実施形態におけるステップＳ１，Ｓ２，Ｓ５と同様である。
【０１５１】
第２の実施形態においても、各仮想移動体の経路計画情報は、仮想移動体が進む経路が、各矩形空間に定められた進行方向に沿うように定められているものとする。すなわち、どの矩形空間においても、矩形空間内に存在する仮想移動体の進行方向が同一であるものとする。
【０１５２】
第２の実施形態では、第１の実施形態における一括計算方式を、「第１の一括計算方式」と記す。また、第２の実施形態における第１の条件は、第１の実施形態における第１の条件と同一である。
【０１５３】
計算方式決定部８０２（図８参照）は、第１の条件を満たしている矩形空間に対しては、第１の一括計算方式を決定する。
【０１５４】
また、計算方式決定部８０２は、第１の条件を満たしていない矩形空間に対しては、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その矩形空間内に存在する仮想移動体の速度（換言すればクラス）が複数種類存在し、いずれの速度の最後尾の仮想移動体よりも前方にその最後尾の仮想移動体よりも遅い速度の仮想移動体が存在しないという条件を満たしているか否かを判定する。以下、この条件を第２の条件と記す。計算方式決定部８０２は、第２の条件を満たしている矩形空間に対して、速度（換言すればクラス）が共通である仮想移動体の集合毎に、集合に属する全ての仮想移動体の進行方向に沿った軸の座標値（Ｘ座標）にそれぞれ、その集合に属する全ての仮想移動体に共通の速度に応じた距離を加算することによって、各速度の仮想移動体の単位時間経過後の位置を計算する方式を用いることを決定する。この計算方式を、第２の一括計算方式と記す。
【０１５５】
また、計算方式決定部８０２は、第１の条件および第２の条件の両方を満たしていない矩形空間に対して、逐次計算方式を決定する。
【０１５６】
図１８は、第２の条件を満たす矩形空間の例を示す模式図である。図１８に示す例では、矩形空間１５００に、仮想移動体１５０１〜１５０６が存在する。仮想移動体１５０１〜１５０６の進行方法は同一である。図１８では、仮想移動体を、クラス（速度）毎に、異なる形で図示している。すなわち、仮想移動体１５０１〜１５０３のクラスと、仮想移動体１５０４〜１５０６のクラスは、異なる。一方、仮想移動体１５０１〜１５０３のクラス（速度）は同一である。同様に、仮想移動体１５０４〜１５０６のクラス（速度）も同一である。そして、仮想移動体１５０１〜１５０３の速度は、仮想移動体１５０４〜１５０６の速度よりも遅い。従って、矩形空間１５００内の仮想移動体の速度は２種類存在する。そして、仮想移動体１５０４〜１５０６の最後尾の仮想移動体１５０４よりも前方には、仮想移動体１５０４よりも遅い速度の仮想移動体は存在しない。同様に、仮想移動倍１５０１〜１５０３の最後尾の仮想移動体１５０１よりも前方には、仮想移動体１５０１よりも遅い速度の仮想移動体は存在しない。よって、矩形空間１５００は、第２の条件を満たす。
【０１５７】
第２の条件を満たす矩形空間では、仮想移動体の速度は複数種類存在する。しかし、同一の速度の仮想移動体の集合の最後尾の仮想移動体よりも前方には、その速度よりも遅い仮想移動体は存在しない。従って、衝突が生じない。そのため、逐次計算方式を用いずに、第２の一括計算方式を適用することができる。
【０１５８】
図１８では、矩形空間内の仮想移動体のクラスが２種類である場合を例にして、説明した。矩形空間内の仮想移動体のクラスが３種類以上である場合であっても、上記の第２の条件を満たしていれば、その矩形空間に対しては第２の一括計算方式が適用される。
【０１５９】
計算方式テーブル更新部８０３は、計算方式テーブルの各要素それぞれに、第１の一括計算方式に対応する値、第２の一括計算方式に対応する値、逐次計算方式に対応する値のいずれかを記録する。
【０１６０】
第１の実施形態では、一括計算方式に対応する値が１であり、逐次計算方式に対応する値が２である場合を例にして説明した。第２の実施形態では、第１の一括計算方式に対応する値が１であり、第２の一括計算方式に対応する値が２であり、逐次計算方式に対応する値が３である場合を例にして説明する。
【０１６１】
また、第２の実施形態では、一括計算部９０２（図９参照）は、計算方式テーブル参照部９０１によって選択された矩形空間に対して第１の一括計算方式が決定されている場合、その矩形空間内の各仮想移動体の移動計算を、第１の一括計算方式で実行する。また、一括計算部９０２は、選択された矩形空間に対して第２の一括計算方式が決定されている場合、その矩形空間内の各仮想移動体の移動計算を、第２の一括計算方式で実行する。また、選択された矩形空間に対して逐次計算方式が決定されている場合には、第１の実施形態と同様に、逐次計算部９０３が、その矩形空間内の各仮想移動体の移動計算を、逐次計算方式で実行する。
【０１６２】
次に、第２の実施形態の処理経過について説明する。前述のように、第２の実施形態の処理経過は、第１の実施形態と同様に、図１０に示すフローチャートで表すことができる。さらに、ステップＳ１，Ｓ２，Ｓ５（図１０参照）は、第１の実施形態におけるステップＳ１，Ｓ２，Ｓ５と同様であり、説明を省略する。
【０１６３】
図１９および図２０は、第２の実施形態におけるステップＳ３の処理経過の例を示すフローチャートである。
【０１６４】
ステップＳ３において、計算方式決定部８０２は、未だ選択されていない矩形空間を１つ選択する（ステップＳ３１）。以下、図１９および図２０の説明において、ステップＳ３１で選択された矩形空間を選択矩形空間と記す。
【０１６５】
次に、分布テーブル参照部８０１は、分布テーブルを参照し、選択矩形空間に存在する仮想移動体のクラスの種類数を取得する（ステップＳ３２）。
【０１６６】
次に、計算方式決定部８０２は、選択矩形空間が第１の条件を満たしているか否かを判定する（ステップＳ３３）。
【０１６７】
ステップＳ３１〜Ｓ３３は、第１の実施形態におけるステップＳ３１〜Ｓ３３と同様の処理であり、説明を省略する。
【０１６８】
選択矩形空間が第１の条件を満たしている場合（ステップＳ３３におけるＹＥＳ）、計算方式決定部８０２は、選択矩形空間の決定方式を第１の一括計算方式に決定する（ステップＳ６１）。
【０１６９】
ステップＳ６１の後、計算方式テーブル更新部８０３は、計算方式テーブル内の選択矩形空間に対応する要素の値を、第１の一括計算方式に対応する値に更新する（ステップＳ６２）。本例では、第１の一括計算方式に対応する値が１であるとする。
【０１７０】
また、第１の一括計算方式は、第１の実施形態における「一括計算方式」と同一である。従って、ステップＳ６１，Ｓ６２は、第１の実施形態におけるステップＳ３４，Ｓ３５と同様の処理である。
【０１７１】
選択矩形空間が第１の条件を満たしていない場合（ステップＳ３３におけるＮＯ）、計算方式決定部８０２は、ステップＳ６３以降の処理（図２０参照）を行う。図２０に示すステップＳ６３〜Ｓ７０の処理は、選択矩形空間が第２の条件を満たしているか否かを判定する処理である。前述のように、第２の条件は、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その矩形空間内に存在する仮想移動体の速度（クラス）が複数種類存在し、いずれの速度の最後尾の仮想移動体よりも前方にその最後尾の仮想移動体よりも遅い速度の仮想移動体が存在しないという条件である。
【０１７２】
選択矩形空間が第１の条件を満たしていない場合（ステップＳ３３におけるＮＯ）、計算方式決定部８０２は、選択矩形空間内の全ての仮想移動体の進行方向が同一であるか否かを判定する（ステップＳ６３）。計算方式決定部８０２は、所属空間情報として選択矩形空間の識別情報を含む全ての移動体情報に含まれる経路計画情報を参照することによって、選択矩形空間内に存在する全ての仮想移動体の進行方向が同一であるか否かを判定すればよい。
【０１７３】
選択矩形空間内の全ての仮想移動体の進行方向が同一でない場合（ステップＳ６３におけるＮＯ）、選択矩形空間は第２の条件を満たしていない。この場合、計算方式決定部８０２は、後述のステップＳ７３（図１９参照）に移行する。
【０１７４】
また、本例では、各仮想移動体の経路計画情報は、仮想移動体が進む経路が、各矩形空間に定められた進行方向に沿うように定められているものとする。このように、どの矩形空間においても、矩形空間内に存在する仮想移動体の進行方向が同一であることが予め分かっている場合には、計算方式決定部８０２は、移動体情報を参照せずに、選択矩形空間内に存在する全ての仮想移動体の進行方向が同一であると判定してよい。すなわち、計算方式決定部８０２は、一律に、ステップＳ６３からステップＳ６４に移行してよい。
【０１７５】
選択矩形空間内の全ての仮想移動体の進行方向が同一である場合（ステップＳ６３におけるＹＥＳ）、計算方式決定部８０２は、選択矩形空間内に存在する各クラスの先頭の仮想移動体と最後尾の仮想移動体の位置（座標）を取得する（ステップＳ６４）。
【０１７６】
次に、計算方式決定部８０２は、選択矩形空間内に存在する仮想移動体のクラスの中から、未だ選択されていないクラスを１つ選択する（ステップＳ６５）。ステップＳ６５で選択されたクラスを、以下、選択クラスと記す。
【０１７７】
次に、計算方式決定部８０２は、選択クラスの最後尾の仮想移動体の位置と、選択クラスよりも速度が遅い全てのクラスの先頭の仮想移動体の位置とを比較する（ステップＳ６６）。以下、選択クラスよりも速度が遅いクラスを「低速クラス」と記す。低速クラスは、選択クラスを基準にして定まるので、低速クラスの数や、どのクラスが低速クラスに該当するかは、選択クラスによって、変化する。
【０１７８】
計算方式決定部８０２は、ステップＳ６６での比較結果に基づいて、選択クラスの最後尾の仮想移動体よりも前方に、低速クラスの先頭の仮想移動体が存在していないかどうかを判定する（ステップＳ６７）。
【０１７９】
選択クラスの最後尾の仮想移動体よりも前方に、低速クラスの先頭の仮想移動体が存在していなければ、選択クラスの最後尾の仮想移動体よりも前方にその仮想移動体よりも遅い速度の仮想移動体が存在しないと言える。
【０１８０】
選択クラスの最後尾の仮想移動体よりも前方に、低速クラスの先頭の仮想移動体が存在していない場合（ステップＳ６７におけるＹＥＳ）、計算方式決定部８０２は、選択クラスのフラグをオンにする（ステップＳ６８）。
【０１８１】
このフラグがオンであるということは、選択クラスの最後尾の仮想移動体よりも前方にその仮想移動体よりも遅い速度の仮想移動体が存在しないことを表している。なお、計算方式決定部８０２は、例えば、ステップＳ６４からステップＳ６５に移行する前に、各クラスのフラグをオフに初期化しておく。
【０１８２】
ステップＳ６８の後、計算方式決定部８０２は、選択矩形空間内の全てのクラスを選択したか否かを判定する（ステップＳ６９）。
【０１８３】
選択矩形空間内に存在する仮想移動体のクラスのうち未選択のクラスが残っている場合（ステップＳ６９におけるＮＯ）、計算方式決定部８０２は、ステップＳ６５以降の処理を繰り返す。
【０１８４】
また、選択矩形空間内に存在する仮想移動体のクラスが全て選択済みである場合（ステップＳ６９におけるＹＥＳ）、計算方式決定部８０２は、選択矩形空間内に存在する仮想移動体の全てのクラスのフラグがオンであるか否かを判定する（ステップＳ７０）。
【０１８５】
選択矩形空間内に存在する仮想移動体の全てのクラスのフラグがオンである場合（ステップＳ７０におけるＹＥＳ）、選択矩形空間は第２の条件を満たしている。この場合、計算方式決定部８０２は、後述のステップＳ７１（図１９参照）に移行する。
【０１８６】
また、選択矩形空間内に存在する仮想移動体の全てのクラスのフラグのうち、一部のフラグがオフである場合（ステップＳ７０におけるＮＯ）、選択矩形空間は第２の条件を満たしていない。この場合、計算方式決定部８０２は、後述のステップＳ７３（図１９参照）に移行する。
【０１８７】
以下、図１８を参照して、ステップＳ６５以降の処理の例を示す。仮想移動体１５０１〜１５０３のクラスをクラスＡとする。また、仮想移動体１５０４〜１５０６のクラスをクラスＢとする。
【０１８８】
ステップＳ６５で、計算方式決定部８０２がクラスＢを選択したとする。この場合、クラスＡが低速クラスである。図１８に示す例では、クラスが２種類のみ存在する場合を示しているが、クラスが３種類以上存在する場合には、複数のクラスが低速クラスに該当する場合も生じる。
【０１８９】
計算方式決定部８０２は、選択クラス（クラスＢ）の最後尾の仮想移動体１５０４の位置と、全ての低速クラスの先頭の仮想移動体の位置とを比較する（ステップＳ６６）。本例では、低速クラスはクラスＡのみであるので、計算方式決定部８０２は、仮想移動体１５０４の位置と、クラスＡの先頭の仮想移動体１５０３の位置とを比較する。そして、計算方式決定部８０２は、選択クラス（クラスＢ）の最後尾の仮想移動体１５０４よりも前方に、低速クラス（クラスＡ）の先頭の仮想移動体１５０３が存在しないと判定する（ステップＳ６７におけるＹＥＳ）。そして、計算方式決定部８０２は、選択クラス（クラスＢ）のフラグをオンとする（ステップＳ６８）。
【０１９０】
続いて、ステップＳ６９，Ｓ６５の順に移行し、計算方式決定部８０２がクラスＡを選択したとする。図１８に示す例では、クラスＡの速度が最も遅いので、クラスＡを選択した場合には低速クラスに該当するクラスはない。低速クラスがないので、計算方式決定部８０２は、選択クラス（クラスＡ）の最後尾の仮想移動体１５０１よりも前方に、低速クラスの先頭の仮想移動体が存在しないと判定する（ステップＳ６７におけるＹＥＳ）。さらに、計算方式決定部８０２は、選択クラス（クラスＡ）のフラグをオンとする（ステップＳ６８）。
【０１９１】
２種類のクラスＡ，Ｂが全て選択済みであるので、ステップＳ６９，Ｓ７０の順に移行する。そして、計算方式決定部８０２は、選択矩形空間１５００内に存在する仮想移動体の全てのクラスＡ，Ｂのフラグがオンであると判定する（ステップＳ７０におけるＹＥＳ）。
【０１９２】
前述のように、選択矩形空間内に存在する仮想移動体の全てのクラスのフラグがオンである場合（ステップＳ７０におけるＹＥＳ）、選択矩形空間は第２の条件を満たしている。この場合、計算方式決定部８０２は、ステップＳ７１（図１９参照）に移行する。
【０１９３】
ステップＳ７１において、計算方式決定部８０２は、選択矩形空間の決定方式を、第２の一括計算方式に決定する（ステップＳ７１）。
【０１９４】
ステップＳ７１の後、計算方式テーブル更新部８０３は、計算方式テーブル内の選択矩形空間に対応する要素の値を、第２の一括計算方式に対応する値に更新する（ステップＳ７２）。本例では、第２の一括計算方式に対応する値が２であるとする。
【０１９５】
また、選択矩形空間内の全ての仮想移動体の進行方向が同一でない場合（ステップＳ６３におけるＮＯ）、または、選択矩形空間内に存在する仮想移動体の全てのクラスのフラグのうち、一部のフラグがオフである場合（ステップＳ７０におけるＮＯ）、選択矩形空間は第２の条件を満たしていない。この場合、計算方式決定部８０２は、ステップＳ７３に移行する。
【０１９６】
ステップＳ７３において、計算方式決定部８０２は、選択矩形空間の決定方式を、逐次計算方式に決定する（ステップＳ７３）。
【０１９７】
ステップＳ７３の後、計算方式テーブル更新部８０３は、計算方式テーブル内の選択矩形空間に対応する要素の値を、逐次計算方式に対応する値に更新する（ステップ７４）。本例では、逐次計算方式に対応する値が３であるとする。
【０１９８】
ステップＳ６２の後、ステップＳ７２の後、および、ステップＳ７４の後、計算方式決定部８０２は、全ての矩形空間を選択したか否かを判定する（ステップＳ３８）。未選択の矩形空間が残っている場合（ステップＳ３８におけるＮＯ）、決定部４０４は、ステップＳ３１以降の処理を繰り返す。
【０１９９】
全ての矩形空間が選択済みである場合（ステップＳ３８におけるＹＥＳ）、ステップＳ３が終了する。
【０２００】
図２１、図２２および図２３は、第２の実施形態におけるステップＳ４の処理経過の例を示すフローチャートである。第１の実施形態におけるステップＳ４と同様の処理については、図１５、図１６に示す符号と同一の符号を付し、詳細な説明を省略する。
【０２０１】
ステップＳ４において、計算方式テーブル参照部９０１は、未だ選択されていない矩形空間を１つ選択する（ステップＳ４１）。以下、図２１、図２２および図２３の説明において、ステップＳ４１で選択された矩形空間を選択矩形空間と記す。
【０２０２】
次に、計算方式テーブル参照部９０１は、計算方式テーブルを参照し、選択矩形空間に対して決定された計算方式を取得する（ステップＳ４２）。さらに、計算方式テーブル参照部９０１は、その計算方式が、第１の一括計算方式、第２の一括計算方式および逐次計算方式の何れであるのかを判定する（ステップＳ８１）。
【０２０３】
選択矩形空間に対して決定された計算方式が第１の一括計算方式である場合、一括計算部９０２は、選択矩形空間内に存在する各仮想移動体の移動計算を、第１の一括計算方式で行う（ステップＳ４４）。第１の一括計算方式は、第１の実施形態における「一括計算方式」と同一である。ステップＳ４４以降の処理は、第１の実施形態におけるステップＳ４４以降の処理と同様である。
【０２０４】
選択矩形空間に対して決定された計算方式が逐次計算方式である場合、逐次計算部９０３は、選択矩形空間内に存在する各仮想移動体の移動計算を、逐次計算方式で行う（ステップＳ４５）。ステップＳ４５以降の処理は、第１の実施形態におけるステップＳ４５以降の処理と同様である。
【０２０５】
選択矩形空間に対して決定された計算方式が第２の計算方式である場合、一括計算部９０２は、選択矩形空間内に存在する各仮想移動体の移動計算を、第２の一括計算方式で行う。具体的には、一括計算部９０２は、選択矩形空間内に存在する各仮想移動体をクラス別に分類する。そして、一括計算部９０２はクラスが共通である仮想移動体の集合毎に、集合に属する各仮想移動体で共通の速度に応じたセル数を算出し、集合に属する各仮想移動体それぞれのＸ座標にそのセル数を加算する。一括計算部９０２は、セル数を算出し、集合に属する各仮想移動体それぞれのＸ座標にそのセル数を加算する処理を、クラス別に分類した仮想移動体の集合毎に行うことで、選択矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する（ステップＳ８２、図２２参照）。なお、一括計算部９０２は、各仮想移動体それぞれのＹ座標は変化させない。
【０２０６】
上記のセル数は、共通速度により単位時間内で移動可能な最大距離に相当するセル数である。従って、上記の演算は、仮想移動体のＸ軸の座標値に、共通速度に応じた距離を加算する処理であると言うことができる。
【０２０７】
図１８を参照して、ステップＳ８２の処理の具体例を示す。一括計算部９０２は、選択矩形空間１５００内の仮想移動体１５０１〜１５０６を、仮想移動体１５０１〜１５０３を含む集合と、仮想移動体１５０４〜１５０６を含む集合に分類する。
【０２０８】
仮想移動体１５０１〜１５０３の速度は共通である。一括計算部９０２は、仮想移動体１５０１〜１５０３の共通速度を用いて、（「共通速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算することによって、その共通速度で単位時間内で移動可能な最大距離に相当するセル数を計算する。このセル数が１であるとする。一括計算部９０２は、各仮想移動体１５０１〜１５０３それぞれのＹ座標は変化させずに、各仮想移動体１５０１〜１５０３のＸ座標にそのセル数を加算することによって、単位時間経過後の各仮想移動体１５０１〜１５０３の位置を計算する。
【０２０９】
また、仮想移動体１５０４〜１５０６の速度は共通である。一括計算部９０２は、仮想移動体１５０４〜１５０６の共通速度を用いて、（「共通速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算することによって、その共通速度で単位時間内で移動可能な最大距離に相当するセル数を計算する。このセル数が２であるとする。一括計算部９０２は、各仮想移動体１５０４〜１５０６それぞれのＹ座標は変化させずに、各仮想移動体１５０４〜１５０６のＸ座標にそのセル数を加算することによって、単位時間経過後の各仮想移動体１５０４〜１５０６の位置を計算する。
【０２１０】
一括計算部９０２は、計算した位置に応じて、各仮想移動体に対応する各移動体情報に含まれる座標を更新する。例えば、仮想移動体１５０１〜１５０６は、選択矩形空間１５００から流出しない。この場合、一括計算部９０２は、仮想移動体１５０１〜１５０６に対応する各移動体情報に含まれる座標を更新し、所属空間情報については更新しない。
【０２１１】
また、仮想移動体の単位時間経過後の位置が、仮想移動体が存在していた選択矩形空間の外部となる場合がある。すなわち、選択矩形空間の外部に流出する仮想移動体が生じる場合もある。この場合、一括計算部９０２は、その仮想移動体の単位時間経過後の位置が、選択矩形空間と次の矩形空間とを繋ぐ節空間であると決定する。そして、一括計算部９０２は、その仮想移動体に対応する移動体情報に含まれる所属空間情報を、その節空間の識別情報に更新し、座標を「座標なし」を示す情報に更新する。この点は、第１の一括計算方式や逐次計算方式と同様である。
【０２１２】
また、一括計算部９０２は、選択矩形空間から流出する仮想移動体が存在する場合、その仮想移動体のＩＤを、流入出判定部９０４に通知する。この点も、第１の一括計算方式や逐次計算方式と同様である。
【０２１３】
ステップＳ４４の後、ステップＳ４５の後、および、ステップＳ８２の後、節空間処理部９０６は、選択矩形空間と、選択矩形空間の１つ手前の矩形空間とを繋ぐ節空間内に、選択矩形空間に進む仮想移動体が存在する場合、その仮想移動体の単位時間経過後の位置を決定する（ステップＳ４６）。ステップＳ４６は、第１の実施形態におけるステップＳ４６と同様である。
【０２１４】
次に、流入出判定部９０４は、直近のステップＳ４４、ステップＳ４５、またはステップＳ８２で一括計算部９０２または逐次計算部９０３から通知された仮想移動体のＩＤに基づいて、選択矩形空間から流出した仮想移動体の数をクラス別にカウントする。さらに、流入出判定部９０４は、直近のステップＳ４６で節空間処理部９０６から通知された仮想移動体のＩＤに基づいて、選択矩形空間に流入した仮想移動体の数をクラス別にカウントする（ステップＳ４７）。
【０２１５】
次に、分布テーブル更新部９０５は、ステップＳ４７における仮想移動体流出数および仮想移動体流入数のクラス別のカウント結果に基づいて、分布テーブルにおける選択矩形空間に対応する要素の値を更新する（ステップＳ４８）。
【０２１６】
ステップＳ４８の後、計算方式テーブル参照部９０１は、全ての矩形空間を選択したか否かを判定する（ステップＳ４９）。
【０２１７】
未選択の矩形空間が残っている場合（ステップＳ４９におけるＮＯ）、移動計算部４０５は、ステップＳ４１以降の処理を繰り返す。
【０２１８】
全ての矩形空間が選択済みである場合（ステップＳ４９におけるＹＥＳ）、ステップＳ４が終了する。
【０２１９】
ステップＳ４７〜ステップＳ４９は、第１の実施形態におけるステップＳ４７〜Ｓ４９と同様の処理である。
【０２２０】
第１の実施形態と同様に、ステップＳ４で分布テーブルが更新される。ステップＳ４の終了後、再度ステップＳ３に移行した場合、決定部４０４は、上記のように更新された分布テーブルを参照することによって、再度、矩形空間毎に計算方式を決定する。
【０２２１】
本実施形態では、一括計算部９０２は、第１の条件を満たす矩形空間に対して、第１の一括計算方式で仮想移動体の移動計算を行う。さらに、一括計算部９０２は、第２の条件を満たす矩形空間に対して、第２の一括計算方式で仮想移動体の移動計算を行う。第２の一括計算方式では、クラス別に分類した仮想移動体の集合毎に、（「共通速度」×「単位時間」）／「１つのセルのＸ軸方向に沿った辺に相当する距離」を計算すればよく、移動体毎にセル数の計算を行う必要がない。従って、第１の実施形態と同様に、移動体同士が衝突を回避する動作を適切に模倣しつつ、高速に移動シミュレーションを実行することができる。また、高速に移動シミュレーションを実行できることにより、例えば、道路等の状況の変化に合わせて誘導方針を変更した場合であっても、再シミュレーションをリアルタイムに実行することができる。
【０２２２】
図２４は、本発明の各実施形態に係るコンピュータの構成例を示す概略ブロック図である。コンピュータ１０００は、ＣＰＵ１００１と、主記憶装置１００２と、補助記憶装置１００３と、インタフェース１００４とを備える。
【０２２３】
各実施形態の移動体シミュレーションシステム４０１は、コンピュータ１０００に実装される。移動体シミュレーションシステム４０１の動作はプログラム（移動体シミュレーションプログラム）の形式で補助記憶装置１００３に記憶されている。ＣＰＵ１００１は、プログラムを補助記憶装置１００３から読み出して主記憶装置１００２に展開し、そのプログラムに従って上記の処理を実行する。
【０２２４】
補助記憶装置１００３は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース１００４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory ）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory ）、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ１０００に配信される場合、配信を受けたコンピュータ１０００がそのプログラムを主記憶装置１００２に展開し、上記の処理を実行してもよい。
【０２２５】
また、プログラムは、前述の処理の一部を実現するためのものであってもよい。さらに、プログラムは、補助記憶装置１００３に既に記憶されている他のプログラムとの組み合わせで前述の処理を実現する差分プログラムであってもよい。
【０２２６】
また、各構成要素の一部または全部は、汎用または専用の回路（circuitry ）、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【０２２７】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０２２８】
次に、本発明の概要について説明する。図２５は、本発明の移動体シミュレーションシステムの概要を示すブロック図である。本発明の移動体シミュレーションシステムは、コンピュータ内に表現された複数の仮想移動体の単位時間経過後の位置の計算を繰り返すことによって、現実の移動体の移動のシミュレーションを行う。そして、本発明の移動体シミュレーションシステムは、決定部７１と、位置計算部７２とを備える。
【０２２９】
決定部７１（例えば、決定部４０４）は、分岐点および折れ目を含まない仮想空間として予め定められた空間である矩形空間毎に、矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する計算方式を決定する。
【０２３０】
位置計算部７２（例えば、移動計算部４０５）は、矩形空間を１つずつ選択し、選択した矩形空間に対して決定されている計算方式に従って、その矩形空間内に存在する各仮想移動体の単位時間経過後の位置を計算する。
【０２３１】
そして、決定部７１は、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、その全ての仮想移動体の速度が同一であるという第１の条件を満たしている矩形空間に対して、その全ての仮想移動体の矩形空間における進行方向に沿った軸の座標値にそれぞれ、その全ての仮想移動体に共通の速度に応じた距離を加算することによって、その全ての仮想移動体の単位時間経過後の位置を計算する一括計算方式を決定する。
【０２３２】
また、決定部７１は、第１の条件を満たしていない矩形空間に対して、当該矩形空間内の仮想移動体を１つずつ選択し、選択した仮想移動体の速度および他の仮想移動体の位置に基づいて、選択した仮想移動体の単位時間経過後の位置を計算する逐次計算方式を決定する。
【０２３３】
そのような構成により、移動体同士が衝突を回避する動作を適切に模倣しつつ、高速に移動シミュレーションを実行することができる。
【０２３４】
また、決定部７１が、矩形空間内に存在する全ての仮想移動体の進行方向が同一であり、かつ、当該矩形空間内に存在する仮想移動体の速度が複数種類存在し、いずれの速度の仮想移動体の最後尾の仮想移動体よりも前方に当該最後尾の仮想移動体よりも遅い速度の仮想移動体が存在しないという第２の条件を満たしている矩形空間に対して、速度が共通である仮想移動体の集合毎に、集合に属する全ての仮想移動体の矩形空間における進行方向に沿った軸の座標値にそれぞれ、その集合に属する全ての仮想移動体に共通の速度に応じた距離を加算することによって、各速度の仮想移動体の単位時間経過後の位置を計算する第２の一括計算方式を決定し、第１の条件と第２の条件の両方を満たしていない矩形領域に対して逐次計算方式を決定する構成であってもよい。
【０２３５】
また、位置計算部７２が、選択した矩形空間に対して決定されている計算方式に従って、その矩形空間内に存在する仮想移動体の単位時間経過後の位置を計算したときに、当該位置がその矩形空間の外部となる場合、その仮想移動体の単位時間経過後の位置が、その矩形空間と次の矩形空間とを繋ぐ節空間であると決定する構成であってもよい。
【０２３６】
また、位置計算部７２が、選択した矩形空間と、当該選択した矩形空間の１つ手前の矩形空間とを繋ぐ節空間内に、当該選択した矩形空間に進む仮想移動体が存在する場合、当該仮想移動体の単位時間経過後の位置が、当該選択した矩形空間のその節空間側の端部であると決定する構成であってもよい。
【０２３７】
矩形空間毎に速度別で仮想移動体の数を記録する配列を作成する配列作成部（例えば、テーブル作成部４０３）を備え、位置計算部７２が、選択した矩形空間内に存在する仮想移動体の単位時間経過後の位置を決定した場合に配列に記録された値を更新し、決定部７１が、配列を参照して、矩形空間毎に計算方式を決定する構成であってもよい。
【産業上の利用可能性】
【０２３８】
本発明は、複数の移動体の移動のシミュレーションを実行する移動体シミュレーションシステムに好適に適用可能である。
【符号の説明】
【０２３９】
４０１  移動体シミュレーションシステム
４０２  シナリオ取得部
４０３  テーブル作成部
４０４  決定部
４０５  移動計算部
４０６  終了判定部
５０１  分布テーブル作成部
５０２  計算方式テーブル作成部
８０１  分布テーブル参照部
８０２  計算方式決定部
８０３  計算方式テーブル更新部
９０１  計算方式テーブル参照部
９０２  一括計算部
９０３  逐次計算部
９０４  流入出判定部
９０５  分布テーブル更新部
９０６  節空間処理部
【図１】
2018142107.tif 000003
【図２】
2018142107.tif 000004
【図３】
2018142107.tif 000005
【図４】
2018142107.tif 000006
【図５】
2018142107.tif 000007
【図６】
2018142107.tif 000008
【図７】
2018142107.tif 000009
【図８】
2018142107.tif 000010
【図９】
2018142107.tif 000011
【図１０】
2018142107.tif 000012
【図１１】
2018142107.tif 000013
【図１２】
2018142107.tif 000014
【図１３】
2018142107.tif 000015
【図１４】
2018142107.tif 000016
【図１５】
2018142107.tif 000017
【図１６】
2018142107.tif 000018
【図１７】
2018142107.tif 000019
【図１８】
2018142107.tif 000020
【図１９】
2018142107.tif 000021
【図２０】
2018142107.tif 000022
【図２１】
2018142107.tif 000023
【図２２】
2018142107.tif 000024
【図２３】
2018142107.tif 000025
【図２４】
2018142107.tif 000026
【図２５】
2018142107.tif 000027