種群競爭模型是當兩個種群為爭奪同一食物**和生存空間相互競爭時,常見的結局是,優勝劣汰。使用種群競爭模型可以描述兩個種群相互競爭的過程,分析產生各種結局的條件。
# 種群競爭模型
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,其值決定了演算法全域性搜尋和區域性搜尋能力的均衡,可按下式計算 式中...