我如何使用原语no-patches no-links no-turtles?

时间:2015-12-01 00:33:18

标签: netlogo

NetLogo字典包含这些条目而没有示例: no-patches no-links no-turtles

所有描述都是"报告空补丁/链接/乌龟代理集。"

有人可以提供如何使用它们的示例吗?

1 个答案:

答案 0 :(得分:4)

你几乎从不需要它们。通常,他们可以初始化您将在迭代或随着时间推移构建的代理集。

例如,假设我们有一个列出一堆补丁坐标的文件,如下所示:

15 7
-3 18
11 -2

假设我们想要获得相应的补丁。你可以这样做:

file-open "my-patch-data.txt"
let specified-patches no-patches
while [ not file-at-end? ] [
  let x file-read
  let y file-read
  set specified-patches (patch-set (patch x y) specified-patches)
]

然而,大多数情况下,使用NetLogo的代理集查询原语(例如withofn-of等等要容易得多)构建代理集,所以你不需要太多。

编辑:正如Nicolas指出的那样,通过构建补丁列表然后将其转换为代理集来实现这一点实际上更快:

file-open "my-patch-data.txt"
let specified-patch-list []
while [ not file-at-end? ] [
  let x file-read
  let y file-read
  set specified-patch-list lput (patch x y) specified-patch-list
]
let specified-patches patch-set specified-patch-list

我确实想到了另一个例子。假设你的每只海龟都需要跟踪他们四处走动时遇到的海龟。您可以将它存储在海龟自己的变量中作为乌龟集。不过,你需要以某种方式初始化这群海龟。这是no-turtles的用途。