gpt4 book ai didi

NetLogo的两种自引用

转载 作者:行者123 更新时间:2023-12-02 04:37:56 27 4
gpt4 key购买 nike

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

如果我可以使用 who-numbers 找出第一个应用程序,我想我可以将其扩展到第二个应用程序。但是,我无法弄清楚第一个。

我试过了

问海龟[ 用 [who = ([who] of self)] 设置 TheTurtlesICanSee 海龟 ]

但这会用每只海龟填充每只海龟的 TheTurtlesICanSee。

我想我明白为什么; NetLogo 认为我想要每只乌龟 x 都具有与它自己相同的 who-number (x),即每只乌龟。但我没有。对于每只乌龟 x,我希望每只乌龟 y 都具有与 x 相同的 who-number。

谁能帮我解决这个问题?请注意,第一个应用程序需要的解决方案可以推广到第二个应用程序。因此,任何将海龟添加到它自己的变量之一的方法都行不通。我需要一种涉及谁的 self 参照形式(或者我猜是反对这样做的一个很好的论据,但最好是前者)。

最佳答案

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

ask turtles [ set TheTurtlesICanSee turtles with [who = [who] of myself] ]

注意将 myself 替换为 selfhttp://ccl.northwestern.edu/netlogo/docs/dictionary.html#myself有差异的解释。

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

ask turtles [ set TheTurtlesICanSee turtles with [self = myself] ]

但实际上根本没有必要使用with。我们可以使用 turtle-set 直接构建所需的代理集:

ask turtles [ set TheTurtlesICanSee (turtle-set self) ]

这是我推荐的解决方案,为了清晰和简洁,但也因为它会运行得更快,因为它不涉及迭代所有海龟的集合,因为基于 with解决方案。

关于NetLogo的两种自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536073/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com