Netlogo:变量有时列表有时数字,结果出错
我有一个记者,当我运行它的时候,它工作得很好,但当我添加了一个条件时,它却错了 我所有的海龟都有两个称为Netlogo:变量有时列表有时数字,结果出错,netlogo,agent-based-modeling,Netlogo,Agent Based Modeling,我有一个记者,当我运行它的时候,它工作得很好,但当我添加了一个条件时,它却错了 我所有的海龟都有两个称为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))
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]
[item 0 var_a]给出了一个列表而不是一个数字
有什么想法吗?海龟边界
是以单个代理作为其参数编写的,但是带有max的返回一个代理集。在将p1指定给海龟边界之前,您可以使用原语中的一个,将代理集转换为代理
to condition
let p1 turtles with-max [item 0 var_a]
turtle-bounds one-of p1
end
或者,您可以在turtlebounds
中检查p
,查看它是否是代理集
if is-agentset? p [set p one-of p]
并在那里进行转换,尤其是在其他情况下,turtle bounds
可能被馈送一个代理集而不是代理。turtle bounds
以单个代理作为其参数,但with max
返回一个代理集。然而,我不确定为什么在agentset上运行turtle bounds
会产生这种特殊的错误。如果在to condition
中,使用p1
中的一个将代理集简化为代理,会发生什么情况?顺便说一句,p1可以有多个代理吗?嗨,查尔斯,谢谢你的评论。我尝试了你的方法,它确实有效:)。理论上,p1可能有不止一个代理,但由于var_1是随机分配的,我认为max应该只选择一个。我不是专家,但可能是turtles
总是将代理集标记为一个列表,即使只选择了一个,因此在这种情况下,。。。如果你想键入答案,请随意键入,否则我将自己键入。谢谢