Netlogo 确定海龟群的半径和海龟群中海龟的数量-后处理

Netlogo 确定海龟群的半径和海龟群中海龟的数量-后处理,netlogo,Netlogo,如果我有这样一种情况,大约1000只黑海龟在给定的时间内以随机的角度和步幅散布在整个netlogo世界。每只海龟在分散过程中的每一个时间步都被分配一个随机概率,如果这个数字超过给定海龟的给定阈值,它会将颜色变为红色并停止移动。此外,黑海龟(仍在移动)碰巧在红海龟(停止/固定)的区域内移动,它们的颜色也会变为灰色并固定(停止移动)。最后,其他在灰色或红色海龟(停止/固定)区域内移动的黑海龟(仍在移动)也会将颜色更改为灰色并固定(停止移动) 我的问题是关于何时达到模拟持续时间的后处理问题。我如何确定

如果我有这样一种情况,大约1000只黑海龟在给定的时间内以随机的角度和步幅散布在整个netlogo世界。每只海龟在分散过程中的每一个时间步都被分配一个随机概率,如果这个数字超过给定海龟的给定阈值,它会将颜色变为红色并停止移动。此外,黑海龟(仍在移动)碰巧在红海龟(停止/固定)的区域内移动,它们的颜色也会变为灰色并固定(停止移动)。最后,其他在灰色或红色海龟(停止/固定)区域内移动的黑海龟(仍在移动)也会将颜色更改为灰色并固定(停止移动)


我的问题是关于何时达到模拟持续时间的后处理问题。我如何确定黑海龟海洋中红灰色海龟集群的数量?另外,如何确定每个群集的大小(径向范围)?最后,我如何确定每个集群中海龟的数量?

Jen是对的:在能够真正回答这个问题之前,你需要清楚地了解集群的组成

也就是说,一个可能的选择是使用聚类算法。我建议你看看克里斯托弗·弗兰茨的

下面是一个快速组合的示例:

extensions [ dbscan ]

to setup
  clear-all
  ask patches [ set pcolor white ]
  create-turtles 1000 [
    set color black
    set label-color blue
    setxy random-xcor random-ycor
  ]
  ask n-of 5 turtles [
    ask turtles in-radius 3 [
      set color one-of [red grey]
    ]
  ]
end

to find-clusters
  let red-grey-turtles turtles with [ member? color [red grey] ]
  let clusters dbscan:cluster-by-location red-grey-turtles 3 3
  (foreach clusters range length clusters [ [c i] ->
    foreach c [ t ->
      ask t [ set label i ]
    ]
  ])
end

很抱歉没有进一步的解释:我有一架飞机要赶……

这是一个设计问题-您需要决定如何操作集群。一旦您了解集群的含义,我们就可以帮助您在尝试将想法转换为代码时进行调试。也许你可以做一些事情,比如看每个斑块的红灰色海龟密度,如果它超过平均密度的x%,那么称它为集群,然后将两个集群的相邻斑块合并到同一集群中。但是你需要先有一个算法。@JenB谢谢,根据你和payette提供的信息,我已经在“让我知道你的想法?”上重新表述了我的问题。谢谢你提供的有用信息。我编辑了我的问题,这样做没有扩展,遇到了一个我认为是可以解决的问题。看看,让我知道你的想法。这个基于密度的聚类算法非常棒,但是我想知道它是否能做的不仅仅是唯一地标记同一个集群的成员。您知道如何执行诸如确定簇的最大、最小和平均大小、簇中个体的最大、最小平均数以及最后的最大、最小平均簇间距离等操作吗?簇中个体的最大、最小和平均数很容易:
Max map length clusters
min map length clusters
mean map length clusters
应该这样做。簇间距离更复杂,因为它可以用不同的方式定义。您想要群集中心之间的距离吗?在每个集群中最近的海龟之间?我建议你问一个单独的问题,并尽量准确地说明你需要什么。集群的数量只是
countclusters
。径向范围类似于:
要报告径向范围[cluster]报告最大映射[a->max map[b->[b]簇的距离a]簇结束
。一旦你有了这个,你可以做
平均地图径向范围集群
等等。群集中心可能会或多或少有些棘手,这取决于您所在世界的拓扑结构。您是否打开了水平或垂直世界环绕?啊,对不起,应该是
长度簇
。(
count
用于代理集,
length
用于列表。在这种情况下,
clusters
是一个列表,因此您需要使用
length
。有时我会混淆它们。)