我写这个条件:
if [estado] of (transmilenios with [xcor = 0.5]) = "vacio" []
我正在看netlogo的结果,我问观察者:
[estado] of (transmilenios with [xcor = 0.5])
回答:[“空”]
然后我问:
[estado] of (transmilenios with [xcor = 0.5]) = "vacio"
答案是错误的。
我很头疼这个哈哈。有人能帮我吗?
我试图使用变量estado作为0/1。同样的答案
Estado = "vacio"/"lleno"
我也试过了
if [estado] of (transmilenios with [xcor = 0.5]) != "lleno"
但当estado =“lleno”时它会发生相同的情况
简而言之,[vacio]
不等于"vacio"
,因为[vacio]
是一个列表。这里的问题是您将列表与单个值进行比较。将of
与agentset一起使用时,就像使用[estado] of (transmilenios with [xcor = 0.5])
一样,NetLogo会返回所有值的列表。即使您在查询的代理程序集中只有一个代理程序,它也会返回一个列表。如何解决这个问题可能取决于你的建模。最简单的解决方法可能是使用one-of
作为解决方法:
[estado] of (one-of transmilenios with [xcor = 0.5]) = "vacio"
但是,如果您尝试使用transmilenios
的不同值来评估多个estado
,那么这将无效,因为您一次只能访问单个乌龟的estado
值。
有关工作示例,请考虑以下设置:
turtles-own [ estado ]
to setup
ca
crt 5 [ set estado one-of [ "vacio" "lleno" ] ]
reset-ticks
end
如果我print [estado] of turtles
我输出像:[lleno vacio lleno lleno vacio]
。所以,如果我将[lleno vacio lleno lleno vacio]
与vacio
进行比较,那么答案显然是错误的。
如果我改为print [estado] of one-of turtles
我得到lleno
或vacio
作为输出 - 所以评估print [estado] of one-of turtles = "vacio"
将返回true或false。
我希望有所帮助!