r - 运行具有确定性参数变化的 nlrx 模拟
问题描述
我想使用具有不同密度值的 nlrx 包运行简单的 netlogo fire 模型......但我不想随机但确定地(系统地)执行它,即从 0 到 100 变化密度,步长为 1,每个 10次:
10 倍,密度 0
10 倍,密度 1
10 倍,密度 2
...
10 倍,密度 99
10 倍,密度 100
我该怎么做?
谢谢!
解决方案
对于这些类型的模拟,您可以使用simdesign_distinct()
或simdesign_ff()
. simdesign_distinct()
您可以指定模拟的不同值(参见下面的示例)。如果您有多个变量,则每个值向量都需要具有相同的长度。然后第一次模拟将使用这些向量的所有第一个值,第二个所有第二个值等等。创建一个全simdesign_ff()
因子设计,只有当您有多个变量时才真正相关。对于一个变量,功能非常类似于simdesign_distinct()
但不同的是,您可以定义 min、max 和 step 来为每个变量自动创建一个值向量。下面是两个示例(我必须在度量槽中使用 ifelse-value(...) 以防止由 NetLogo 产生的密度值为 0 的除以零错误):
library(nlrx)
# Windows default NetLogo installation path (adjust to your needs!):
netlogopath <- file.path("C:/Program Files/NetLogo 6.1.0")
modelpath <- file.path(netlogopath, "app/models/Sample Models/Earth Science/Fire.nlogo")
outpath <- file.path("C:/out")
nl <- nl(nlversion = "6.1.0",
nlpath = netlogopath,
modelpath = modelpath,
jvmmem = 1024)
## Example 1: simdesign_distinct
nl@experiment <- experiment(expname="fire",
outpath=outpath,
repetition=1,
tickmetrics="true",
idsetup="setup",
idgo="go",
runtime=0,
metrics=c("ifelse-value (initial-trees > 0) [(burned-trees / initial-trees) * 100][0]"),
variables = list('density' = list(values=seq(0,100,1))),
constants = list())
#### use nseeds = 10 to simulate over 10 different random seeds (replicates)
nl@simdesign <- simdesign_distinct(nl, nseeds = 10)
#### Run simulations
results <- run_nl_all(nl)
## Example 2: Simdesign_ff
nl@experiment <- experiment(expname="fire",
outpath=outpath,
repetition=1,
tickmetrics="true",
idsetup="setup",
idgo="go",
runtime=0,
metrics=c("ifelse-value (initial-trees > 0) [(burned-trees / initial-trees) * 100][0]"),
variables = list('density' = list(min=0, max=100, step=1)),
constants = list())
#### use nseeds = 10 to simulate over 10 different random seeds (replicates)
nl@simdesign <- simdesign_ff(nl, nseeds = 10)
#### Run simulations
results <- run_nl_all(nl)
推荐阅读
- c - 函数循环后程序停止
- azure - 是否有使用 Powershell 从 Azure 的保管库中删除“备份项目”的方法?
- android - 我想说,“嘿谷歌,在 TestApp 上创建会议”是否可以在不打开应用程序的情况下进行
- java - 如何更新 DynamoDB 中的许多属性
- docker - Eureka 客户端无法使用 docker 连接到服务器
- html - 如何在 CSS 中制作一个类似节点的小圆圈
- sql-server - SQL Server 中的表设计
- r - Shiny 应用程序中的操作按钮使用来自用户的输入更新 url 中的查询
- azure-active-directory - 需要更新用户 Microsoft Outlook 上的联系人,他们真的需要 Active Directory 吗?
- excel - VBA:与 IE 中的 javascript 弹出窗口交互