NetLogo AgentSet减法

时间:2012-12-15 17:17:43

标签: netlogo

我收到了错误消息:

MEMBER? expected input to be a string or list or agentset but got the number 0 instead.

在NetLogo代码运行期间:

to find-flockmates  ;; turtle reporter
  ;; latch on to the nearby birds
  set flockmates-infront other birds in-cone vision cone-infront-degree
  set flockmates-sidewise other birds in-cone vision cone-sidewise-degree

  ;; agentset substraction
  if (count flockmates-infront > 0)[
    set flockmates-sidewise (flockmates-sidewise with [not member? self flockmates-infront])  
    ] 
end

有人可以告诉我我做错了什么,或者为两个代理集减去了另一种可能的解决方案吗?

1 个答案:

答案 0 :(得分:4)

我明白了!从你发布的初始代码示例中可能已经猜到了,我起初并没有意识到flockmates-sidewiseflockmates-infront是品种变量。

因此,在这一行:

set flockmates-sidewise (flockmates-sidewise with [not member? self flockmates-infront])

... flockmates-infront是指执行with块的代理的品种变量,不是运行find-flockmates报告者的代理的变量。 (如果尚未初始化那个,那么很可能是0。)你想要的是:

set flockmates-sidewise (flockmates-sidewise with [
    not member? self [flockmates-infront] of myself
])

myself的意思是“要求我做我现在正在做的事的乌龟或补丁。”

我猜你在创建少于10只鸟的时候没有收到错误,因为在这种情况下你的if完全阻止了该行的执行。