群游(Flocking and Schooling)
上一节
下一节
什么是Flocking and Schooling?
为什么鱼群和鸟群会有这种被称为Flocking或Schooling的现象?
一些猜想:
捕食者会认为鱼群或鸟群是一只巨大的有威胁的动物
捕食者无法在群体中确定要捕食的目标
聚集在一起合作捕食能够比单独捕食更有效
群游能够使个体更高效游动或飞行
还有很多其他的猜想,这些都有可能是正确的。
我们关注的倒不是Why,而是How
如何实现群游?

Craig Reynolds在1987年提出了“Boids”模型。
Boids模型非常简单,只有三条基本规则:
①避免碰撞:避免与群体内其他的个体碰撞
②速度一致:速度与周围个体保持一致
③中心聚集:与附近的个体尽可能靠近
Boids模型可以很好的再现鱼群或鸟群的Flocking和Schooling行为。
Netlogo的模型库中,有Flocking模型,其规则与Boids算法非常接近:
每只鸟遵守的规则:
如果与旁边的鸟太近,就分离
分离(Separate): 最近的邻居的行进方向转90度,或者设定的max-separate-turn(两者的较小值)
否则,对齐和聚集
对齐(Align): 转向以使自己的方向与邻居的平均方向一致,或者转max-align-turn (两者的较小值)
聚集(Cohere): 转向以靠近邻居,或者转(两者的较小值)
上述规则影响着每只鸟的飞行方向,而每只鸟的飞行速度一致。

