目录

  • 1 什么是“复杂”(Complex)?
    • 1.1 身边的复杂性
    • 1.2 复杂性科学与复杂系统
    • 1.3 复杂性科学的方法论
    • 1.4 NetLogo
    • 1.5 第一章测验
  • 2 动力学(Dynamics)
    • 2.1 什么是“动力学”?
    • 2.2 迭代(Iteration)
    • 2.3 线性(Linear)与非线性(Nolinear)系统
    • 2.4 系统动力学(System Dynamics)
    • 2.5 复杂系统分析视角
    • 2.6 第二章测验
  • 3 分形(Fractal)
    • 3.1 什么是"分形"
    • 3.2 科赫曲线 (Koch curve)
    • 3.3 分数维度 (Fractal Dimension)
    • 3.4 听曼德博讲分形
    • 3.5 第三章测验
  • 4 遗传算法(Genetic Algorithms)
    • 4.1 进化——自然选择的结果
    • 4.2 计算机科学中的进化论
    • 4.3 遗传算法示例
    • 4.4 第四章测验
  • 5 元胞自动机(Cellular automata)
    • 5.1 什么是元胞自动机
    • 5.2 生命游戏(Game of “Life”)
    • 5.3 初等元胞自动机(Elementary cellular automata)
    • 5.4 Wolfram的新科学
    • 5.5 第五章测验
  • 6 生物系统中的自组织模型
    • 6.1 自组织(Self-Organization)
    • 6.2 群游(Flocking and Schooling)
    • 6.3 同步(Synchronization)
    • 6.4 第六章测验
  • 7 社会系统中的合作与自组织
    • 7.1 合作模型(Cooperation)
    • 7.2 囚徒困境(The Prisoner's Dilemma)
    • 7.3 El Farol酒吧问题(El Farol Bar Problem)
    • 7.4 第七章测验
  • 8 网络(Network)
    • 8.1 什么是网络?
    • 8.2 网络科学(The Science of Networks)
    • 8.3 小世界网络(Small World Networks)
    • 8.4 无标度和长尾网络结构(Scale-Free and Long-Tailed Network Structure)
    • 8.5 第八章测验
群游(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):  转向以靠近邻居,或者转(两者的较小值) 


上述规则影响着每只鸟的飞行方向,而每只鸟的飞行速度一致。



更新:中国119架固定翼无人机集群飞行再创纪录 领先美国

           中国119架无人机齐飞有何意义