If statement 在NetLogo中使用带有代理集的if语句
NetLogo的新功能。我使用的是Fire简单示例,我添加了新的树,其颜色为pcolor=blue。我试图提出一个条件,即蓝色斑块只有在其周围的4个邻居也是红色的情况下才会变成红色 使用[pcolor=blue]询问补丁[ 设置颜色为红色 if(与[pcolor=red]>3的相邻4) ] 我犯了一个错误If statement 在NetLogo中使用带有代理集的if语句,if-statement,conditional-statements,netlogo,If Statement,Conditional Statements,Netlogo,NetLogo的新功能。我使用的是Fire简单示例,我添加了新的树,其颜色为pcolor=blue。我试图提出一个条件,即蓝色斑块只有在其周围的4个邻居也是红色的情况下才会变成红色 使用[pcolor=blue]询问补丁[ 设置颜色为红色 if(与[pcolor=red]>3的相邻4) ] 我犯了一个错误 “>预期此输入为代理、数字或字符串,但得到的是代理集”因此编写的代码存在一些小问题 首先,在NetLogo中,if命令后面必须跟一个命令块。因此,如果someCheck您不能执行命令,您必须执
“>预期此输入为代理、数字或字符串,但得到的是代理集”因此编写的代码存在一些小问题 首先,在NetLogo中,
if
命令后面必须跟一个命令块。因此,如果someCheck您不能执行命令,您必须执行如果someCheck[command]
其次,带有[color=red]
的邻居4将为您提供一个代理集,即本例中的补丁集合。因此,您无法将代理集与数字进行比较,例如在[pcolor=red]>3的邻居4中。您需要获取代理集的名称:count neighbors4 with[pcolor=red]>3
ask patches with [pcolor = blue] [
if (count neighbors4 with [pcolor = red] > 3) [
set pcolor red
]
]
此外,如果我们注意到内部if语句只是一个额外的过滤器,蓝色补丁将变为红色,那么我们实际上可以使用外部ask
中的with
语句,并将事情简化一点:
ask patches with [pcolor = blue and (count neighbors4 with [pcolor = red] > 3)] [
set pcolor red
]
希望有帮助