如何 'ask' 列表中的所有海龟
How to 'ask' all turtles in a list
我想使用 ask
遍历我所有的海龟,但我 不希望 顺序是随机的。我的解决方案是将所有海龟添加到一个列表中,按它们的 ID 排序,然后循环遍历该列表:
let sorted-turtles sort-on [who] turtles
foreach sorted-turtles [
x -> ask x [ ; x is the turtle
; do something
]
]
工作正常,但大大 减慢了我的模型。
我的问题是:这是要求所有海龟按照预先定义的顺序做某事的最佳方式吗?
我试过直接在列表中使用 ask
(例如 ask sorted-turtles [ print who ]
但 NetLogo 说 ask
需要一个代理集而不是列表。
提前致谢,
尼克
首先,您可以使用 sort turtles
而不是 sort-on [who] turtles
。它做同样的事情,但它更短且更惯用。不过不确定它是否更快(它可能对 一点 有点帮助)。
foreach sorted-turtles [ x -> ask x [ ... ] ]
模式应该足够快。成本高昂的是列表创建。
因此,要提高模型速度,您可以做的主要事情是将排序后的海龟列表存储在全局变量中,并重复使用该列表,而不是每次都重新排序。
这只会起作用,但是,如果您不经常创建 and/or 杀死海龟,那么您将不得不每次都重新创建排序列表。
我想使用 ask
遍历我所有的海龟,但我 不希望 顺序是随机的。我的解决方案是将所有海龟添加到一个列表中,按它们的 ID 排序,然后循环遍历该列表:
let sorted-turtles sort-on [who] turtles
foreach sorted-turtles [
x -> ask x [ ; x is the turtle
; do something
]
]
工作正常,但大大 减慢了我的模型。
我的问题是:这是要求所有海龟按照预先定义的顺序做某事的最佳方式吗?
我试过直接在列表中使用 ask
(例如 ask sorted-turtles [ print who ]
但 NetLogo 说 ask
需要一个代理集而不是列表。
提前致谢, 尼克
首先,您可以使用 sort turtles
而不是 sort-on [who] turtles
。它做同样的事情,但它更短且更惯用。不过不确定它是否更快(它可能对 一点 有点帮助)。
foreach sorted-turtles [ x -> ask x [ ... ] ]
模式应该足够快。成本高昂的是列表创建。
因此,要提高模型速度,您可以做的主要事情是将排序后的海龟列表存储在全局变量中,并重复使用该列表,而不是每次都重新排序。
这只会起作用,但是,如果您不经常创建 and/or 杀死海龟,那么您将不得不每次都重新创建排序列表。