Bu model kitapta çok kısa anlatılmıştı. Bu nedenle kaynak olarak verilen makaleleri bulup anlamaya çalıştım. Bu modelde de iki tür kullandım. Bunlar iki bitki türü ve kaynak olarak da topraktaki besleyici maddeler ve güneş ışığı var.
Önce türlerin gelişimini kontrol eden denklemleri vereyim. İtiraf edeyim, bu denklemler önceki modellerdeki denklemlerden daha karmaşık. İki türün seçtiği stratejiler aşağıdaki \(A_1\) ve \(A_2\) parametreleriyle seçiliyor.
\(\frac{dB_1}{dt} = B_1 \cdot MIN(\frac{r \cdot N \cdot A_1}{N + k_N} – R – d , \frac{r \cdot L (1 – A_1)}{L + k_L} – R – d) \)
\(\frac{dB_2}{dt} = B_2 \cdot MIN(\frac{r \cdot N \cdot A_2}{N + k_N} – R – d , \frac{r \cdot L (1 – A_2)}{L + k_L} – R – d) \)
Bu denklemlerde MIN işlemi, iki değerin en küçüğünü seçiyor. Görüldüğü gibi modelde bir sürü sabit ve parametre var. Bunları kısaca açıklamaya çalışayım.
\(B_1\): Birinci türün toplam biyokütlesi. Burada bitki türlerinden bahsettiğimiz için nüfus yerine toplam ne kadar biyokütle oluşturduğuna bakılmış denklemlerde. Her iterasyonda bu değer yeniden hesaplanacak.
\(B_2\): İkinci türün toplam biyokütlesi. Bu değer de her iterasyonda yeniden hesaplanıyor.
Şimdi bu biyokütleleri hesaplamak için kullanacağım diğer parametreleri açıklayayım.
\(r \): Her bitkinin maksimum büyüme oranı. Bitkilerin biyokütlelerinin artışı bu sabitle doğru orantılı, yani bu sabit ne kadar büyükse bitkilerin büyüme oranı da o kadar hızlı. Doğru orantıyı görmek için ilk denklemde önce \(B_1 \cdot {r \cdot N \cdot A_1}{N + k_N} \) kısmına bakalım. Burada \(r \) sayısı büyürse çarpım da büyür. Aynı şekilde minimum işleminin diğer adayında da \(r \) sayısı pay kısmında bulunuyor. \(B_1 \cdot r \cdot L (1 – A_1) \). Yani \(r \) sayısı büyüdükçe eşitliğin sağ tarafı da büyüme eğiliminde.
\(A_1\): Birinci tür için köke ayrılan biyokütle. Bu parametre birinci türün seçtiği stratejiyi de belirliyor. Yani daha çok besine mi güneş ışığına mı ağırlık veriyor.
\(A_2\): İkinci tür için köke ayrılan biyokütle. Bu parametre ikinci türün seçtiği stratejiyi de belirliyor. Yani daha çok besine mi güneş ışığına mı ağırlık veriyor.
\(k_N\): Topraktaki besine dayalı büyüme için yarı doyma sabiti. Bu sabit paydada olduğu için arttıkça topraktaki besinden gelen biyokütle artışı azalıyor. Bu sabit sayesinde topraktaki besin değişikliğinin ani etkileri biraz azaltılmış oluyor. Yani \(N \) değeri aniden büyürse ya da küçülürse türün biyokütlesi daha az bir oranda büyüyüp küçülecek. Bunu görmek için \(\frac{N}{N + k_N} \) ifadesiyle biraz oynamak yeterli.
\(k_L\): Güneş ışığına bağlı büyüme için yarı doyma sabiti. Bu sabit paydada olduğu için arttıkça güneş ışığından gelen biyokütle artışı azalıyor. Bu sabit sayesinde güneş ışığındaki değişikliğinin ani etkileri biraz azaltılmış oluyor. Yani \(L \) değeri aniden büyürse ya da küçülürse türün biyokütlesi daha az bir oranda büyüyüp küçülecek. Bunu görmek için \(\frac{L}{L + k_L} \) ifadesiyle biraz oynamak yeterli.
\(R \): Solunum oranı. Türlerden bağımsız bir sabit. Sanırım solunum sırasında besinlerin yakılması nedeniyle biyokütledeki bir tür azalmayı modelliyor. Bu sabitle biyokütlenin çarpımı çıkarma işlemi yüzünden biyokütleyi her zaman azaltma eğiliminde.
\(d \): Kayıp oranı. Türlerden bağımsız ve iç ya da dış nedenlerle herhangi bir şekilde ölümlerin modellendiği bir sabit. Bu sabitle biyokütlenin çarpımı o anki biyokütleden çıkarıldığı için beklendiği gibi biyokütleyi her zaman azaltma eğiliminde.
\(N \): Topraktaki toplam besin miktarı. Bu modelde kullanılan kaynaklardan birisi bu. Bitkiler çoğaldıkça topraktaki besin miktarı azalacaktır ve bitkiler ölünce toprak da besin bakımından zenginleşecektir. Bu kaynağın zamana göre değişim denklemini aşağıda vereceğim.
\(L \): Bitkiler tarafından kullanılabilen güneş ışığı miktarı. Bu da bitkilerin kullanabildiği kaynaklardan ikincisi.
Şimdi kaynakların değişimini modelleyen denklemlere bakalım.
\(\frac{dN}{dt}=a (T – N – B_1 \cdot p – B_2 \cdot p) \)
\(– MIN(\frac{r\cdot N \cdot A_1}{N + k_N} – R, \frac{r\cdot L (1 – A_1}{L + k_L} – R) \cdot B_1 \cdot p \)
\(– MIN(\frac{r\cdot N \cdot A_2}{N + k_N} – R, \frac{r\cdot L (1 – A_2}{L + k_L} – R) \cdot B_2 \cdot p \)
\(L = \frac {L_0}{1 + \alpha \cdot B_1(1-A_1) + \alpha \cdot B_2(1 – A_2)} \)
Bu iki denklemin parametrelerini açıklayayım:
\(T \) : Habitattaki toplam besin miktarı. Bu toplama topraktaki, ölü bitkilerdeki ve bitki biyokütlelerindeki besinlerin hepsi dahil.
\(p \): Bitki dokularındaki besin konsantrasyonu.
\(a \): Mineralleşme oranı. Yani ölü biyokütlenin hangi oranda besine dönüştüğünü belirliyor. \(a (T – N – B_1 \cdot p – B_2 \cdot p) \) ifadesindeki \(T – N – B_1 \cdot p – B_2 \cdot p \) kısmına bakarsak önce habitattaki toplam besinden topraktaki besin miktarını çıkarıyoruz. Sonra kalandan birinci türün biyokütlesiyle bitki dokusundaki besin konsantrasyonunu yani birinci türdeki toplam besin miktarını çıkarıyoruz. Sonra yine kalandan ikinci türdeki toplam besin miktarını çıkarıyoruz. Dolayısıyla elimizde kalan miktar aslında ölü bitkilerdeki besin miktarını verir. Bu miktarıda mineralleşmeyle çarparsak o iterasyonda ölü bitkilerden toprağa ne kadar besin geri dönüşü olacağını buluruz. Tabii ki mineralleşme oranının kullanıldığı ilk kaynak denkleminde minimum işleminin yapıldığı bir terim daha var. Dikkat edersek bu terim neredeyse biyokütle değişim denklemlerinin aynısı. Farkların biri kayıp parametresi burada yok, diğeri de biyokütledeki artışın bitki besin konsantrasyonuyla çarpılması. Bu iki fark aslında bu terimin biyokütledeki değişim sayesinde ne kadar besinin topraktan uzaklaştırıldığını gösteriyor ve bu nedenle topraktaki besin miktarına etkisi de çıkarma işleminden görüldüğü gibi negatif.
\(L_0\): Güneş ışığı sabiti.
\(\alpha \): Birim yaprak biyokütlesi başına soğrulan ışık miktarı. Bu sabit paydada olduğundan büyüdükçe ortamdaki diğer bitkilere kalan ışık miktarı da azalıyor. Paydadaki diğer terimler de toplam ışıktan faydalanan biyokütle olduğunu görmek kolay. Yani bütün ifade bir tür biyokütle başına düşen ışık miktarı gibi düşünülebilir.
Bu modeli denemek için aşağıdaki basit kodu yazdım. Sabitlerle ve stratejilerle oynayarak çok değişik çoğalma davranışları görmek mümkün. Değişkenleri yazıdaki şekliyle tanımladım ki, değişiklik yapmak daha kolay olsun.
import numpy as np
import matplotlib.pyplot as plt
B1 = 0.5 # Biomass of population 1
B2 = 0.5 # Biomass of population 2
N = 1.0 # available soil nutrient
L = 1.0 # light availability
A1 = 0.8 # fraction of biomass allocated to root by population 1
A2 = 0.2 # fraction of biomass allocated to root by population 2
r = 5.0 # per capita maximal rate of plant growth
kn = 0.1 # 1/2 saturation constant for nutrient
kl = 0.1 # 1/2 saturation constants for light
R = 0.2 # density independent per capita respiration rate
d = 0.1 # density independent per capita loss rate
def G1(L, N):
return r*N*A1/(N+kn) - R - d
def G2(L, N):
return r*L*(1-A2)/(L+kl) - R - d
T = 3.0 # Total soil nutrient in habitat
a = 0.5 # mineralization rate
p = 0.4 # plant tissue nutrient concentration
L0 = 2.0 # solar constant
alpha = 0.01 # light decay rate per unit leaf biomass
populations = np.empty((0, 4), int)
populations = np.append(populations, np.array(
[[B1, B2, N, L]]), axis=0)
for i in range(1, 100):
B1 = B1 + B1*min(G1(L, N), G2(L, N))
if B1 < 0:
B1 = 0
B2 = B2 + B2*min(G1(L, N), G2(L, N))
if B2 < 0:
B2 = 0
N = N + a*(T - N - B1*p - B2*p) - min(G1(L, N), G2(L, N)) * \
B1*p - min(G1(L, N), G2(L, N))*B2*p
if N < 0:
N = 0
L = L0 / (1 + alpha*B1*(1 - A1) + alpha*B2*(1 - A2))
if L < 0:
L = 0
populations = np.append(populations, np.array(
[[B1, B2, N, L]]), axis=0)
f, (ax1, ax2, ax3, ax4) = plt.subplots(4)
line1, = ax1.plot(populations[:, 0], color="b")
line2, = ax2.plot(populations[:, 1], color="r")
line3, = ax3.plot(populations[:, 2], color="g")
line4, = ax4.plot(populations[:, 3], color="y")
ax1.set_ylabel("B1")
ax2.set_ylabel("B2")
ax3.set_ylabel("Besin")
ax4.set_ylabel("Güneş")
ax2.set_xlabel("zaman")
plt.show()
Bu da yukarıdaki programın çıktısı