对如何"其他"感到困惑适用于NetLogo

时间:2015-04-05 20:52:13

标签: netlogo

netlogo文档提供以下示例

show count turtles-here
=> 10
show count other turtles-here
=> 9

文档说"其他"命令排除"这个"剂。我的问题是......哪个代理商?似乎这个命令可以在观察者上下文中运行,因此没有代理。或者至少在这个例子中,上下文可以是补丁上下文,在这种情况下,"其他"会排除所有的海龟吗?是否有某种机制来为特定代理设置上下文?也许:

ask agent [
   show count other turtles-here
]

在哪种情况下,为什么NetLogo代码片段不包括那个?

1 个答案:

答案 0 :(得分:1)

被排除的代理人是被询问的代理人。 askask-concurrentof设置了上下文。例如,

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可以更简洁地表达这一点,但由于myselfother更令人困惑,更糟糕的是,我在这里避免使用<) / p>

  

似乎这个命令可以在观察者上下文中运行,所以没有代理。

这实际上是一个错误!我在这里创建了一个问题:https://github.com/NetLogo/NetLogo/issues/757