确定海龟簇的半径和其中海龟的数量 - 后处理
Determining the radius of turtle clusters and number of turtles in them - postprocessing
如果我有这样一种情况,其中大约 1000 只黑龟以随机角度分散,并在给定的滴答持续时间内跨过 netlogo 世界。每只海龟在分散过程中的每个时间步都被分配一个随机概率,如果这个数字超过任何给定海龟的给定阈值,它会将它的颜色更改为红色并停止移动。此外,碰巧在一片红海龟 (stopped/settled) 内移动的黑海龟(仍在移动)也会将它们的颜色更改为灰色并安定下来(停止移动)。最后,碰巧在灰色或红色海龟 (stopped/settled) 内移动的其他黑海龟(仍在移动)也将它们的颜色更改为灰色并定居(停止移动)
我的问题是一个post-关于何时达到模拟持续时间的处理问题。如何确定黑海龟海中红灰色海龟群的数量?另外,如何确定每个集群的大小(径向范围)?最后,如何确定每个集群中的海龟数量?
Jen 是对的:在能够真正回答该问题之前,您需要清楚地了解集群的构成。
也就是说,一种可能的选择是使用聚类算法。我建议看看克里斯托弗·弗朗茨的 dbscan
extension.
这是一个快速拼凑的例子:
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
抱歉没有进一步的解释:我要赶飞机...
如果我有这样一种情况,其中大约 1000 只黑龟以随机角度分散,并在给定的滴答持续时间内跨过 netlogo 世界。每只海龟在分散过程中的每个时间步都被分配一个随机概率,如果这个数字超过任何给定海龟的给定阈值,它会将它的颜色更改为红色并停止移动。此外,碰巧在一片红海龟 (stopped/settled) 内移动的黑海龟(仍在移动)也会将它们的颜色更改为灰色并安定下来(停止移动)。最后,碰巧在灰色或红色海龟 (stopped/settled) 内移动的其他黑海龟(仍在移动)也将它们的颜色更改为灰色并定居(停止移动)
我的问题是一个post-关于何时达到模拟持续时间的处理问题。如何确定黑海龟海中红灰色海龟群的数量?另外,如何确定每个集群的大小(径向范围)?最后,如何确定每个集群中的海龟数量?
Jen 是对的:在能够真正回答该问题之前,您需要清楚地了解集群的构成。
也就是说,一种可能的选择是使用聚类算法。我建议看看克里斯托弗·弗朗茨的 dbscan
extension.
这是一个快速拼凑的例子:
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
抱歉没有进一步的解释:我要赶飞机...