自己駆動粒子とASEPモデルで遊んでみる

ニュートンの考えた力学の基本原理は、①慣性の法則、②作用=反作用の法則、③運動の法則、です。この3つの法則がすべて成り立っているものをニュートン粒子と呼びますが、必ずしもこの3法則が成り立たない場合もあります。


たとえば車や生物などの個体を粒子として考えた場合。それらは自分自身の意思を持っており、自発的に動くことができるため、その行動に「慣性の法則」はあてはまりません。また、力といっても社会心理学的なものであるため「作用=反作用の法則」も成り立ちません。そして、力が見積もれないため、強力な「運動の法則」も無力です。こうした粒子を「自己駆動粒子(self-driven particle)」と呼びます。


ASEPは、この人や車などの集まりである自己駆動粒子系とその渋滞を考える上で、近年、性質のよいモデルとして注目されているものです。ASEPは「エイセップ」と発音し、非対称単純排除過程(Asymmetric Simple Exclusion Process)の頭文字をとったものです。


そのモデルを説明します。初めにたくさんの箱を用意し、それをずらりとまっすぐ並べます。箱には玉が一つだけ入るとし、適当にいくつかの箱に玉を入れておきます。そして玉を一斉に右隣に移します。このとき、右隣の箱にすでに玉が入っていた場合には動けません。ルールはたったこれだけで、この操作を何度も繰り返すと玉全体が右にぞろぞろと動いていきます。

一つの箱に一つの玉しか入れないのを、学問的には「排除体積効果」と呼び、人や車など大きさを持つものならば必ず持っている性質です。互いが邪魔になって動けなくなる現象を表せるで、混雑時の渋滞のモデルにも向いてるわけです。
この排除体積効果と自己駆動がASEPの大きな特徴となります。


さて、前置きが長くなりましたが、今回はこのASEPの非常に単純なモデルを動かしてみました。条件は以下のとおりです。

  • 箱を十個並べ、その中に適当に玉を配置します。
  • 箱の両端はつながっています。サーキット状の道を想定します。
  • 一斉に右隣に動かし、右隣が空いてるときのみ移動できます。

$ ruby simple_asep.rb
0: ○●○●○○●●●○
1: ○○●○●○●●○●
2: ●○○●○●●○●○
3: ○●○○●●○●○●
4: ●○●○●○●○●○

●が玉の入った状態で、○が空っぽの状態を表します。下にいくほど時間が経過しています。なんとなくイメージは伝わったでしょうか?


この単純なモデルでは、玉の数を箱の全数で割った密度が「0.5」になると初期状態に関わらず渋滞が発生し、このときの密度が臨界密度となります。これは数学的にも証明されるようです。
臨界密度を超えると●が連続した部分が現れ、これを「渋滞クラスター」と呼びます。時間の経過とともにこのクラスターは下流方向に移動し、現実の渋滞の性質とも合致します。


密度=0.5のとき(臨界密度)

$ ruby simple_asep.rb
0: ●●●●●○○○○○
1: ●●●●○●○○○○
2: ●●●○●○●○○○
3: ●●○●○●○●○○
4: ●○●○●○●○●○
5: ○●○●○●○●○●
6: ●○●○●○●○●○
7: ○●○●○●○●○●
8: ●○●○●○●○●○
9: ○●○●○●○●○●


密度=0.6のとき(臨界密度超え)

$ ruby simple_asep.rb
0: ●●●●●●○○○○
1: ●●●●●○●○○○
2: ●●●●○●○●○○
3: ●●●○●○●○●○
4: ●●○●○●○●○●
5: ●○●○●○●○●●
6: ○●○●○●○●●●
7: ●○●○●○●●●○
8: ○●○●○●●●○●
9: ●○●○●●●○●○


敢えて極端な状態からスタートしていますが、密度による違いがよくわかると思います。面白いですね♪

昔、セルオートマトンで遊んだことがあったので、なんとなく懐かしく思い、つい試してしまいました。 (^^;