我有一个记者,在我运行它时可以很好地工作,但是在添加条件时却会出错。
我所有的海龟都有两个三维向量,分别为var_a
和var_b
。当我为整个世界运行此程序时,没有问题:
to-report turtle-bounds [p]
let p-lower (([item 0 var_a] of p) - ([item 0 var_b] of p))
let p-upper (([item 0 var_a] of p) + ([item 0 var_b] of p))
let bounds list p-lower p-upper
report bounds
end
但是当我有条件地运行它时,
to condition
let p1 turtles with-max [item 0 var_a]
turtle-bounds p1
end
我得到以下信息:
- 期望输入为数字,但获得列表[0.9967359117803329]。
哪个引用的是var_a的值,这意味着我的限制使[item 0 var_a] of p
给出了列表而不是数字。
有什么想法吗?
答案 0 :(得分:2)
message_uuid
时,将单个代理作为其参数,但是turtle-bounds
返回一个代理集。在将p1赋予with-max
之前,可以使用one-of
原语将agentset变成agent。
turtle-bounds
或者,您可以检查to condition
let p1 turtles with-max [item 0 var_a]
turtle-bounds one-of p1
end
中的p
来查看它是否是代理集
turtle-bounds
并在那里进行转换,尤其是在其他情况下,if is-agentset? p [set p one-of p]
可能会被提供给代理集而不是代理。