我收到了错误消息:
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
有人可以告诉我我做错了什么,或者为两个代理集减去了另一种可能的解决方案吗?
答案 0 :(得分:4)
我明白了!从你发布的初始代码示例中可能已经猜到了,我起初并没有意识到flockmates-sidewise
和flockmates-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
完全阻止了该行的执行。