## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----eval=FALSE--------------------------------------------------------------- # library(nlrx) # # Windows default NetLogo installation path (adjust to your needs!): # netlogopath <- file.path("C:/Program Files/NetLogo 6.0.3") # modelpath <- file.path(netlogopath, "app/models/Sample Models/Biology/Wolf Sheep Predation.nlogo") # outpath <- file.path("C:/out") # # Unix default NetLogo installation path (adjust to your needs!): # netlogopath <- file.path("/home/NetLogo 6.0.3") # modelpath <- file.path(netlogopath, "app/models/Sample Models/Biology/Wolf Sheep Predation.nlogo") # outpath <- file.path("/home/out") # # nl <- nl(nlversion = "6.0.3", # nlpath = netlogopath, # modelpath = modelpath, # jvmmem = 1024) ## ----eval=FALSE--------------------------------------------------------------- # nl@experiment <- experiment(expname = "wolf-sheep-morris", # outpath = outpath, # repetition = 1, # tickmetrics = "true", # idsetup = "setup", # idgo = "go", # runtime = 500, # evalticks = seq(300,500), # metrics=c("count sheep", "count wolves", "count patches with [pcolor = green]"), # variables = list("initial-number-sheep" = list(min=50, max=150, step=10, qfun="qunif"), # "initial-number-wolves" = list(min=50, max=150, step=10, qfun="qunif"), # "grass-regrowth-time" = list(min=0, max=100, step=10, qfun="qunif"), # "sheep-gain-from-food" = list(min=0, max=50, step=10, qfun="qunif"), # "wolf-gain-from-food" = list(min=0, max=100, step=10, qfun="qunif"), # "sheep-reproduce" = list(min=0, max=20, step=5, qfun="qunif"), # "wolf-reproduce" = list(min=0, max=20, step=5, qfun="qunif")), # constants = list("model-version" = "\"sheep-wolves-grass\"", # "show-energy?" = "false")) ## ----eval=FALSE--------------------------------------------------------------- # nl@simdesign <- simdesign_morris(nl=nl, # morristype="oat", # morrislevels=4, # morrisr=1000, # morrisgridjump=2, # nseeds=5) ## ----eval=FALSE--------------------------------------------------------------- # library(future) # plan(multisession) # results <- run_nl_all(nl) ## ----eval=FALSE--------------------------------------------------------------- # setsim(nl, "simoutput") <- results # saveRDS(nl, file.path(nl@experiment@outpath, "morris.rds")) ## ----eval=FALSE--------------------------------------------------------------- # morris <- analyze_nl(nl) ## ----eval=FALSE--------------------------------------------------------------- # library(nlrx) # # Windows default NetLogo installation path (adjust to your needs!): # netlogopath <- file.path("C:/Program Files/NetLogo 6.0.3") # modelpath <- file.path(netlogopath, "app/models/Sample Models/Biology/Wolf Sheep Predation.nlogo") # outpath <- file.path("C:/out") # # Unix default NetLogo installation path (adjust to your needs!): # netlogopath <- file.path("/home/NetLogo 6.0.3") # modelpath <- file.path(netlogopath, "app/models/Sample Models/Biology/Wolf Sheep Predation.nlogo") # outpath <- file.path("/home/out") # # nl <- nl(nlversion = "6.0.3", # nlpath = netlogopath, # modelpath = modelpath, # jvmmem = 1024) ## ----eval=FALSE--------------------------------------------------------------- # nl@experiment <- experiment(expname = "wolf-sheep-morris", # outpath = outpath, # repetition = 1, # tickmetrics = "true", # idsetup = "setup", # idgo = "go", # runtime = 500, # metrics=c("count sheep", "count wolves", "count patches with [pcolor = green]"), # variables = list("initial-number-sheep" = list(min=50, max=150, step=10, qfun="qunif"), # "initial-number-wolves" = list(min=50, max=150, step=10, qfun="qunif"), # "grass-regrowth-time" = list(min=0, max=100, step=10, qfun="qunif"), # "sheep-gain-from-food" = list(min=0, max=50, step=10, qfun="qunif"), # "wolf-gain-from-food" = list(min=0, max=100, step=10, qfun="qunif"), # "sheep-reproduce" = list(min=0, max=20, step=5, qfun="qunif"), # "wolf-reproduce" = list(min=0, max=20, step=5, qfun="qunif")), # constants = list("model-version" = "\"sheep-wolves-grass\"", # "show-energy?" = "false")) ## ----eval=FALSE--------------------------------------------------------------- # nl@simdesign <- simdesign_lhs(nl, samples=500, nseeds=1, precision=3) ## ----eval=FALSE--------------------------------------------------------------- # library(future) # plan(multisession) # results <- run_nl_all(nl, split=10) ## ----eval=FALSE--------------------------------------------------------------- # setsim(nl, "simoutput") <- results # saveRDS(nl, file.path(nl@experiment@outpath, "lhs.rds")) ## ----eval=FALSE--------------------------------------------------------------- # library(tidyverse) # input <- getsim(nl, "siminput") %>% # Take input parameter matrix # dplyr::select(names(getexp(nl, "variables"))) %>% # Select variable parameters only # dplyr::rename_all(~str_replace_all(., c("-" = "_", "\\s+" = "_"))) # Remove - and space characters. # # output <- getsim(nl, "simoutput") %>% # Take simulation output # dplyr::group_by(`random-seed`, siminputrow) %>% # Group by random seed and siminputrow # dplyr::summarise_at(getexp(nl, "metrics"), list(mean=mean, sd=sd)) %>% # Aggregate output # dplyr::ungroup() %>% # Ungroup # dplyr::select(-`random-seed`, -siminputrow) %>% # Only select metrics # dplyr::rename_all(~str_replace_all(., c("-" = "_", "\\s+" = "_", "\\[" = "_", "\\]" = "_", "=" = ""))) # Remove - and space characters. # # # Perform pcc and src for each output separately (map) # pcc.result <- purrr::map(names(output), function(x) sensitivity::pcc(X=input, y=output[,x], nboot = 100, rank = FALSE)) # src.result <- purrr::map(names(output), function(x) sensitivity::src(X=input, y=output[,x], nboot = 100, rank = FALSE)) ## ----eval=FALSE--------------------------------------------------------------- # plot(pcc.result[[1]]) ## ----eval=FALSE--------------------------------------------------------------- # pcc.result.tidy <- purrr::map_dfr(seq_along(pcc.result), function(x) { # pcc.result[[x]]$PCC %>% # tibble::rownames_to_column(var="parameter") %>% # dplyr::mutate(metric = names(output)[x]) # }) # # ggplot(pcc.result.tidy) + # coord_flip() + # facet_wrap(~metric) + # geom_point(aes(x=parameter, y=original, color=metric)) + # geom_errorbar(aes(x=parameter, ymin=`min. c.i.`, ymax=`max. c.i.`, color=metric), width=0.1) # # src.result.tidy <- purrr::map_dfr(seq_along(src.result), function(x) { # src.result[[x]]$SRC %>% # tibble::rownames_to_column(var="parameter") %>% # dplyr::mutate(metric = names(output)[x]) # }) # # ggplot(src.result.tidy) + # coord_flip() + # facet_wrap(~metric) + # geom_point(aes(x=parameter, y=original, color=metric)) + # geom_errorbar(aes(x=parameter, ymin=`min. c.i.`, ymax=`max. c.i.`, color=metric), width=0.1)