Nothing
test_that("The two versions of Unscaled converge", {
set.seed(123)
n_species <- 50
n_basal <- 20
#body mass of species
masses <- 10 ^ c(sort(runif(n_basal, 1, 6)),
sort(runif(n_species - n_basal, 2, 9)))
# 2) create the food web
# create the L matrix
L <- create_Lmatrix(masses,n_basal, Ropt = 100, gamma = 2, th = 0.01)
# create the 0/1 version of the food web
fw <- L
fw[fw > 0] <- 1
# 3) create the models:
model <- create_model_Unscaled(n_species, n_basal, masses, fw)
# model2 uses same parameters as model
model2 <- new(ATNr:::Unscaled_loops, n_species, n_basal)
model2[["BM"]] <- masses
# model2[["log_BM"]] <- log10(masses)
model2[["fw"]] <- fw
biomasses <- runif(n_species, 30, 35)
# 5) define the desired integration time.
model$ext = 1e-6
model <- initialise_default_Unscaled(model)
# initialise properly model2
model2$K = model$K
model2$X = model$X
model2$a = model$a
model2$c = model$c
model2$e = model$e
model2$ext = model$ext
model2$h = model$h
model2$q = model$q
model2$r = model$r
model2$alpha = model$alpha
model$initialisations()
times <- seq(0, 355000000, 1000000)
sol <- lsoda_wrapper(times, biomasses, model)
sol2 <- deSolve::lsoda( biomasses, times,
func = function(t, y, pars) list(pars$ODE(y, t)),
model2,
)
extinct = tail(sol,1) < model$ext
expect_equal(sol[nrow(sol),], sol2[nrow(sol2),], tolerance = 0.0001)
})
# library(rbenchmark)
# benchmark("arma: " = {sol <- lsoda_wrapper(times, biomasses, model)},
# "loops: " = {sol2 <- lsoda_wrapper(times, biomasses, model2)},
# replications = 100)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.