0

我试图找到一种有效的方法,将随机选择的 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
]

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

谢谢!

4

1 回答 1

2

有多种方法可以做到这一点 - 例如,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

为了这个玩具版本,海龟的每个滴答声只是随机更新它们的ab和变量。c然后,您有一个程序从总人口中抽取一定数量的海龟(此处为 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 或类似软件轻松地将其分离和清理。例如,如果您有如下设置:

在此处输入图像描述

您将获得类似于以下内容的输出:

在此处输入图像描述

于 2018-07-10T23:43:50.613 回答