netlogo:比较两个不同海龟的变量
netlogo: comparing variable of two different turtle
我正在尝试比较同一补丁中 "capabilities" 和 "prevalues" 的变量。如果值上的数字 = 资源列表上的数字之一,则执行某些操作。
这就是我所拥有的:
capabilities-own [ resource ]
prevalues-own [ value ]
to setup
clear-all
......
ask capabilities
[ set resource (list 1 2)]
ask prevalues
[set value ((random 4) + 1)]
....
reset-ticks
end
to compare
ask capabilities-here
[if any? prevalues-here
[ ask one-of prevalues-here
[ ifelse ( value = one-of resource)
[ move-to one-of patches with [pcolor = red] ]
[die]
]]]
但是我得到了
运行时错误:PREVALUES 品种不拥有变量 RESOURCE
我也尝试使用其他代码,例如:
to compare
ask capabilities-here
[ ifelse prevalues-here with [value] = one-of [resource] of myself
[ move-to one-of patches with [pcolor = red] ]
[die]]
end
结果运行时错误:符合预期true/false...
感谢您的帮助
谢谢
您的行 ifelse (value = one-of resource)
导致了第一个问题。 resource 是 capabilities 的代理变量,但是你没有告诉 NetLogo 哪个 capabilities 的资源来比较预值的值。乌龟知道它自己的代理变量和它所在的补丁的补丁变量,但是如果你想从另一只乌龟那里得到什么,你必须明确地说出来。
此外,您是希望它从资源列表中随机 select 一个值,还是只想检查该值是否出现在列表中的某处?
我想你想要这样的东西(未测试):
to compare
ask capabilities-here
[ if any? prevalues-here
[ ask one-of prevalues-here
[ ifelse member? value ([resource] of myself)
[ move-to one-of patches with [pcolor = red] ]
[ die ]
]]]
这里假设您想要检查它是否在列表中,我认为这就是您第一段的意思。如果您想从列表中随机 select 一个项目并检查它是否匹配,您将需要更多类似的东西:
[ let this-resource one-of [resource] of myself
ask one-of prevalues-here
[ ifelse value = this-resource
我正在尝试比较同一补丁中 "capabilities" 和 "prevalues" 的变量。如果值上的数字 = 资源列表上的数字之一,则执行某些操作。 这就是我所拥有的:
capabilities-own [ resource ]
prevalues-own [ value ]
to setup
clear-all
......
ask capabilities
[ set resource (list 1 2)]
ask prevalues
[set value ((random 4) + 1)]
....
reset-ticks
end
to compare
ask capabilities-here
[if any? prevalues-here
[ ask one-of prevalues-here
[ ifelse ( value = one-of resource)
[ move-to one-of patches with [pcolor = red] ]
[die]
]]]
但是我得到了 运行时错误:PREVALUES 品种不拥有变量 RESOURCE
我也尝试使用其他代码,例如:
to compare
ask capabilities-here
[ ifelse prevalues-here with [value] = one-of [resource] of myself
[ move-to one-of patches with [pcolor = red] ]
[die]]
end
结果运行时错误:符合预期true/false...
感谢您的帮助
谢谢
您的行 ifelse (value = one-of resource)
导致了第一个问题。 resource 是 capabilities 的代理变量,但是你没有告诉 NetLogo 哪个 capabilities 的资源来比较预值的值。乌龟知道它自己的代理变量和它所在的补丁的补丁变量,但是如果你想从另一只乌龟那里得到什么,你必须明确地说出来。
此外,您是希望它从资源列表中随机 select 一个值,还是只想检查该值是否出现在列表中的某处?
我想你想要这样的东西(未测试):
to compare
ask capabilities-here
[ if any? prevalues-here
[ ask one-of prevalues-here
[ ifelse member? value ([resource] of myself)
[ move-to one-of patches with [pcolor = red] ]
[ die ]
]]]
这里假设您想要检查它是否在列表中,我认为这就是您第一段的意思。如果您想从列表中随机 select 一个项目并检查它是否匹配,您将需要更多类似的东西:
[ let this-resource one-of [resource] of myself
ask one-of prevalues-here
[ ifelse value = this-resource