(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025025320
(43)【公開日】2025-02-21
(54)【発明の名称】エージェントの行動に関する計算を行うシステムおよび方法
(51)【国際特許分類】
G06Q 99/00 20060101AFI20250214BHJP
【FI】
G06Q99/00
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023129985
(22)【出願日】2023-08-09
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】山田 健一郎
(72)【発明者】
【氏名】江端 智一
(72)【発明者】
【氏名】石黒 正雄
【テーマコード(参考)】
5L049
5L050
【Fターム(参考)】
5L049DD02
5L050DD02
(57)【要約】 (修正有)
【課題】マルチエージェント・シミュレーション(Multi-Agent Simulation; MAS)による恩恵を享受し、計算時間を短縮するエージェント行動計算システムを提供する。
【解決手段】複数のエージェントの行動について仮想空間上でシミュレーションを行い、複数のエージェントの行動に関する計算を行うエージェント行動計算システムであって、所望計算時間入力部と、計算時間を推定する計算時間推定部とを備え、前記計算は、複数のエージェントに対応した複数のスレッドにより並列処理を行うマルチスレッド処理によって行われ、当該マルチスレッド処理は、複数のスレッドについて計算単位毎に連続的に行われる処理を含み、計算時間推定部が推定した計算時間は、当該マルチスレッド処理における複数のスレッドの一部について計算単位毎に連続的に行われる処理が行われることで、所望計算時間入力部に入力された所望の計算時間を満足する。
【選択図】
図11
【特許請求の範囲】
【請求項1】
複数のエージェントの行動について仮想空間上でシミュレーションを行い、当該複数のエージェントの行動に関する計算を行うエージェント行動計算システムであって、
ユーザーから所望の計算時間の入力操作を受け付ける所望計算時間入力部と、
現在のシミュレーション条件に基づく計算時間を推定する計算時間推定部と
を備え、
前記複数のエージェントの行動に関する計算は、当該複数のエージェントに対応した複数のスレッドにより並列処理を行うマルチスレッド処理によって行われ、
前記マルチスレッド処理は、前記複数のスレッドについて計算単位ごとに連続的に行われる処理を含み、
前記計算時間推定部が推定した計算時間は、前記マルチスレッド処理における前記複数のスレッドの一部について前記計算単位ごとに連続的に行われる処理が行われることで、前記所望計算時間入力部に入力された所望の計算時間を満足する
エージェント行動計算システム。
【請求項2】
前記マルチスレッド処理は、前記複数のスレッドについて前記計算単位とは異なる計算単位ごとの連続的でない処理によって行われるマクロモデル処理を含み、
前記計算時間推定部が推定した計算時間は、前記マルチスレッド処理における前記複数のスレッドの一部について前記マクロモデル処理が行われることで、前記所望計算時間入力部に入力された所望の計算時間を満足する
請求項1に記載のエージェント行動計算システム。
【請求項3】
前記計算時間推定部は、前記マルチスレッド処理を優先的に実施する対象となるエージェントを、エージェントの行動原理ごとに設定した係数と、エージェントの行動の判断基準となる利得とを乗算した項を含んだ線形式で表される数値に従って判断し、
前記利得は、前記エージェントがとりうる行動の種類の数だけ存在する
請求項1に記載のエージェント行動計算システム。
【請求項4】
前記シミュレーションの条件を追加するシミュレーション条件入力部をさらに備え、
前記シミュレーション条件入力部により追加された条件で実行する処理は、前記マルチスレッド処理によって行われる
請求項1に記載のエージェント行動計算システム。
【請求項5】
現実世界で取得されたデータである実データを入力可能な実データ入力部をさらに備え、
前記マルチスレッド処理において、前記計算単位ごとに連続的に行われる処理により、前記実データ入力部を介して取得した実データとの相互作用を計算する
請求項1に記載のエージェント行動計算システム。
【請求項6】
前記シミュレーションの対象であるエージェントごとの行動戦略と、前記行動戦略の判断基準となる利得とに基づいて前記マルチスレッド処理を行う、請求項1に記載のエージェント行動計算システム。
【請求項7】
前記エージェントの利得から前記シミュレーションにおけるアウトカムを計算するアウトカム計算部をさらに備え、
前記利得をもとに実施した施策のアウトカムを定量的に評価する
請求項6に記載のエージェント行動計算システム。
【請求項8】
前記計算時間推定部は、前記マルチスレッド処理による過去の計算時間を基に、前記現在のシミュレーション条件に基づく計算時間を推定する、請求項1に記載のエージェント行動計算システム。
【請求項9】
前記計算時間推定部は、現在のシミュレーション条件に基づいて前記マルチスレッド処理を事前に所定時間実行することで、当該シミュレーション条件に基づく計算時間を推定する、請求項1に記載のエージェント行動計算システム。
【請求項10】
複数のエージェントの行動について仮想空間上でシミュレーションを行い、当該複数のエージェントの行動に関する計算を行うエージェント行動計算方法であって、
少なくともプロセッサおよびメモリを備えるコンピュータが、
ユーザーから所望の計算時間の入力操作を受け付ける所望計算時間入力部と、
現在のシミュレーション条件に基づく計算時間を推定する計算時間推定部と
を備え、
前記複数のエージェントの行動に関する計算は、当該複数のエージェントに対応した複数のスレッドにより並列処理を行うマルチスレッド処理によって行われ、
前記マルチスレッド処理は、前記複数のスレッドについて計算単位ごとに連続的に行われる処理を含み、
前記計算時間推定部が推定した計算時間は、前記マルチスレッド処理における前記複数のスレッドの一部について前記計算単位ごとに連続的に行われる処理が行われることで、前記所望計算時間入力部に入力された所望の計算時間を満足する
エージェント行動計算方法。
【請求項11】
複数のエージェントの行動について仮想空間上でシミュレーションを行い、当該複数のエージェントの行動に関する計算を行うエージェント行動計算プログラムであって、
少なくともプロセッサおよびメモリを備えるコンピュータにより実行され、
前記コンピュータは、
ユーザーから所望の計算時間の入力操作を受け付ける所望計算時間入力部と、
現在のシミュレーション条件に基づく計算時間を推定する計算時間推定部と
を備え、
前記複数のエージェントの行動に関する計算は、当該複数のエージェントに対応した複数のスレッドにより並列処理を行うマルチスレッド処理によって行われ、
前記マルチスレッド処理は、前記複数のスレッドについて計算単位ごとに連続的に行われる処理を含み、
前記計算時間推定部が推定した計算時間は、前記マルチスレッド処理における前記複数のスレッドの一部について前記計算単位ごとに連続的に行われる処理が行われることで、前記所望計算時間入力部に入力された所望の計算時間を満足する
エージェント行動計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチエージェント・シミュレーションによって複数のエージェントの行動に関する計算を行うための技術に関する。
【背景技術】
【0002】
行為や行動の主体(以下、「エージェント」とも称する)としての人や生物は、周囲の状況を認識し、所在する空間や他のエージェントと相互に影響を及ぼしあいながら、感情等に基づいて自律的に一定のルールで行動する、という特徴を有することが一般的である。そこで、人や生物がエージェントとして有するこうした特徴に着目し、複数の人や生物を各々が相互に作用しあう多数の計算対象として仮想空間上にプロットして、その行動について仮想実験を行い、当該行動に関する各種の評価値を離散的に求めることができる計数手法として、マルチエージェント・シミュレーション(Multi-Agent Simulation; MAS)とよばれる手法がある。
【0003】
マルチエージェント・シミュレーションは、複数のエージェントの行動に関する計算を同時進行的に精度よく実行できることや、シミュレーション条件を後付けで柔軟に追加しやすいこと、現実世界で取得された実際のデータとの融合が可能であること等といったさまざまな利点を有しており、今日では、社会のさまざまな場面で活用が進みつつある(例えば特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
前述したように、マルチエージェント・シミュレーションは、複数のエージェントの行動に関する計算を同時進行的に精度よく実行できるという利点を有する。
【0006】
しかしながら、大規模なシミュレーションを専らマルチエージェント・シミュレーションによって行った場合、計算量が膨大になるため、計算が完了するまでに甚だ多くの時間を要することが少なくなかった。
【0007】
本発明は、上記の課題に鑑みてなされたものであり、マルチエージェント・シミュレーションによる恩恵をできる限り享受しつつ、計算時間を短縮することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明によるエージェント行動計算システムは、複数のエージェントの行動について仮想空間上でシミュレーションを行い、当該複数のエージェントの行動に関する計算を行うシステムであって、ユーザーから所望の計算時間の入力操作を受け付ける所望計算時間入力部と、現在のシミュレーション条件に基づく計算時間を推定する計算時間推定部とを備え、複数のエージェントの行動に関する計算は、当該複数のエージェントに対応した複数のスレッドにより並列処理を行うマルチスレッド処理によって行われ、当該マルチスレッド処理は、複数のスレッドについて計算単位ごとに連続的に行われる処理を含み、計算時間推定部が推定した計算時間は、当該マルチスレッド処理における複数のスレッドの一部について計算単位ごとに連続的に行われる処理が行われることで、所望計算時間入力部に入力された所望の計算時間を満足する。
【0009】
その他、本願が開示する課題、およびその解決方法は、発明を実施するための形態の欄、および図面により明らかにされる。
【発明の効果】
【0010】
本発明によれば、マルチエージェント・シミュレーションによる恩恵をできる限り享受しつつ、計算時間を短縮することができる。
【図面の簡単な説明】
【0011】
【
図1】実施形態に係るエージェント行動計算システムを含むシステム全体の構成の一例を示す図である。
【
図2】エージェント行動計算システムのハードウェア構成の一例を示す図である。
【
図3】エージェント行動計算システムの機能ブロックの一例を示す図である。
【
図4】行動戦略パラメータ情報DBの構成の一例を示す図である。
【
図5】エージェントの行動目的の違いに応じて接触に伴う処理の内容が変化することを模式的に示す図である。
【
図6】エージェント属性情報DBの構成の一例を示す図である。
【
図7】マクロモデル行動エージェントの目的地情報DBの構成の一例を示す図である。
【
図8】利得からアウトカムへの変換情報の構成の一例を示す図である。
【
図9】アウトカムごとの優先順情報DBの構成の一例を示す図である。
【
図10】全エージェントの移動経路についてマルチスレッド計算を行う場合の、エージェント行動計算処理の流れの一例を示すフローチャートである。
【
図11】エージェントの移動経路についてマルチスレッド計算とマクロモデルを用いた計算とのハイブリッド方式で計算する場合の、エージェント行動計算処理の流れの一例を示すフローチャートである。
【
図12】マクロモデル行動エージェントとの接触を考慮した接触判定の要領を模式的に示す図である。
【
図13】エージェント分類処理の流れの一例を示すフローチャートである。
【
図14】接触に伴う処理の流れの一例を示すフローチャートである。
【
図15】利得獲得処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザーインターフェースデバイス、例えば、キーボードおよびポインティングデバイスのような入力インターフェースデバイスと、表示デバイスのような出力インターフェースデバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0013】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0014】
また、以下の説明では、「補助記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、または、SCM(Storage Class Memory)でよい。
【0015】
また、以下の説明では、「記憶装置」は、メモリと補助記憶装置の少なくともメモリでよい。
【0016】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部または全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)またはASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0017】
また、以下の説明では、「xxx部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路(例えばFPGAまたはASIC)によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置および/またはインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0018】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。また、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【0019】
また、以下の説明では、「yyyテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のテーブルでもよいし、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「yyyテーブル」を「yyy情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部または一部が一つのテーブルであってもよい。
【0020】
また、以下の説明では、「エージェント行動計算システム」は、物理的な計算リソース群(例えば、クラウド基盤)上に実現されたシステム(例えば、クラウドコンピューティングシステム)でもよいし、一つ以上の物理的な計算機で構成されたシステム(例えば、オンプレミス型のシステム)でもよい。エージェント行動計算システムが表示用情報を「表示する」ことは、計算機が有する表示デバイスに表示用情報を表示することであってもよいし、計算機が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。
【0021】
以下、図面を参照しつつ、本実施形態を詳細に説明する。
【0022】
なお、以下の説明においては、同一の、または類似する構成に共通の符号を付すことにより、重複した説明を省略することがある。
【0023】
また、同一あるいは同様の機能を有する要素が複数存在する場合に、当該複数の要素を区別するために、同一の符号に異なる添字を付して説明することがある。他方、当該複数の要素を区別する必要がない場合には、添字を省略して説明することがある。
【0024】
<エージェント行動計算システム100の構成例>
まず、本実施形態に係るエージェント行動計算システム100の構成例について、
図1~3を参照しつつ説明する。
【0025】
(システム全体の構成例)
図1は、エージェント行動計算システム100を含むシステム全体の構成の一例を示した図である。
【0026】
本実施形態に係るエージェント行動計算システム100は、マルチエージェント・シミュレーション等の公知のシミュレーション手法を用いて、複数のエージェントの行動を仮想空間上でシミュレーションし、当該シミュレーションによって当該複数のエージェントの行動を同時進行的に計算することが可能なコンピュータシステムであり、後述の各構成を備えるコンピュータ装置またはサーバ装置によって実現される。
【0027】
なお、以下の本実施形態の説明は、「エージェント」が人であるものとして行うが、「エージェント」は、人以外の各種生物であってもよいし、また、例えばロボットのような無生物を含んでいてもよい。すなわち、エージェント行動計算システム100が行う各種計算の対象である「エージェント」は、周囲の状況を認識し、所在する空間や他のエージェントと互いに影響を及ぼしあいながら、感情に基づいて自律的に行動し、各種行為を行うことができればよい。
【0028】
図1に例示したように、エージェント行動計算システム100は、エージェント行動計算システム100の管理者306が利用するデスクトップPCやラップトップPC、タブレット、スマートフォン等の管理者利用端末305a、305b、305c・・・305n(以下、まとめて言うときや特に区別しないときには「管理者利用端末305」と総称する)と、インターネットや専用線等の適宜なネットワーク304を介して相互にデータ通信可能に接続されている。なお、エージェント行動計算システム100とネットワーク304とは、周知の通信用機器(不図示)を介して有線で接続されるが、無線で接続されてもよい。また、各管理者利用端末305とネットワーク304とはそれぞれ無線で接続されるが、有線で接続されてもよい。
【0029】
また、エージェント行動計算システム100は、エージェントの行動について仮想空間上でシミュレーションを行ったり、当該シミュレーションに基づいてエージェントの行動に関する各種計算を行ったりする際に、現実世界において取得された当該エージェントの行動や属性、特徴等に関する各種データ(以下、「実データ」とも称する)を使用することができる。
【0030】
また、エージェント行動計算システム100が生成した、仮想空間上でのシミュレーションの結果を表すデータや、エージェントの行動に関する各種計算の結果を表すデータ等は、現実世界において当該エージェントに関する各種データ処理を行う際に、例えば実データを補うものとして利用したり、反映させたりすることができる。
【0031】
そのため、エージェント行動計算システム100は、人流に関する実データを格納する目的で自社が保有するデータベースである自社人流データDB302を備えるサーバ装置(不図示)と、ネットワーク304を介して相互にデータ通信可能に接続されている。エージェント行動計算システム100は、ネットワーク304を介して当該サーバ装置内の自社人流データDB302から実データを取得したり、自己が生成した各種データを自社人流データDB302に格納させるために当該サーバ装置に送信したりすることができる。
【0032】
なお、実データは、各種センサ装置によって取得される。各種センサ装置は、それぞれ複数台が設けられることでセンサ群300を構成している。そして、このセンサ群300を構成しているセンサ装置の各々は、それぞれエッジサーバ301とデータ通信可能に接続されている。エッジサーバ301は、センサ群300を構成しているセンサ装置の各々から取得した実データに対して適宜にデータ処理を施したのち、自社人流データDB302を備えるサーバ装置に当該実データを送信する。そのため、エッジサーバ301と当該サーバ装置は、それぞれ周知の通信用機器(不図示)を介して有線で相互にデータ通信可能に接続されている。
【0033】
また、エージェント行動計算システム100は、他社が保有するデータベースである他社人流データDB303を備えるサーバ装置(不図示)とも、ネットワーク304を介して相互にデータ通信可能に接続されている。エージェント行動計算システム100は、ネットワーク304を介して当該サーバ装置内の他社人流データDB303からも実データを取得することができる。
【0034】
なお、自社人流データDB302や他社人流データDB303を備えるこれらのサーバ装置とネットワーク304とは、周知の通信用機器(不図示)を介して有線で接続されるが、無線で接続されてもよい。
【0035】
また、このエージェント行動計算システム100に対して、さらに他のコンピュータ装置やサーバ装置等(以下、「他の装置」とも称する)が、ネットワーク304を介して相互にデータ通信可能に接続されていてもよい。この場合、他の装置とネットワーク304とは、周知の通信用機器(不図示)を介して有線で接続されてもよいし、無線で接続されてもよい。
【0036】
なお、本実施形態では、エージェント行動計算システム100が一つの装置からなるものとして説明した。しかしながら、例えば、エージェント行動計算システム100は、複数の装置から構成されていてもよい。
【0037】
また、本実施形態では、エージェント行動計算システム100と、エッジサーバ301や、自社人流データDB302を備えるサーバ装置、管理者利用端末305、他の装置等といったエージェント行動計算システム100以外の各種装置とが、別々の装置からなるものとして説明した。しかしながら、エージェント行動計算システム100と、これらの各種装置とは、同一の装置によって構成されていてもよい。この場合、エージェント行動計算システムは、例えば、これらの各種装置を含むコンピュータシステムとして構成されていてもよい。また、例えば、エージェント行動計算システムは、これらの各種装置が担う一部または全部の機能を含む形で構成されていてもよい。
【0038】
(エージェント行動計算システム100のハードウェア構成例)
図2は、エージェント行動計算システム100のハードウェア構成の一例を示した図である。
【0039】
本実施形態に係るエージェント行動計算システム100は、
図2に例示したように、一台の汎用コンピュータ装置によって実現される。以下の説明は、エージェント行動計算システム100が、一つ以上のプロセッサ1、一つ以上のメモリ2、一つ以上の補助記憶装置3、一つ以上の通信インターフェースデバイス(以下、「通信I/F」とも称する)4、一つ以上の入力インターフェースデバイス(以下、「入力I/F」とも称する)5、一つ以上の出力インターフェースデバイス(以下、「出力I/F」とも称する)6、およびそれらを連結する有線または無線の通信線を備える一台の汎用コンピュータ装置により実現されているものとして行う。
【0040】
すなわち、エージェント行動計算システム100は、メモリ2および補助記憶装置3を含む記憶装置と、通信I/F4、入力I/F5、および出力I/F6を含むインターフェース装置と、それらに接続されたプロセッサ1とを有する。
【0041】
補助記憶装置3は、フラッシュメモリ(Flash Memory)のような不揮発性記憶素子からなる補助記憶デバイスである。補助記憶装置3の具体例としては、SSD(Solid State Drive)やHDD(Hard Disk Drive)等が挙げられる。補助記憶装置3は、少なくともエージェント行動計算プログラムを格納する。エージェント行動計算プログラムは、エージェント行動計算システム100として必要な機能を実装するためのコンピュータプログラムである。
【0042】
すなわち、エージェント行動計算プログラムがプロセッサ1により実行されることで、エージェントの行動に係る計算処理であるエージェント行動計算処理(
図10~11に関連して詳細後述)や、エージェント行動計算処理のなかで行われる各種処理(
図13~15に関連して詳細後述)が行われる。
【0043】
なお、エージェント行動計算プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えばプログラム配布計算機や計算機が読み取り可能な記録媒体等であってもよい。また、エージェント行動計算プログラムは、デバイスドライバ、オペレーティングシステム、それらの上位層に位置する各種アプリケーションプログラム、また、これらのプログラムに共通機能を提供するライブラリによって構成されてもよい。さらに、二つ以上のプログラムが一つのエージェント行動計算プログラムとして実現されてもよいし、一つのエージェント行動計算プログラムが二つ以上のプログラムとして実現されてもよい。
【0044】
メモリ2は、主にRAM(Random Access Memory)のような揮発性記憶素子からなる主記憶デバイスである。メモリ2には、補助記憶装置3から読み込んだ各種情報を表すデータや、通信I/F4を介して取得した各種データ、入力I/F5を介して受け付けた管理者306の入力操作の内容を表す各種データが一時的に保持される。
【0045】
プロセッサ1は、CPU(Central Processing Unit)および各種コプロセッサ(Co-processor)等のプロセッサデバイスである。このプロセッサ1は、KPI評価プログラムをメモリ2に呼び出して実行することにより、エージェント行動計算システム100自体の統括制御を行うとともに、演算処理や判定処理等の各種処理を行う演算部10を司る。
【0046】
通信I/F4は、NIC(Network Interface Card)やHBA(Host Bus Adapter)等の通信インターフェースデバイスである。この通信I/F4は、ネットワーク304を介して行われる、自社人流データDB302や他社人流データDB303を備えるサーバ装置や、管理者利用端末305等の他の機器との通信処理を担当する通信部(不図示)を司る。
【0047】
入力I/F5は、キーボード7やマウス8、タッチパネル等の入力インターフェースデバイスである。この入力I/F5は、入出力表示部30が担うユーザーインターフェースに関する処理のうち、管理者306からの入力操作の受け付け等、入力に関する処理を担当する。
【0048】
出力I/F6は、タッチスクリーンや液晶ディスプレイ等の表示装置9からなる出力インターフェースデバイスである。この出力I/F6は、入出力表示部30が担うユーザーインターフェースに関する処理のうち、処理結果等を表す各種画面の表示装置9への表示や音声出力等、出力に関する処理を担当する。
【0049】
(エージェント行動計算システム100の機能ブロック例)
図3は、エージェント行動計算システム100が備える各種機能のブロックの一例を示した図である。なお、以下に説明する各ブロックは、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
【0050】
エージェント行動計算システム100は、演算部10、記憶部20、通信部(不図示)および入出力表示部30の各機能ブロックを備えて構成される。
【0051】
演算部10は、記憶部20が格納しているプログラムやデータ、および、通信部により取得されたデータに基づいて各種データ処理を実行する。演算部10は、記憶部20および通信部のインターフェースとしても機能する。
【0052】
演算部10は、行動戦略に基づくエージェント分類部11、MAS経路計算部12、接触判定部13、接触に伴うイベント処理部14、計算時間推定部15、アウトカム計算部16およびMAS優先エージェント決定処理部17の各機能ブロックを少なくとも有する。
【0053】
行動戦略に基づくエージェント分類部11は、各エージェントを、当該エージェントの行動戦略に基づいて分類する処理を実行する(
図10、11、13に関連して詳細後述)。
【0054】
MAS経路計算部12は、マルチエージェント・シミュレーション(Multi-Agent Simulation; MAS)における経路を計算する処理を実行する。
【0055】
接触判定部13は、各エージェントについて、他のエージェントとの接触を判定する処理を実行する。
【0056】
接触に伴うイベント処理部14は、エージェントが他のエージェントと接触することで生じる各種イベントに関する処理(以下、「接触に伴う処理」とも称する)を実行する(
図5、10、11、14に関連して詳細後述)。
【0057】
計算時間推定部15は、MAS行動エージェント1人当たりの1日の平均計算時間を推定する処理を実行する(
図13に関連して詳細後述)。また、計算時間推定部15は、当該処理の結果に基づいて、シミュレーション全体の所要計算時間を推定する処理を実行する。この処理によって推定されたシミュレーション全体の所要計算時間を、推定計算時間と称する。
【0058】
アウトカム計算部16は、エージェントの利得から当該シミュレーションにおけるアウトカムを計算する処理を実行する。
【0059】
MAS優先エージェント決定処理部17は、優先的にマルチエージェント・シミュレーション(Multi-Agent Simulation; MAS)の対象とするエージェントを決定する処理を実行する(
図11、13に関連して詳細後述)。
【0060】
演算部10は、CPUをはじめとするプロセッサ1を用いて構成され、所定のプログラムを実行することによって、こうした機能ブロックを実現することができる。なお、プロセッサ1の代わりに、例えばFPGA(Field Programmable Gate Array)等の論理回路を用いて演算部10を構成してもよい。また、プロセッサ1と論理回路との組合せによって演算部10を構成してもよい。
【0061】
記憶部20は、少なくともメモリ2を含む記憶装置を用いて構成されており、演算部10に各種処理命令を供給するプログラム、および演算部10が実行する処理において用いられる各種情報を表すデータを格納する。
【0062】
記憶部20は、行動戦略パラメータ情報DB21、エージェント属性情報DB22、マクロモデル行動エージェントの目的地情報DB23、利得からアウトカムへの変換情報24およびアウトカムごとの優先順情報DB25を少なくとも格納する。
【0063】
行動戦略パラメータ情報DB21は、エージェントの行動戦略に関するパラメータ情報をテーブル形式で管理するためのデータベースである。この行動戦略パラメータ情報DB21の構成の一例を、
図4に示す。行動戦略パラメータ情報DB21は、
図4に例示したように、エージェントにとっての行動戦略のインデックスを表すi
stごとにレコードを有する。レコードは、例えばi
stと、1日当たりの当該目的地に向かう確率を表す移動頻度(単位:なし)と、前述した接触に伴う処理の内容がエージェントの行動目的の違いに応じて変化することを模式的に示した
図5においてC1やC2と記載していた目的地移動に伴う利得減少量を表す当該移動に伴うコスト(単位:なし)と、戦略ごとの当該目的地での滞在時間を表す目的地滞在時間(単位:秒)と、マップシステム上での当該目的地の位置座標を表す目的地座標(単位:緯度および経度)とを表す。すなわち、行動戦略パラメータ情報DB21は、レコードごとに、i
stと、当該i
stが表す行動戦略における移動頻度、移動に伴うコスト、目的地滞在時間および目的地座標とを紐付けて記録することにより、行動戦略のパラメータをi
stごとに管理するものである。
図4に示した例によれば、行動戦略パラメータ情報DB21には、i
stが「0」番目の行動戦略は、移動頻度(P
mv1)が0.0025であり、移動頻度(P
mv2)が0.0010であり、移動頻度(P
mv3)が0.0000であり、移動に伴うコスト(C1)が0.2500であり、移動に伴うコスト(C2)が0.3333であり、目的地滞在時間が3600秒であり、目的地座標が緯度:35.0031、経度:136.2003であることが記録されている。
【0064】
なお、
図5に例示したエージェント同士が接触した場合に、一方のエージェントが他方のエージェントから影響を受けて、当該他方のエージェントの行動戦略を模倣する確率は、下記の(式1)によって表すことができる。
【0065】
【0066】
上記の(式1)は、当該シミュレーションにおいてエージェントiiがエージェントjjの戦略を模倣する確率pii←jjを表す。
【0067】
エージェント属性情報DB22は、各エージェントの属性情報をテーブル形式で管理するためのデータベースである。このエージェント属性情報DB22の構成の一例を、
図6に示す。エージェント属性情報DB22は、
図6に例示したように、各エージェントを一意に識別するためのエージェントIDごとにレコードを有する。レコードは、例えばエージェントIDと、当該エージェントの性別と、当該エージェントの世代と、当該エージェントの職場IDと、当該職場の位置座標を表す職場座標(単位:緯度および経度)と、当該エージェントの自宅IDと、当該自宅の位置座標を表す自宅座標(単位:緯度および経度)と、当該エージェントの優先順位付決定指数PR
llと、当該エージェントの行動戦略と、当該エージェントの行動戦略ごとの利得Gとを表す。なお、
図6に示した例において、性別欄に表示された値が「0」である場合は当該エージェントが男性であることを表し、性別欄に表示された値が「1」である場合は当該エージェントが女性であることを表す。また、
図6に示した例において、世代欄に表示された値が「0」である場合は当該エージェントの年齢が20~39歳であることを表し、世代欄に表示された値が「1」である場合は当該エージェントの年齢が40~64歳であることを表し、世代欄に表示された値が「2」である場合は当該エージェントの年齢が65~74歳であることを表し、世代欄に表示された値が「3」である場合は当該エージェントの年齢が75歳以上であることを表す。また、
図6に示した例において、戦略欄に表示された値が「0」である場合は当該エージェントの行動戦略がAであることを表し、戦略欄に表示された値が「1」である場合は当該エージェントの戦略がBであることを表し、戦略欄に表示された値が「2」である場合は当該エージェントの戦略がCであることを表す。また、利得Gは、対応する戦略の行動目的の実行を通じて醸成される、人々や組織の間の信頼、ネットワーク、協力関係といったエージェントの内面の無体財産の成熟度を表す。すなわち、エージェント属性情報DB22は、レコードごとに、エージェントIDと、当該エージェントIDが表すエージェントの性別、世代、職場ID、職場座標、自宅ID、自宅座標、戦略および利得Gとを紐付けて記録することにより、エージェントの属性情報をエージェントIDごとに管理するものである。
図6に示した例によれば、エージェント属性情報DB22には、エージェントIDが「0」であるエージェントは、性別が男性であり、年齢が65~74歳の世代であり、職場IDが「0」であり、職場座標が緯度:35.1049、経度:136.5424であり、自宅IDが「0」であり、自宅座標が緯度:35.1046、経度:136.5534であり、優先順位決定指数が2.4であり、戦略1が行動戦略Aであり、戦略2が行動戦略Bであり、戦略n
stが行動戦略Cであり、戦略1の場合の利得G1が2.6であり、戦略2の場合の利得G2が1.6であり、戦略n
stの場合の利得Gn
stが0.0であることが記録されている。
【0068】
マクロモデル行動エージェントの目的地情報DB23は、マクロモデルによるシミュレーションの対象となるエージェントの目的地情報をテーブル形式で管理するためのデータベースである。このマクロモデル行動エージェントの目的地情報DB23の構成の一例を、
図7に示す。マクロモデル行動エージェントの目的地情報DB23は、
図7に例示したように、エージェントIDごとにレコードを有する。レコードは、例えばエージェントIDと、i日目においてマクロモデル行動対象か否かを表すフラグと、各行動戦略を一意に識別するための戦略番号と、目的地への到着時間と、目的地の出発時間とを表す。なお、i日目において当該エージェントがマクロモデル行動対象である場合には、そのことを表すフラグとして「1」が記録され、i日目において当該エージェントがマクロモデル行動対象でない場合には、そのことを表す「0」が記録される。また、各目的地は、
図5に例示した行動戦略パラメータ情報DB21によって、対応関係を有する戦略番号とそれぞれ紐付けられている。すなわち、マクロモデル行動エージェントの目的地情報DB23は、レコードごとに、エージェントIDと、当該エージェントがi日目においてマクロモデル行動対象か否かを表すフラグと、当該エージェントの行動戦略を表す戦略番号と、当該戦略番号から特定される当該エージェントの目的地への到着時間と、当該目的地の出発時間とを紐付けて記録することにより、マクロモデル行動エージェントの目的地情報をエージェントIDごとに管理するものである。
図7に示した例によれば、マクロモデル行動エージェントの目的地情報DB23には、エージェントIDが「0」であるエージェントは、i日目においてマクロモデル行動対象でなく、当該行動戦略の戦略番号は3であり、当該目的地には14:00に到着して、当該目的地を15:00に出発することが記録されている。
【0069】
利得からアウトカムへの変換情報24は、利得GをアウトカムOutへと変換する際に用いる下記の(式2)の係数aである。
【0070】
【0071】
なお、上記の(式2)は、当該シミュレーションにおけるkk番目のエージェントの利得Gのアウトカム変換式の一例である。
【0072】
この利得からアウトカムへの変換情報24の一例を、
図8に示す。利得からアウトカムへの変換情報24は、
図8に例示したように、テーブル形式で管理されており、エージェントIDごとにレコードを有する。レコードは、例えばエージェントIDと、当該エージェントの行動目的0の重みa
0、行動目的1の重みa
1、行動目的2の重みa
2・・・行動目的n
stの重みan
stとを表す。なお、
図8に示した例においては、行動目的0の重みa
0は利得1の変換変数であり、行動目的1の重みa
1は、利得2の変換変数であり、行動目的2の重みa
2は利得3の変換変数である。すなわち、利得からアウトカムへの変換情報24は、レコードごとに、エージェントIDと、(式2)において各行動目的に重み付けを行う係数とを紐付けて記録することにより、(式2)の係数をエージェントIDごとに管理するものである。
図8に示した例によれば、利得からアウトカムへの変換情報24には、エージェントIDが「0」であるエージェントは、行動目的0の重みa
0が0.5であり、行動目的1の重みa
1が0、0であり、行動目的2の重みa
2が0.6であり、行動目的n
stの重みan
stが0.8であることが記録されている。
【0073】
アウトカムごとの優先順情報DB25は、アウトカムごとの優先順情報をテーブル形式で管理するためのデータベースである。このアウトカムごとの優先順情報DB25の構成の一例を、
図9に示す。アウトカムごとの優先順情報DB25は、
図9に例示したように、エージェントIDごとにレコードを有する。レコードは、例えばエージェントIDと、下記の(式3)の係数Coutとを表す。すなわち、アウトカムごとの優先順情報DB25は、レコードごとに、エージェントIDと、(式3)の係数Coutとを紐付けて記録することにより、アウトカムごとの優先順情報をエージェントIDごとに管理するものである。
図9に示した例によれば、アウトカムごとの優先順情報DB25には、エージェントIDが「0」であるエージェントについて、(式3)の係数Coutが0.4であることが記録されている。
【0074】
なお、係数Coutについて上述した下記の(式3)は、当該シミュレーションにおいてll番目のエージェントがMAS行動エージェントに選定される優先順位を決定する優先順位付決定指数PRllを表すものである。
【0075】
【0076】
通信部は、ネットワーク304を介して行われる、自社人流データDB302や他社人流データDB303を備えるサーバ装置や、管理者利用端末305等の他の機器との通信処理を担当する。通信部は、例えばNIC(Network Interface Card)やHBA(Host Bus Adapter)等を用いて構成される。
【0077】
入出力表示部30は、I/O(Input/Output)インターフェース、すなわちユーザーインターフェースに関する各種処理を担当する。入出力表示部30は、データ入力部31、データ出力部32、所望計算時間入力部33、シミュレーション条件入力部34、推定計算時間表示部35および実データ入力部36の各機能ブロックを少なくとも有する。
【0078】
このうち、データ入力部31、所望計算時間入力部33、シミュレーション条件入力部34、実データ入力部36は、例えばキーボード7やマウス8、タッチパネル等を用いて構成され、ユーザーインターフェースに関する処理のうち、管理者306からの入力操作の受け付け等、入力に関する処理を担当する。
【0079】
また、データ出力部32および推定計算時間表示部35は、例えばタッチスクリーンや液晶ディスプレイ等の表示装置9を用いて構成され、ユーザーインターフェースに関する処理のうち、処理結果等を表す各種画面の表示装置9への表示や音声出力等、出力に関する処理を担当する。
【0080】
データ入力部31は、管理者306から各種データの入力操作を受け付ける処理を実行する。
【0081】
データ出力部32は、データの出力に関する各種処理を実行する。
【0082】
所望計算時間入力部33は、管理者306から所望計算時間の入力操作を受け付ける処理を実行する。
【0083】
シミュレーション条件入力部34は、管理者306からシミュレーション条件の入力操作を受け付ける処理を実行する。
【0084】
推定計算時間表示部35は、推定計算時間を画面上に表示させる処理を実行する。
【0085】
実データ入力部36は、管理者306から実データの入力操作を受け付ける処理を実行する。
【0086】
なお、上述した各機能の説明は一例であり、複数の機能が1つの機能にまとめられたり、1つの機能が複数の機能に分割されたりしてもよい。
【0087】
また、本実施例では、エージェント行動計算システム100の各機能が1台のコンピュータ装置により一体的に実現されているものとして説明した。しかしながら、これらの各機能は、相互に接続された複数台のコンピュータ装置またはサーバ装置によって実現されてもよい。また、エージェント行動計算システム100は、ラップトップPC等の汎用コンピュータ装置と、これにインストールされたウェブブラウザとを含む構成であってもよいし、ウェブサーバや各種携帯機器を含む構成であってもよい。
【0088】
また、エージェント行動計算システム100が、上述した各種機能に加えて、さらに別の機能を備えていてもよい。例えば、エージェント行動計算システム100は、エッジサーバ301や自社人流データDB302、他社人流データDB303、管理者利用端末305等が備える機能の一部を含む形で構成されていてもよい。
【0089】
<処理フロー例>
次に、本実施形態に係るエージェント行動計算システム100が実行する各種処理の流れを説明する。
【0090】
(エージェント行動計算処理)
まず、エージェント行動計算システム100が実行する最も主要な処理である、エージェント行動計算処理の流れの例について、
図10~11を参照しつつ説明する。
【0091】
なお、本実施形態に係るエージェント行動計算システム100は、エージェント行動計算処理を実行する際、全エージェントの移動経路についてマルチスレッド計算を行うこともできるし、エージェントの移動経路についてマルチスレッド計算とマクロモデルを用いた計算とのハイブリッド方式で計算することもできる。
【0092】
そこで、まず、全てのエージェントの移動経路についてマルチスレッド計算を行う場合の、エージェント行動計算処理を説明する。
【0093】
図10は、全エージェントの移動経路についてマルチスレッド計算を行う場合の、エージェント行動計算処理の流れの一例を示したフローチャートである。
【0094】
ステップS1001において、エージェント行動計算システム100の演算部10は、初期条件に応じてエージェントごとに行動戦略を設定する処理を実行する。これにより、エージェントごとに初期条件に応じた行動戦略が設定される。エージェント行動計算システム100の演算部10は、ステップS1001における処理が完了すると、ステップS1002に進む。
【0095】
ステップS1002において、エージェント行動計算システム100の演算部10は、行動戦略に基づくエージェント分類部11により、当該エージェントのi日目の行動を、MAS行動エージェントまたは非行動エージェントのいずれかに分類する処理を実行する。
図10に例示したエージェント行動計算処理では、全てのエージェントの移動経路についてマルチスレッド計算が行われる。そのため、何らかの行動を行うエージェントは皆、一律に、ステップS1002においてMAS行動エージェントに分類される。他方で、何ら行動しないエージェントは、ステップS1002において非行動エージェントに分類される。これにより、i日目の当該エージェントが、MAS行動エージェントと非行動エージェントとのいずれかに分類される。ステップS1002で当該エージェントがMAS行動エージェントに分類された場合、エージェント行動計算システム100の演算部10は、ステップS1003に進む。他方、ステップS1002で当該エージェントが非行動エージェントに分類された場合、エージェント行動計算システム100の演算部10は、ステップS1005に進む。
【0096】
なお、エージェント行動計算システム100は、当該エージェントがMAS行動エージェントまたは非行動エージェントのいずれかに分類されるかを、ステップS1002の処理によって毎日決定するのではなく、各エージェントの固有の属性情報として、予め決定しておくこともできる。当該分類が各エージェントの固有の属性情報として予め決定されている場合、エージェント行動計算システム100の演算部10は、ステップS1002で実行される当該処理を省略する形でエージェント行動計算処理を実行する。
【0097】
ステップS1002で当該エージェントがMAS行動エージェントに分類され、ステップS1003に進んだエージェント行動計算システム100の演算部10は、ステップS1004に進む。
【0098】
ステップS1004において、エージェント行動計算システム100の演算部10は、当該エージェントの移動コストを、当該エージェントの行動戦略に応じて減算する処理を実行する。この処理は、例えば、
図5に示した要領によって行われる。これにより、当該エージェントの移動コストが、当該エージェントの行動戦略に応じて減算される。エージェント行動計算システム100の演算部10は、ステップS1004における処理が完了すると、ステップS1005に進む。
【0099】
ステップS1002で当該エージェントが非行動エージェントに分類され、ステップS1005に進んだエージェント行動計算システム100の演算部10は、そのままステップS1019に進む。
【0100】
ステップS1006において、エージェント行動計算システム100の演算部10は、MAS経路計算部12により、当該エージェントの経路を計算単位ごとに計算する処理を実行する。これにより、当該エージェントの経路が計算単位ごとに計算される。エージェント行動計算システム100の演算部10は、ステップS1006における処理が完了すると、ステップS1007に進む。
【0101】
ステップS1007において、エージェント行動計算システム100の演算部10は、接触判定部13により、当該エージェントが他のエージェントと接触したか否かを判定する処理(以下、「接触判定処理」とも称する)を実行する。これにより、当該エージェントについて他のエージェントと接触したか否かが判定される。
【0102】
ステップS1008において、エージェント行動計算システム100の演算部10は、ステップS1007における接触判定処理の結果、当該エージェントが他のエージェントと接触したと判定された場合(ステップS1008:Yes)は、接触に伴う処理を実行するためにステップS1009に進む。他方、エージェント行動計算システム100の演算部10は、ステップS1007における接触判定処理の結果、当該エージェントが他のエージェントと接触していないと判定された場合(ステップS1008:No)は、そのままステップS1011に進む。
【0103】
ステップS1009において、エージェント行動計算システム100の演算部10は、接触に伴うイベント処理部14により、当該接触に伴って生じたイベントに関する各種処理(以下、「接触に伴う処理」とも称する)を実行する。この接触に伴う処理の詳細は、
図14に関連して後述する。これにより、当該接触について、この接触に伴う処理が当該エージェントに対して施される。なお、本実施形態のエージェント行動計算システム100は、接触に伴う処理を、当該エージェントに対して他のエージェントが最初に接触したタイミングで実行するが、接触に伴う処理を実行するタイミングは、管理者306が任意に設定することもできる。例えば、接触に伴う処理は、当該エージェントに対して他のエージェントが最後に接触したタイミングや、当該エージェントが目的地を出発したタイミングで実行されてもよい。エージェント行動計算システム100の演算部10は、ステップS1009における処理が完了すると、ステップS1010に進む。
【0104】
ステップS1010において、エージェント行動計算システム100の演算部10は、アウトカム計算部16により、当該エージェントについて利得Gを獲得する処理(以下、「利得獲得処理」とも称する)を実行する。この利得獲得処理の詳細は、
図15に関連して後述する。これにより、当該エージェントについて利得Gが獲得される。エージェント行動計算システム100の演算部10は、ステップS1010における処理が完了すると、ステップS1011に進む。
【0105】
なお、前述したように、
図10に例示したエージェント行動計算処理では、全てのエージェントの移動経路についてマルチスレッド計算が行われる。そのため、
図10に例示したように、ステップS406~S410の各処理は、ステップS1002でMAS行動エージェントに分類された全てのエージェントについて同時進行的に実行される。
【0106】
また、例えば、前述した実データ(例えば、自社人流データDB302や他社人流データDB303から取得した人流に関する実データ)を使用してエージェント行動計算処理を実行する場合には、エージェント行動計算システム100の演算部10は、当該実データに対して、データ単位を計算単位に合わせる処理と、1日に相当する計算単位を併せる処理とを施したのち、経路が全て確定済みのエージェントデータとして、上述した接触に伴う処理や利得獲得処理を実行する。
【0107】
ステップS1011において、エージェント行動計算システム100の演算部10は、1日が終了したか否かを判定する処理を実行する。これにより、1日が終了したか否かが判定される。エージェント行動計算システム100の演算部10は、1日が終了したと判定した場合(ステップS1011:Yes)にはステップS1012に進み、1日が終了していないと判定した場合(ステップS1011:No)は、再びステップS1006に戻り、全ての計算単位について処理が完了するまで、ステップS1006~S1010の各処理を繰り返し実行する。
【0108】
ステップS1012において、エージェント行動計算システム100の演算部10は、「i=i+1」と、当該シミュレーション中の経過日数iに、ステップS1010までの処理が完了した1日分の日数を加算する処理を実行する。これにより、当該シミュレーション中の経過日数iが1日分加算される。エージェント行動計算システム100の演算部10は、ステップS1012における処理が完了すると、ステップS1013に進む。
【0109】
ステップS1013において、エージェント行動計算システム100の演算部10は、当該シミュレーション期間が終了したか否かを判定する処理を実行する。これにより、当該シミュレーション期間が終了したか否かが判定される。エージェント行動計算システム100の演算部10は、当該シミュレーション期間が終了したと判定した場合(ステップS1013:Yes)には、
図10のフローチャートに示したエージェント行動計算処理を終了する。他方、当該シミュレーション期間が未だ終了していないと判定した場合(ステップS1013:No)には、再びステップS1002に戻り、当該シミュレーション期間が終了するまで、ステップS1002~S1012の各処理を繰り返し実行する。その後、ステップS1013で当該シミュレーション期間が終了したと判定した場合(ステップS1013:Yes)には、エージェント行動計算システム100の演算部10は、
図10のフローチャートに示したエージェント行動計算処理を終了する。
【0110】
このように、エージェント行動計算システム100は、全てのエージェントの移動経路についてマルチスレッド計算を行う形でエージェント行動計算処理を実行することができる。すなわち、エージェント行動計算システム100によれば、マルチエージェント・シミュレーションによって全てのエージェントの行動を同時進行的に精度よく計算することができる。
【0111】
以上、全てのエージェントの移動経路についてマルチスレッド計算を行う場合に実行されるエージェント行動計算処理について、
図10を参照しつつ説明した。
【0112】
次に、エージェントの移動経路についてマルチスレッド計算とマクロモデルを用いた計算とのハイブリッド方式で計算する場合に実行されるエージェント行動計算処理の流れを説明する。
【0113】
図11は、エージェントの移動経路についてマルチスレッド計算とマクロモデルを用いた計算とのハイブリッド方式で計算する場合の、エージェント行動計算処理の流れの一例を示したフローチャートである。
【0114】
なお、既に説明した内容と同様の内容については省略する。
【0115】
ステップS1101において、エージェント行動計算システム100の演算部10は、初期条件に応じてエージェントごとに行動戦略を設定する処理を実行する。これにより、エージェントごとに初期条件に応じた行動戦略が設定される。なお、この処理は、
図10のステップS1001で実行される処理と同様である。エージェント行動計算システム100の演算部10は、ステップS1001における処理が完了すると、ステップS1002に進む。
【0116】
ステップS1102において、エージェント行動計算システム100の演算部10は、行動戦略に基づくエージェント分類部11およびMAS優先エージェント決定処理部17により、当該エージェントのi日目の行動を、MAS行動エージェント、マクロモデル行動エージェントまたは非行動エージェントのいずれかに分類する処理(以下、「エージェント分類処理」とも称する)を実行する。このエージェント分類処理の詳細は、
図13に関連して後述する。これにより、i日目の当該エージェントが、MAS行動エージェント、マクロモデル行動エージェントまたは非行動エージェントのいずれかに分類される。ステップS1102で当該エージェントがMAS行動エージェントに分類された場合、エージェント行動計算システム100の演算部10は、ステップS1103に進む。これに対して、ステップS1102で当該エージェントがマクロモデル行動エージェントに分類された場合、エージェント行動計算システム100の演算部10は、ステップS1104に進む。また、ステップS1102で当該エージェントが非行動エージェントに分類された場合、エージェント行動計算システム100の演算部10は、ステップS1105に進む。
【0117】
なお、ステップS1102で当該エージェントがMAS行動エージェントに分類された場合に実行されるステップS1103以降の処理の内容は、
図10のステップS1007で実行される接触判定処理が専らMAS行動エージェント同士の接触を考慮しているのに対して、
図11のステップS1110で実行される接触判定処理はMAS行動エージェント同士の接触に加えてMAS行動エージェントとマクロモデル行動エージェントとの接触も考慮している点を除いて、
図10における対応する処理の内容と同様である。また、ステップS1102で当該エージェントが非行動エージェントに分類された場合に実行されるステップS1105以降の処理の内容は、
図10における対応する処理の内容と同様である。そのため、これらの場合に実行される処理については、ステップS1110で実行される接触判定処理を除き、ここでは説明を省略する。
【0118】
すなわち、当該エージェントがMAS行動エージェントに分類された場合に実行される、
図11のステップS1103以降の各ステップの処理の内容は、
図10のステップS1003以降の各ステップの処理の内容とそれぞれ対応する。また、
図11に例示したようにMAS行動エージェントに分類された全てのエージェントの移動経路についてマルチスレッド計算を行う点も、
図10の場合と同様である。
【0119】
同様に、当該エージェントが非行動エージェントに分類された場合に実行される、
図11のステップS1105以降の各ステップの処理の内容は、
図10のステップS1005以降の各ステップの処理の内容とそれぞれ対応する。
【0120】
そのため、ここではステップS1102で当該エージェントがマクロモデル行動エージェントに分類された場合に実行されるステップS1104以降の処理の内容について説明する。
【0121】
なお、
図10の場合と同様に、エージェント行動計算システム100は、当該エージェントがMAS行動エージェント、マクロモデル行動エージェントまたは非行動エージェントのいずれかに分類されるかを、ステップS1002のエージェント分類処理によって毎日決定するのではなく、各エージェントの固有の属性情報として、予め決定しておくこともできる。この場合、エージェント分類処理は、当該分類を各エージェントの固有の属性情報として予め決定する際にのみ実行され、エージェント行動計算システム100の演算部10は、当該エージェントのi日目の行動について計算する際は、ステップS1102で実行されるエージェント分類処理を省略する形でエージェント行動計算処理を実行する。
【0122】
ステップS1102で当該エージェントがマクロモデル行動エージェントに分類され、ステップS1104に進んだエージェント行動計算システム100の演算部10は、ステップS1107に進む。
【0123】
ステップS1107において、エージェント行動計算システム100の演算部10は、当該エージェントの移動コストを、当該エージェントの行動戦略に応じて減算する処理を実行する。この処理は、例えば、
図5に示した要領によって行われる。これにより、当該エージェントの移動コストが、当該エージェントの行動戦略に応じて減算される。なお、この処理は、
図10のステップS1004で実行される処理および
図11のステップS1106で実行される処理と同様である。エージェント行動計算システム100の演算部10は、ステップS1107における処理が完了すると、ステップS1108に進む。
【0124】
ステップS1108において、エージェント行動計算システム100の演算部10は、当該エージェントの目的地への到着時間および当該目的地からの出発時間を決定する処理を実行する。ここで、マクロモデル行動エージェントに分類された全てのエージェントについて、当該計算処理が行われる。これにより、当該エージェントの目的地への到着時間および当該目的地からの出発時間が決定する。エージェント行動計算システム100の演算部10は、ステップS1108における処理が完了すると、ステップS1115に進む。
【0125】
ステップS1110において、エージェント行動計算システム100の演算部10は、接触判定部13により、当該エージェントが他のエージェントと接触したか否かを判定する接触判定処理を実行する。前述したように、
図11のステップS1110で実行される接触判定処理は、
図10のステップS1007で実行される接触判定処理が専らMAS行動エージェント同士の接触を考慮しているのとは異なり、
図12に例示したように、MAS行動エージェント同士の接触に加えて、MAS行動エージェントとマクロモデル行動エージェントとの接触をも考慮するものである。マクロモデル行動エージェントに分類されたエージェントの場合、1回の計算で目的地、目的地への到着時間および目的地からの出発時間が決定される。他方、MAS行動エージェントに分類されたエージェントの場合、1回の計算ごとに移動経路とともに目的地の到着判定がなされ、到着時の時刻情報に基づいてマクロモデル行動エージェントとの接触判定が実施される。なお、
図12において、MAS行動エージェントとマクロモデル行動エージェントとでそれぞれ長さが異なる下向きの矢印は、各々の計算単位を表している。また、
図12において、水平方向の太線で結ばれたエージェント同士は、接触したと判定されたエージェント同士を表している。また、
図12に例示した内容は、接触対象となるエージェントが1人のみのときの様子を表しているが、接触対象となるエージェントは複数であってもよく、また、接触上限者数が予め設定されていてもよい。これにより、当該エージェントについて他のエージェントと接触したか否かが判定される。
【0126】
このように、エージェント行動計算システム100は、エージェントの移動経路についてマルチスレッド計算とマクロモデルを用いた計算とを併用する形でエージェント行動計算処理を実行することができる。すなわち、エージェント行動計算システム100によれば、マルチエージェント・シミュレーションによってエージェントの行動を同時進行的に精度よく計算しつつ、全てのエージェントの移動経路についてマルチスレッド計算を行う
図10の場合と比較して、計算時間を短縮することができる。
【0127】
以上、エージェントの移動経路についてマルチスレッド計算とマクロモデルを用いた計算とのハイブリッド方式で計算する場合に実行されるエージェント行動計算処理について、
図11を参照しつつ説明した。
【0128】
(エージェント分類処理)
次に、
図11に示したフローチャートのステップS1102において実行される、エージェント分類処理の流れについて説明する。
【0129】
図13は、エージェント分類処理の流れの一例を示したフローチャートである。
【0130】
なお、エージェント分類処理のうち、当該エージェントを、何らかの行動を行うエージェントであるMAS行動エージェントおよびマクロモデル行動エージェントと、何ら行動しないエージェントである非行動エージェントとのいずれかに分類する処理は、行動戦略に基づくエージェント分類部11によって行われる。この処理は、
図10のステップS1002において行動戦略に基づくエージェント分類部11が実行する処理と同様の方法によって行われるため、ここでは説明を省略する。従って、以下の説明は、エージェント分類処理のうち、主として、MAS優先エージェント決定処理部17によって行われる、当該エージェントを、MAS行動エージェントとマクロモデル行動エージェントとのいずれかに分類するための処理について行う。
【0131】
ステップS1301において、エージェント行動計算システム100の演算部10は、MAS優先エージェント決定処理部17により、当該エージェントについてi日目の優先順位付決定指数PRを計算する処理を前記の(式3)に基づいて実行する。ここで、何らかの行動を行うエージェントをMAS行動エージェントに分類するために用いる基準としては、(1)利得Gの値、(2)前記の(式2)における係数a、および(3)前記の(式3)における係数Coutが挙げられる。これにより、当該エージェントについてi日目の優先順位付決定指数PRが計算される。エージェント行動計算システム100の演算部10は、ステップS1301における処理が完了すると、ステップS1302に進む。
【0132】
ステップS1302において、エージェント行動計算システム100の演算部10は、計算時間推定部15により、現在条件でのMAS行動エージェント1人当たりの1日の平均計算時間を推定する処理を実行する。これにより、現在条件でのMAS行動エージェント1人当たりの1日の平均計算時間が推定される。エージェント行動計算システム100の演算部10は、ステップS1302における処理が完了すると、ステップS1303に進む。
【0133】
ステップS1303において、エージェント行動計算システム100の演算部10は、MAS優先エージェント決定処理部17により、ステップS1302で推定されたMAS行動エージェント1人当たりの1日の平均計算時間に基づいて、管理者306から入力操作を受け付けることによって取得した当該管理者306の所望の計算時間を満足するMAS行動エージェント数を推定する処理を実行する。これにより、ステップS1302で推定されたMAS行動エージェント1人当たりの1日の平均計算時間に基づいて、管理者306の所望の計算時間を満足するMAS行動エージェント数が推定される。エージェント行動計算システム100の演算部10は、ステップS1303における処理が完了すると、ステップS1304に進む。
【0134】
ステップS1304において、エージェント行動計算システム100の演算部10は、MAS優先エージェント決定処理部17により、ステップS1301で計算されたi日目の優先順位付決定指数PRが高いエージェントから順に、ステップS1303で推定された管理者306の所望の計算時間1203を満足するMAS行動エージェント数だけMAS行動エージェントに選定する処理を実行する。これにより、マルチエージェント・シミュレーションを優先的に行う対象のエージェントであるMAS行動エージェントが選定される。何らかの行動を行うエージェントのうち、MAS行動エージェントに選定されなかったエージェントは、マクロモデル行動エージェントに分類される。エージェント行動計算システム100の演算部10は、ステップS1304における処理が完了すると、
図13のフローチャートに示したエージェント分類処理を終了する。
【0135】
これにより、i日目の当該エージェントが、MAS行動エージェント、マクロモデル行動エージェントまたは非行動エージェントのいずれかに分類される。その結果、エージェント行動計算システム100は、エージェントの移動経路についてマルチスレッド計算とマクロモデルを用いた計算とを併用する形でエージェント行動計算処理を実行することができるようになる。
【0136】
なお、
図13に示したエージェント分類処理の流れや、各ステップで実行される処理の具体的な内容等は例示であり、MAS行動エージェントとマクロモデル行動エージェントとを分類するために、他の方法や基準等が用いられてもよい。
【0137】
(接触に伴う処理)
次に、
図10に示したフローチャートのステップ1009、および、
図11に示したフローチャートのステップ1112において実行される、接触に伴う処理の流れについて説明する。
【0138】
図14は、接触に伴う処理の流れの一例を示したフローチャートである。
【0139】
ステップS1401において、エージェント行動計算システム100の演算部10は、接触に伴うイベント処理部14により、他のエージェントとの接触がありながら、接触に伴う処理が未処理のエージェント数を計算する処理を実行する。これにより、他のエージェントとの接触がありながら、接触に伴う処理が未処理のエージェント数が計算される。エージェント行動計算システム100の演算部10は、ステップS1401における処理が完了すると、ステップS1402に進む。
【0140】
ステップS1402において、エージェント行動計算システム100の演算部10は、接触に伴うイベント処理部14により、エージェント間の利得Gkkの比較に基づいて、当該エージェントの行動戦略を更新するか否かを判断する処理を実行する。なお、当該判断は、例えば所定のルールに基づくルールベースによって行われてもよいし、前記の(式1)に示した確率に基づいて行われてもよいし、その他の各種の手法によって行われてもよい。また、利得は、複数存在するとともに、行動目的の数と同じ数だけ存在する。さらに、本フローチャートで比較対象となるエージェント間の利得Gkkは、目的地に移動する際のkk番目の行動戦略におけるGkk同士を比較するものである。これにより、エージェント間の利得Gkkの比較に基づいて、当該エージェントの行動戦略を更新するか否かが判断される。エージェント行動計算システム100の演算部10は、ステップS1402における処理が完了すると、ステップS1403に進む。
【0141】
ステップS1403において、エージェント行動計算システム100の演算部10は、接触に伴うイベント処理部14により、ステップS1402までの処理の結果をエージェント属性情報DB22に保存する処理を実行する。これにより、ステップS1402までの処理の結果がエージェント属性情報DB22に保存される。エージェント行動計算システム100の演算部10は、ステップS1403における処理が完了すると、
図14のフローチャートに示した接触に伴う処理を終了する。
【0142】
これにより、当該接触について、接触に伴う処理が当該エージェントに対して施される。
【0143】
(利得獲得処理)
次に、
図10に示したフローチャートのステップ1010、および、
図11に示したフローチャートのステップ1113において実行される、利得獲得処理の流れについて説明する。
【0144】
図15は、利得獲得処理の流れの一例を示したフローチャートである。
【0145】
ステップS1501において、エージェント行動計算システム100の演算部10は、アウトカム計算部16により、当該エージェントが目的地へ移動する理由となった行動戦略に応じて、獲得対象とする利得Gを選択する処理を実行する。これにより、当該エージェントが目的地へ移動する理由となった行動戦略に応じて、獲得対象とする利得Gが選択される。エージェント行動計算システム100の演算部10は、ステップS1501における処理が完了すると、ステップS1502に進む。
【0146】
ステップS1502において、エージェント行動計算システム100の演算部10は、アウトカム計算部16により、確率psで利得Gを獲得する処理を実行する。これにより、確率psで利得Gが獲得される。なお、ステップS1502で獲得される利得Gの値は必ずしも定数である必要はない。すなわち、ステップS1502で獲得される利得Gの値は、例えば変数であってもよい。エージェント行動計算システム100の演算部10は、ステップS1502における処理が完了すると、ステップS1503に進む。
【0147】
ステップS1503において、エージェント行動計算システム100の演算部10は、アウトカム計算部16により、ステップS1502までの処理の結果をエージェント属性情報DB22に保存する処理を実行する。これにより、ステップS1502までの処理の結果がエージェント属性情報DB22に保存される。エージェント行動計算システム100の演算部10は、ステップS1503における処理が完了すると、
図15のフローチャートに示した利得獲得処理を終了する。
【0148】
これにより、当該エージェントについて利得Gが獲得される。
【0149】
<表示画面例>
次に、エージェント行動計算システム100が管理者306に対して表示する表示画面1600について、
図16を参照しつつ説明する。
【0150】
図16は、表示画面1600の一例を示した図である。
【0151】
エージェント行動計算システム100の管理者306は、例えばエージェントの目的地に関する条件34や、所望の計算時間1603等といったエージェント行動計算システム100に実行させるシミュレーションの各種条件1602のうち入力可能なものを、
図16に例示した表示画面1600に対する入力操作によって入力することができる。エージェント行動計算システム100は、管理者306から入力操作を受け付けた条件に従って、エージェント行動計算処理をはじめとする各種処理を実行する。
【0152】
また、エージェント行動計算システム100は、例えば推定計算時間1604のような各種の計算結果を含む、エージェント行動計算処理をはじめとする各種処理の結果を、
図16に例示した表示画面1600に表示させる。
【0153】
以上説明した本発明の実施形態は、以下のように総括される。
【0154】
(1)エージェント行動計算システム100は、複数のエージェントの行動について仮想空間上でシミュレーションを行い、当該複数のエージェントの行動に関する計算を行うシステムであって、ユーザーから所望の計算時間の入力操作を受け付ける所望計算時間入力部33と、現在のシミュレーション条件に基づく計算時間を推定する計算時間推定部15とを備え、複数のエージェントの行動に関する計算は、当該複数のエージェントに対応した複数のスレッドにより並列処理を行うマルチスレッド処理によって行われ、当該マルチスレッド処理は、複数のスレッドについて計算単位ごとに連続的に行われる処理を含み、計算時間推定部15が推定した計算時間は、当該マルチスレッド処理における複数のスレッドの一部について計算単位ごとに連続的に行われる処理が行われることで、所望計算時間入力部33に入力された所望の計算時間を満足する。このようにしたので、エージェント行動計算システム100によれば、マルチエージェント・シミュレーションによる恩恵をできる限り享受しつつ、計算時間を短縮することができる。
【0155】
(2)マルチスレッド処理は、複数のスレッドについて計算単位とは異なる計算単位ごとの連続的でない処理によって行われるマクロモデル処理を含み、計算時間推定部15が推定した計算時間は、マルチスレッド処理における複数のスレッドの一部についてマクロモデル処理が行われることで、所望計算時間入力部33に入力された所望の計算時間を満足する。
【0156】
(3)計算時間推定部15は、マルチスレッド処理を優先的に実施する対象となるエージェントを、エージェントの行動原理ごとに設定した係数と、エージェントの行動の判断基準となる利得とを乗算した項を含んだ線形式で表される数値に従って判断し、利得は、エージェントがとりうる行動の種類の数だけ存在する。
【0157】
(4)シミュレーションの条件を追加するシミュレーション条件入力部34をさらに備え、シミュレーション条件入力部34により追加された条件で実行する処理は、マルチスレッド処理によって行われる。
【0158】
(5)現実世界で取得されたデータである実データを入力可能な実データ入力部36をさらに備え、マルチスレッド処理において、計算単位ごとに連続的に行われる処理により、実データ入力部36を介して取得した実データとの相互作用を計算する。
【0159】
(6)シミュレーションの対象であるエージェントごとの行動戦略と、行動戦略の判断基準となる利得とに基づいてマルチスレッド処理を行う。
【0160】
(7)エージェントの利得からシミュレーションにおけるアウトカムを計算するアウトカム計算部16をさらに備え、利得をもとに実施した施策のアウトカムを定量的に評価する。
【0161】
(8)計算時間推定部15は、マルチスレッド処理による過去の計算時間を基に、現在のシミュレーション条件に基づく計算時間を推定する。
【0162】
(9)計算時間推定部15は、現在のシミュレーション条件に基づいてマルチスレッド処理を事前に所定時間実行することで、当該シミュレーション条件に基づく計算時間を推定する。
【0163】
なお、本発明は上記の各実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、任意の構成要素を用いて実施可能である。
【0164】
上記の実施形態や実施例、変形例はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されるものではない。また、上記では種々の実施形態や実施例、変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【0165】
上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。例えば、実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【0166】
また、以上に説明したエージェント行動計算システム100の各機能部の配置形態は一例に過ぎない。各機能部の配置形態は、エージェント行動計算システム100が備えるハードウェアやソフトウェアの性能、処理効率、通信効率等の観点から最適な配置形態に変更し得る。
【符号の説明】
【0167】
100:エージェント行動計算システム