首页 > 解决方案 > Netlogo:变量有时列出有时编号,导致错误

问题描述

我有一个记者在我运行它时工作正常,但在我向它添加条件时却出错了。

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给出一个列表而不是一个数字。

有什么想法吗?

标签: netlogoagent-based-modeling

解决方案


turtle-bounds被编写为将单个代理作为其参数,但with-max返回一个代理集。one-of在将p1 赋予 之前,您可以使用原语将代理集转换为代理turtle-bounds

to condition
    let p1 turtles with-max [item 0 var_a]
    turtle-bounds one-of p1
end

或者,您可以签pturtle-bounds以查看它是否是代理集

if is-agentset? p [set p one-of p]

并在那里进行转换,尤其是在其他情况下turtle-bounds可能会被提供一个代理集而不是一个代理。


推荐阅读