1000个舞者:Boids群体智能的舞蹈
Dancing with friends and enemies: boids' swarm intelligence

我最近发现了一种用昂贵数学软件进行娱乐的新方法:让1000个“舞者”在虚拟空间中随机起舞。每个舞者随机选择一个“朋友”和一个“敌人”,每一步都向朋友靠近、远离敌人,同时缓慢向中心收缩。这种简单的规则模拟了鸟群或鱼群的群体行为,却呈现出令人惊叹的动态平衡。通过不断调整参数,我观察到从混乱到有序、从聚集到扩散的奇妙模式。这不仅是对Boids算法的趣味实验,更揭示了复杂系统如何从简单规则中涌现出智能行为。
宏观尺度上动物群体的行为,可以通过每个个体遵循其局部范围内的极简单规则来解释。
- markstock
SW 加入的这些微调在类似的模拟中相当常见:
1) 吸引-排斥力对是“Boids”模拟的典型特征,也出现在作用于原子的 Lennard-Jones 力中(尽管衰减速率上的幂次不同);
2) 当粒子间距离趋近于零时让力降为零,实际上是将每个粒子视为“云团”而非单点,这在涡旋粒子方法中称为“正则化”,在引力方法中称为“Plummer 软化”;其主要优势在于 SIMD 和并行化,因为它消除了对 (i != j) 条件判断的需求;
3) 缓慢收缩(将每个粒子的位置乘以 (1-epsilon))是生成式数字艺术家常用的一种技术,以确保视觉活动不会偏离预设点太远。
该模拟的独特之处在于(计算高效的)仅依赖极少量(此处 N=2)的邻近粒子。通常限制实时模拟粒子数在 1 万到 5 万之间的 O(N^2) 复杂度,在这里变成了 O(N)。
- yehoshuapw
我觉得新版本中这种现象非常迷人:较远的团簇会保持分离,直到大群体中有某个小个体接触到它们,随后它们就会全部重新合并回去。
- palad1n
这让我想起了当年还有 Boids 小程序的时候。