PHYSARUM
AN EXPERIMENT IN EMERGENCE
SINGLE FILE · OFFLINE READY

小さなルールが、秩序をつくる。

感知する。進む。跡を残す。その繰り返しから生まれるネットワーク。

COLLECTIVE BEHAVIOR
FIELD STUDY / 001
Canvasを利用できるブラウザで開いてください。
LIVE CULTURE
60,000 AGENTS
000000 STEPS
01 / VEIN NETWORK
画面をドラッグして流れに干渉
Shift で一時的に忌避 / Space で停止
01
周囲を感知

前・左・右の濃度を比較する。

02
濃い方向へ移動

近くの情報だけで向きを決める。

03
軌跡を引き継ぐ

跡が拡散・蒸発し、模様が育つ。

この小さな世界のしくみ

数万の仮想エージェントが、共有する化学物質の濃度場を読み、そこへ軌跡を残します。全体の形を指示する設計図を与える代わりに、各粒子に同じ局所ルールを適用しています。

① 3方向の化学濃度を比較② 濃度を手がかりに向きを変更③ 移動先に化学物質を分泌

1ステップの処理

前が最も濃ければ直進。左右のどちらかが優勢ならそちらへ旋回。前が左右より薄いときは左右をランダムに選びます。探索の揺らぎを加え、移動後に化学物質を分泌します。場には3×3近傍の平均による拡散と蒸発を適用します。

sense → turn → move
T′ = max(0, mix(T, mean₃ₓ₃(T), D) × (1 − E) − ε)
Tnext = clamp(T′ + deposits, 0, 1)

D は拡散率、E は1ステップあたりの蒸発率。ε = 0.0021 は低濃度の残留を防ぐ小さな減衰項です。GPU版の場は8bitで量子化されます。栄養点は継続的な誘引濃度場を重ねる拡張で、摂食による消費は省略しています。

試してみる

センサー距離を大きくすると、より遠くの道しるべを参照します。蒸発率を上げると軌跡の記憶が短くなります。「栄養」で数点置き、誘引の影響を観察してください。停止中も値を変更でき、1ステップずつ進められます。

操作

Space 停止・再開  1ステップ R 同じ初期条件で再生成 N 新しいSeed 14 ブラシ切替 F 全画面 S PNG保存 H 画面内の表示切替。画面を押しながら動かすとブラシが作用し、Shift で一時的に忌避へ切り替わります。右クリックは近くの栄養点を除去します。

モデルと計算環境

Jeff Jonesの粒子モデルを参考にした、自己組織化を観察するための実験です。実生物の忠実な成長予測や経路最適性の検証には、追加の生物モデル・定量評価が必要です。粒子は仮想エージェントであり、細胞数への対応は仮定していません。占有制約や増殖は省略しています。

WebGL 2では粒子更新をTransform Feedbackで実行し、化学物質場を2枚のテクスチャで交互に更新します。利用環境に応じてCanvas 2DのCPU版へ切り替わります。CPU版は解像度と粒子数を抑えています。描画方式・端末による数値精度の差で模様は変化します。FPSは端末依存で、低速時はモデル時間の進み方を抑えて負荷を制限します。

HTML・CSS・JavaScript・シェーダーをこのファイルに内包。起動やシミュレーションはオフラインで動作します。下記の文献リンクを開く場合はインターネット接続を利用します。

参考:Jeff Jones (2010), Characteristics of Pattern Formation and Evolution in Approximations of Physarum Transport Networks. Artificial Life 16(2), 127–153. 原論文 / DOI ↗
実装資料:MDN / WebGLTransformFeedback ↗