Netlogo:变量有时列出有时数字,导致错误

时间:2019-07-11 14:06:19

标签: netlogo agent-based-modeling

我有一个记者,在我运行它时可以很好地工作,但是在添加条件时却会出错。

我所有的海龟都有两个三维向量,分别为var_avar_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给出了列表而不是数字。

有什么想法吗?

1 个答案:

答案 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] 可能会被提供给代理集而不是代理。