我正在基于Lotka-Volterra动力学建立一个模型,该模型包括随机分散测度,目的是随着不良适应的猎物相对密度的增加,随时间推移观察种群数量。
我有一个功能全面的基本LV模型。到目前为止,我已经尝试将整个模型放在一个循环中并将散布定义为一个序列。
这是我的基本模型:
LVmod<-function(Time,State,Pars){
with(as.list(c(State, Pars)),{
ingestion1 <- ingP1 * P1 * P #ingestion maladapted
ingestion2 <- ingP2 * P2 * P #ingestion residents
ingestion3 <- ingS * S * p #source population
growthprey1 <- rGrow1 * P1 * (1-((P1+P2)/K)) #mal
growthprey2 <- rGrow2 * P2 * (1-((P2+P1)/K)) #res
growthsource <- rGrowS * S * (1-(S/K2)) #source pop
mortpred <- rMort * P #predator mortality
mortpredS <- rMort * p #source pred mort
migration <- S*.5 #dispersal from source pop
dPrey1 <- growthprey1 - ingestion1 + migration #change in maladapted pop
dPrey2 <- growthprey2 - ingestion2 # change in resident pop
dSource <- growthsource - ingestion3 # source
dPred <- (ingestion1+ingestion2)*assEff - mortpred #change in predator
dpredS <- (ingestion3)*assEff - mortpredS #source predator
return(list(c(dPrey1,dPred,dPrey2,dSource,dpredS)))
})
}
pars <- c(ingP1 = 0.8,
ingP2 = 0.2,
ingS = 0.2,
rGrow1 = 0.5,
rGrow2 = 1.5,
rGrowS = 1.5,
rMort = 0.2,
assEff = 0.8,
K = 10,
K2 = 15)
yini <- c(P1 = 1, P = 2, P2 = 1, S = 1, p = 2)
times <- seq(0,200,by=1)
out <- ode(yini,times,LVmod,pars)
这是问题所在行:
migration <- S*.5 #dispersal from source pop
当前,我的色散值设置为.5。我希望可以有这样的东西:
migration <- S*dispersal
每个迭代的散布随机变化。
这是我尝试过的循环的开始:
for (j in 2:200){
disp=runif(200,0,1)
LVmod<-function(Time,State,Pars){......
我想产生一个结果,该结果可以用图形表示为与分散率变化有关的人口随时间的变化。现在,如果我运行一个循环,就会得到大量具有一条水平线的图。