NetLogo的两种自我参照

NetLogo的两种自我参照,netlogo,Netlogo,我想在海龟的变量Turtlesicanse中添加海龟的代理集,该变量取决于海龟的属性。例如,在一个应用程序中,我只想将海龟本身添加到TurtlesICanSee中,在另一个应用程序中,我想添加两个海龟(如果有)与相邻的who编号(海龟自己的who编号+或-1) 如果我能用世界卫生组织的数字找出第一个申请,我想我可以把它扩展到第二个申请。然而,我不知道第一个 我试过了 询问海龟[ 用[who=([who]of self)]设置荨麻疹我能看见海龟。 ] 但这让我看到的每一只海龟的脸上都充满了每一只海

我想在海龟的变量Turtlesicanse中添加海龟的代理集,该变量取决于海龟的属性。例如,在一个应用程序中,我只想将海龟本身添加到TurtlesICanSee中,在另一个应用程序中,我想添加两个海龟(如果有)与相邻的who编号(海龟自己的who编号+或-1)

如果我能用世界卫生组织的数字找出第一个申请,我想我可以把它扩展到第二个申请。然而,我不知道第一个

我试过了

询问海龟[
用[who=([who]of self)]设置荨麻疹我能看见海龟。
]

但这让我看到的每一只海龟的脸上都充满了每一只海龟

我想我明白为什么;NetLogo认为,我希望每只海龟都有与自身相同的who编号(x),即每只海龟。但我没有。对于每只海龟x,我想要每只海龟y的who编号与x相同


有人能帮我吗?请注意,第一个应用程序需要的解决方案可以推广到第二个应用程序。因此,任何向海龟自身变量中添加海龟的方法都行不通。我需要一种涉及世卫组织的自我介绍形式(或者一个反对这样做的好理由,我想,但最好是前者)

您的代码只需稍作修改即可工作,如下所示:

ask turtles [ set TheTurtlesICanSee turtles with [who = [who] of myself] ]
注意用
self
替换
self
;有一个不同的解释

但实际上没有必要涉及世卫组织的数字。几乎没有必要在NetLogo中使用who编号;几乎总是有更简单、更直接的解决方案。更简单的解决方案是:

ask turtles [ set TheTurtlesICanSee turtles with [self = myself] ]
但实际上根本没有必要将
一起使用。我们可以使用
海龟集
直接构建所需的代理集:

ask turtles [ set TheTurtlesICanSee (turtle-set self) ]
这是我推荐的解决方案,为了清晰和简洁,但也因为它会运行得更快,因为它不需要像基于的解决方案那样迭代所有海龟的集合