(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022187781
(43)【公開日】2022-12-20
(54)【発明の名称】マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法
(51)【国際特許分類】
G06F 9/48 20060101AFI20221213BHJP
G06F 9/54 20060101ALI20221213BHJP
G16Z 99/00 20190101ALI20221213BHJP
【FI】
G06F9/48 370
G06F9/54 Z
G16Z99/00
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2021095954
(22)【出願日】2021-06-08
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】110003199
【氏名又は名称】弁理士法人高田・高橋国際特許事務所
(72)【発明者】
【氏名】鳥越 貴智
(72)【発明者】
【氏名】吉岡 顕
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049DD02
(57)【要約】
【課題】シミュレーションの精度を維持しつつ、高速にシミュレーションを実行することができるマルチエージェントシミュレーション(MAS)システムを提供する。
【解決手段】MASシステム100は、エージェント毎に設けられたエージェントシミュレータ200A~200Cとセンターコントローラ300とを備える。エージェントシミュレータ200A~200Cは、メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションする。センターコントローラ300は、エージェントシミュレータ200A~200Cの対象世界のシミュレーションへの参加と対象世界のシミュレーションからの離脱とを管理し、対象世界の時間の流れに処理が追い付いていないエージェントシミュレータ200Bを対象世界のシミュレーションから離脱させる。
【選択図】
図3
【特許請求の範囲】
【請求項1】
相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーションシステムにおいて、
前記複数のエージェントのエージェント毎に設けられ、メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションする複数のエージェントシミュレータと、
前記複数のエージェントシミュレータの前記対象世界のシミュレーションへの参加と前記対象世界のシミュレーションからの離脱とを管理するセンターコントローラと、を備え、
前記センターコントローラは、前記対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを前記対象世界のシミュレーションから離脱させる
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項2】
請求項1に記載のマルチエージェントシミュレーションシステムにおいて、
前記センターコントローラは、前記対象世界のシミュレーションから或るエージェントシミュレータを離脱させた場合、残りのエージェントシミュレータに対して前記或るエージェントシミュレータの離脱を通知する
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項3】
請求項1又は2に記載のマルチエージェントシミュレーションシステムにおいて、
前記センターコントローラは、前記複数のエージェントシミュレータ間のメッセージの送受信を制御し、メッセージの送信が遅れているエージェントシミュレータを検出した場合、当該エージェントシミュレータを前記対象世界のシミュレーションから離脱させる
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項4】
請求項1乃至3の何れか1項に記載のマルチエージェントシミュレーションシステムにおいて、
前記複数のエージェントシミュレータのそれぞれは、他のエージェントシミュレータに対する処理の遅延を判定し、前記他のエージェントシミュレータに対する処理の遅延が認められた場合には、前記センターコントローラに離脱を申し出て、
前記センターコントローラは、離脱を申し出たエージェントシミュレータを前記対象世界のシミュレーションから離脱させる
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項5】
請求項1乃至4の何れか1項に記載のマルチエージェントシミュレーションシステムにおいて、
前記マルチエージェントシミュレーションシステムは、実世界の時間の流れに対する前記対象世界の時間の流れの速度比を可変に構成され、
前記センターコントローラは、前記対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを前記対象世界のシミュレーションから離脱させながら前記速度比を上昇させる
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項6】
請求項1乃至5の何れか1項に記載のマルチエージェントシミュレーションシステムにおいて、
前記複数のエージェントシミュレータは、メッセージを送信する時間粒度を調整可能な可変時間粒度エージェントシミュレータを含み、
前記可変時間粒度エージェントシミュレータは、前記対象世界の時間の流れに処理が追い付いていない場合、所定の許容範囲内で時間粒度を大きくする
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項7】
請求項1乃至6の何れか1項に記載のマルチエージェントシミュレーションシステムにおいて、
前記センターコントローラは、前記複数のエージェントシミュレータのうちの所定数のエージェントシミュレータが前記対象世界のシミュレーションから離脱した場合、前記対象世界のシミュレーションを中断し、所定時間過去の状態に戻ってから前記対象世界のシミュレーションを再開する
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項8】
相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーション方法であって、
前記複数のエージェントのエージェント毎に設けられた複数のエージェントシミュレータの間でメッセージの交換を行い、前記メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションすることと、
センターコントローラによって前記複数のエージェントシミュレータの前記対象世界のシミュレーションへの参加と前記対象世界のシミュレーションからの離脱とを管理し、前記対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを前記対象世界のシミュレーションから離脱させることと、を含む
ことを特徴とするマルチエージェントシミュレーション方法。
【請求項9】
請求項8に記載のマルチエージェントシミュレーション方法において、
前記対象世界のシミュレーションから或るエージェントシミュレータを離脱させた場合、前記センターコントローラに、残りのエージェントシミュレータに対して前記或るエージェントシミュレータの離脱を通知させる
ことを特徴とするマルチエージェントシミュレーション方法。
【請求項10】
請求項8又は9に記載のマルチエージェントシミュレーション方法において、
前記複数のエージェントシミュレータ間のメッセージの送受信を制御させ、メッセージの送信が遅れているエージェントシミュレータを検出した場合、前記センターコントローラに、当該エージェントシミュレータを前記対象世界のシミュレーションから離脱させることを実行させる
ことを特徴とするマルチエージェントシミュレーション方法。
【請求項11】
請求項8乃至10の何れか1項に記載のマルチエージェントシミュレーション方法において、
前記複数のエージェントシミュレータのそれぞれに、他のエージェントシミュレータに対する処理の遅延を判定させ、前記他のエージェントシミュレータに対する処理の遅延が認められた場合には、前記センターコントローラに離脱を申し出させ、
前記センターコントローラに、離脱を申し出たエージェントシミュレータを前記対象世界のシミュレーションから離脱させることを実行させる
ことを特徴とするマルチエージェントシミュレーション方法。
【請求項12】
請求項8乃至11の何れか1項に記載のマルチエージェントシミュレーション方法において、
実世界の時間の流れに対する前記対象世界の時間の流れの速度比を可変にし、
前記センターコントローラに、前記対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを前記対象世界のシミュレーションから離脱させながら前記速度比を上昇させることを実行させる
ことを特徴とするマルチエージェントシミュレーション方法。
【請求項13】
請求項8乃至12の何れか1項に記載のマルチエージェントシミュレーション方法において、
前記複数のエージェントシミュレータがメッセージを送信する時間粒度を調整可能な可変時間粒度エージェントシミュレータを含み、前記可変時間粒度エージェントシミュレータが前記対象世界の時間の流れに処理が追い付いていない場合、前記可変時間粒度エージェントシミュレータに、所定の許容範囲内で時間粒度を大きくさせる
ことを特徴とするマルチエージェントシミュレーション方法。
【請求項14】
請求項8乃至13の何れか1項に記載のマルチエージェントシミュレーション方法において、
前記複数のエージェントシミュレータのうちの所定数のエージェントシミュレータが前記対象世界のシミュレーションから離脱した場合、前記センターコントローラに、前記対象世界のシミュレーションを中断させ、所定時間過去の状態に戻ってから前記対象世界のシミュレーションを再開させる
ことを特徴とするマルチエージェントシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法に関する。
【背景技術】
【0002】
相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーションが知られている。例えば、特許文献1には、マルチエージェントシミュレーションにおいて、エージェント状況を他のエージェントに通知する時間間隔を変更する発明が開示されている。この発明では、例えば、情報の変化があまりない場合、通知頻度を下げてシミュレーションを早く進めることが行われる。
【0003】
なお、本開示の技術分野における出願時の技術レベルを示す文献としては、上記特許文献1の他にも下記の特許文献2、特許文献3、及び特許文献4を例示することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2015-022378号公報
【特許文献2】特開2004-272693号公報
【特許文献3】特開2008-203913号公報
【特許文献4】特開2009-151634号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
シミュレーションしたい対象世界における時間の進み具合は、必ずしも現実の時間の進み具合と同じである必要はない。シミュレーション内の時間の進み具合を現実の時間の進み具合よりも速くすることで、シミュレーションを高速に進めることができる。ただし、実現可能なシミュレーションの速度はComputing/Networking環境に依存する。
【0006】
マルチエージェントシミュレーションでは、エージェント間の相互作用はメッセージの交換により行われる。各エージェントでの計算時間とメッセージの交換に要する時間との合計が各エージェントに設定された時間粒度に収まっているならば、各エージェントのシミュレーションの精度を維持することができる。
【0007】
しかし、Computing/Networking環境が劣る場合、必要な処理タイミングまでに他のエージェントからのメッセージが届かない場合や、逆に他のエージェントへメッセージを送信する前に他のエージェントから未来のメッセージが届いてしまう場合がある。つまり、Computing/Networking環境が劣る場合、シミュレーションの速度が速すぎることで、シミュレーションの対象世界における処理時間が時間粒度に間に合わないエージェントがでてきてしまう場合がある。このような場合、当然ながら対象世界のシミュレーションの精度は低下してしまう。
【0008】
本開示は、上述のような課題に鑑みてなされたものである。本開示は、シミュレーションの精度を維持しつつ、高速にシミュレーションを実行することができるマルチエージェントシミュレーションシステム及び方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本開示は、相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーションシステムを提供する。本開示のシステムは、複数のエージェントのエージェント毎に設けられた複数のエージェントシミュレータと、センターコントローラとを備える。上記複数のエージェントシミュレータは、メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションするようにプログラムされている。センターコントローラは、上記複数のエージェントシミュレータの対象世界のシミュレーションへの参加と対象世界のシミュレーションからの離脱とを管理し、対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを対象世界のシミュレーションから離脱させるようにプログラムされている。
【0010】
本開示のシステムにおいて、センターコントローラは、対象世界のシミュレーションから或るエージェントシミュレータを離脱させた場合、残りのエージェントシミュレータに対してエージェントシミュレータの離脱を通知してもよい。これによれば、残りのエージェントシミュレータは離脱したエージェントシミュレータからのメッセージを待ち続けることなく処理を進めることができる。
【0011】
本開示のシステムにおいて、センターコントローラは、複数のエージェントシミュレータ間のメッセージの送受信を制御し、メッセージの送信が遅れているエージェントシミュレータを検出した場合、当該エージェントシミュレータを対象世界のシミュレーションから離脱させてもよい。これによれば、センターコントローラの判断により、対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを離脱させることができる。
【0012】
本開示のシステムにおいて、複数のエージェントシミュレータのそれぞれは、他のエージェントシミュレータに対する処理の遅延を判定し、他のエージェントシミュレータに対する処理の遅延が認められた場合には、センターコントローラに離脱を申し出てもよい。その場合、センターコントローラは、離脱を申し出たエージェントシミュレータを対象世界のシミュレーションから離脱させてもよい。これによれば、対象世界の時間の流れに処理が追い付かなくなったエージェントシミュレータ自身の判断により、当該エージェントシミュレータを対象世界のシミュレーションから離脱させることができる。
【0013】
本開示のシステムにおいて、マルチエージェントシミュレーションシステムは、実世界の時間の流れに対する対象世界の時間の流れの速度比を可変に構成されてもよい。この場合、センターコントローラは、対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを対象世界のシミュレーションから離脱させながら速度比を上昇させてもよい。これによれば、対象世界のシミュレーションの精度を維持しながら、シミュレーションの速度を上昇させていくことができる。また、センターコントローラは、特定のエージェントシミュレータが離脱しない限りにおいて速度比を上昇させてもよい。これによれば、対象世界において重要でないエージェント(例えば群衆の中の各人)の対象世界からの消失は許容しつつ、対象世界において重要なエージェント(例えば車両)は消失させることのない範囲で、できる限り高速にシミュレーションを実行することができる。
【0014】
本開示のシステムにおいて、複数のエージェントシミュレータは、メッセージを送信する時間粒度を調整可能な可変時間粒度エージェントシミュレータを含んでもよい。この場合、可変時間粒度エージェントシミュレータは、対象世界の時間の流れに処理が追い付いていない場合、所定の許容範囲内で時間粒度を大きくしてもよい。エージェントシミュレータがメッセージを送信する時間粒度を大きくすれば、対象世界でのエージェントの状態の変化はカクカクしたものになりやすいが、対象世界の時間の流れに対して余裕は生じる。これより、対象世界の時間の流れに処理が追い付かず対象世界のシミュレーションから離脱するエージェントシミュレータの数を低減することができる。
【0015】
本開示のシステムにおいて、センターコントローラは、複数のエージェントシミュレータのうちの所定数のエージェントシミュレータが対象世界のシミュレーションから離脱した場合、対象世界のシミュレーションを中断し、所定時間過去の状態に戻ってから対象世界のシミュレーションを再開してもよい。速度比が最初から不適切だった場合、急激なエージェントの増加によって負荷が急増した場合、或いは、一時的なネットワーク異常によって全体での通信ディレイが急増した場合、たくさんのエージェントシミュレータが離脱し、対象世界のシミュレーションの続行が困難になる。しかし、たくさんのエージェントシミュレータが離脱する前の過去に戻って対象世界のシミュレーションを再開することで、対象世界のシミュレーションを遂行することができるようになる。
【0016】
本開示は、相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーション方法を提供する。本開示の方法は、複数のエージェントのエージェント毎に設けられた複数のエージェントシミュレータの間でメッセージの交換を行い、メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションすることを含む。また、本開示の方法は、センターコントローラによって複数のエージェントシミュレータの対象世界のシミュレーションへの参加と対象世界のシミュレーションからの離脱とを管理し、対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを対象世界のシミュレーションから離脱させることを含む。
【0017】
本開示の方法において、対象世界のシミュレーションから或るエージェントシミュレータを離脱させた場合、センターコントローラから残りのエージェントシミュレータに対してエージェントシミュレータの離脱を通知してもよい。
【0018】
また、本開示の方法において、複数のエージェントシミュレータ間のメッセージの送受信をセンターコントローラによって制御してもよい。そして、メッセージの送信が遅れているエージェントシミュレータが検出された場合、当該エージェントシミュレータを対象世界のシミュレーションから離脱させてもよい。
【0019】
また、本開示の方法において、複数のエージェントシミュレータのそれぞれに、他のエージェントシミュレータに対する処理の遅延を判定させてもよい。そして、他のエージェントシミュレータに対する処理の遅延が認められた場合には、エージェントシミュレータからセンターコントローラに離脱を申し出させてもよい。そして、離脱を申し出たエージェントシミュレータを対象世界のシミュレーションから離脱させてもよい。
【0020】
また、本開示の方法において、実世界の時間の流れに対する対象世界の時間の流れの速度比を可変にしてもよい。この場合、対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを対象世界のシミュレーションから離脱させながら速度比を上昇させてもよい。また、特定のエージェントシミュレータが離脱しない限りにおいて速度比を上昇させてもよい。
【0021】
また、本開示の方法において、複数のエージェントシミュレータは、メッセージを送信する時間粒度を調整可能な可変時間粒度エージェントシミュレータを含んでもよい。可変時間粒度エージェントシミュレータが対象世界の時間の流れに処理が追い付いていない場合、所定の許容範囲内で時間粒度を大きくしてもよい。
【0022】
また、本開示の方法において、複数のエージェントシミュレータのうちの所定数のエージェントシミュレータが対象世界のシミュレーションから離脱した場合、対象世界のシミュレーションを中断してもよい。そして、所定時間過去の状態に戻ってから対象世界のシミュレーションを再開してもよい。
【発明の効果】
【0023】
本開示のマルチエージェントシミュレーションシステム及び方法では、対象世界のシミュレーションは、メッセージの交換によってエージェント同士を相互作用させることによって行われる。このため、対象世界の時間の流れに処理が追い付いていないエージェントシミュレータが存在している場合、その処理の遅れは他のエージェントシミュレータの処理にも影響し、対象世界のシミュレーションの精度を低下させる。本開示のマルチエージェントシミュレーションシステム及び方法によれば、対象世界の時間の流れに処理が追い付いていないエージェントシミュレータを対象世界のシミュレーションから離脱させることで、対象世界のシミュレーションの精度の低下を抑制し、且つ、シミュレーションの速度を高める余地をつくることができる。
【図面の簡単な説明】
【0024】
【
図1】本開示の実施形態に係るマルチエージェントシミュレーションシステムの概要を示す図である。
【
図2】本開示の実施形態に係るマルチエージェントシミュレーションシステムの概要を示す図である。
【
図3】本開示の実施形態に係るマルチエージェントシミュレーションシステムの概要を示す図である。
【
図4】本開示の実施形態に係るエージェントシミュレータにおいて想定されるシミュレーション状況のうちの望ましい状況を示すタイミング図である。
【
図5】本開示の実施形態に係るエージェントシミュレータにおいて想定されるシミュレーション状況のうちの他の一部のエージェントシミュレータが遅れている状況を示すタイミング図である。
【
図6】本開示の実施形態に係るエージェントシミュレータにおいて想定されるシミュレーション状況のうちの他のエージェントシミュレータよりやや遅れている状況を示すタイミング図である。
【
図7】本開示の実施形態に係るエージェントシミュレータにおいて想定されるシミュレーション状況のうちの他のエージェントシミュレータより激しく遅れている状況を示すタイミング図である。
【
図8】本開示の実施形態に係るエージェントシミュレータによるシミュレーション速度の調整とシミュレーションからの離脱の各判断の流れを示すフローチャートである。
【
図9】本開示の実施形態に係るシミュレーションコンダクタによるエージェントシミュレータのシミュレーション速度の調整の流れを示すフローチャートである。
【
図10】本開示の実施形態に係るシミュレーションコンダクタの判断によるエージェントシミュレータへのシミュレーションからの離脱の指示の流れを示すフローチャートである。
【
図11】本開示の実施形態に係るシミュレーションコンダクタの判断によるシミュレーションの巻き戻し再スタートの流れを示すシーケンス図である。
【
図12】本開示の実施形態に係るマルチエージェントシミュレーションシステムの構成を示すブロック図である。
【
図13】本開示の実施形態に係る歩行者エージェント用のエージェントシミュレータの構成と情報の流れを示すブロック図である。
【
図14】本開示の実施形態に係る自律移動体エージェント用のエージェントシミュレータの構成と情報の流れを示すブロック図である。
【
図15】本開示の実施形態に係るVR歩行者エージェント用のエージェントシミュレータの構成と情報の流れを示すブロック図である。
【
図16】本開示の実施形態に係る路側センサエージェント用のエージェントシミュレータの構成と情報の流れを示すブロック図である。
【
図17】本開示の実施形態に係るマルチエージェントシミュレーションシステムによるシミュレーション結果の集約と評価のための構成を示すブロック図である。
【
図18】本開示の実施形態に係るマルチエージェントシミュレーションシステムの物理構成の例を示す図である。
【発明を実施するための形態】
【0025】
以下、図面を参照して本開示の実施形態について説明する。ただし、以下に示す実施形態において各要素の個数、数量、量、範囲等の数に言及した場合、特に明示した場合や原理的に明らかにその数に特定される場合を除いて、その言及した数に、本開示に係る思想が限定されるものではない。また、以下に示す実施形態において説明する構造等は、特に明示した場合や明らかに原理的にそれに特定される場合を除いて、本開示に係る思想に必ずしも必須のものではない。
【0026】
1.マルチエージェントシミュレーションシステムの概要
図1乃至
図3を用いて、本開示の実施形態に係るマルチエージェントシミュレーションシステムの概要を説明する。以下、マルチエージェントシミュレーションシステムをMASシステムと省略して表記する。
【0027】
1-1.MASシステムの構成及び機能の概略
図1は、本実施形態のMASシステム100の概略構成を示す。MASシステム100は、複数のエージェントを4A,4B,4Cを相互作用させることによって、シミュレーションの対象である世界(シミュレーション対象世界)2をシミュレーションする。本開示のMASシステムによるシミュレーション対象世界には限定はない。ただし、本実施形態のMASシステム100は、人が自律移動する移動体、例えば、ロボットや車両と共存し、自律移動する移動体を用いた様々なサービスの提供を受けることができる世界をシミュレーション対象世界2としている。シミュレーション対象世界2において提供されるサービスとしては、例えば、自律運転車両を用いたオンデマンドバスや定期運行型バスなどのモビリティサービスや、自律移動型のロボットを用いて荷物を配送する物流サービスを挙げることができる。
【0028】
シミュレーション対象世界2は、多数且つ多種類のエージェントによって構成されている。シミュレーション対象世界2を構成するエージェントには、移動物体を表すエージェントと、定置物体を表すエージェントとが含まれる。エージェントとして表される移動物体としては、歩行者、ロボット、低速モビリティ、車両、実在の人がVRシステムを用いて参加する歩行者、エレベータ等が例示される。エージェントとして表される定置物体としては、カメラを含むセンサや自動ドア等が例示される。
【0029】
ただし、
図1においては、説明を分かりやすくするため、シミュレーション対象世界2には3つのエージェント4A,4B,4Cのみが表されている。このうちエージェント4A,4Bはロボットを表し、エージェント4Cは歩行者を表している。つまり、
図1に示すシミュレーション対象世界2には、ロボットと歩行者の2種類のエージェントが表されている。なお、エージェント4Aとエージェント4Bとは、ロボットという同じカテゴリーに属するが、大きさや形状、走行速度や動作などにおいて違いがある。よって、エージェント4Aとエージェント4Bとは、歩行者であるエージェント4Cがそれらから取得できる視覚情報において違いがある。以下、本明細書内では、エージェント4Aを単にエージェントAと表記する。同様に、エージェント4Bを単にエージェントBと表記し、エージェント4Cを単にエージェントCと表記する。また、以下では、仮想の世界であるシミュレーション対象世界2を実世界と区別して仮想世界2と呼ぶ。
【0030】
MASシステム100は、複数のエージェントシミュレータ200を備える。エージェントシミュレータ200は、エージェントA,B,C毎に設けられている。以下、各エージェントシミュレータ200を区別する場合、エージェントAの状態をシミュレーションするエージェントシミュレータ200をエージェントシミュレータAと表記する。同様に、エージェントB,Cの状態をシミュレーションするエージェントシミュレータ200をエージェントシミュレータB,Cと表記する。各エージェントシミュレータ200は対象とするエージェントの種類に応じた構成の違いを有している。例えば、ロボットエージェントB,CのエージェントシミュレータB,Cは互いに類似した構成を有しているが、歩行者エージェントAのエージェントシミュレータAは、エージェントシミュレータB,Cとは異なる構成を有している。エージェントの種類別のエージェントシミュレータ200の構成については追って詳述する。
【0031】
エージェントシミュレータ200は、メッセージの交換によってエージェントA,B,C同士を相互作用させながら各エージェントA,B,Cの状態をシミュレーションする。エージェントシミュレータ200間で交換されるメッセージは、エージェントの仮想世界2内での位置・移動に関する情報(移動情報)を含む。移動情報は、エージェントの位置・移動に関する現状および将来計画に関する情報を含む。現状に関する情報とは、例えば、現在時刻における位置、方向、速度、加速度である。将来計画に関する情報とは、例えば、将来時刻における位置と、方向と、速度と、加速度のリストである。以下、エージェントシミュレータ200間で交換されるエージェントの位置・移動に関するメッセージを移動メッセージと称する。
【0032】
エージェントシミュレータ200は、シミュレーションの対象である対象エージェント(自エージェント)の状態を周囲エージェントの状態に基づいて演算する。周囲エージェントは、自エージェントの周囲に存在し、自エージェントと相互作用する相互作用エージェントである。そして、周囲エージェントの状態を表す情報が移動メッセージである。各エージェントシミュレータ200は、他のエージェントシミュレータ200と移動メッセージを交換しあうことで、周囲エージェントの状態を把握することができる。
【0033】
図1に示す例では、エージェントシミュレータAは、エージェントシミュレータB,Cから受け取った移動メッセージからエージェントB,Cの状態を把握し、エージェントB,Cの状態に基づいてエージェントAの状態を更新する。そして、エージェントシミュレータAは、更新されたエージェントAの状態を表す移動メッセージをエージェントシミュレータB,Cに送信する。同様な処理はエージェントシミュレータB,Cにおいても行われる。これによりエージェントA,B,C同士を相互作用させながら各エージェントA,B,Cの状態がシミュレーションされる。
【0034】
エージェントシミュレータ200によるエージェントの状態の更新には、一定の時間間隔で更新する方法と、何らかのイベントが検知された場合に更新する方法とがある。ただし、後者の方法でも、あまりに長時間状態が更新されないと周囲エージェントへの影響が大きいことから、一定時間間隔ごとに状態を更新するよう強制的にイベントを発生させることが行われる。エージェントシミュレータ200によるエージェントの状態の更新の時間間隔は、時間粒度と呼ばれる。
【0035】
図1に示す例では、仮想世界2における各エージェントA,B,Cの時間粒度は20msecとされている。ただし、エージェントの種類に応じて時間粒度を変更することは可能である。例えば、歩行者エージェントCはロボットエージェントA,Bに比較して動きが遅いので、歩行者エージェントCの時間粒度をロボットエージェントA,Bの時間粒度よりも大きくしてもよい。各エージェントシミュレータA,B,Cは、担当するエージェントA,B,Cの時間粒度に応じた制御周期でシミュレーションを実行する。
【0036】
MASシステム100では、エージェントシミュレータ200間の移動メッセージの交換によってシミュレーションが実行される。ただし、シミュレーションのための移動メッセージの交換は、エージェントシミュレータ200間で直接は行われない。MASシステム100は、エージェントシミュレータ200と通信するセンターコントローラ300を備える。センターコントローラ300は、受け取った移動メッセージを配布する移動メッセージディスパッチャ310を備える。移動メッセージは、移動メッセージディスパッチャ310により中継されてエージェントシミュレータ200間で交換される。
【0037】
図1に示す例では、エージェントシミュレータAから出力された移動メッセージは移動メッセージディスパッチャ310が受信する。そして、移動メッセージディスパッチャ310は、エージェントシミュレータB,Cに対してエージェントシミュレータAの移動メッセージを送信する。同様に、エージェントシミュレータBの移動メッセージは、移動メッセージディスパッチャ310によってエージェントシミュレータA,Cに送信され、エージェントシミュレータCの移動メッセージは、移動メッセージディスパッチャ310によってエージェントシミュレータA,Bに送信される。
【0038】
エージェントシミュレータ200間の移動メッセージの交換速度は、エージェント毎に設定されている時間粒度が現実世界の時間間隔と一致するように初期設定されている。つまり、移動メッセージの交換速度の初期設定では、現実世界の時間の流れと仮想世界2の時間の流れとは一致している。このような初期状態から移動メッセージの交換速度を増大させた場合、現実世界の時間の流れに対する仮想世界2の時間の流れの速度比は上昇する。移動メッセージの交換速度は、各エージェントシミュレータ200から送信される移動メッセージの送信間隔で決まる。例えば、移動メッセージの送信間隔を半分にすれば、移動メッセージの交換速度は2倍になる。移動メッセージの交換速度が2倍になればエージェントの動作速度も2倍になり、シミュレーションは2倍の速さで進行する。つまり、移動メッセージの交換速度はシミュレーション速度を意味する。
【0039】
ここで、もし、各々のエージェントシミュレータ200が移動メッセージを送信する送信間隔を独立して変化させた場合、自エージェントと周囲エージェントとの間で動作速度にずれが生じる虞がある。また、自エージェントの状態の更新時に周囲エージェントの状態に関する情報が得られないことや、周囲エージェントの状態の更新時に自エージェントの状態に関する情報を送れないことが起こり、シミュレーションが破綻してしまう虞もある。ゆえに、エージェントシミュレータ200が移動メッセージを送信する送信間隔は、全エージェントシミュレータ200に対して一括して制御する必要がある。
【0040】
エージェントシミュレータ200が移動メッセージを送信する送信間隔は、センターコントローラ300によって制御される。詳しくは、センターコントローラ300は、各エージェントシミュレータ200によるシミュレーションを制御するシミュレーションコンダクタ320を備える。
【0041】
シミュレーションコンダクタ320は、エージェントシミュレータ200との間でのシミュレーション制御メッセージの交換によってエージェントシミュレータ200によるシミュレーションを制御する。シミュレーションコンダクタ320は、MASシステム100を構成する全てのエージェントシミュレータ200との間で通信を行い、シミュレーション制御メッセージを交換する。シミュレーション制御メッセージの交換により、例えば、シミュレーション速度、シミュレーションの停止、シミュレーションの休止、シミュレーションの再開、及びシミュレーションの時間粒度が制御される。シミュレーション速度は、全エージェントシミュレータ200に対して一括して制御される。これに対し、シミュレーションの停止、シミュレーションの休止、シミュレーションの再開、及びシミュレーションの時間粒度は、エージェントシミュレータ200毎に制御される。
【0042】
1-2.MASシステムにおけるシミュレーション速度の制御の概要
図2及び
図3は、MASシステム100において行われるシミュレーション速度の制御の概要を示す。MASシステム100では、各エージェントシミュレータ200は、シミュレーションするエージェントの時間粒度に応じた時間間隔で移動メッセージを送信する。各エージェントA,B,Cの時間粒度が
図1に示す通りであるとすると、各エージェントシミュレータ200は20msecの時間間隔で移動メッセージを送信する。
【0043】
シミュレーション速度を上昇させる場合、センターコントローラ300(詳しくは、シミュレーションコンダクタ320)は、各エージェントシミュレータ200に対して移動メッセージの送信間隔を短くさせることで、現実世界の時間の流れに対する仮想世界2の時間の流れの速度比を上昇させる。この速度比を上昇させるほど、シミュレーション速度が上昇してより短い時間でシミュレーションを終わらせることが可能となる。
【0044】
しかし、エージェントシミュレータ200が動作しているComputing/Networking環境によっては、仮想世界2の時間の流れについていけないエージェントシミュレータ200が現れる可能性が有る。
図3に示す例では、エージェントシミュレータA,Cから送信される移動メッセージの送信間隔は短くなっているが、エージェントシミュレータBから送信される移動メッセージの送信間隔は短くなっていない。つまり、エージェントシミュレータBに遅れが発生している。
【0045】
エージェントシミュレータ200は、自エージェントの状態の更新に周囲エージェントの状態に関する情報を使用する。
図3に示す例では、エージェントシミュレータAは、シミュレータB,Cのそれぞれから送信される移動メッセージを使用し、自エージェントの状態を更新する。また、エージェントシミュレータCは、シミュレータA,Bのそれぞれから送信される移動メッセージを使用し、自エージェントの状態を更新する。このため、エージェントシミュレータBの遅れは、エージェントシミュレータBだけの問題ではなく、エージェントシミュレータBと移動メッセージを交換しているエージェントシミュレータA,Cにも悪影響を及ぼすことになる。つまり、仮想世界2の時間の流れに処理が追い付いていないエージェントシミュレータBの存在は、MASシステム100によるシミュレーションの精度を低下させてしまう。
【0046】
そこで、センターコントローラ300(詳しくは、シミュレーションコンダクタ320)は、遅れが生じているエージェントシミュレータBをシミュレーションから離脱させる。エージェントシミュレータBをシミュレーションから離脱させることで、仮想世界2からエージェントBは消失する。その結果、例えば、エージェントAが相互作用するエージェントはエージェントCのみとなるので、エージェントシミュレータBの影響を受けることなくエージェントシミュレータAはシミュレーションを続行することが可能となる。これにより、エージェントシミュレータBが律速となることは防がれ、エージェントシミュレータA,Cのシミュレーション速度をさらに高める余地をつくることができる。
【0047】
上記のように、MASシステム100では、エージェントシミュレータ200間の移動メッセージの送信間隔を短くすることでシミュレーション速度を上昇させていき、遅れが生じたエージェントシミュレータ200をシミュレーションから離脱させることが行われる。ただし、シミュレーションから離脱させることの可否は、エージェントの種類に依存する。例えば、エージェントシミュレータ200の離脱によって群衆の中の一人の歩行者エージェントが突然に仮想世界2から消失したとしても、シミュレーションに与える影響は無視できるほど小さい。一方、乗客を乗せている車両エージェントが乗客を残したまま突然に仮想世界2から消失した場合、その時点でシミュレーションとしては成立しなくなってしまう。つまり、その存在の有無が他に大きな影響を与えるエージェントはシミュレーションから離脱させることはできない。ゆえに、MASシステム100には、シミュレーション速度の加速によるシミュレーション時間の短縮とともに、シミュレーション速度を適切な速度範囲に維持することが求められている。
【0048】
MASシステム100では、シミュレーション速度の適否を判定するための指標として、“剰余時間率”が用いられる。剰余時間率は、エージェントの状態を更新する更新時間間隔に対する剰余時間の比率として定義される。剰余時間は、更新時間間隔から更新処理のための処理時間を差し引いた時間である。MASシステム100では、エージェントシミュレータ200毎に剰余時間率の計算が行われる。シミュレーションコンダクタ320は、エージェントシミュレータ200毎に剰余時間率に基づいて、現実世界の時間の流れに対する仮想世界2の時間の流れの速度比を総合的に制御する。
【0049】
1-3.MASシステムにおけるシミュレーション速度の制御の詳細
次に、MASシステム100において行われるシミュレーション速度の制御の詳細について
図4乃至
図10を用いて説明する。まず、エージェントシミュレータ200のシミュレーション状況として想定される4つの例から説明する。
【0050】
1-3-1.エージェントシミュレータのシミュレーション状況の例
ケース1.望ましい状況
ケース1は、エージェントシミュレータ200にとっての望ましいシミュレーション状況である。以下、複数のエージェントシミュレータ200のうちの1つのエージェントシミュレータに着目し、これを着目エージェントシミュレータと呼ぶ。
図4は、着目エージェントシミュレータにとっての望ましい状況での自エージョントの状態の更新に係る各種のタイミングを示すタイミング図である。時間軸上において符号で示す各タイミングは以下のように定義される。
Ta(N):今回タイムステップでの自エージェントの状態更新のための計算の開始時刻
Ta(N+1):次タイムステップでの自エージェントの状態更新のための計算の開始時刻
Tc(N):今回タイムステップにおける移動メッセージの作成完了
Td(N):今回タイムステップにおける移動メッセージの送信完了時刻
Te_first(N):次タイムステップでの自エージェントの状態更新の計算に必要な周囲エージェントの移動メッセージのうち最初に受信した移動メッセージの受信時刻
Te_last(N):次タイムステップでの自エージェントの状態更新の計算に必要な周囲エージェントの移動メッセージのうち最後に受信した移動メッセージの受信時刻
【0051】
ケース1では、タイミングTa(N+1)の前にタイミングTe_last(N)が位置している。つまり、次タイムステップでの自エージェントの状態更新のための計算が開始される前に、その計算に必要な全ての周囲エージェントの移動メッセージが受信されている。このことは、着目エージェントシミュレータと関係する他のエージェントシミュレータに遅れが発生していないことを意味する。
【0052】
また、ケース1では、タイミングTa(N+1)の前にタイミングTe_first(N+1)は位置していない。つまり、次タイムステップでの自エージェントの状態更新のための計算が開始される前に、その計算に必要な周囲エージェントの移動メッセージが受信され始めていない。このことは、着目エージェントシミュレータの他のエージェントシミュレータに対する遅れも発生していないことを意味する。
【0053】
ここで、前述の剰余時間率について説明する。剰余時間率は、剰余時間と更新時間間隔とを用いて以下の式によって計算される。
剰余時間率=剰余時間/更新時間間隔
剰余時間=Ta(N+1)-Te_last(N)
更新時間間隔=Ta(N+1)-Ta(N)
【0054】
剰余時間率はエージェントシミュレータ200毎に計算される。剰余時間率は、着目エージェントシミュレータと関係する他のエージェントシミュレータのうちで最も遅いエージェントシミュレータの自エージェントシミュレータの更新速度に対する余裕度を示す指標値である。剰余時間率が正の値の場合、剰余時間率が大きいほど、他のエージェントシミュレータの着目エージェントシミュレータの更新速度に対する余裕度は大きい。剰余時間率が負の値の場合には、少なくとも1つの他のエージェントシミュレータが着目エージェントシミュレータに対して遅れている。
【0055】
全てのエージェントシミュレータ200において剰余時間率が正の値の場合、どのエージェントシミュレータ200にも遅れが発生していない。剰余時間率が十分な大きさであれば、シミュレーション速度をさらに高める余地がある。しかし、剰余時間率が小さい場合、シミュレーション速度をさらに高めることで、いずれかのエージェントシミュレータ200に遅れが発生してしまう虞がある。また、剰余時間率があまりにゼロに近い場合、Computing/Networking環境の悪化によって剰余時間率が負の値に振れてしまう場合もあり得る。ゆえに、シミュレーションの精度を維持しつつ、できる限り高速にシミュレーションを実行するためには、各エージェントシミュレータ200で計算される剰余時間率は、どれもが一定の範囲に維持されていることが望ましい。
【0056】
ケース2.他の一部のエージェントシミュレータが遅れている状況
ケース2は、着目エージェントシミュレータと関係する他のエージェントシミュレータのうちの一部のエージェントシミュレータが遅れている状況である。
図5は、その状況での自エージョントの状態の更新に係る各種のタイミングを示すタイミング図である。
【0057】
ケース2では、タイミングTa(N+1)の前にタイミングTe_first(N)が位置している。つまり、次タイムステップでの自エージェントの状態更新のための計算が開始される前に、その計算に必要な周囲エージェントの移動メッセージのうち少なくとも1つが受信されている。
【0058】
しかし、ケース2では、タイミングTa(N+1)の前にタイミングTe_last(N)は位置していない。つまり、次タイムステップでの自エージェントの状態更新のための計算が開始される前に、その計算に必要な全ての周囲エージェントの移動メッセージが受信されている訳ではない。少なくとも1つの移動メッセージは次タイムステップでの自エージェントの状態更新のための計算が開始された後に受信されている。このことは、着目エージェントシミュレータと関係する他のエージェントシミュレータの一部に遅れが発生していることを意味する。
【0059】
ケース2の場合、タイミングTa(N+1)よりもタイミングTe_last(N)の方が遅いことから、剰余時間率の値は負の値になる。着目エージェントシミュレータを含むいずれかのエージェントシミュレータにおいて剰余時間率の値が負になることで、全体に対して遅れているエージェントシミュレータの存在が確認できる。
【0060】
ケース3.他のエージェントシミュレータよりやや遅れている状況
ケース3は、着目エージェントシミュレータが自身と関係する他のエージェントシミュレータよりもやや遅れている状況である。
図6は、その状況での自エージョントの状態の更新に係る各種のタイミングを示すタイミング図である。
【0061】
ケース3では、タイミングTa(N+1)の前にタイミングTe_first(N+1)が位置している。つまり、次タイムステップでの自エージェントの状態更新のための計算が開始される前に、次々タイムステップでの自エージェントの状態更新の計算に必要な周囲エージェントの移動メッセージが受信されている。このことにより、他エージェントシミュレータは着目エージェントシミュレータより早く動作していることが観測される。
【0062】
しかし、ケース3では、タイミングTe_first(N+1)の前にタイミングTd(N)が位置している。つまり、次々タイムステップでの自エージェントの状態更新の計算に必要な周囲エージェントの移動メッセージが受信される前に、今回タイムステップで更新された自エージェントの状態に関する移動メッセージの送信が完了されている。このことは、着目エージェントシミュレータは他エージェントシミュレータより遅れているものの、大幅に遅れている訳ではないことを意味している。この程度の遅れであれば、許容範囲としてもよい。
【0063】
ケース4.他のエージェントシミュレータより激しく遅れている状況
ケース4は、着目エージェントシミュレータが自身と関係する他のエージェントシミュレータよりも激しく遅れている状況である。
図7は、その状況での自エージョントの状態の更新に係る各種のタイミングを示すタイミング図である。
【0064】
ケース4では、タイミングTd(N)の前にタイミングTe_first(N+1)が位置している。つまり、今回タイムステップで更新された自エージェントの状態に関する移動メッセージの送信が完了する前に、次々タイムステップでの自エージェントの状態更新の計算に必要な周囲エージェントの移動メッセージが受信されている。他エージェントシミュレータは、本来、着目エージェントシミュレータがタイミングTd(N)で送信する自エージェントの状態を用いて、次タイムステップでの周囲エージェントの状態更新を行っている。ゆえに、ケース4では着目エージェントシミュレータは他エージェントシミュレータに対して確実に周回遅れになっている。
【0065】
ここで、以下の式によって遅れ時間を定義する。遅れ時間は、着目エージェントシミュレータの他エージェントシミュレータに対する遅れの程度を示す指標値として用いることができる。
遅れ時間=Td(N)-Te_first(N+1)
【0066】
ケース3では、タイミングTe_first(N+1)よりもタイミングTd(N)の方が早いことから、遅れ時間は負の値になる。一方、ケース4では、タイミングTe_first(N+1)よりもタイミングTd(N)の方が遅いことから、遅れ時間は正の値になる。遅れ時間が正の値であり、且つ、所定の閾値を超える場合、着目エージェントシミュレータは他エージェントシミュレータに対して許容できない程度に遅れていると判断することができる。
【0067】
1-3-2.シミュレーション速度制御のためのエージェントシミュレータにおける処理
MASシステム100は、上述の4つのケースのうちケース1に示す望ましい状況を目指してシミュレーション速度を制御する。MASシステム100によるシミュレーション速度の制御は、エージェントシミュレータ200とシミュレーションコンダクタ320との協調によって行われる。
【0068】
まず、シミュレーション速度制御のためのエージェントシミュレータ200における処理から説明する。
図8は、シミュレーション速度制御のためにエージェントシミュレータ200で実行されるルーチンを示すフローチャートである。詳しくは、エージェントシミュレータ200によるシミュレーション速度の調整とシミュレーションからの離脱の各判断の流れがフローチャートによって示されている。エージェントシミュレータ200は、一定の周期でフローチャートに示すルーチンを繰り返し実行する。
【0069】
ステップS100では、タイミングTe_last(N)が今回タイムステップ以降において検出できたか否か判定される。
図4乃至
図6と
図7との比較から分かるように、タイミングTe_last(N)が今回タイムステップ以降において検出できたかどうかは、当該エージェントシミュレータ200が他エージェントシミュレータに対して許容できない程度に遅れているかどうかの判断基準となる。
【0070】
今回タイムステップ以降においてタイミングTe_last(N)を検出できた場合、つまり、当該エージェントシミュレータ200が他エージェントシミュレータに対して許容できない程度に遅れていない場合、フローはステップS102に進む。ステップS102では、前述の剰余時間が正の値かどうかが判定される。剰余時間が正であることは、当該エージェントシミュレータ200は遅れてはいないし他エージェントシミュレータも遅れていないことを意味する。
【0071】
剰余時間が正の値である場合、ステップS104の処理が行われる。ステップS104では、前述の剰余時間率が計算される。なお、フローチャート内では、剰余時間率はRTRと表記される場合がある。続いてステップS106では、ステップS104で計算された剰余時間率がシミュレーション制御メッセージ「状態正常」ととともにシミュレーションコンダクタ320に送信される。フローチャートにおけるメッセージとは、シミュレーション制御メッセージを意味する。シミュレーション制御メッセージ「状態正常」は、当該エージェントシミュレータ200と他エージェントシミュレータのどちらも遅延状態でないことをシミュレーションコンダクタ320に報告するためのシミュレーション制御メッセージである。なお、フローチャートでは、シミュレーションコンダクはSCと表記されている。
【0072】
ステップS100の判定結果が否定の場合、すなわち、今回タイムステップ以降においてタイミングTe_last(N)を検出できなった場合、フローはステップS108に進む。また、ステップS102の判定結果が否定の場合、すなわち、剰余時間が正の値でない場合も、フローはステップS108に進む。ステップS108では、前述の遅れ時間が遅れ時間閾値ThD以上か否か判定される。遅れ時間閾値ThDは、当該エージェントシミュレータ200の遅れが致命的かどうかの判断基準である。例えば、当該エージェントシミュレータ200のタイムステップ、すなわち、時間粒度の2分の1を遅れ時間閾値ThDとしてもよい。
【0073】
遅れ時間が遅れ時間閾値ThD以上である場合、ステップS110において、致命的遅延状態カウンタCountFDの値が1増やされる。致命的遅延状態カウンタは、当該エージェントシミュレータ200の致命的な遅延状態の継続時間を計るためのカウンタである。致命的遅延状態カウンタの初期値はゼロであり、後述するステップS120の処理が実行されたときにリセットされる。遅れ時間が遅れ時間閾値ThDより小さければ、ステップS110はスキップされる。
【0074】
次に、ステップS112では、当該エージェントシミュレータ200がシミュレーションの時間間隔、すなわち、時間粒度を調整可能なエージェントシミュレータか否か判定される。基本的には、エージェントシミュレータ200は時間粒度を調整可能である。ただし、エージェントの種類によって時間粒度の調整幅が限られている。例えば、エージェントがロボットである場合、ロボットには精密な動作が求められるため、時間粒度が100msecオーダーを超えるとシミュレーションを成立させることが困難になる。エージェントが歩行者であれば1secオーダーの時間粒度でも十分であるが、そうであったとしても時間粒度を過度に大きくすることはできない。ゆえに、ステップS112では、エージェントの種類と現在の時間粒度とに基づいて時間粒度を調整可能かどうかが判定される。
【0075】
当該エージェントシミュレータ200が時間粒度を調整可能なエージェントシミュレータである場合、ステップS114において、時間粒度が拡大される。例えば、現在の時間粒度に所定の拡大係数を掛けて得られる値が新たな時間粒度として設定される。拡大係数は固定値(例えば、2)でも良いし、拡大回数毎に小さくなる変数でもよい。また、拡大係数はエージェントの種類毎に異なる値であってもよい。続いてステップS116では、ステップS114で拡大された時間粒度がシミュレーション制御メッセージ「時間粒度拡大」ととともにシミュレーションコンダクタ320に送信される。シミュレーション制御メッセージ「時間粒度拡大」は、時間粒度を拡大したことをシミュレーションコンダクタ320に報告するためのシミュレーション制御メッセージである。当該エージェントシミュレータ200が時間粒度を調整可能でなければ、ステップS114及びステップS116はスキップされる。
【0076】
次に、ステップS118では、致命的遅延状態カウンタCountFDの値が回数閾値ThNfd以上か否か判定される。回数閾値ThNfdは、当該エージェントシミュレータ200の致命的な遅延状態が定常的なものであることを判定するための閾値である。回数閾値ThNfdは、当該エージェントシミュレータ200が時間粒度を調整可能かどうかによって異なる値に設定してもよい。例えば、時間粒度を調整可能なエージェントシミュレータに対して設定される回数閾値ThNfdは、時間粒度を調整不可能なエージェントシミュレータに対して設定される回数閾値ThNfdよりも大きい値にしてもよい。具体例として、前者を5回に設定し、後者を3回に設定してもよい。
【0077】
致命的遅延状態カウンタが回数閾値ThNfd以上である場合、ステップS120において、シミュレーション制御メッセージ「離脱」がシミュレーションコンダクタ320に送信される。シミュレーション制御メッセージ「離脱」は、当該エージェントシミュレータ200がシミュレーションから離脱することをシミュレーションコンダクタ320に報告するためのシミュレーション制御メッセージである。シミュレーション制御メッセージ「離脱」を送信したエージェントシミュレータは、自らシミュレーションから離脱する。致命的遅延状態カウンタが回数閾値ThNfdより小さければ、ステップS120はスキップされる。
【0078】
ステップS122では、シミュレーション制御メッセージ「遅延検知」がシミュレーションコンダクタ320に送信される。シミュレーション制御メッセージ「遅延検知」は、当該エージェントシミュレータ200と他エージェントシミュレータのどちらかが遅延状態であることをシミュレーションコンダクタ320に報告するためのシミュレーション制御メッセージである。ステップS114において時間粒度の調整が行われた場合でも、シミュレーション制御メッセージ「遅延検知」の送信は必ず一回は行われる。つまり、当該エージェントシミュレータ200がシミュレーションから離脱するまでは、シミュレーション制御メッセージ「状態正常」とシミュレーション制御メッセージ「遅延検知」のどちらかは必ずシミュレーションコンダクタ320に送信される。
【0079】
1-3-3.シミュレーション速度制御のためのシミュレーションコンダクタにおける処理
次に、シミュレーション速度制御のためのシミュレーションコンダクタ320における処理について説明する。
図9は、シミュレーション速度制御のためにシミュレーションコンダクタ320で実行されるルーチンを示すフローチャートである。詳しくは、シミュレーションコンダクタ320によるエージェントシミュレータ200のシミュレーション速度の調整の流れがフローチャートによって示されている。シミュレーションコンダクタ320は、一定の周期でフローチャートに示すルーチンを繰り返し実行する。
【0080】
まず、ステップS202では、シミュレーションコンダクタ320は、全てのエージェントシミュレータ200からシミュレーション制御メッセージを受信する。なお、フローチャートでは、エージェントシミュレータはASと表記されている。また、フローチャートにおけるメッセージはシミュレーション制御メッセージを意味する。
【0081】
ステップS204では、ステップS202で取得された全てのシミュレーション制御メッセージの内容が「状態正常」であるか判定される。全てのエージェントシミュレータ200から取得された全てのシミュレーション制御メッセージが「状態正常」であれば、遅延が生じているエージェントシミュレータ200は存在しない。また、その場合、全てのエージェントシミュレータ200からシミュレーション制御メッセージとともに剰余時間率が取得される。
【0082】
ステップS204の判定結果が肯定である場合、ステップS206において、剰余時間率の最小値RTR_minが計算される。剰余時間率の最小値は、全てのエージェントシミュレータ200から取得された全ての剰余時間率の中で最も小さい値である。
【0083】
次に、ステップS208では、剰余時間率の最小値RTR_minが剰余時間率の許容最大値RTRA_max(第1閾値)よりも大きいか否か判定される。剰余時間率には、望ましいシミュレーション速度と対応する許与範囲が設定されている。許与範囲の最大値よりも剰余時間率が大きければ、エージェントシミュレータ200の計算に遊び時間が発生していることを意味する。つまり、シミュレーション速度を加速する余地があることを意味する。
【0084】
剰余時間率の最小値RTR_minが許容最大値RTRA_maxよりも大きい場合、ステップS210において、加速可能状態カウンタCountAPの値が1増やされる。加速可能状態カウンタの初期値はゼロであり、後述するステップS214の処理が実行されたとき、及びステップS208の判定結果が否定になったときにリセットされる。
【0085】
次に、ステップS212では、加速可能状態カウンタCountAPの値が加速判定閾値ThNapよりも大きいか否か判定される。加速判定閾値ThNapは、加速可能な状態が一定期間続いていることを判定するための閾値である。加速判定閾値ThNapは、固定値(例えば、3)に設定してもよい。
【0086】
加速可能状態カウンタが加速判定閾値ThNapより大きい場合、ステップS214において、シミュレーション制御メッセージ「加速」と新速度比とが全エージェントシミュレータ200に送信される。ここで送信される新速度比とは、現実世界の時間の流れに対する仮想世界2の時間の流れの加速後の速度比を意味する。シミュレーション制御メッセージ「加速」は、各エージェントシミュレータ200に対する加速の指示であり、同時に送信される新速度比はその指示値である。なお、ステップS206で計算される剰余時間率の最小値が大きいほど、新速度比をより大きく上昇させてもよい。これによれば、剰余時間率に余裕があるほどより大きくシミュレーション速度を加速させることができる。
【0087】
一方、加速可能状態カウンタが加速判定閾値ThNap以下の場合、ステップS218において、シミュレーション制御メッセージ「加減速無し」が全エージェントシミュレータ200に送信される。シミュレーション制御メッセージ「加減速無し」は、各エージェントシミュレータ200に対する現状速度比を維持することの指示である。
【0088】
ステップS208の判定の結果、剰余時間率の最小値RTR_minが許容最大値RTRA_max以下の場合、ステップS216において、剰余時間率の最小値RTR_minが剰余時間率の許容最小値RTRA_min(第2閾値)よりも小さいか否か判定される。剰余時間率の許与範囲の最小値よりも剰余時間率が小さければ、エージェントシミュレータ200の計算時間に余裕がないことを意味する。つまり、遅延が発生しないようにシミュレーション速度を減速すべきであることを意味する。
【0089】
剰余時間率の最小値RTR_minが許容最大値RTRA_maxより小さい場合、ステップS228において、シミュレーション制御メッセージ「減速」と新速度比とが全エージェントシミュレータ200に送信される。ここで送信される新速度比とは、現実世界の時間の流れに対する仮想世界2の時間の流れの減速後の速度比を意味する。シミュレーション制御メッセージ「減速」は、各エージェントシミュレータ200に対する減速の指示であり、同時に送信される新速度比はその指示値である。なお、ステップS206で計算される剰余時間率の最小値がよりゼロに近いほど、新速度比をより大きく低下させてもよい。これによれば、剰余時間率に余裕がないほどより大きくシミュレーション速度を減速させることができる。
【0090】
一方、剰余時間率の最小値RTR_minが許容最大値RTRA_max以上の場合、ステップS218において、シミュレーション制御メッセージ「加減速無し」が各エージェントシミュレータ200に送信される。
【0091】
また、ステップS204の判定結果が否定である場合、すなわち、少なくとも1つのシミュレーション制御メッセージの内容が「状態正常」ではない場合、ステップS220の判定が行われる。ステップS220では、いずれかのエージェントシミュレータ200からシミュレーション制御メッセージ「時間粒度拡大」を受信したか否か判定される。
【0092】
ステップS220の判定結果が肯定である場合、ステップS222において、シミュレーション制御メッセージ「エージェントシミュレータパラメータ変更」と付随情報とが全エージェントシミュレータ200に送信される。ここで送信される付随情報には、時間粒度が拡大されたエージェントシミュレータの個数と、時間粒度が拡大された各エージェントシミュレータのID及び新しい時間粒度とが含まれる。つまり、ステップS222では、各エージェントシミュレータ200に対して時間粒度の調整に関する情報を周知する目的でシミュレーション制御メッセージが送信される。ステップS220の判定結果が否定である場合、ステップS222はスキップされる。
【0093】
次に、ステップS224では、いずれかのエージェントシミュレータ200からシミュレーション制御メッセージ「離脱」を受信したか否か判定される。つまり、エージェントシミュレータ200自身の判断による離脱がシミュレーション制御メッセージ「離脱」によって検知される。
【0094】
ステップS224の判定結果が肯定である場合、ステップS226において、シミュレーション制御メッセージ「エージェントシミュレータ離脱」と付随情報とが各エージェントシミュレータ200に送信される。ここで送信される付随情報には、シミュレーションから離脱したエージェントシミュレータの個数と、離脱した各エージェントシミュレータのIDとが含まれる。つまり、ステップS226では、エージェントシミュレータ200の離脱に関する情報を周知する目的でシミュレーション制御メッセージが送信される。ステップS224の判定結果が否定である場合、ステップS226はスキップされる。そして、ステップS228の処理が実行される。
【0095】
上述のルーチンでは、エージェントシミュレータ200自身によるシミュレーションからの離脱の判断が行われている。これと並行して、シミュレーションコンダクタ320によっても、エージェントシミュレータ200をシミュレーションから離脱させる判断が行われている。
図10は、エージェントシミュレータ200に対する離脱指示のためにシミュレーションコンダクタ320で実行されるルーチンを示すフローチャートである。詳しくは、ミュレーションコンダクタ320の判断によるエージェントシミュレータ200へのシミュレーションからの離脱の指示の流れがフローチャートによって示されている。シミュレーションコンダクタ320は、一定の周期でフローチャートに示すルーチンを繰り返し実行する。
【0096】
まず、ステップS302では、移動メッセージディスパッチャ310からアラーム情報を受信したか否か判定される。なお、フローチャートでは、移動メッセージディスパッチャはMMDと表記されている。各エージェントシミュレータ200から移動メッセージディスパッチャ310へは、エージェントの時間粒度に対応する時間間隔で移動メッセージが送信されている。移動メッセージの受信に一定以上の遅れが検知された場合、移動メッセージディスパッチャ310は、当該エージェントシミュレータ200に関するアラーム情報をシミュレーションコンダクタ320に送信する。
【0097】
さらに、ステップS302では、全エージェントシミュレータ200について、エージェントシミュレータ200からシミュレーション制御メッセージを受信したか否か判定される。フローチャートにおけるメッセージはシミュレーション制御メッセージを意味する。移動メッセージディスパッチャ310からのアラーム情報が受信されておらず、且つ、エージェントシミュレータ200からシミュレーション制御メッセージを受信しているのであれば、以降の処理はスキップされる。
【0098】
移動メッセージディスパッチャ310からアラーム情報を受信した場合、或いは、エージェントシミュレータ200からシミュレーション制御メッセージを受信しなかった場合、フローはステップS304に進む。ステップS304では、ステップS302の肯定的判定に該当するエージェントシミュレータ200について、エージェントシミュレータ200毎に設けられた離脱判断カウンタCountDCの値が1減らされる。離脱判断カウンタの初期値は許容最大回数(例えば、3)に設定されている。
【0099】
ステップS306では、離脱判断カウンタ毎にその値がゼロ以下になったか否か判定される。離脱判断カウンタの値がゼロ以下になるまで、次のステップS308の処理はスキップされる。離脱判断カウンタの値がゼロ以下になった場合、ステップS308において、離脱判断カウンタの値がゼロ以下になったエージェントシミュレータ200に対し離脱指示待ち状態がセットされる。
【0100】
続くステップS310において、離脱指示待ち状態となったエージェント200についてのリストが作成される。そして、ステップS312において、シミュレーション制御メッセージ「エージェントシミュレータ離脱」と付随情報とが全エージェントシミュレータ200に送信される。ここで送信される付随情報には、シミュレーションから離脱させるエージェントシミュレータの個数と、離脱させる各エージェントシミュレータのIDとが含まれる。リストに含まれているエージェントシミュレータは、シミュレーション制御メッセージ「エージェントシミュレータ離脱」を受けてシミュレーションから離脱する。
【0101】
1-3-4.中断後のシミュレーションの再開のための処理
上述のように、MASシステム100では、エージェントシミュレータ200の自身の判断により、或いは、シミュレーションコンダクタ320の判断により、遅延状態になったエージェントシミュレータ200はシミュレーションから離脱する。これにより、シミュレーション速度を上昇させる上で、遅延状態になったエージェントシミュレータ200が律速となることは防止される。しかし、シミュレーションから離脱するエージェントシミュレータ200が多くなってくると、次第にシミュレーションが成立し難くなってくる。
【0102】
そこで、シミュレーションコンダクタ320は、シミュレーションから離脱したエージェントシミュレータ200の個数が所定の個数閾値を越えたか否か判定する。そして、離脱個数が個数閾値を越えた状態が所定の回数閾値上連続した場合、シミュレーションコンダクタ320は、シミュレーション制御メッセージ「中断」を全エージェントシミュレータ200に送信する。シミュレーション制御メッセージ「中断」は、各エージェントシミュレータ200に対するシミュレーションの中断の指示である。
【0103】
シミュレーションの中断後、シミュレーションコンダクタ320は、シミュレーションの時間を過去に巻き戻してシミュレーションを再開する。
図11は、シミュレーションコンダクタ320の判断によるシミュレーションの巻き戻し再スタートの流れを示すシーケンス図である。なお、シーケンス図には3つのエージェントシミュレータ200が登場しているが、1つのエージェントシミュレータ200で実行される処理のみが代表して示されている。
【0104】
シミュレーションコンダクタ320からエージェントシミュレータ200にシミュレーション制御メッセージ「中断」が送信されると、各エージェントシミュレータ200はシミュレーションを中止する(ステップS902)。次に、各エージェントシミュレータ200は、前述の剰余時間が正の値を維持していた最終時刻をシミュレーションのデータログから検索する(ステップS904)。検索された最終時刻は、シミュレーションを再開可能な最終時刻である。各エージェントシミュレータ200は、シミュレーションコンダクタ320に対し、検索された最終時刻を再開可能時刻として含むシミュレーション制御メッセージ「再開可能時刻」を送信する。
【0105】
シミュレーションコンダクタ320は、閾値割合以上の数のエージェントシミュレータ200からのシミュレーション制御メッセージ「再開可能時刻」の受信を確認する(ステップS802)。シミュレーションコンダクタ320は、受信した再開可能時刻の中で最も遅い時刻を算出し、それをシミュレーションの再開時刻に設定する(ステップS804)。シミュレーションコンダクタ320は、ステップS802でシミュレーション制御メッセージを受信したエージェントシミュレータ200に対し、シミュレーション制御メッセージ「再開待ち」とともに再開時刻を送信する。
【0106】
各エージェントシミュレータ200は、指定された再開時刻における状態をデータログから読み出し、エージェントシミュレータ200の状態を再設定する(ステップS906)。シミュレーションの再開準備ができ次第、エージェントシミュレータ200は、シミュレーションコンダクタ320に対し、シミュレーション制御メッセージ「再開準備OK」を送信する。
【0107】
シミュレーションコンダクタ320は、ステップS802でシミュレーション制御メッセージを受信した全てのエージェントシミュレータ200からのシミュレーション制御メッセージ「再開準備OK」の受信を確認する(ステップS806)。シミュレーションコンダクタ320は、ステップS802でシミュレーション制御メッセージを受信したエージェントシミュレータ200に対し、シミュレーション制御メッセージ「再開」を送信する。
【0108】
シミュレーション制御メッセージ「再開」を受信したエージェントシミュレータ200は、ステップS906で再設定した状態からシミュレーションを再開する(ステップ908)。
【0109】
2.MASシステムの全体構成と情報の流れ
以上説明したシミュレーション速度調整を実行可能なMASシステム100の全体構成と情報の流れについて
図12を用いて説明する。
図12に示すように、MASシステム100は、複数のエージェントシミュレータ200と、1つのセンターコントローラ300と、複数のサービスシステム用のバックエンドサーバ400とを備えている。詳細については後述するが、これらは複数のコンピュータに分散して設けられる。つまり、MASシステム100は、複数のコンピュータによる並列分散処理を前提とするシステムである。
【0110】
センターコントローラ300は、その機能として、移動メッセージディスパッチャ310と、シミュレーションコンダクタ320とを備える。センターコントローラ300は、コンピュータにインストールされたアプリケーションソフトウェアである。移動メッセージディスパッチャ310とシミュレーションコンダクタ320とは、アプリケーションソフトウェアを構成するプログラムである。センターコントローラ300は、1又は複数のエージェントシミュレータ200とハードウェアであるコンピュータを共用することもできるが、好ましくは、1つのコンピュータを専用する。
【0111】
移動メッセージディスパッチャ310は、エージェントシミュレータ200間の移動メッセージの送受信を中継する。エージェントシミュレータ200と移動メッセージディスパッチャ310との間において実線で示される情報の流れは移動メッセージの流れを示している。センターコントローラ300が備える上述の移動メッセージの交換機能は、移動メッセージディスパッチャ310が担っている。移動メッセージディスパッチャ310は、MASシステム100を構成する全てのエージェントシミュレータ200との間で通信を行う。
【0112】
シミュレーションコンダクタ320は、エージェントシミュレータ200との間でシミュレーション制御メッセージを交換する。エージェントシミュレータ200とシミュレーションコンダクタ320との間において破線で示される情報の流れはシミュレーション制御メッセージの流れである。移動メッセージが移動メッセージディスパッチャ310を介して複数のエージェントシミュレータ200間で交換されるのと異なり、シミュレーション制御メッセージは、シミュレーションコンダクタ320と個々のエージェントシミュレータ200との間で個別に交換される。
【0113】
バックエンドサーバ400は、現実世界のサービスシステムにおいて実際に用いられるものと同じバックエンドサーバである。現実世界のバックエンドサーバ400を仮想世界に持ち込むことで、サービスシステムにより提供されるサービスを高精度にシミュレーションすることができる。MASシステム100でシミュレーションされるサービスとしては、例えば、自律運転車両を用いたオンデマンドバスや定期運行型バスなどのモビリティサービスや、自律移動型のロボットを用いて荷物を配送する物流サービスを挙げることができる。また、MASシステム100でシミュレーションされるサービスは、例えば、ユーザがユーザ端末においてサービスアプリを操作することによって利用可能となるサービスである。
【0114】
MASシステム100は異なるサービスシステム用の複数のバックエンドサーバ400を備え、仮想世界2において同時に複数種類のサービスをシミュレーションすることができる。サービスのシミュレーションは、バックエンドサーバ400とエージェントシミュレータ200との間でのサービスメッセージの交換によって行われる。エージェントシミュレータ200とバックエンドサーバ400との間において点線で示される情報の流れはサービスメッセージの流れを示している。各バックエンドサーバ400は、サービスの提供に関係するエージェントシミュレータ200との間でサービスメッセージを交換する。
【0115】
交換されるサービスメッセージの内容は、エージェントシミュレータ200が担当するエージェントの種類によって異なる。例えば、エージェントがサービスを利用するユーザ(歩行者)である場合、バックエンドサーバ400は、サービス利用情報を含むサービスメッセージをエージェントシミュレータ200から受信し、サービス提供状態情報を含むサービスメッセージをエージェントシミュレータ200に送信する。サービス利用情報とは、ユーザのサービスシステムの利用に関する現状および将来計画に関する情報であり、現在の利用状態とアプリ操作による入力情報を含む。サービス提供状態情報とは、サービスシステムにおけるユーザの状態に関する情報であり、ユーザ端末のサービスアプリを通じて提供される情報である。
【0116】
エージェントがサービスの提供に用いられる自律ロボットや自律車両である場合、バックエンドサーバ400は、動作状態情報を含むサービスメッセージをエージェントシミュレータ200から受信し、動作指示情報を含むサービスメッセージをエージェントシミュレータ200に送信する。動作状態情報とは、自律ロボットや自律車両の現状および将来計画に関する情報である。現状に関する情報とは、例えば、搭載センサのステータス、測定データ、搭載アクチュエータのステータス、行動決定に関するステータスである。将来計画に関する情報とは、例えば、将来時刻と、アクチュエータのステータスと、行動決定に関するステータスのリストである。動作指示情報は、自律ロボットや自律車両を用いてサービスを提供するための将来計画の全部或いは一部を含む情報である。例えば、自律ロボットや自律車両が移動すべき目標地点や経路は動作指示情報に含まれる。
【0117】
仮想世界2に存在するエージェントには、カメラを含む路側センサや自動ドアのような定置物体が含まれる。例えば、エージェントが固定カメラである場合、バックエンドサーバ400は、自律ロボットの位置情報の計算に必要な固定カメラの画像情報を含むサービスメッセージをエージェントシミュレータ200から受信する。また、エージェントが自動ドアである場合、バックエンドサーバ400は、自律ロボットの通行のための開扉の指示を含むサービスメッセージをエージェントシミュレータ200に送信する。
【0118】
また、バックエンドサーバ400は、他のバックエンドサーバ400との間でそれぞれの取り決めのもとでサービスメッセージの交換を行う。バックエンドサーバ400間において点線で示される情報の流れはサービスメッセージの流れを示している。このとき交換されるサービスメッセージには、例えば、それぞれのサービスにおけるユーザの利用状態やサービスの提供状況が含まれる。複数のバックエンドサーバ400間でサービスメッセージを交換することによって、仮想世界2において提供されるサービスを互いに連携させることができる。
【0119】
複数のサービスの連携の一つの例として、オンデマンドバスサービスと、バス停から自宅までユーザに代わって自律ロボットが荷物を運ぶ物流サービスとの連携を挙げることができる。オンデマンドバスサービスでは、ユーザは、希望する時刻に希望する場所でバスから降車することができる。オンデマンドバスサービスと物流サービスとを連携させることで、ユーザが到着する前に自律ロボットを降車場所に到着させて、降車場所でユーザの到着を待たせておくことができる。また、渋滞などによりバスが遅れた場合や、ユーザがバスに乗り遅れた場合には、バックエンドサーバ400間でサービスメッセージを交換することにより、自律ロボットを降車場所に向かわせる時間をユーザの到着時間に合わせることができる。
【0120】
ただし、現実世界のサービスシステムにおいて実際に用いられているバックエンドサーバは、処理速度を調整できないものも含まれる。そのようなバックエンドサーバを用いて時間に依存するサービスが仮想世界2で提供される場合、現実世界の時間の流れに対する仮想世界2の時間の流れの速度比を変化させてしまうと、サービスシステムにより提供されるサービスをシミュレーションすることができなくなる。ゆえに、速度比を変化させてシミュレーションを行う場合、仮想世界2で提供されるサービスは時間の概念の無いサービスであることが好ましい。
【0121】
エージェントシミュレータ200は、担当するエージェントの種類に応じて複数の種類が存在する。例えば、歩行者エージェント用のエージェントシミュレータ201、自律ロボット/車両エージェント用のエージェントシミュレータ202、VR歩行者エージェント用のエージェントシミュレータ203、及び路側センサエージェント用のエージェントシミュレータ204が存在する。以下、エージェントシミュレータ200とは、これら複数種類のエージェントシミュレータ201,202,203,204の総称とする。
【0122】
エージェントシミュレータ200は、その機能として、送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240を備える。エージェントシミュレータ200は、コンピュータにインストールされたアプリケーションソフトウェアである。送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240は、アプリケーションソフトウェアを構成するプログラムである。これらの機能は、エージェントシミュレータ201,202,203,204の間で異なっている。ここでは、エージェントシミュレータ201,202,203,204間で概ね共通する機能について説明し、それぞれのエージェントシミュレータ201,202,203,204の機能の詳細については後述する。
【0123】
送受信コントローラ210は、エージェントシミュレータ200と他のプログラムとの間のインタフェースである。送受信コントローラ210は、移動メッセージディスパッチャ310からの移動メッセージの受信と、移動メッセージディスパッチャ310への移動メッセージの送信とを行う。ただし、エージェントシミュレータ204においては、移動メッセージの受信のみが行われる。送受信コントローラ210は、シミュレーションコンダクタ320からのシミュレーション制御メッセージの受信と、シミュレーションコンダクタ320へのシミュレーション制御メッセージの送信とを行う。また、送受信コントローラ210は、バックエンドサーバ400からのサービスメッセージの受信と、バックエンドサーバ400へのサービスメッセージの送信とを行う。ただし、エージェントシミュレータ204においては、サービスメッセージの送信のみが行われる。
【0124】
3D物理エンジン220は、他のエージェントシミュレータ200から受信した移動メッセージに基づいて3次元空間における周囲エージェントの現在の状態を推定する。周囲エージェントの過去の状態に基づく現在の状態の推定は、3D物理エンジン220によって行われる。3D物理エンジン220は、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。また、3D物理エンジン220は、後述するシミュレータコア240によるシミュレーション結果に基づいて3次元空間における自エージェントの状態を更新し、自エージェントの状態を表した移動メッセージを生成する。ただし、エージェントシミュレータ204においては、担当するエージェントは不動であるために自エージェントの状態の更新と移動メッセージの生成とは行われない。
【0125】
サービスシステムクライアントシミュレータ230は、バックエンドサーバ400に係るサービスシステムのクライアントとしての自エージェントの振る舞いをシミュレーションする。送受信コントローラ210で受信されたサービスメッセージは、サービスシステムクライアントシミュレータ230に入力される。そして、サービスシステムクライアントシミュレータ230で生成されたサービスメッセージが送受信コントローラ210から送信される。ただし、エージェントシミュレータ204においては、サービスメッセージの生成のみが行われる。
【0126】
シミュレータコア240は、次のタイムステップにおける自エージェントの状態をシミュレーションする。自エージェントの状態を算出するタイムステップの時間間隔が上述の時間粒度である。シミュレータコア240におけるシミュレーションの内容は、エージェントシミュレータ200の種類毎に異なる。なお、エージェントシミュレータ204は、担当するエージェントが不動であり自エージェントの状態のシミュレーションは不要であるため、シミュレータコア240を有していない。
【0127】
3.エージェントシミュレータの詳細な構成と情報の流れ
次に、MASシステム100を構成する各種類のエージェントシミュレータ201,202,203,204の詳細な構成と情報の流れについて
図13乃至
図16を用いて説明する。なお、
図13乃至
図16において、実線で示すブロック間の情報の流れは移動メッセージの流れを示している。また、点線で示すブロック間の情報の流れはサービスメッセージの流れを示している。そして、破線で示すブロック間の情報の流れはシミュレーション制御メッセージの流れを示している。
【0128】
3-1.歩行者エージェント用エージェントシミュレータ
図13は、歩行者エージェント用のエージェントシミュレータ201の構成と情報の流れを示すブロック図である。以下、歩行者エージェント用のエージェントシミュレータ201の全体構成と各部の詳細、及びエージェントシミュレータ201における情報の流れについて説明する。
【0129】
3-1-1.歩行者エージェント用エージェントシミュレータの全体構成
エージェントシミュレータ201は、その機能として、送受信コントローラ211、3D物理エンジン221、サービスシステムクライアントシミュレータ231、及びシミュレータコア241を備える。これらの機能は、概念として、それぞれ送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240に含まれる。
【0130】
送受信コントローラ211は、各種メッセージを受信する機能として、移動メッセージ受信部211a、サービスメッセージ受信部211b、及びコントロールメッセージ受信部211cを備える。また、送受信コントローラ211は、各種メッセージを送信する機能として、移動メッセージ送信部211d、サービスメッセージ送信部211e、及びコントロールメッセージ送信部211fを備える。さらに、送受信コントローラ211は、剰余時間率算出部211gとシミュレーション動作制御部211hとを備える。送受信コントローラ211を構成する各部211a~211hは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0131】
3D物理エンジン221は、その機能として、周囲エージェント状態更新部221a、視覚情報生成部221b、及び自エージェント状態更新部221cを備える。3D物理エンジン221を構成する各部221a,221b,221cは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0132】
サービスシステムクライアントシミュレータ231は、その機能として、サービス提供状態情報処理部231aとサービス利用情報生成部231bとを備える。サービスシステムクライアントシミュレータ231を構成する各部231a,231bは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0133】
シミュレータコア241は、その機能として、全体移動方針決定部241a、行動決定部241b、次タイムステップ状態算出部241d、サービス利用行動決定部241e、及び速度調整部241gを備える。シミュレータコア241を構成する各部241a,241b,241d,241f,241gは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0134】
3-1-2.送受信コントローラの詳細
送受信コントローラ211において、移動メッセージ受信部211aは、移動メッセージディスパッチャ310から移動メッセージを受信する。移動メッセージ受信部211aは、受信した移動メッセージを3D物理エンジン221の周囲エージェント状態更新部221aに出力する。また、移動メッセージ受信部211aは、移動メッセージを受信した時刻を含む情報を剰余時間率算出部211gに出力する。
【0135】
サービスメッセージ受信部211bは、バックエンドサーバ400からサービスメッセージを受信する。サービスメッセージ受信部211bは、受信したサービスメッセージをサービスシステムクライアントシミュレータ231のサービス提供状態情報処理部231aに出力する。
【0136】
コントロールメッセージ受信部211cは、シミュレーションコンダクタ320からシミュレーション制御メッセージを受信する。コントロールメッセージ受信部211cは、受信したミュレーション制御メッセージをシミュレーション動作制御部211hに出力する。
【0137】
移動メッセージ送信部211dは、3D物理エンジン221の自エージェント状態更新部221cから自エージェントの現在の状態を含む移動メッセージを取得する。移動メッセージ送信部211dは、取得した移動メッセージを移動メッセージディスパッチャ310に送信する。また、移動メッセージ送信部211dは、移動メッセージの送信完了時刻を含む情報を剰余時間率算出部211gに送信する。
【0138】
サービスメッセージ送信部211eは、サービスシステムクライアントシミュレータ231のサービス利用情報生成部231bからサービス利用情報を含むサービスメッセージを取得する。サービスメッセージ送信部211eは、取得したサービスメッセージをバックエンドサーバ400に送信する。
【0139】
コントロールメッセージ送信部211fは、剰余時間率算出部211gからシミュレーションの速度状況に関する情報を含むシミュレーション制御メッセージを取得する。また、コントロールメッセージ送信部211fは、シミュレーション動作制御部211hからエージェントシミュレータ201の制御状態を含むシミュレーション制御メッセージを取得する。コントロールメッセージ送信部211fは、剰余時間率算出部211gとシミュレーション動作制御部211hとから取得したシミュレーション制御メッセージをシミュレーションコンダクタ320に送信する。
【0140】
剰余時間率算出部211gは、移動メッセージ受信部211aから移動メッセージの受信時刻を含む情報を取得する。また、剰余時間率算出部211gは、移動メッセージ送信部211dから移動メッセージの送信完了時刻を含む情報を取得する。さらに、剰余時間率算出部211gは、シミュレータコア241の次タイムステップ状態算出部241dから自エージェントの状態更新のための計算の開始時刻を取得する。
【0141】
剰余時間率算出部211gは、前述の剰余時間、剰余時間率、及び遅れ時間を含むシミュレーション制御メッセージをコントロールメッセージ送信部211fに出力する。剰余時間、剰余時間率、及び遅れ時間は、シミュレーションの速度状況に関する情報である。これらの情報を含むシミュレーション制御メッセージを受信したシミュレーションコンダクタ320は、エージェントシミュレータ201に対して指示すべき制御内容を決定する。エージェントシミュレータ201に対して指示すべき制御内容とは、例えば、シミュレーション速度、シミュレーションの停止、シミュレーションの休止、及びシミュレーションの再開である。シミュレーションコンダクタ320は、指示すべき制御内容を含むシミュレーション制御メッセージを作成し、エージェントシミュレータ201に送信する。
【0142】
シミュレーション動作制御部211hは、コントロールメッセージ受信部211cからシミュレーション制御メッセージを取得する。シミュレーション動作制御部211hは、シミュレーション制御メッセージに含まれる指示に従ってエージェントシミュレータ201のシミュレーション動作を制御する。例えば、シミュレーションの時間粒度の変更が指示された場合、シミュレーション動作制御部211hは、エージェントシミュレータ201によるシミュレーションの時間粒度を初期値から指示された時間粒度に変更する。時間粒度の初期値はエージェントシミュレータ201に設定値として記憶されている。また、時間粒度の上限値と下限値は、エージェントの種類ごとにシミュレーションコンダクタ320に記憶されている。
【0143】
シミュレーション制御メッセージによる指示内容がシミュレーション速度である場合、シミュレーション動作制御部211hは、3D物理エンジン221やシミュレータコア241の動作周波数を変化させてシミュレーション速度を加速或いは減速させる。例えば、シミュレータコア241に対しては、指示されたシミュレーション速度をシミュレータコア241の速度調整部241gに出力する。なお、シミュレーション速度は、実世界の時間の流れに対する仮想世界2の時間の流れの速度比を意味する。シミュレーションの停止が指示された場合、シミュレーション動作制御部211hは、エージェントシミュレータ201によるシミュレーションを停止させる。シミュレーションの休止が指示された場合にはシミュレーションを休止させ、再開が指示された場合にシミュレーションを再開させる。シミュレーション動作制御部211hは、エージェントシミュレータ201の現在の制御状態を含むシミュレーション制御メッセージをコントロールメッセージ送信部211fに出力する。
【0144】
3-1-3.3D物理エンジンの詳細
3D物理エンジン221において、周囲エージェント状態更新部221aは、移動メッセージ受信部211aから移動メッセージを取得する。移動メッセージ受信部211aから取得される移動メッセージは、移動メッセージディスパッチャ310を経由して他のエージェントシミュレータから送られた移動メッセージである。周囲エージェント状態更新部221aは、取得した移動メッセージに基づいて自エージェントの周囲に存在する周囲エージェントの現在の状態を推定する。
【0145】
周囲エージェントの現在の状態を過去の状態から推定する場合、周囲エージェント状態更新部221aは、ログに保存されている周囲エージェントの過去の状態を使用する。例えば、周囲エージェントの最新の2つ以上の過去の状態に基づく線形外挿によって周囲エージェントの現在の状態を推定することができる。周囲エージェントの過去の状態の数が1つの場合、その唯一の過去の状態を周囲エージェントの現在の状態として推定してもよい。周囲エージェント状態更新部221aは、推定した周囲エージェントの現在の状態を視覚情報生成部221bに出力するとともに、ログを更新する。
【0146】
視覚情報生成部221bは、周囲エージェント状態更新部221aから周囲エージェントの現在の状態を取得する。視覚情報生成部221bは、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。自エージェントは歩行者であるので、観測で得られる周辺情報とは、歩行者の目で捉えられる視覚情報を意味する。視覚情報生成部221bは、生成された視覚情報をシミュレータコア241の全体移動方針決定部241a、行動決定部241b、及びサービス利用行動決定部241eに出力する。
【0147】
自エージェント状態更新部221cは、シミュレータコア241の次タイムステップ状態算出部241dから、シミュレータコア241でシミュレーションされた次タイムステップにおける自エージェントの状態を取得する。自エージェント状態更新部221cは、シミュレータコア241によるシミュレーション結果に基づいて3次元空間における自エージェントの状態を更新する。自エージェント状態更新部221cは、更新された自エージェントの状態を含む移動メッセージを送受信コントローラ211の移動メッセージ送信部211dに出力する。移動メッセージに含まれる自エージェントの状態には、今回タイムステップにおける位置、方向、速度、加速度と、次タイムステップにおける位置、方向、速度、加速度とが含まれる。また、自エージェント状態更新部221cは、更新された自エージェントの状態に関する情報をサービスシステムクライアントシミュレータ231のサービス利用情報生成部231bに出力する。
【0148】
3-1-4.サービスシステムクライアントシミュレータの詳細
サービスシステムクライアントシミュレータ231において、サービス提供状態情報処理部231aは、サービスメッセージ受信部211bからサービスメッセージを取得する。サービスメッセージ受信部211bから取得されるサービスメッセージはサービス提供状態情報を含む。サービス提供状態情報処理部231aは、サービス提供状態情報を処理し、サービスシステムのユーザとしての自エージェントの状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。自エージェントのユーザとしての状態に関する情報はユーザ端末に提示される情報であり、入力項目は自エージェントがサービスを利用するために入力を依頼される情報である。サービス提供状態情報処理部231aは、自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とをシミュレータコア241の全体移動方針決定部241a及びサービス利用行動決定部241eに出力する。
【0149】
サービス利用情報生成部231bは、シミュレータコア241のサービス利用行動決定部241eから自エージェントのサービス利用行動の決定結果を取得する。また、サービス利用情報生成部231bは、3D物理エンジン221の自エージェント状態更新部221cから3次元空間における自エージェントの状態を取得する。サービス利用情報生成部231bは、取得されたこれらの情報に基づいてサービス利用情報を生成するとともに、自エージェントのサービスの利用状態を更新する。サービス利用情報生成部231bは、サービス利用情報を含むサービスメッセージを送受信コントローラ211のサービスメッセージ送信部211eに出力する。
【0150】
3-1-5.シミュレータコアの詳細
シミュレータコア241において、全体移動方針決定部241aは、3D物理エンジン221の視覚情報生成部221bから視覚情報を取得する。また、全体移動方針決定部241aは、サービスシステムクライアントシミュレータ231のサービス提供状態情報処理部231aから自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。全体移動方針決定部241aは、取得されたこれらの情報に基づいて自エージェントの仮想世界2における全体的な移動方針を決定する。全体移動方針決定部241aは、決定された全体的な移動方針を行動決定部241bに出力する。
【0151】
行動決定部241bは、全体移動方針決定部241aから全体的な移動方針を取得するとともに、3D物理エンジン221の視覚情報生成部221bから視覚情報を取得する。行動決定部241bは、全体的な移動方針と視覚情報とを移動モデル241cに入力することによって自エージェントの行動を決定する。移動モデル241cは、一定の移動方針のもと歩行者の目に映る周辺の状況に応じて歩行者がどのように移動するのかをモデル化したシミュレーションモデルである。行動決定部241bは、決定した自エージェントの行動を次タイムステップ状態算出部241dに出力する。
【0152】
次タイムステップ状態算出部241dは、行動決定部241bで決定された自エージェントの行動を取得する。次タイムステップ状態算出部241dは、自エージェントの行動に基づいて次タイムステップにおける自エージェントの状態を算出する。算出される自エージェントの状態は、次タイムステップにおける自エージェントの位置、方向、速度、及び加速度を含む。次タイムステップ状態算出部241dは、算出された次タイムステップにおける自エージェントの状態を3D物理エンジン221の自エージェント状態更新部221cに出力する。また、次タイムステップ状態算出部241dは、自エージェントの状態更新のための計算の開始時刻を送受信コントローラ211の剰余時間率算出部211gに出力する。
【0153】
サービス利用行動決定部241eは、3D物理エンジン221の視覚情報生成部221bから視覚情報を取得する。また、サービス利用行動決定部241eは、サービスシステムクライアントシミュレータ231のサービス提供状態情報処理部231aから自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。サービス利用行動決定部241eは、取得したこれらの情報を行動モデル241fに入力することによって自エージェントのサービスシステムのユーザとしての行動(サービス利用行動)を決定する。行動モデル241fは、ユーザにサービスに関する情報が提示され、ユーザ端末のサービスアプリへの入力が依頼された場合に、ユーザの目に映る周辺の状況に応じてユーザがどのように移動するのかをモデル化したシミュレーションモデルである。サービス利用行動決定部241eは、決定したサービス利用行動をサービス利用情報生成部231bに出力する。
【0154】
速度調整部241gは、シミュレーション動作制御部211hからシミュレーション速度を取得する。シミュレーション動作制御部211hから取得されるシミュレーション速度は、シミュレーションコンダクタ320によって指示されたシミュレーション速度である。速度調整部241gは、シミュレーションコンダクタ320からの指示にしたがってシミュレータコア241による自エージェントのシミュレーション速度を加速或いは減速させる。
【0155】
3-2.自律ロボット/車両エージェント用エージェントシミュレータ
図14は、自律ロボット/車両エージェント用のエージェントシミュレータ202の構成と情報の流れを示すブロック図である。自律ロボット/車両エージェントとは、バックエンドサーバ400が関係するサービスシステムにおいてサービスの提供に用いられる自律ロボット又は自律車両のエージェントである。以下、自律ロボット/車両エージェント用のエージェントシミュレータ202の全体構成と各部の詳細、及びエージェントシミュレータ202における情報の流れについて説明する。
【0156】
3-2-1.自律ロボット/車両エージェント用エージェントシミュレータの全体構成
エージェントシミュレータ202は、その機能として、送受信コントローラ212、3D物理エンジン222、サービスシステムクライアントシミュレータ232、及びシミュレータコア242を備える。これらの機能は、概念として、それぞれ送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240に含まれる。
【0157】
送受信コントローラ212は、各種メッセージを受信する機能として、移動メッセージ受信部212a、サービスメッセージ受信部212b、及びコントロールメッセージ受信部212cを備える。また、送受信コントローラ212は、各種メッセージを送信する機能として、移動メッセージ送信部212d、サービスメッセージ送信部212e、及びコントロールメッセージ送信部212fを備える。さらに、送受信コントローラ212は、剰余時間率算出部212gとシミュレーション動作制御部212hとを備える。送受信コントローラ211を構成する各部212a~212hは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0158】
3D物理エンジン222は、その機能として、周囲エージェント状態更新部222a、センサ情報生成部222b、及び自エージェント状態更新部222cを備える。3D物理エンジン222を構成する各部222a,222b,222cは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0159】
サービスシステムクライアントシミュレータ232は、その機能として、経路計画用情報受信部232aと動作状態情報生成部232bとを備える。サービスシステムクライアントシミュレータ232を構成する各部232a,232bは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0160】
シミュレータコア242は、その機能として、全体的経路計画部242a、局所的経路計画部242b、アクチュエータ操作量決定部242c、及び次タイムステップ状態算出部242dを備える。シミュレータコア242を構成する各部242a,242b,242c,242dは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0161】
3-2-2.送受信コントローラの詳細
送受信コントローラ212において、移動メッセージ受信部212aは、移動メッセージディスパッチャ310から移動メッセージを受信する。移動メッセージ受信部212aは、受信した移動メッセージを3D物理エンジン222の周囲エージェント状態更新部222aに出力する。また、移動メッセージ受信部212aは、移動メッセージを受信した時刻を含む情報を剰余時間率算出部212gに出力する。
【0162】
サービスメッセージ受信部212bは、バックエンドサーバ400からサービスメッセージを受信する。サービスメッセージ受信部212bは、受信したサービスメッセージをサービスシステムクライアントシミュレータ232の経路計画用情報受信部232aに出力する。
【0163】
コントロールメッセージ受信部212cは、シミュレーションコンダクタ320からシミュレーション制御メッセージを受信する。コントロールメッセージ受信部212cは、受信したミュレーション制御メッセージをシミュレーション動作制御部212hに出力する。
【0164】
移動メッセージ送信部212dは、3D物理エンジン222の自エージェント状態更新部222cから自エージェントの現在の状態を含む移動メッセージを取得する。移動メッセージ送信部212dは、取得した移動メッセージを移動メッセージディスパッチャ310に送信する。また、移動メッセージ送信部212dは、移動メッセージの送信完了時刻を含む情報を剰余時間率算出部212gに送信する。
【0165】
サービスメッセージ送信部212eは、サービスシステムクライアントシミュレータ232の動作状態情報生成部232bから動作状態情報を含むサービスメッセージを取得する。サービスメッセージ送信部212eは、取得したサービスメッセージをバックエンドサーバ400に送信する。
【0166】
コントロールメッセージ送信部212fは、剰余時間率算出部212gからシミュレーションの速度状況に関する情報を含むシミュレーション制御メッセージを取得する。また、コントロールメッセージ送信部212fは、シミュレーション動作制御部212hからエージェントシミュレータ202の制御状態を含むシミュレーション制御メッセージを取得する。コントロールメッセージ送信部212fは、剰余時間率算出部212gとシミュレーション動作制御部212hとから取得したシミュレーション制御メッセージをシミュレーションコンダクタ320に送信する。
【0167】
剰余時間率算出部212gは、移動メッセージ受信部212aから移動メッセージの受信時刻を含む情報を取得する。また、剰余時間率算出部212gは、移動メッセージ送信部212dから移動メッセージの送信完了時刻を含む情報を取得する。さらに、剰余時間率算出部212gは、シミュレータコア242の次タイムステップ状態算出部242dから自エージェントの状態更新のための計算の開始時刻を取得する。
【0168】
剰余時間率算出部212gは、取得した情報に基づき上述の各式により剰余時間、剰余時間率、及び遅れ時間を計算する。剰余時間率算出部212gは、剰余時間、剰余時間率、及び遅れ時間を含むシミュレーション制御メッセージをコントロールメッセージ送信部212fに出力する。これらの情報を含むシミュレーション制御メッセージを受信したシミュレーションコンダクタ320は、エージェントシミュレータ202に対して指示すべき制御内容を含むシミュレーション制御メッセージを作成し、エージェントシミュレータ202に送信する。
【0169】
シミュレーション動作制御部212hは、コントロールメッセージ受信部212cからシミュレーション制御メッセージを取得する。シミュレーション動作制御部212hは、シミュレーション制御メッセージに含まれる指示に従ってエージェントシミュレータ202のシミュレーション動作を制御する。例えば、シミュレーションの時間粒度の変更が指示された場合、シミュレーション動作制御部212hは、エージェントシミュレータ202によるシミュレーションの時間粒度を初期値から指示された時間粒度に変更する。時間粒度の初期値はエージェントシミュレータ202に設定値として記憶されている。また、時間粒度の上限値と下限値は、エージェントの種類ごとにシミュレーションコンダクタ320に記憶されている。
【0170】
シミュレーション制御メッセージによる指示内容がシミュレーション速度である場合、シミュレーション動作制御部212hは、3D物理エンジン222やシミュレータコア242の動作周波数を指示されたシミュレーション速度に従って変化させ、エージェントシミュレータ202の演算速度を加速或いは減速する。シミュレーションの停止が指示された場合、シミュレーション動作制御部212hは、エージェントシミュレータ202によるシミュレーションを停止させる。シミュレーションの休止が指示された場合にはシミュレーションを休止させ、再開が指示された場合にシミュレーションを再開させる。シミュレーション動作制御部212hは、エージェントシミュレータ202の現在の制御状態を含むシミュレーション制御メッセージをコントロールメッセージ送信部212fに出力する。
【0171】
3-2-3.3D物理エンジンの詳細
3D物理エンジン222において、周囲エージェント状態更新部222aは、移動メッセージ受信部212aから移動メッセージを取得する。移動メッセージ受信部212aから取得される移動メッセージは、移動メッセージディスパッチャ310を経由して他のエージェントシミュレータから送られた移動メッセージである。周囲エージェント状態更新部222aは、取得した移動メッセージに基づいて自エージェントの周囲に存在する周囲エージェントの現在の状態を推定する。
【0172】
周囲エージェントの現在の状態を過去の状態から推定する場合、周囲エージェント状態更新部222aは、ログに保存されている周囲エージェントの過去の状態を使用する。周囲エージェントの過去の状態を用いて現在の状態を推定する方法は前述の通りである。周囲エージェント状態更新部222aは、推定した周囲エージェントの現在の状態をセンサ情報生成部222bに出力するとともに、ログを更新する。
【0173】
センサ情報生成部222bは、周囲エージェント状態更新部222aから周囲エージェントの現在の状態を取得する。センサ情報生成部222bは、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。自エージェントは自律ロボット或いは自律車両であるので、観測で得られる周辺情報とは、自律ロボット或いは自律車両のセンサで捉えられるセンサ情報を意味する。センサ情報生成部222bは、生成されたセンサ情報をシミュレータコア242の全体的経路計画部242a、及びサービスシステムクライアントシミュレータ232の動作状態情報生成部232bに出力する。
【0174】
自エージェント状態更新部222cは、シミュレータコア242の次タイムステップ状態算出部242dから、シミュレータコア242で演算された次タイムステップにおける自エージェントの状態を取得する。自エージェント状態更新部222cは、シミュレータコア242による演算結果に基づいて3次元空間における自エージェントの状態を更新する。自エージェント状態更新部222cは、更新された自エージェントの状態を含む移動メッセージを送受信コントローラ212の移動メッセージ送信部212dに出力する。移動メッセージに含まれる自エージェントの状態には、今回タイムステップにおける位置、方向、速度、加速度と、次タイムステップにおける位置、方向、速度、加速度とが含まれる。また、自エージェント状態更新部222cは、更新された自エージェントの状態に関する情報をサービスシステムクライアントシミュレータ232の動作状態情報生成部232bに出力する。
【0175】
3-2-4.サービスシステムクライアントシミュレータの詳細
サービスシステムクライアントシミュレータ232において、経路計画用情報受信部232aは、サービスメッセージ受信部211bからサービスメッセージを取得する。サービスメッセージ受信部212bから取得されるサービスメッセージは、サービスシステムが自律ロボット/車両を用いてサービスを提供するための動作指示情報と他のサービスシステムに関する情報とを含む。経路計画用情報受信部232aは、動作指示情報と他サービスシステム情報とをシミュレータコア242の全体的経路計画部242aに出力する。
【0176】
動作状態情報生成部232bは、シミュレータコア242のアクチュエータ操作量決定部242cから自エージェントの次タイムステップにおけるアクチュエータ操作量を取得する。また、動作状態情報生成部232bは、3D物理エンジン222のセンサ情報生成部222bからセンサ情報を取得するとともに、自エージェント状態更新部222cから3次元空間における自エージェントの状態を取得する。動作状態情報生成部232bは、取得されたこれらの情報に基づいてサービスの提供に係る自エージェントの動作状態を表す動作状態情報を生成する。動作状態情報生成部232bは、動作状態情報を含むサービスメッセージを送受信コントローラ212のサービスメッセージ送信部212eに出力する。
【0177】
3-2-5.シミュレータコアの詳細
シミュレータコア242において、全体的経路計画部242aは、3D物理エンジン222のセンサ情報生成部222bからセンサ情報を取得する。また、全体的経路計画部242aは、サービスシステムクライアントシミュレータ232の経路計画用情報受信部232aから動作指示情報と他サービスシステム情報とを取得する。全体的経路計画部242aは、取得されたこれらの情報に基づいて仮想世界2における自エージェントの全体的な経路を計画する。全体的な経路とは、自エージェントの現在位置から目標地点までの経路を意味する。センサ情報生成部222bと経路計画用情報受信部232aとから取得される情報は毎回変化するので、全体的経路計画部242aは、タイムステップ毎に全体的経路計画を立て直す。全体的経路計画部242aは、決定された全体的経路計画を局所的経路計画部242bに出力する。
【0178】
局所的経路計画部242bは、全体的経路計画部242aから全体的経路計画を取得する。局所的経路計画部242bは、全体的経路計画に基づいて局所的な経路計画を立てる。局所的な経路とは、例えば、現時点から所定タイムステップ後までの経路、或いは、現在位置から所定距離までの経路を意味する。局所的経路計画は、例えば、自エージェントが辿るべき位置の集合と、各位置における速度或いは加速度とで表される。局所的経路計画部242bは、決定された局所的経路計画をアクチュエータ操作量決定部242cに出力する。
【0179】
アクチュエータ操作量決定部242cは、局所的経路計画部242bから局所的経路計画を取得する。アクチュエータ操作量決定部242cは、局所的経路計画に基づいて次タイムステップにおける自エージェントのアクチュエータ操作量を決定する。ここでいうアクチュエータとは、自エージェントの方向、速度、及び加速度を制御するアクチュエータである。自エージェントが車輪で走行する自律ロボット或いは自律車両である場合、例えば、制動装置、駆動装置、操舵装置などのアクチュエータが操作対象となる。アクチュエータ操作量決定部242cは、決定したアクチュエータ操作量を次タイムステップ状態算出部242d、及びサービスシステムクライアントシミュレータ232の動作状態情報生成部232bに出力する。
【0180】
次タイムステップ状態算出部242dは、アクチュエータ操作量決定部242cで決定されたアクチュエータ操作量を取得する。次タイムステップ状態算出部242dは、アクチュエータ操作量に基づいて次タイムステップにおける自エージェントの状態を算出する。算出される自エージェントの状態は、次タイムステップにおける自エージェントの位置、方向、速度、及び加速度を含む。次タイムステップ状態算出部242dは、算出された次タイムステップにおける自エージェントの状態を3D物理エンジン222の自エージェント状態更新部222cに出力する。また、次タイムステップ状態算出部242dは、自エージェントの状態更新のための計算の開始時刻を送受信コントローラ212の剰余時間率算出部212gに出力する。
【0181】
3-3.VR歩行者エージェント用エージェントシミュレータ
図15は、VR歩行者エージェント用のエージェントシミュレータ203の構成と情報の流れを示すブロック図である。VR歩行者エージェントとは、実在の人がVR(Virtual Reality)システムを用いてシミュレーションの対象である仮想世界2に参加するための歩行者エージェントである。以下、VR歩行者エージェント用のエージェントシミュレータ203の全体構成と各部の詳細、及びエージェントシミュレータ203における情報の流れについて説明する。
【0182】
3-3-1.VR歩行者エージェント用エージェントシミュレータの全体構成
エージェントシミュレータ203は、その機能として、送受信コントローラ213、3D物理エンジン223、サービスシステムクライアントシミュレータ233、及びシミュレータコア243を備える。これらの機能は、概念として、それぞれ送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240に含まれる。
【0183】
送受信コントローラ213は、各種メッセージを受信する機能として、移動メッセージ受信部213a、サービスメッセージ受信部213b、及びコントロールメッセージ受信部213cを備える。また、送受信コントローラ213は、各種メッセージを送信する機能として、移動メッセージ送信部213d、サービスメッセージ送信部213e、及びコントロールメッセージ送信部213fを備える。さらに、送受信コントローラ213は、シミュレーション動作制御部213hを備える。送受信コントローラ213を構成する各部213a~213f,213hは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0184】
3D物理エンジン223は、その機能として、周囲エージェント状態更新部223a、視覚情報生成部223b、及び自エージェント状態更新部223cを備える。3D物理エンジン223を構成する各部223a,223b,223cは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0185】
サービスシステムクライアントシミュレータ233は、その機能として、サービス提供状態情報処理部233aとサービス利用情報生成部233bとを備える。サービスシステムクライアントシミュレータ231を構成する各部233a,233bは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0186】
シミュレータコア243は、その機能として、認知判断用情報提示部243a、移動操作受付部243b、次タイムステップ状態算出部243c、及びアプリ操作受付部243dを備える。シミュレータコア243を構成する各部243a,243b,243c,243dは、それぞれがプログラム或いはプログラムの一部である。なお、ブロック内の記載は各部の代表的な機能を記載したものであって、必ずしも各部の名称とは一致しない。
【0187】
3-3-2.送受信コントローラの詳細
送受信コントローラ213において、移動メッセージ受信部213aは、移動メッセージディスパッチャ310から移動メッセージを受信する。移動メッセージ受信部213aは、受信した移動メッセージを3D物理エンジン223の周囲エージェント状態更新部223aに出力する。
【0188】
サービスメッセージ受信部213bは、バックエンドサーバ400からサービスメッセージを受信する。サービスメッセージ受信部213bは、受信したサービスメッセージをサービスシステムクライアントシミュレータ233のサービス提供状態情報処理部233aに出力する。
【0189】
コントロールメッセージ受信部213cは、シミュレーションコンダクタ320からシミュレーション制御メッセージを受信する。コントロールメッセージ受信部213cは、受信したミュレーション制御メッセージをシミュレーション動作制御部213hに出力する。
【0190】
移動メッセージ送信部213dは、3D物理エンジン223の自エージェント状態更新部223cから自エージェントの現在の状態を含む移動メッセージを取得する。移動メッセージ送信部213dは、取得した移動メッセージを移動メッセージディスパッチャ310に送信する。
【0191】
サービスメッセージ送信部213eは、サービスシステムクライアントシミュレータ233のサービス利用情報生成部233bからサービス利用情報を含むサービスメッセージを取得する。サービスメッセージ送信部213eは、取得したサービスメッセージをバックエンドサーバ400に送信する。
【0192】
コントロールメッセージ送信部213fは、シミュレーション動作制御部213hからエージェントシミュレータ203の制御状態を含むシミュレーション制御メッセージを取得する。コントロールメッセージ送信部213fは、シミュレーション動作制御部213hから取得したシミュレーション制御メッセージをシミュレーションコンダクタ320に送信する。
【0193】
シミュレーション動作制御部213hは、コントロールメッセージ受信部213cからシミュレーション制御メッセージを取得する。シミュレーション動作制御部213hは、シミュレーション制御メッセージに含まれる指示に従ってエージェントシミュレータ203のシミュレーション動作を制御する。VR歩行者エージェントの仮想世界2への参加条件が満たされない場合、シミュレーションコンダクタ320からエージェントシミュレータ203に対してシミュレーションの停止が指示される。
【0194】
前述のエージェントシミュレータ201,202及び後述するエージェントシミュレータ204は、必要に応じてシミュレーション速度を変更することができる。しかし、シミュレーション速度が変更された場合、VR歩行者エージェントを介して仮想世界2に参加している実在の参加者は、実世界とは異なる時間の流れに対して強い違和感を覚える虞がある。ゆえに、MASシステム100では、シミュレーションが実時間で行われていることを参加条件として、仮想世界2へのVR歩行者エージェントの参加が許容される。実世界の時間の流れよりもシミュレーション速度が加速或いは減速される場合、シミュレーションコンダクタ320は、エージェントシミュレータ203によるシミュレーションを停止させる。シミュレーション動作制御部213hは、エージェントシミュレータ203の現在の制御状態を含むシミュレーション制御メッセージをコントロールメッセージ送信部213fに出力する。
【0195】
3-3-3.3D物理エンジンの詳細
3D物理エンジン223において、周囲エージェント状態更新部223aは、移動メッセージ受信部213aから移動メッセージを取得する。移動メッセージ受信部213aから取得される移動メッセージは、移動メッセージディスパッチャ310を経由して他のエージェントシミュレータから送られた移動メッセージである。周囲エージェント状態更新部223aは、取得した移動メッセージに基づいて自エージェントの周囲に存在する周囲エージェントの現在の状態を推定する。
【0196】
周囲エージェントの現在の状態を過去の状態から推定する場合、周囲エージェント状態更新部223aは、ログに保存されている周囲エージェントの過去の状態を使用する。周囲エージェントの過去の状態を用いて現在の状態を推定する方法は前述の通りである。周囲エージェント状態更新部223aは、推定した周囲エージェントの現在の状態を視覚情報生成部223bに出力するとともに、ログを更新する。
【0197】
視覚情報生成部223bは、周囲エージェント状態更新部223aから周囲エージェントの現在の状態を取得する。視覚情報生成部223bは、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。自エージェントは歩行者であるので、観測で得られる周辺情報とは、歩行者の目で捉えられる視覚情報を意味する。視覚情報生成部223bは、生成された視覚情報をシミュレータコア243の認知判断用情報提示部243a、及び移動操作受付部243bに出力する。
【0198】
自エージェント状態更新部223cは、シミュレータコア243の次タイムステップ状態算出部243cから、シミュレータコア243で演算された次タイムステップにおける自エージェントの状態を取得する。自エージェント状態更新部223cは、シミュレータコア243による演算結果に基づいて3次元空間における自エージェントの状態を更新する。自エージェント状態更新部223cは、更新された自エージェントの状態を含む移動メッセージを送受信コントローラ213の移動メッセージ送信部213dに出力する。移動メッセージに含まれる自エージェントの状態には、今回タイムステップにおける位置、方向、速度、加速度と、次タイムステップにおける位置、方向、速度、加速度とが含まれる。また、自エージェント状態更新部223cは、更新された自エージェントの状態に関する情報をサービスシステムクライアントシミュレータ233のサービス利用情報生成部233bに出力する。
【0199】
3-3-4.サービスシステムクライアントシミュレータの詳細
サービスシステムクライアントシミュレータ233において、サービス提供状態情報処理部233aは、サービスメッセージ受信部213bからサービスメッセージを取得する。サービスメッセージ受信部213bから取得されるサービスメッセージはサービス提供状態情報を含む。サービス提供状態情報処理部233aは、サービス提供状態情報を処理し、サービスシステムのユーザとしての自エージェントの状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。自エージェントのユーザとしての状態に関する情報はユーザ端末に提示される情報であり、入力項目は自エージェントがサービスを利用するために入力を依頼される情報である。サービス提供状態情報処理部233aは、自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とをシミュレータコア243の認知判断用情報提示部243a及びアプリ操作受付部243dに出力する。
【0200】
サービス利用情報生成部233bは、シミュレータコア243のアプリ操作受付部243dから、VR歩行者エージェントを介して仮想世界2に参加している実在の参加者によるVR上でのサービスアプリの操作を取得する。また、サービス利用情報生成部233bは、3D物理エンジン223の自エージェント状態更新部223cから3次元空間における自エージェントの状態を取得する。サービス利用情報生成部233bは、取得されたこれらの情報に基づいてサービス利用情報を生成するとともに、自エージェントのサービスの利用状態を更新する。サービス利用情報生成部233bは、サービス利用情報を含むサービスメッセージを送受信コントローラ213のサービスメッセージ送信部213eに出力する。
【0201】
3-3-5.シミュレータコアの詳細
シミュレータコア243において、認知判断用情報提示部243aは、3D物理エンジン223の視覚情報生成部223bから視覚情報を取得する。また、認知判断用情報提示部243aは、サービスシステムクライアントシミュレータ231のサービス提供状態情報処理部233aから自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。取得されたこれらの情報は、VR歩行者エージェントを介して仮想世界2に参加している実在の参加者にとっての認知判断用の情報である。認知判断用情報提示部243aは、認知判断用の情報を実在参加者に対してVRシステムを通じて提示する。
【0202】
移動操作受付部243bは、3D物理エンジン223の視覚情報生成部223bから視覚情報を取得する。そして、移動操作受付部243bは、VRシステムを通じて視覚情報を実在参加者に提示しながら、実在参加者によるVR上での移動操作を受け付ける。移動操作受付部243bは、受け付けた実在参加者によるVR上での移動操作を次タイムステップ状態算出部243dに出力する。
【0203】
次タイムステップ状態算出部243dは、移動操作受付部243bから実在参加者によるVR上での移動操作を取得する。次タイムステップ状態算出部243dは、実在参加者によるVR上での移動操作に基づいて次タイムステップにおける自エージェントの状態を算出する。算出される自エージェントの状態は、次タイムステップにおける自エージェントの位置、方向、速度、及び加速度を含む。次タイムステップ状態算出部243dは、算出された次タイムステップにおける自エージェントの状態を3D物理エンジン223の自エージェント状態更新部223cに出力する。
【0204】
アプリ操作受付部243dは、3D物理エンジン223の視覚情報生成部223bから視覚情報を取得する。また、アプリ操作受付部243dは、サービスシステムクライアントシミュレータ233のサービス提供状態情報処理部233aから自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。アプリ操作受付部243dは、取得したこれらの情報を実在参加者に対してVRシステムを通じて提示しながら、実在参加者によるVR上でのサービスアプリの操作を受け付ける。アプリ操作受付部243dは、受け付けた実在参加者によるVR上でのサービスアプリの操作をサービスシステムクライアントシミュレータ233のサービス利用情報生成部233bに出力する。
【0205】
3-4.路側センサエージェント用エージェントシミュレータ
図16は、路側センサエージェント用のエージェントシミュレータ204の構成と情報の流れを示すブロック図である。路側センサエージェントとは、自律ロボット/車両エージェントの仮想世界2における位置情報の取得に用いられる路側センサのエージェントである。路側センサエージェントにより取得される自律ロボット/車両エージェントの位置情報は、バックエンドサーバ400が関係するサービスシステムにおいて使用される。以下、路側センサエージェント用のエージェントシミュレータ204の全体構成と各部の詳細、及びエージェントシミュレータ204における情報の流れについて説明する。
【0206】
3-4-1.路側センサエージェント用エージェントシミュレータの全体構成
エージェントシミュレータ204は、その機能として、送受信コントローラ214、3D物理エンジン224、及びサービスシステムクライアントシミュレータ234を備える。これらの機能は、概念として、それぞれ送受信コントローラ210、3D物理エンジン220、及びシミュレータコア240に含まれる。エージェントシミュレータ204は、他のエージェントシミュレータとは異なりシミュレータコアは備えない。
【0207】
送受信コントローラ214は、各種メッセージを受信する機能として、移動メッセージ受信部214a、及びコントロールメッセージ受信部214bを備える。また、送受信コントローラ212は、各種メッセージを送信する機能として、サービスメッセージ送信部214e、及びコントロールメッセージ送信部214fを備える。さらに、送受信コントローラ212は、剰余時間率算出部214gとシミュレーション動作制御部214hとを備える。送受信コントローラ214を構成する各部212a,214c,214e,214f,214g,214hは、それぞれがプログラム或いはプログラムの一部である。
【0208】
3D物理エンジン224は、その機能として、周囲エージェント状態更新部224a、及びセンサ情報生成部224bを備える。3D物理エンジン224を構成する各部224a,224bは、それぞれがプログラム或いはプログラムの一部である。
【0209】
サービスシステムクライアントシミュレータ234は、その機能として、サービスメッセージ生成部234aを備える。サービスシステムクライアントシミュレータ234を構成するサービスメッセージ生成部234aは、プログラム或いはプログラムの一部である。
【0210】
3-4-2.送受信コントローラの詳細
送受信コントローラ214において、移動メッセージ受信部214aは、移動メッセージディスパッチャ310から移動メッセージを受信する。移動メッセージ受信部214aは、受信した移動メッセージを3D物理エンジン224の周囲エージェント状態更新部224aに出力する。また、移動メッセージ受信部214aは、移動メッセージを受信した時刻を含む情報を剰余時間率算出部214gに出力する。
【0211】
コントロールメッセージ受信部214cは、シミュレーションコンダクタ320からシミュレーション制御メッセージを受信する。コントロールメッセージ受信部214cは、受信したミュレーション制御メッセージをシミュレーション動作制御部214hに出力する。
【0212】
サービスメッセージ送信部214eは、サービスシステムクライアントシミュレータ234のサービスメッセージ生成部234aからセンサ情報を含むサービスメッセージを取得する。サービスメッセージ送信部214eは、取得したサービスメッセージをバックエンドサーバ400に送信する。
【0213】
コントロールメッセージ送信部214fは、剰余時間率算出部214gからシミュレーションの速度状況に関する情報を含むシミュレーション制御メッセージを取得する。また、コントロールメッセージ送信部214fは、シミュレーション動作制御部214hからエージェントシミュレータ202の制御状態を含むシミュレーション制御メッセージを取得する。コントロールメッセージ送信部214fは、剰余時間率算出部214gとシミュレーション動作制御部214hとから取得したシミュレーション制御メッセージをシミュレーションコンダクタ320に送信する。
【0214】
剰余時間率算出部214gは、移動メッセージ受信部214aから移動メッセージの受信時刻を含む情報を取得する。また、剰余時間率算出部214gは、サービスメッセージ送信部214eからサービスメッセージの送信完了時刻を含む情報を取得する。剰余時間率算出部214gは、取得した情報に基づき上述の各式により剰余時間、剰余時間率、及び遅れ時間を計算する。ただし、剰余時間と剰余時間率の計算において、Ta(N+1)及びTa(N)にはエージェントシミュレータ202の動作周波数から計算される計算値が用いられる。また、Td(N)には今回タイムステップにおける移動メッセージの送信完了時刻に代えて、サービスメッセージの送信完了時刻が用いられる。
【0215】
剰余時間率算出部214gは、剰余時間、剰余時間率、及び遅れ時間を含むシミュレーション制御メッセージをコントロールメッセージ送信部214fに出力する。これらの情報を含むシミュレーション制御メッセージを受信したシミュレーションコンダクタ320は、エージェントシミュレータ204に対して指示すべき制御内容を含むシミュレーション制御メッセージを作成し、エージェントシミュレータ204に送信する。
【0216】
シミュレーション動作制御部214hは、コントロールメッセージ受信部214cからシミュレーション制御メッセージを取得する。シミュレーション動作制御部214hは、シミュレーション制御メッセージに含まれる指示に従ってエージェントシミュレータ202のシミュレーション動作を制御する。例えば、シミュレーションの時間粒度の変更が指示された場合、シミュレーション動作制御部214hは、エージェントシミュレータ202によるシミュレーションの時間粒度を初期値から指示された時間粒度に変更する。時間粒度の初期値はエージェントシミュレータ204に設定値として記憶されている。また、時間粒度の上限値と下限値は、エージェントの種類ごとにシミュレーションコンダクタ320に記憶されている。
【0217】
シミュレーション制御メッセージによる指示内容がシミュレーション速度である場合、シミュレーション動作制御部214hは、3D物理エンジン224の動作周波数を指示されたシミュレーション速度に従って変化させ、エージェントシミュレータ204の演算速度を加速或いは減速する。シミュレーションの停止が指示された場合、シミュレーション動作制御部214hは、エージェントシミュレータ204によるシミュレーションを停止させる。シミュレーションの休止が指示された場合にはシミュレーションを休止させ、再開が指示された場合にシミュレーションを再開させる。シミュレーション動作制御部214hは、エージェントシミュレータ204の現在の制御状態を含むシミュレーション制御メッセージをコントロールメッセージ送信部214fに出力する。
【0218】
3-4-3.3D物理エンジンの詳細
3D物理エンジン224において、周囲エージェント状態更新部224aは、移動メッセージ受信部214aから移動メッセージを取得する。移動メッセージ受信部214aから取得される移動メッセージは、移動メッセージディスパッチャ310を経由して他のエージェントシミュレータから送られた移動メッセージである。周囲エージェント状態更新部224aは、取得した移動メッセージに基づいて自エージェントの周囲に存在する周囲エージェントの現在の状態を推定する。
【0219】
周囲エージェントの現在の状態を過去の状態から推定する場合、周囲エージェント状態更新部224aは、ログに保存されている周囲エージェントの過去の状態を使用する。周囲エージェントの過去の状態を用いて現在の状態を推定する方法は前述の通りである。周囲エージェント状態更新部224aは、推定した周囲エージェントの現在の状態をセンサ情報生成部224bに出力するとともに、ログを更新する。
【0220】
センサ情報生成部224bは、周囲エージェント状態更新部224aから周囲エージェントの現在の状態を取得する。センサ情報生成部224bは、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。自エージェントはカメラのような定置型の路側センサであるので、観測で得られる周辺情報とは、路側センサで捉えられるセンサ情報を意味する。センサ情報生成部224bは、生成されたセンサ情報をサービスシステムクライアントシミュレータ234のサービスメッセージ生成部234aに出力する。
【0221】
3-4-4.サービスシステムクライアントシミュレータの詳細
サービスシステムクライアントシミュレータ234において、サービスメッセージ生成部234aは、3D物理エンジン224のセンサ情報生成部224bからセンサ情報を取得する。サービスメッセージ生成部234aは、取得されたセンサ情報を含むサービスメッセージを送受信コントローラ214のサービスメッセージ送信部214eに出力する。
【0222】
4.MASシステムによるシミュレーション結果の集約と評価
MASシステム100によりシミュレーションを行うことによって、シミュレーションの対象世界についての様々なデータが得られる。
図17は、MASシステム100によるシミュレーション結果を集約し評価するための構成を示す。
【0223】
MASシステム100は、シミュレーションで得られるデータのログを記憶するデータロガーを各所に備える。エージェントシミュレータ200には、データロガー250,260,270,280が設けられている。データロガー250は、送受信コントローラ210内のデータログ(コントローラログ)を記憶する。データロガー260は、3D物理エンジン220内のデータログ(3D物理エンジンログ)を記憶する。データロガー270は、サービスシステムクライアントシミュレータ230内のデータログ(サービスシミュレーションログ)を記憶する。データロガー280は、シミュレータコア240内のデータログ(シミュレーションコアログ)を記憶する。
【0224】
センターコントローラ300には、データロガー330,340が設けられている。データロガー330は、移動メッセージディスパッチャ310内のデータログ(移動メッセージディスパッチャログ)を記憶する。データロガー340は、シミュレーションコンダクタ320内のデータログ(コンダクタログ)を記憶する。
【0225】
バックエンドサーバ400には、データロガー410が設けられている。データロガー410は、バックエンドサーバ400内のデータログ(サービスシステムログ)を記憶する。
【0226】
シミュレーションが中断された場合、シミュレーションコンダクタ320は、上記の各データロガーに記憶されたデータログを用いることによって、過去の任意の時点からシミュレーションを巻き戻し再スタートすることができる。
【0227】
また、MASシステム100は、サービスシステムログ集約部500、エージェント移動ログ集約部510、シミュレーションコアログ集約部520、アセット情報データベース530、時空間データベース540、及びビューワ550を備える。これらは、シミュレーション結果評価用のコンピュータにインストールされている。
【0228】
サービスシステムログ集約部500には、データロガー270,410からデータログが集められる。サービスシステムログ集約部500に集められたこれらのデータログは、サービスシステムに関するデータログである。このデータログから、サービスが正しく提供されたか評価することができる。また、物流ロボットのようなサービス用リソースの稼働率を含むサービス提供上の着目点について評価することもできる。
【0229】
エージェント移動ログ集約部510には、データロガー250,260,330,340からデータログが集められる。エージェント移動ログ集約部510に集められたこれらのデータログは、エージェントの移動に関するデータログである。このデータログから、エージェントの正常動作を確認することができる。また、エージェントの重なりのような問題の有無も確認することができる。シミュレーションの途中でエラーが発生した場合には、データログからシミュレーション内容が有効と想定される時間範囲を出力することができる。
【0230】
シミュレーションコアログ集約部520には、データロガー280とエージェント移動ログ集約部510とからデータログが集められる。シミュレーションコアログ集約部520に集められたこれらのデータログは、シミュレーションの着目点に関するデータログである。このデータログから、歩行者についてのシミュレーションであれば人の密度、ロビットのシミュレーションであれば内部の判断結果などの着目点について評価することができる。
【0231】
アセット情報データベース530には、BIM/CIMデータ或いはBIM/CIMデータから変換された建造物などの固定物の3次元情報と、各エージェントの3次元情報とが格納されている。
【0232】
時空間データベース540には、シミュレーション用の仮想データが格納されている。サービスシステムログ集約部500、エージェント移動ログ集約部510、及びシミュレーションコアログ集約部520で集約された各データログに基づく評価結果は、時空間データベース540の仮想データに反映される。
【0233】
ビューワ550は、アセット情報データベース530に格納されている固定物やエージェントの3次元情報と、時空間データベース540に格納されている仮想データとを用いて仮想世界2をモニタに表示する。
【0234】
5.MASシステムの物理構成
MASシステム100の物理構成について説明する。
図18は、MASシステム100の物理構成の一例を示す図である。MASシステム100は、例えば、同一のサブネット30上に配置された複数のコンピュータ10で構成することができる。さらに、サブネット30と別のサブネット32とをゲートウェイ40によって接続することにより、サブネット32上に配置された複数のコンピュータ10までMASシステム100を拡大することができる。
【0235】
図18に示す例では、ソフトウェアであるセンターコントローラ300は1つのコンピュータ10にインストールされている。ただし、センターコントローラ300の機能を複数のコンピュータ10に分散させてもよい。
【0236】
また、MASシステム100は、複数のバックエンドサーバ400を備えている。
図10に示す例では、それぞれのバックエンドサーバ400が別々のコンピュータ10にインストールされている。ただし、バックエンドサーバ400の機能を複数のコンピュータ10に分散させてもよい。また、1つのサーバを複数サーバに分割する仮想化技術によって、1つのコンピュータ10に複数のバックエンドサーバ400をインストールしてもよい。
【0237】
図18に示す例では、1つのコンピュータ10に複数のエージェントシミュレータ200がインストールされている。1つのコンピュータ10の上で複数のエージェントシミュレータ200を独立して動作させる手法としては仮想化技術を用いることができる。仮想化技術としては仮想マシンでもよいしコンテナ仮想化でもよい。1つのコンピュータ10に同一種類の複数のエージェントシミュレータ200をインストールしてもよいし、種類の異なる複数のエージェントシミュレータ200をインストールしてもよい。なお、1つのコンピュータ10に1つのエージェントシミュレータ200のみがインストールされていてもよい。
【0238】
以上のように、MASシステム100は、単一のコンピュータによる処理ではなく、複数のコンピュータ10を用いた並列分散処理を採用する。これにより、コンピュータの処理能力によって仮想世界2に搭乗させるエージェントの数が制限されることや、コンピュータの処理能力によって仮想世界2で提供されるサービスの数が制限されることを防ぐことができる。つまり、MASシステム100によれば、並列分散処理による大規模なシミュレーションが可能である。
【0239】
6.その他
仮想世界2を外から観察するための観察用エージェントを設けても良い。観察用エージェントは、例えば、街角カメラのような定置物体でもよく、カメラを備えたドローンのような移動物体であってもよく、もちろん歩行者であってもよい。観察用エージェントが備える物理エンジンの出力をモニタにつなぐことによって、観察用エージェントの視点で仮想世界2を観察することができる。
【0240】
上述の実施形態では、剰余時間率そのものが速度比を制御するための指標値として用いられているが、剰余時間率と相関する値であれば他の数値を指標値とすることもできる。例えば、1から剰余時間率を差し引いて得られる値であっても指標値として用いることができる。
【符号の説明】
【0241】
2 仮想世界(シミュレーション対象世界)
4A,4B,4C エージェント
10 コンピュータ
30,32 サブネット
40 ゲートウェイ
100 マルチエージェントシミュレーションシステム
200 エージェントシミュレータ
201 歩行者エージェント用エージェントシミュレータ
202 自律ロボット/車両エージェント用エージェントシミュレータ
203 VR歩行者エージェント用エージェントシミュレータ
204 路側センサエージェント用エージェントシミュレータ
210 送受信コントローラ
220 3D物理エンジン
230 サービスシステムクライアントシミュレータ
240 シミュレータコア
300 センターコントローラ
310 移動メッセージディスパッチャ
320 シミュレーションコンダクタ
400 サービスシステム用バックエンドサーバ