If statement netlogo中的逻辑问题

If statement netlogo中的逻辑问题,if-statement,conditional-statements,netlogo,If Statement,Conditional Statements,Netlogo,我在写这个条件: if [estado] of (transmilenios with [xcor = 0.5]) = "vacio" [] 我正在查看netlogo中的结果,并询问观察者: [estado] of (transmilenios with [xcor = 0.5]) 答复:[“vacio”] 然后我问: [estado] of (transmilenios with [xcor = 0.5]) = "vacio" 答案是错误的 我头痛,有人能帮我吗 我尝试将变量estad

我在写这个条件:

if [estado] of (transmilenios with [xcor = 0.5]) = "vacio" []
我正在查看netlogo中的结果,并询问观察者:

[estado] of (transmilenios with [xcor = 0.5]) 
答复:[“vacio”]

然后我问:

[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]
是一个列表。这里的问题是将列表与单个值进行比较。当您在agentset中使用的时,就像您在[estado]的中使用(transmilenios with[xcor=0.5])时一样,NetLogo会返回所有值的列表。即使查询的代理集中只有一个代理,它也会返回一个列表。如何修复此问题可能取决于您正在建模的内容。最简单的修复方法可能是只使用
其中一个
作为解决方法:

[estado]of(带有[xcor=0.5]的transmilenios之一)=“vacio”

但是,如果您试图使用不同的值来评估多个
transmilenios
,这将不起作用,因为您一次只能访问单个海龟的
estado

对于一个工作示例,考虑以下设置:

turtles-own [ estado ]

to setup
  ca
  crt 5 [ set estado one-of [ "vacio" "lleno" ] ]
  reset-ticks
end
如果我
打印海龟的[estado]
我会得到如下输出:
[lleno-vacio lleno-lleno-vacio]
。因此,如果我将
[lleno-vacio lleno-lleno-vacio]
vacio
进行比较,那么答案显然是错误的

如果我改为
print[estado]其中一只海龟
我会得到
lleno
vacio
作为输出-因此对其中一只海龟的
print[estado]进行评估=“vacio”
将返回true或false


我希望这有帮助

解释得很好!非常感谢你