種群競爭模型

2021-09-19 07:28:42 字數 1727 閱讀 9847

種群競爭模型是當兩個種群為爭奪同一食物**和生存空間相互競爭時,常見的結局是,優勝劣汰。使用種群競爭模型可以描述兩個種群相互競爭的過程,分析產生各種結局的條件。

# 種群競爭模型

import numpy as np

import matplotlib.pyplot as plt

from scipy.integrate import odeint # 用以求常微分

plt.rcparams[

'figure.dpi']=

100# 繪圖的dpi

plt.rcparams[

'font.sans-serif']=

['simhei'

]# 正常顯示中文

plt.rcparams[

'axes.unicode_minus']=

false

# 正常顯示正負號

# 兩個物種的引數

type_x1 =

[500

,1.2

,15000

,0.0004

]# [初始數量, 自然增長率, 環境容量, 資源消耗]

type_x2 =

[2560

,1.3

,3000

,0.0001

]# 上面資源消耗的意思是:對於可以供養x2的資源,單位數量的x1的消耗為單位數量x2消耗的倍數

# 阻滯作用

defpropagate

(init, time, x1, x2)

: ix1, ix2 = init

rx1 = x1[1]

*ix1*(1

-ix1/x1[2]

)-x1[3]

*ix1*ix2

rx2 = x2[1]

*ix2*(1

-ix2/x2[2]

)-x2[3]

*ix1*ix2

rx = np.array(

[rx1, rx2]

)return rx

# 畫圖

defploter

(time, numer)

: plt.xlabel(

'時間'

) plt.ylabel(

'物種量'

) plt.plot(time, numer[:,

0],"b-"

, label=

"物種$x_1$"

) plt.plot(time, numer[:,

1],"r-"

, label=

"物種$x_2$"

) plt.legend(

) plt.show(

)# 執行

time = np.linspace(0,

200,

1000

)# 時間為200個單位,均分為1000份

init = np.array(

[type_x1[0]

, type_x2[0]

])numer = odeint(propagate, y0=init, t=time, args=

(type_x1, type_x2)

)ploter(time, numer)

結果圖如下:

數學模型演算法實現之種群競爭模型

fun.m function dx fun t,x,r1,r2,n1,n2,s1,s2 r1 1 r2 1 n1 100 n2 100 s1 0.5 s2 2 dx r1 x 1 1 x 1 n1 s1 x 2 n2 r2 x 2 1 s2 x 1 n1 x 2 n2 p3.m h 0.1 所取時間...

例子種群演算法

粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引...

認識多種群遺傳演算法

多種群遺傳演算法是自己寫 用的智慧型演算法,遺傳演算法的高階版。其流程圖如下 其中sga即為普通的標準遺傳演算法,可見多種群遺傳演算法中展開的多種群由不同控制引數的sga來保持種群的差異化。控制引數為交叉概率p c和變異概率p m,其值決定了演算法全域性搜尋和區域性搜尋能力的均衡,可按下式計算 式中...