我尝试使用“aux”对象的不同值多次运行以下代码。time <- seq(0, 30, 1)stock <- c(sK=0, sF=1) aux <- c(aH=0.4, aRel=0.5, aRes=0.5, aS=0.8)...
我尝试使用“aux”对象的不同值多次运行以下代码。
time <- seq(0, 30, 1)
stock <- c(sK=0, sF=1)
aux <- c(aH=0.4, aRel=0.5, aRes=0.5, aS=0.8)
model <- function(time, stock, aux) {
with(as.list(c(stock, aux)), {
aA <- 1-sK/1
fH <- 1*aH*aA
sF <- fH*aRel*0.2*0.8
fS <- sF*aRes
sK <- fS*aS
net_f <- fH - fS
net_k <- fS
return(list(c(net_f, net_k),
fH=fH, fS=fS, aA=aA, net_f=net_f, net_k=net_k))
})
}
library(deSolve)
out <- data.frame(ode(times=time, y=stock, parms=aux, func=model, method='euler'))
out
我的问题是:
-
我已经创建了一个用于网格搜索的数据框
d <- crossing(aH=seq(0, 1, 0.1), aRel=seq(0, 1, 0.1), aRes=seq(0, 1, 0.1),
aS=seq(0, 1, 0.1))
我如何将此网格搜索与上述模型联系起来,并获得“aux”的最佳组合?我意识到网上有关于这个问题的例子,但我的问题是,“aux”是进一步建模代码的值
out <- data.frame(ode(times=time, y=stock, parms=aux, func=model, method='euler'))
-
对于行
sF <- fH*aRel*0.2*0.8
我需要将值 0.2 和 0.8 更改为其他值,例如,0.2 也可以更改为 0.5 或 0.8,而 0.8 也可以更改为 0.5 和 0.2。因此对于这部分,有 3*3=9 种情况。在网格搜索中执行此操作的正确方法是什么?
希望我已经清楚描述我的问题。请给我一些建议。