| 公開 | 2011-03-23 |
| 更新 | 2011-03-23 |
アリがエサを求めて彷徨うシミュレーションを作ってみました。HTML5 Canvas 2D + JavaScript による簡単な AI の実装例です。

巣穴から這い出したアリは、フィールド上をエサを探し求めて歩き回ります。エサを発見したアリはエサを巣穴に持ち帰ります。巣穴とエサとの間に行列が形成される様子をプログラムで演出・再現しています。
HTML5 Canvas 2D + JavaScript に対応するブラウザー(※)で実行できます。
下の画面をクリックで開始・一時停止します。
※Microsoft Internet Explorer 9、Mozilla Firefox、Google Chrome、Opera など。
※たまに帰り道が分からなくなったりしますが、そこはご愛敬です。
現実世界のアリは、エサを発見すると足跡物質(誘導フェロモン)を地表に放出しながら歩くそうです。他の個体は足跡の濃度の高い方へと誘導されます。足跡は時間経過に伴い揮発してゆきますが、多数の個体が集団で同じルートを辿り足跡を上書きすることで濃度が維持・強化され、次第に巣穴とエサを結ぶ最短経路が構築されます。
このプログラムでは、このようなアリの性質をほんの一部だけ模倣して、行列の形成を目指します。
二次元平面上で複数のエージェントを移動させるプログラムを書くことができれば、特に難しい点はないでしょう。
それぞれの足跡物質には「巣穴・エサからの経過時間」の情報を付加しています。これにより短時間で経路を最適化できます。本来は濃度による誘導作用を実装したいところですが、今回は厳密な生態シミュレーションが目的ではないので、多少の「ズル」をしています。
アリ同士では直接の情報の交換はありません。たとえば、「前の個体に付いて行く」などといった行動によって行列を再現しようとすると、プログラムはより複雑になります。単純なウェイポイントの設置だけで、あたかも行列(集団の意思)を成しているかのように見えるところがポイントです。
それぞれの個体(エージェント)の機能や仕組みは単純でも、それが集団として働くと複雑な構造を実現する。このような現象を「創発」と呼ぶそうです。とても興味深いですね!