2022年6月4日

食物鏈的模擬模型Lotka-Volterra equation與食物鏈模擬軟體

朋友 Wei-lun Chang 在臉書上說起學生的一個提問:就是食物鏈中A吃B吃C,不是會有族群變少又變多的情況,那最後是會平衡還是會怎樣?


A吃B吃C的模型比較複雜,先來看看,若只是A吃B的話,這個捕食者與獵物的模型其實在約一百年前就有人提出,就是Lotka-Volterra equation


在wikipedia初看到此方程式,可能會先後退三步,因為看起來好複雜。但其實不太難,翻成中文就懂。

  • 獵物在單位時間的增加量 = 獵物的出生數量 - 獵物的死亡數量
  • 捕食者在單位時間的增加量 = 捕食者的出生數量 - 捕食者的死亡數量

一言以蔽之,不就是「出生和死亡會影響族群的大小」嘛!剩下的就是解釋參數的意義囉。

先看第一行  dx/dt  = αx - βxy  (獵物在單位時間的增加量 = 獵物的出生數量 - 獵物的死亡數量)

  • x是獵物的數量,dx/dt是單位時間的獵物改變量
  • αx是獵物的出生數量 ,是獵物的出生數量正比於獵物的數量,所以就把獵物的數量(x)乘上一個常數α  
  • βxy是獵物的死亡數量 ,代表獵物的死亡數量正比於獵物的數量和捕食者的數量 。獵物越多和捕食者越多,死的獵物就越多的意思。所以把獵物和捕食者的數量都乘上常數β
接下來是 dy/dt = δxy - γy (捕食者在單位時間的增加量 = 捕食者的出生數量 - 捕食者的死亡數量)
  • y是捕食者的數量,dy/dt是單位時間的捕食者改變量
  • δxy是捕食者的出生數量,正比於獵物和捕食者的數量,也就是獵物越多和捕食者越多,捕食者就生得越多。它們的關係用一個常數δ代表
  • γy就是捕食者的死亡數量,和捕食者的數量成正比,所以就乘上一個常數γ


既然是一個模型,就一定有許多假設的情況,畢竟真實世界哪那麼剛好就用四個常數決定一切?根據wikipedia,這個模型的基本假設如下

  • 獵物在任何時候都能找到充足的食物。
  • 捕食者的食物供應完全取決於獵物族群的大小。
  • 族群的變化率與其族群規模成正比。
  • 環境不會發生有利於某一物種的變化,也和遺傳適應無關。
  • 捕食者有無限的食慾。


我用試算表做出這個方程式的圖,使用某些特定參數,就能看到像是典型捕食者與獵物族群數量變化的圖,有兩條相同週期但其中一條滯後的曲線。

有興趣的可以看看

https://docs.google.com/spreadsheets/d/1zswpTJ_mnu6Ai6RQ2NXwW_e4z8QT_xu9mvhGSDBmL38/edit?usp=sharing



若是以獵物的數量和捕食者的數量畫成散佈圖,也能看出其變化趨勢像是一個橢圓形的週期。紅點為初始設定值(獵物和捕食者都是10),隨著時間推進,依序進入四個端點「捕食者的最大值、獵物最小值、捕食者最小值、獵物最大值」,並不斷重複。



其實只有A吃B的,看起來簡單的模型反而不容易穩定。這點我們可以使用NetLogo的模擬軟體來玩玩



在model-version中先選擇sheep-wolves

用預設值,然後按下go,從底下的圖可以看到兩個族群的數量變化。你可以注意以下幾個問題,並想想為什麼?

1.哪個族群的數量先增加到最高點?

2.兩個族群的曲線是否會重疊呢?

3.這樣的族群可以維持穩定嗎?

這個設定下,是狼和羊隨機移動,狼每走一步都會損耗能量,因此必須吃羊來補充能量,當狼的能量耗盡就會死去。這個模型的羊有無限的食物,所以羊沒有能量損耗的問題。

你可以試著改一些設定,像是狼和羊的初始值,或是狼群能獲得的能量或是兩個族群的繁殖率,看看能不能讓牠們維持更久的族群穩定?




接下來再試試另一個模型,切換到sheep-wolves-grass,在這個設定下,羊有能量耗損而死亡的問題,所以必須吃草。而草也只會在固定時間重新生長。

讓它開始運作(按下go),你可以看看比起前一個只有狼吃羊的模型,現在這一個穩定情況是如何?並且看看三個族群出現峰值的順序又是如何?是否又會重疊?

你應該會發現具有加入了草之後,反而讓三個族群變得更穩定。但現在有個挑戰了,試試看不改兩個族群的初始數量,而去改變底下的設定,如何讓兩個族群更快歸零?這些改變的意義對生態系的意義又是如何?