代码之家  ›  专栏  ›  技术社区  ›  YAKOVM

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

  •  0
  • YAKOVM  · 技术社区  · 6 年前

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

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

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

    我是否正确地确定了相关海龟的位置,如何在找到它们后杀死它们?

    2 回复  |  直到 6 年前
        1
  •  3
  •   JenB    6 年前

    汉娜的回答是好的,但链接的例子不会完全解决你的问题。由于您将使用两次关闭代理集(一次用于计数,一次用于潜在地删除某些代理),因此出于效率原因,还应创建一个代理集(您不希望创建两次)。这是一个完整的解决方案。

    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) ,这是邻近的所有海龟,与你的歪海龟所处的位置相同。

        2
  •  1
  •   Hannah H.    6 年前

    现在,你的代码计算出黄海龟周围一块区域半径内蓝色海龟的数量。如果蓝海龟的数量大于或等于3,那么如果使用“die”命令而不是“do something special”,黄海龟就会死亡。所以看起来如下。

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

    也许您可以将代码与以下内容合并 example 然后杀了邻居。