複数の脳内小人(コロポックル)で構成された人混みシミュレーション (Step1)  〜JAVA プログラム

 >>次頁へ             (Up)


<原理:Step1>

   
 今回のシミュレーションのテーマは、 「特定の場所に居合わせた複数の人間が、各々の目的地に向かって移動する様子をシミュレーションによって再現してみる」  というものです。

 
 ★別な所で、交通渋滞のモデルとして 『複数の脳内小人(コロポックル)で構成された運転手を用いた交通渋滞シミュレーション』 を製作してみました。
 そのモデルは、各運転手の脳内に 「コロポックル」 と言うエージェント(ネスト構造も可)が存在 しており、それらが各々専門の運転判断を行い、最終的に運転手がそれらを纏めて最適な「加速/減速」を行うというものでした。

*) コロポックル:アイヌ地方の民話に出てくる小人のこと。

 ★また、他の所では、『蟻が行列を作る』様子を、モンテカルロシミュレーションの手法を用いてシミュレーションしてみました。


 ★さらに別の場所では、『魚が群れを成して泳ぐ』様をシミュレーションしてみました。



 今回のシミュレーションは、上記に挙げた3つのシミュレーションを合体させた構造をを持っています。
 

 本来、人間も「社会」という群れをなして暮らしている生物です。 特に原始時代には、部族単位に群れを形成し、移動するときにも一団となって行動していたと想像できます。 そこで、人間の行動の中にも、群れを成す論理が組み込まれている(むしろ群れを維持する論理が先に有った)と考えました。 「魚の群れシミュレーション」では、クレイグ・レイノルズの 鳥の行動シミュレーション:BOID (1987)の論理を使用しましたが、本シミュレーションでも同じ論理を使用しています。
 すなわち、行動の基本には、グループを維持しようという行動パターンを持っており、それらが、「知人・友人」、「家族」、「恋人」等の集団行動を生み出します。 これらの行動パターンとしては、
 
  (1)固体同士の距離が近すぎると、衝突を防ぐために離れようとする。
  (2)一定の距離内では、相手と同じ方向を向こうとする。
  (3)離れすぎると、接近しようとする。

 上記行動を起させる距離は、固体間の心理的距離感によって変わり、恋人同士ならば、(1)〜(3)の距離は非常に近く、家族、友人、知人の順に距離が大きくなり、 他人同士ならば、(2)、(3)の距離が無限大となって、(1)のみが残ります。  残った(1)が、その人の持つボディゾーンという事になります。 このボディゾーン内に他人が入込むと、心理的な圧力となるため、それを避けるように行動を行います。

 本モデルでは、人間が、次の移動方向を判断するために、自分を中心として放射状に10方向のエリアを分割し、各々の方向を選択する可能性を、上記行動基準によって設定しました。 即ち、移動したい方向は大きな引力(正の値)を、移動したくない方向は斥力(負の値)を設定し、モンテカルロ法によって、次に移動する方向を定めました。  「蟻の行列」シミュレーションでは、移動する位置は、8方向に決まっていましたが、本シミュレーションでは、360度連続的に選択可能としてあります。

 また、上記の行動選択確率の計算を いくつかの要素に分割し、それら要素各々に「コロポックル」という「脳内小人」を割り当てました。 最終的には、各「コロポックル」が算出した確率を集計し、その集計値を用いてモンテカルロ法を適応します。
 
 以上が、本シミュレーションの概略原理ですが、以下にもう少し詳しく説明していきます。  
           
 <シミュレーションモデル構造>
 
 図1−1に 本シミュレーションのモデル構造を示します。
 World(世界)の中に Person(人間)が複数存在しており、各人間はクラス「Others」を介して、お互いに影響及ぼし合います。 また、人間の頭脳内には、Korpokkur(脳内小人=コロポックル)が複数存在し、各脳内小人が、周囲の様子を見て、自分専門の判断基準で 次に移動すべき方向を提案します。   
           
                   図.1−1  シミュレーションモデル構造
 

 図1−2に 人間が移動する方向を示します。 

                    
           図1−2 人間が移動する候補先を10に分割

 人間の周囲を 後方を−180度として、時計回りに +150°〜-150°を後方、-150°〜-100°を左後、-100° -60°を左、 -60〜-30°を左前、-30°〜-5°前微左、-5°〜 5°を前方、5°〜30°を前微右、 30°〜60°を右前、 60°〜 100°を右、 100°〜 ,  150°右後 の10のブロックに分割します。

 各方向に対する移動推奨値を 複数のKorpokkur(脳内小人=コロポックル)がそれぞれ計算し、その値を累積します。その累積した値を 図1−3の様に 0.0〜1.0の値に正規化します。
 
     
            図1−3 移動する方向の計算

 ここで、一様乱数(0〜1)を振り たとえば、その結果が図の様に0.54であるとすると、 図1−4の様に内挿計算を行って、次に移動する方向は、右、36.4度方向とします。(実際には、sin、cosを使用したくないのでベクトル計算を行い、多少異なる値になります)
  
     
            図1−4 内挿計算


 次に、移動するゾーンへの移動への可能性を計算する脳内小人(コロポックル)の種類を 図1−5に示します。

     
             図1−5  脳内小人(コロポックル)の種類とその派生関係

 各コロポックルの概念は、別の所(「複数の脳内小人(コロポックル)で構成された運転手」)で示した概念と同じで、人間の脳は複数の異なる役割を持つ「部分」(=コロポックル)が、同時並行で活動し、最上位に位置する「人間」がそれらの活動報告から最終結果を導くというものです。 通常、コロポックルの活動は無意識下で、常に動作しており 有意識の行動にも影響を与えます。

 本シミュレーションでは、図1−5の様に コロポックルの中にさらにコロポックルが存在するという「ネスト構造」を持っています。

 最上位に位置するコロポックルとしては、以下が存在します。
 コロポックル種類 

役割 

 慣性  現在の方向を維持する。
 目的方向  目的地方向へ移動する。
(具体的には、各異動候補先の推奨値として、移動候補方向単位ベクトルと、目的値方向単位ベクトルの内積値を使用する)
 BOID論理  群れ形成(BOIDシミュレーションで用いられる論理)。
 衝突防止  最接近時に、衝突を避ける。
 心的負荷  心理的に『ある方向には、行きたくない』という圧力。
 此処では、『他人が多くいる中にいると疲れる』という圧力を考えた。
 (そのほか、薄暗く狭いところは嫌、不潔なところは嫌等も考えられる)


 上記のコロポックルの内、「BOID論理に従うコロポックル」は、内部に下記に示すコロポックルを持ちます。
 コロポックル種類 

役割 

 探索  仲間を見失うと、仲間を探す。 (具体的には、最後に見かけた位置方向へ移動する)
 引き寄せ  仲間から離れすぎると、仲間の居る方向に向かって移動する。
 同一方向  仲間と一定の距離に居る時には、仲間と同じ方向に進む。
 また、相手速度に合わせて、自分の速度を調整する。
 反発  あまりにも接近しすぎると、相手を避ける方向に移動する。
 BOID論理が動作する対象が 「恋人、家族、友人、グループの仲間」」である時には、「探索」、「引き寄せ」、「同一方向」、「反発」 すべてが動作しますが、 相手が 「他人」の時には、反発コロポックルだけが動作します。

反発コロポックルはさらに下位コロポックルを持ちます。 活動するコロポックルは、相手の移動方向と自分の移動方向によって選ばれます。    
 コロポックル種類 

役割 

 対向  正面方向(前方:約±45度)から向かってくる人に対して、相手の居ない方向、および、相手の前方ではない方向に向かう。
 横切り  左右横方向(45度から約100度の方向)から接近してくる人に対して発動し、それ以上後方の人は無視。
 相手が移動する位置には向かわない。
 また、相手の前方には向かわない。
 後追い  自分とほぼ同一方向(±30度)に向かう人で、且つ、前方に居る人に対して発動。
 相手に非常に接近した時には、相手に衝突しない様に速度を調整する。
 それ以外の時で、相手の速度より自分の速度が速い時には、相手位置を回避する方向に向かう。 

 上記に挙げた各コロポックルが、其々の基準に照らし合わせて次に移動する方向の奨励値を計算します。 すなわち、10分割された移動方向候補に対して、推奨ブロックには正の値を、回避ブロックには負の値を、それぞれ代入します。
 人間(=最上位のコロポックル)は、すべてのコロポックルの出した数値を集計して、先に述べた方法(モンテカルロ法)で次に移動する方向を選択します。
 偶々、推奨しない方向を選択した場合には、その移動速度は、推奨しない度合いに合わせて減速します。

<シミュレーション:Step1>


 Step1 の実験として、運動場の様に自由に移動可能な平地を用意し、東西に移動する人と、南北に移動する人を自由に行動させました。(図1−6参照) 



 (動画)

                       図1−6 シミュレーション実行の例

  登場する人物は大半が他人同士(東西方向通行人:灰色、南北方向通行人:青色)ですが、一定の割合で、恋人、家族、友人のグループが混じっています。 恋人(赤色)、家族(橙色)、友人(緑色)はそれぞれグループとして離れ離れにならないように行動します。  反発コロポックルの発動範囲は、恋人が一番小さく、家族、友達の順に大きくなり、他人が一番大きくなります。 

  シミュレーション内に、一人だけ(水色で示す)脳内の行動確率計算結果(各コロポックルが算出した値を集計した値)をモニターしており、シミュレーション画面左上に*で示します。 赤は引力、青は斥力、長さはその力を示しています。つまり、人間は赤線分が長い方向に移動しやすくなります。
 登場人物は、7時15分から多くなり始め、7時30分〜8時00分にかけて約2倍になります。それ以降、元の人間数に戻ります。
 開放空間では、行動範囲に制限が無いため、出発位置から目的方向に移動するに従って、次第に広がっていきます。 但し、グループは、お互いに接近したまま移動します。


<Step2>以降の構想
 Step2では、開放空間ではなく、一定の制限が有る空間(たとえば、通路や、駅構内等)に拡張していきます。 さらに、Step3では人間のマナー(たとえば江戸しぐさなど)や、係員の誘導等もいれていきたいと思います。(マナーコロポックル、誘導従順コロポックル等を追加)  また、外界状況(混雑度、火災等の危機的状況)により、ボディゾーン範囲が変化したり、生存本能コロポックルが発動したりする等まで発展できれば良いと思っています。

 
 

<参考文献> 

1.服部 桂著            人工生命の世界               オーム社
2.Ellen Thro著           人工生命                   カットシステム
3.佐倉 統著            動き始めた人工生命            同文書院
4.吉永 良正            複雑系とは何か              講談社
5.日本情報処理開発協会        人工生命の方法               工業調査会
6.スティーブン・レビー著      人工生命                   朝日新聞社
7.ルーディ・ラッカー著           人工生命研究室              ASCII 
8.M.A.アービブ著                『脳』  ューラルネットと脳理論      (株)サイエンス社(1992)  
9.Norman D. Cook著            ブレインコード                 紀伊國屋書店(1988)
10.本間三郎著          人間の脳−その未知なるもの−     朝倉書店(1989) 

キーワード: 混雑、人混み、マルチエージェント、モンテカルロ法、BOID、シミュレーション、Javaプログラム


(JAVAプログラム実行へ)                   >>次頁へ                (Topへ)

 Javaソースプログラムは、上記(Javaプログラム実行へ)の頁からダウンロードできます(ウイルスチェック済み)。

初版:2014/07/07 |





蛇島伸吾