netlogo文档提供以下示例
show count turtles-here
=> 10
show count other turtles-here
=> 9
文档说"其他"命令排除"这个"剂。我的问题是......哪个代理商?似乎这个命令可以在观察者上下文中运行,因此没有代理。或者至少在这个例子中,上下文可以是补丁上下文,在这种情况下,"其他"会排除所有的海龟吗?是否有某种机制来为特定代理设置上下文?也许:
ask agent [
show count other turtles-here
]
在哪种情况下,为什么NetLogo代码片段不包括那个?
答案 0 :(得分:1)
被排除的代理人是被询问的代理人。 ask
,ask-concurrent
和of
设置了上下文。例如,
ask turtle 0 [ show count other turtles ]
计算除turtle 0
以外的所有海龟。
ask turtles [ show count other turtles ]
单独迭代每只乌龟。在每次迭代中,other
排除当前的乌龟。
other
永远不会排除其他类型的代理。也就是说,
ask patch 0 0 [ show count other turtles ]
由于没有一只海龟是patch 0 0
,只计算所有海龟。
当前上下文的代理可以用self
引用。 other
排除的代理将始终为self
。因此,
ask agents [ show count other agents ]
完全等同于
ask agents [
let this-agent self
show count agents with [ self != this-agent ]
]
(请注意,使用myself
可以更简洁地表达这一点,但由于myself
比other
更令人困惑,更糟糕的是,我在这里避免使用<) / p>
似乎这个命令可以在观察者上下文中运行,所以没有代理。
这实际上是一个错误!我在这里创建了一个问题:https://github.com/NetLogo/NetLogo/issues/757