Variables netlogo:比较两种不同海龟的变量
我试图在同一个补丁上比较“能力”和“PreValue”的变量。若值上的数字=资源列表上的数字之一,那个么做些什么。 这就是我所拥有的:Variables netlogo:比较两种不同海龟的变量,variables,compare,netlogo,Variables,Compare,Netlogo,我试图在同一个补丁上比较“能力”和“PreValue”的变量。若值上的数字=资源列表上的数字之一,那个么做些什么。 这就是我所拥有的: capabilities-own [ resource ] prevalues-own [ value ] to setup clear-all ...... ask capabilities [ set resource (list 1 2)] ask prevalues [set value ((random 4) + 1
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不拥有变量资源
我还尝试使用其他代码,如:
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
它导致运行时错误:预期为真/假
感谢你的帮助
谢谢您的线路ifelse(value=resource之一)
导致了第一个问题。resource是功能的代理变量,但您尚未告诉NetLogo要将prevalue的值与哪个功能的资源进行比较。海龟知道它自己的代理变量和它所在补丁的补丁变量,但是如果你想从另一只海龟那里得到什么,你必须明确地说出来
另外,您希望它从资源列表中随机选择一个值,还是只希望检查列表中某个位置出现的值
我认为您需要这样的产品(未经测试):
这假设你想检查它是否在列表中,这就是我认为你第一段的意思。如果您想从列表中随机选择一个项目并检查其是否匹配,则需要类似以下内容:
[ let this-resource one-of [resource] of myself
ask one-of prevalues-here
[ ifelse value = this-resource
非常感谢Jen。你对我帮助很大。我使用你的第二个代码是为了我的目的。我仍然得到运行时错误:PREVALUES不拥有变量资源。所以我对你的做了一点修改。而且效果很好[让此资源项(随机长度资源)资源'
项(随机长度资源)resource
可以简化为resource中的一个,谢谢@SethTisue。我尝试了你的建议。它会产生运行时错误。可能是因为变量之间的列表长度不同。@Seth-DUH!请随时修复我的代码directly@SethTisue对不起,我没有解释你的代码。你的代码也很好用~
[ let this-resource one-of [resource] of myself
ask one-of prevalues-here
[ ifelse value = this-resource