【问题标题】:Netlogo - how to count turtles number around a specific turtleNetlogo - 如何计算特定海龟周围的海龟数量
【发布时间】:2018-08-06 22:41:24
【问题描述】:

如果黄色乌龟周围至少有 3 只蓝色乌龟,我需要“做一些特别的事情”。下面的代码是否正确? 我试过了

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

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

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

【问题讨论】:

    标签: netlogo


    【解决方案1】:

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

    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】:

      目前,您的代码会计算黄色海龟周围一块区域半径内蓝色海龟的数量。如果蓝色海龟的数量更大/等于 3,如果您使用“die”命令而不是“do-something-special”,则黄色海龟会死亡。所以看起来如下。

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

      或许你可以把代码和下面的example合并,然后杀掉邻居。

      【讨论】:

      • 谢谢,不过我还要杀3只蓝龟
      猜你喜欢
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 2020-08-09
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多