我希望你能帮助我。
我尝试测试半径为100的一个补丁是否为黄色,但似乎不起作用。 事实上,这种情况似乎总是错误的,但事实并非如此......
ifelse ([pcolor] of patches in-radius 100 = yellow)
[do something]
[do something else]
解决方案是什么? 谢谢。
答案 0 :(得分:4)
首先,您的代码无法工作的原因:[pcolor] of patches in-radius 100
将返回该半径中所有补丁的颜色作为列表。例如,该列表可能看起来像
[135 135 105 105 105 85 75 75 65 25 65 75 15]
除了方式更长。这些数字是NetLogo's color numbers。 yellow
是45号。所以,基本上,你的条件成为
[135 135 105 105 105 85 75 75 65 25 65 75 15] = 45
显然,这个庞大而庞大的名单与数字并不是一回事,因此,你总会得到假的。
要解决此问题,您需要使用any?
,如下所示:
ifelse (any? patches in-radius 100 with [ pcolor = yellow ]) ...
patches in-radius 100
为您提供该半径内所有补丁的代理集。 with [ pcolor = yellow ]
只保留那些黄色的补丁。 any?
只是检查代理集中是否有任何内容。