NetLogo 3D:通过 BehaviorSpace 在 运行 和 运行 结束时打印多个海龟变量以输出

NetLogo 3D: Printing multiple turtle variables to output at end of run and running through BehaviorSpace

我试图找到一种有效的方法,将随机选择的 100 只海龟中的大量海龟变量 (20+) 输出到输出字段或文本文件中。到目前为止我有:

turtles-own [
variable1
variable2
variable3
variable4
.
.
.
]

to go 
if (ticks < 1) [reset-timer]
ticks
if count turtles >= end-population [
ask n-of 100 turtles [
output-show variable1
output-show variable2
output-show variable3
output-show variable4
]

然后我在单列中得到每个单元格的变量列表:

1

我的问题是如何在输出或文本文件的同一行中获取这些变量值,以便我可以轻松地处理这些数据?此外,我将如何在 BehaviorSpace 中实现它?使用相同的命令:

ask n-of 100 turtles [
output-show variable1
output-show variable2
output-show variable3
output-show variable4
]

... 在最终命令字段中不会导致任何这些数据显示在输出文件中。

谢谢!

有多种方法可以做到这一点 - 例如,如果您想手动输出您的值,csv 扩展是很好的选择。如果您想在 BehaviorSpace 中快速完成此操作,我通常采用以下方法。

我假设您每次都需要相同的 100 只海龟的变量值,而不是为每个变量采样新的 100 只海龟。所以,我认为最简单的方法是为每个感兴趣的变量创建一个 globals 变量,然后根据需要创建一个程序来填充这些列表。例如,使用此设置:

globals [ a-final b-final c-final ]

turtles-own [ a b c ]

to setup
  ca
  crt 100 
  reset-ticks
end

to go
  ask turtles [
    set a random 100
    set b one-of [ "Beep" "Boop" ]
    set c precision random-float 10 2
  ]
end

为了这个玩具版本,海龟的每个滴答声都只是随机更新它们的 abc 变量。然后,你有一个程序从你的总人口中抽取一定数量的海龟(这里是 10 只)并更新存储列表:

to output
  let selected-turtles n-of 10 turtles 
  set a-final [a] of selected-turtles
  set b-final [b] of selected-turtles
  set c-final [c] of selected-turtles
end

现在,只要该输出在您的 BehaviorSpace 实验结束之前运行,您就可以将这些列表输出为字符串,您可以使用 R 或类似软件轻松分离和清理它们。例如,如果您有这样的设置:

您将得到如下所示的输出: