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
我希望这有帮助 解释得很好!非常感谢你