個人の行動により生ずる集団的ルールの創発
【動機】
エスカレーターにおいて、急いでいない人は左側に乗り、急いでいる人は右側に乗ることが見られます(関西だと逆になるようですね)。これは誰かが「そうしなさい」と命じているわけはありません。けれども、そういう暗黙の了解に従うほうが全体として効率がよいと考えられるので、大衆の多くはその特に命じられてはいない集団的なルールに従うようになります。
こういった現象が、複雑怪奇な人間よりも単純にしたエージェントによるシミュレーションで再現してみよう、というのが私の研究です。
【概要と実装】
・正方形のフィールドを用意し、その中にエージェント(見た目はただの丸)を何体か投入します。
・エージェントは8方向(前後左右と斜め)に移動可能で、移動するたびに「周囲があの状態だったときにこういう行動をとったのは良かったかな、悪かったかな…?」というのを数値化して得点とします。たとえば、目の前に別のエージェントがいるのに直進してしまったらぶつかってしまうので、それは「悪かった」ことになります。また、前に進み、次に後ろに進むのも「悪かった」ことにします。今回のシミュレーションでは、壁や他のエージェントに衝突することなく、多く進めるほうがより良い行動であるとします。
・この状態のときにこの行動をとるのはどれくらいの良さがあるか、というテーブル(表)を毎回計算される得点をもとに、更新し続けます。
・エージェントが行動を行うとき、そのテーブルを見て最も良い行動を選択します。ただし最初は、テーブルを見て行動選択するのとランダムで行動選択するのを混ぜて行います。
【実験前の予想】
「なんか、エージェントみんながぐるぐると左か右かどちらかに回ってくれたりするとおもしろいですねー」
【実験】
(埋め込みたいのですが、うまくいかないので待っていてください)
暫定的に、クリックするとダウンロードできる形にしました。(形式はmp4です)
エージェント1体のとき / エージェント2体のとき / エージェント3体のとき / エージェント5体のとき
【結論】
3体までは予想通りぐるぐる回ってくれるのですが、4体以上になると上手く収束してくれないことが多々あります。左回りしたいエージェントと右回りしたいエージェントのせめぎ合いがより激しくなるからだと思われます。
すなわち、ぐるぐる回るということが今回の実験環境における最適解であるといえる。3体までのときは途中で乱れが起きても、また復活するような現象も見られた。