NetLogo-如何计算特定海龟周围的海龟数量

时间:2018-08-06 22:41:24

标签: netlogo

如果黄海龟周围至少有3只蓝海龟,我需要“做点特别的事情”。下面的代码正确吗? 我尝试过

ask turtles with [color = yellow]
  [
  if count turtles in-radius 1 with [color = blue] >= 3
  [do-something-special]
]

do-something-special应该删除(消失)3只蓝色的乌龟和当前的黄色一只

我正确地找到了相关海龟的位置吗?找到它们后如何杀死它们?

2 个答案:

答案 0 :(得分:3)

汉娜的答案很好,但链接的示例无法完全解决您的问题。由于将两次使用关闭代理集(一次计算一次,一次可能删除一些代理),因此出于效率原因,您还应该创建一个代理集(您不想两次创建它)。这是完整的解决方案。

ask turtles with [color = yellow]
[ let near-blue turtles in-radius 1 with [color = blue]
  if count near-blue >= 3
  [ ask n-of 3 near-blue [die]
    die
  ]
]

此外,如果您不关心半径的准确性,可以使用turtles in-radius 1替代turtles-on (patch-set neighbors patch-here),它是相邻的所有海龟,并且与问号海龟在哪里都相同正在坐。

答案 1 :(得分:1)

此刻,您的代码计算了黄色龟周围一个斑块半径内蓝色龟的数量。如果蓝色海龟数量大于/等于3,则使用“ die”命令而不是“ do-something-special”命令会使黄色海龟死亡。因此如下所示。

 ask turtles with [color = yellow]
 [
 if count turtles in-radius 1 with [color = blue] >= 3
   [die]
 ]

也许您可以将代码与以下example合并,然后杀死邻居。