Netlogo:在海龟列表中搜索

Netlogo: Search in a list of turtles

假设我有一个海龟列表,列表中的每只海龟都有自己的数值变量 foo。如何在不迭代整个列表的情况下优雅地提取存储在 foo 中的最低值的乌龟?

提前致谢!

埃里克

这在一定程度上取决于上下文(列表的结构、所有者、构建方式和频率),但通常我会将列表保存在它自己的 global/turtle-owned 变量中然后使用原语 'min-one-of' 来查询它。如果您提供一个可重现的示例,我可以帮助您将其应用到代码中,但效果是

globals [foo-list] 
;make foo-list;
let small_foo min-one-of [foo-list] 
show small_foo

如果你想要列表中foo值最低的海龟,那么你可以按照foo值对海龟列表进行排序,然后挑选出第一只海龟在列表中。对于 NetLogo v6.0 来说(假设 foo 是海龟自己的变量,turtle-list 是你的海龟列表):

first sort-by[[t1 t2] -> [foo] of t1 < [foo] of t2] turtle-list

查尔斯

当你说你有 'list' 海龟时,你实际上是指数据类型列表,还是你真的有一个代理集(这是一组海龟更常见的 NetLogo 结构)?如果您有代理集,请查看原语 with-min 的字典。您将需要一些结构,例如 let small_foo agentsetname with-min [foo]