NetLogo - 使用BehaviorSpace获取所有海龟位置作为每次重复的结果

2023-12-25

我正在使用BehaviorSpace 使用不同的参数运行模型数百次。但我需要知道所有海龟的位置,而不仅仅是海龟的数量。我怎样才能用BehaviorSpace实现它?

目前,我通过以下代码将结果输出到 csv 文件中:

to-report get-locations
  report (list xcor ycor)
end

to generate-output
  file-open "model_r_1.0_locations.csv"
  file-print csv:to-row get-locations
  file-close
end

但所有结果都弹出到同一个 csv 文件中,所以我无法说出每次运行的情况。


赛斯的合并建议behaviorspace-run-number http://ccl.northwestern.edu/netlogo/docs/dict/behaviorspace-run-number.html在你的文件名中csv输出是一种选择。它允许您将该文件与主BehaviorSpace 输出文件中的摘要数据相关联。

另一种选择是将报告者列表作为“度量”包含在行为空间实验定义中。例如,在你的情况下:

map [ t -> [ xcor ] of t ] sort turtles
map [ t -> [ ycor ] of t ] sort turtles

然后,您可以用您最喜欢的数据分析语言“手动”解析结果列表。我之前在 Julia 中使用过以下函数:

parselist(strlist, T = Float64) = parse.(T, split(strlist[2:end-1]))

我确信您可以轻松地用 Python 或 R 或​​您正在使用的任何语言编写一些等效代码。

在上面的示例中,我输出了单独的列表xcorycor海龟。您还可以输出单个“列表列表”,但解析会更加棘手。


编辑:如何使用csv延伸和R

巧合的是,我今天必须为另一个项目做类似的事情,并且我意识到将csv扩大 https://ccl.northwestern.edu/netlogo/docs/csv.htmlR 可以使这变得非常容易。

总体思路如下:

  • 在 NetLogo 中,使用csv:to-string https://ccl.northwestern.edu/netlogo/docs/csv.html#csv:to-string将列表数据编码为字符串,然后将该字符串直接写入BehaviorSpace 输出中。

  • 在 R 中,使用purrr::map https://purrr.tidyverse.org/reference/map.html and readr::read_csv https://readr.tidyverse.org/reference/read_delim.html, 其次是tidyr::unnest https://www.rdocumentation.org/packages/tidyr/versions/0.8.1/topics/unnest,将所有内容解压到一个整洁的“每行一个观察”数据框中。

换句话说:我们喜欢 CSV,所以我们将 CSV 放入我们的 CSV 中,以便我们可以在解析时进行解析。

这是一个完整的例子。假设我们有以下 NetLogo 模型:

extensions [ csv ]

to setup
  clear-all
  create-turtles 2 [ move-to one-of patches ]
  reset-ticks
end

to go
  ask turtles [ forward 1 ]
  tick
end

to-report positions
  let coords [ (list who xcor ycor) ] of turtles
  report csv:to-string fput ["who" "x" "y"] coords
end

然后,我们使用我们的方法定义以下小型行为空间实验,仅重复两次,时间限制为两次positions记者作为输出:

处理这个问题的 R 代码非常简单:

library(tidyverse)

df <- read_csv("experiment-table.csv", skip = 6) %>%
  mutate(positions = map(positions, read_csv)) %>%
  unnest()

结果是以下数据框,一切整洁:

> df
# A tibble: 12 x 5
   `[run number]` `[step]`   who      x        y
            <int>    <int> <int>  <dbl>    <dbl>
 1              1        0     0  16     10     
 2              1        0     1  10     -2     
 3              1        1     1   9.03  -2.24  
 4              1        1     0 -16.0   10.1   
 5              1        2     1   8.06  -2.48  
 6              1        2     0 -15.0   10.3   
 7              2        0     1 -14      1     
 8              2        0     0  13     15     
 9              2        1     0  14.0   15.1   
10              2        1     1 -13.7    0.0489
11              2        2     0  15.0   15.1   
12              2        2     1 -13.4   -0.902 

朱莉娅也有同样的事情:

using CSV, DataFrames
df = CSV.read("experiment-table.csv", header = 7)
cols = filter(col -> col != :positions, names(df))
df = by(df -> CSV.read(IOBuffer(df[:positions][1])), df, cols)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NetLogo - 使用BehaviorSpace获取所有海龟位置作为每次重复的结果 的相关文章

随机推荐

  • 逐行扫描谷歌文档

    所以基本上 我尝试使用 node js 扫描 google 文档 然后如果 ROBLOX id 在那里 它就会跟踪它 当它跟踪它时 如果它加入了 id 列表中的某个组 它就会自动将其放逐 有什么帮助吗 我在逐行扫描谷歌文档时有点卡住了 我不
  • 如何在创建文件之前测试文件是否存在

    我想看看文件是否存在 如果它不存在 那么我想创建它 顺便说一句 我正在使用Linux 你不能可靠地做到这一点 在您检查文件是否存在和创建文件之间 另一个进程可能会创建它 您应该继续创建该文件 根据您尝试执行的较大操作 如果文件已存在 您可能
  • 子div高度与父div高度不同

    我有一个7divs包裹在 3divs 除第一个之外的所有div被设置为width 0 并且它们都设置为inline block 最外面的div有一个设定的高度166px 结果出来了 独生子 7 divs你看 是第一个 问题是 第三个包装器
  • 如何使用ProxyPass通过Express提供静态文件?

    我正在使用 Apachemod proxy使用 Express 为我的 Node 应用程序提供服务 ProxyPass nodeapp http localhost 3000 ProxyPassReverse nodeapp http lo
  • 使用 MATLAB 解析 HTML 中的锚点 URL,帮助快速

    我有严格的时间限制 我真的需要一个正则表达式来解析这种类型的锚点 它们都是这种格式 a href 20120620 0512 c2 1024 jpg 20120620 0512 c2 102 gt a 对于网址 20120620 0512
  • 使用 xcode 6.1 (OSX) 的 Swift 中的 NSTextField 出现问题

    我开始使用 Swift 但没有使用 Objective C 有人可以教我如何获取和设置NSTextField在 OSX 下使用 xcode 6 1 的 Swift 中 您获取并设置一个值NSTextField与stringValue财产 例
  • 登录控制:WebForms UnobtrusiveValidationMode 需要“jquery”的 ScriptResourceMapping。添加名为 jquery 的 ScriptResourceMapping

    我正在开发一个 ASP NET 网站 我有一个没有任何控制的网络表单 当我向此表单添加登录控件并在浏览器中查看此表单时 显示错误 WebForms UnobtrusiveValidationMode 需要 jquery 的 ScriptRe
  • qt moc.exe错误

    我正在使用 QT Creator 1 3 1 并尝试编译 但出现此错误 请帮我摆脱它 mingw32 make 1 Leaving directory C Documents and Settings eyalk My Documents
  • 向量迭代器不兼容

    我目前正在开发 C 图形库 现在陷入了运行时在调试模式下出现断言错误的问题 我还在这里查看了其他一些问题 但没有一个问题和答案能引导我找到解决方案 在阅读了一些论坛后 我的印象是 发生此错误是因为一旦向量内容发生更改 迭代器就会变得无效 例
  • 使用 ActiveMerchant 自定义 Paypal Express 的评论页面

    我正在使用 ActiveMerchant 让我的 Rails 应用程序能够访问 Paypal 的 Express Checkout 我想在评论页面上添加订单详细信息 如下所述 这可以做到吗 目前 我的控制器代码如下所示 def paypal
  • 如果函数是对象,那么函数体在哪里?

    如果函数是对象 那么函数体在哪里 让我澄清一下我所困惑的事情 函数就是对象 好吧 我可以将对象视为由字符串键和任意类型值组成的哈希映射 我可以做这个 function Square size Rectangle call this size
  • 构建没有依赖项的 MSBuild 目标

    有什么方法可以告诉 MSBuild 4 0 构建目标 但忽略任何依赖项 我只想建立这个目标本身 没有别的 我想重申 EMP 的解决方案 由于我的名声微薄 我不能投票给他 避免 MSBuild 重建项目文件中列出的所有依赖项的默认行为的正确方
  • 避免当一个块出现故障时关闭整个数据流网络

    我在用数据流Ex https github com gridsum DataflowEx我想知道如果抛出异常 如何避免关闭整个数据流 我有一个系统 任务会随机进入 我希望网络记录故障 放弃该特定任务并继续执行其他任务 在阅读有关 TPL 和
  • 如何在android中使用不同的父节点解析xml

    在我的 xml 文件中 我有两个或多个父节点 例如 父节点pizza 属性是1 Veg Pizza 父节点汉堡 属性是1个素食汉堡 每当用户点击披萨时listviewitem 那么用户应该只能查看另一个活动中的披萨项目列表listview
  • 使用 python 3 读取十六进制字符并将其转换为 utf-8

    我有一个包含以下字符串的文件 data txt M xc3 xbchle x0astra xc3 x9fe 现在需要读取该文件并将十六进制代码解释为 utf 8 到目前为止 这是我的尝试 usr bin python3 import os
  • 为什么 STL 文件需要法向量?

    STL 是最流行的 3D 打印 3D 模型文件格式 它记录构成 3D 形状的三角形表面 我阅读了 STL 文件格式的规范 这是一种相当简单的格式 每个三角形由12个浮点数表示 前 3 个定义法向量 接下来的 9 个定义三个顶点 但这里有一个
  • Windows 上的 PEAR:如何更改 pear.ini 位置

    我正在尝试将 PEAR 包安装到 Windows 7 64 位上最近安装的 XAMPP PHP PHP 5 3 1 中 安装新软件包失败 因为 PEAR 尝试访问c windows pear ini而不是现有的c path to xampp
  • DELETE查询性能

    原始查询 delete B from TABLE BASE B TABLE INC I where B ID I IDID and B NUM I NUM 上述查询的性能统计数据 Response Time SumCPU ImpactCPU
  • 如果一项任务由于触发规则 ALL_DONE 而失败,则 DAG 标记为“成功”

    我有以下包含 3 个任务的 DAG start gt special task gt end 中间的任务可以成功也可以失败 但是end 必须始终被执行 想象这是一个干净地关闭资源的任务 为此 我使用了触发规则 https airflow a
  • NetLogo - 使用BehaviorSpace获取所有海龟位置作为每次重复的结果

    我正在使用BehaviorSpace 使用不同的参数运行模型数百次 但我需要知道所有海龟的位置 而不仅仅是海龟的数量 我怎样才能用BehaviorSpace实现它 目前 我通过以下代码将结果输出到 csv 文件中 to report get