被食者と捕食者のシミュレーションである。
ルールはやや込み入っているが、要点を言えば、捕食者と隣接せず、かつ被食者と隣接するブランクセルには、50%の確率で被食者が誕生し、一世代(1サイクル)で消滅する。捕食者は、隣接する被食者を「食う」ことによって誕生し、その寿命は不定である。この条件に、「死」のルールが適応され、被食者は、50%の確率で、捕食者は20/512の確率で死亡する。
これは、確率論的なゆらぎを備えたセルオートマトンだが、シミュレーション自体もさることながら、視覚的に面白い効果を見せる。緑色とピンク色で表示される被食者が、青色の捕食者に食われる様子が、もくもくと湧き起こる雲のような様相を呈する。
いつものようにセル空間はWraparoundされているので、上下と左右がそれぞれ干渉して、この緑色で縁取られた青い雲の渦巻きは途絶えることがない。ソースの注釈にもあるように、セル空間の状態は、Zhabotinsky反応のようである。
ところで、このシミュレーションだが、被食者と捕食者というとらえ方と同時に、吸血鬼ドラキュラのルールとも呼べると思う。なぜなら、被食者である人間は、捕食者である吸血鬼に血を吸われる(食われる)と吸血鬼となり、隣接する人間を新たな吸血鬼に変える。人間は、吸血鬼から逃れようとして、背後に吸血鬼と化した仲間を残して吸血鬼のいない方向に逃げる。人間の寿命は一世代限りだが、子供を産むことができる。他方、吸血鬼は、人間を吸血鬼に変えることによってしか繁殖することはできない。
そのように考えると、被食者と捕食者という食物連鎖的関連とは少し異なった趣に見えてくるのではないだろうか。
FORTHのソースコードを以下に示す。
\ PREDPREY.EXP Predator prey model 20Mar89nhm
This experiment, a revised version of an experiment written by
C.H.Bennett, provides an example of a perdator/prey system.
Prey (green) undergo birth by a contact process: in a "birth
step" prey appear with a 50% probability in any cell containing
no predator which is adjacent to a cell that already contains
prey. Prey only live one generation---if not replaced by the
birth rule, they disappear. Predators (blue) also are born by
a contact process: they can only multiply by "eating" prey
(green cell --> blue). Predators can live indefinitely.
During a "death step," we ignore our birth rules and erase
both predators and prey, with prey dying with a probability of
50%, and predators dying with a frequency (as a fraction out of
512) given as an argument to Alt-O (initially 20/512).
Initially we run 3 birth steps for every death step, giving
Zhabotinsky-like behavior.
\ Predator-Prey model (see also CONTACT.EXP) 20Mar89nhm
NEW-EXPERIMENT INCLUDE STIRRAND.4TH INCLUDE SOUND.4TH
CAM-A N/VONN &/CENTERS
: LIVENEIGHBOR NORTH SOUTH EAST WEST CENTER OR OR OR OR ;
: LIVENEIGHBOR' NORTH' SOUTH' EAST' WEST' CENTER' OR OR OR OR ;
: PRED-PREY &CENTER IF
0 >AUX0 CENTER >PLN0 ELSE \ Prey death,
LIVENEIGHBOR CENTER' 1 XOR AND >PLN0 \ birth.
CENTER >AUX0 THEN
&CENTER' IF
0 >AUX1 CENTER' >PLN1 ELSE \ Pred death,
LIVENEIGHBOR' CENTER AND \ birth.
CENTER' OR >PLN1 CENTER' >AUX1 THEN ;
\ Predator-Prey model (see also CONTACT.EXP) 05Apr89nhm
R-INIT 655 20 * ( 20% ) 1 RND>PL HALF 2 RND>PL
TEMP-SEG 2 2 AREA HALF 0 RND>PL WHOLE-AREA
MAKE-TABLE PRED-PREY 20 THRESHOLD ! MAKE-TABLE VAR-RAND
: PMAP STD-MAP ALPHA >INTEN ;
: B1/D1 REG-TABS STEP 1 IS
: B3/D1 REG-TABS 3 STEPS COUNT>FREQ 1 IS
: PredPrey.colors MAKE-CMAP PMAP ; ALIAS F2
: 1.birth.step.per.death.step MAKE-CYCLE B1/D1 ; ALIAS F1
: 3.birth.steps.per.death.step MAKE-CYCLE B3/D1 ; ALIAS F3
MAKE-CMAP PMAP MAKE-CYCLE B3/D1 .( [Start with this.])
CR CR .( Alt-O sets Predator Death Rate, in 512'ths )
Powered by
コメントする