Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

群体行为模拟的原理、公式与应用

在现代游戏、虚拟现实和影视特效中,群体行为模拟是不可或缺的技术,用于模拟行人、动物、机器人、飞鸟甚至海洋生物的集体运动。其核心目标是:在保证个体自主性的同时,形成自然、协调、有组织的整体行为。

一、群体行为模拟的基本原理

群体行为模拟通常假设:

  1. 个体具有感知能力
    • 每个个体能感知周围环境和邻居位置、速度等信息
  2. 局部规则驱动行为
    • 个体只根据邻居状态作决策,而不依赖全局信息
  3. 简单规则产生复杂行为
    • 小范围局部交互能在全局产生群体涌动、队形、避障等自然现象

常用的群体模型

  1. Boids 模型(Reynolds, 1987)

    • 最经典的鸟群/鱼群模拟模型
    • 核心思想:每个个体遵循三个局部规则:
      1. 分离(Separation) → 避免与邻居碰撞
      2. 对齐(Alignment) → 匹配邻居速度方向
      3. 聚合(Cohesion) → 移动到邻居中心
  2. 社会力模型(Social Force Model)

    • 主要用于行人模拟(Helbing & Molnar, 1995)
    • 假设每个个体受到目标力排斥力吸引力
    • 使用物理力学形式求解运动
  3. 基于网格或代理的模型(Cellular / Agent-Based)

    • 空间离散化,将群体行为归约为有限状态机或规则表
    • 易于与 AI 或路径规划结合

二、核心公式

1️⃣ Boids 模型公式

假设个体 (i) 的位置为 (\mathbf{p}_i),速度为 (\mathbf{v}_i)。三个基本规则可以用向量公式表示:

  1. 分离(Separation)

[ \mathbf{F}{\text{sep}} = -\sum{j \in N_i} (\mathbf{p}_j - \mathbf{p}_i) ]

  • (N_i) 表示个体 (i) 的邻居集合
  • 作用:远离过近邻居,避免碰撞
  1. 对齐(Alignment)

[ \mathbf{F}{\text{align}} = \frac{1}{|N_i|}\sum{j \in N_i} \mathbf{v}_j - \mathbf{v}_i ]

  • 作用:匹配邻居速度方向,形成队形
  1. 聚合(Cohesion)

[ \mathbf{F}{\text{cohesion}} = \frac{1}{|N_i|}\sum{j \in N_i} (\mathbf{p}_j - \mathbf{p}_i) ]

  • 作用:向邻居中心靠拢,保持群体整体性

总运动方向

[ \mathbf{v}i(t+\Delta t) = \mathbf{v}i(t) + w_1 \mathbf{F}{\text{sep}} + w_2 \mathbf{F}{\text{align}} + w_3 \mathbf{F}_{\text{cohesion}} ]

[ \mathbf{p}_i(t+\Delta t) = \mathbf{p}_i(t) + \mathbf{v}_i(t+\Delta t)\Delta t ]

  • (w_1, w_2, w_3) → 不同规则的权重,可调节群体行为风格

2️⃣ 社会力模型公式(行人模拟)

每个行人 (i) 的加速度由“社会力”控制:

[ m_i \frac{d\mathbf{v}i}{dt} = \mathbf{f}i^{\text{desire}} + \sum{j \neq i} \mathbf{f}{ij}^{\text{repulsion}} + \sum_{B} \mathbf{f}_{iB}^{\text{boundary}} ]

  • (\mathbf{f}_i^{\text{desire}} = \frac{v_i^0 \mathbf{e}_i - \mathbf{v}_i}{\tau}) → 驱动个体朝目标速度移动
  • (\mathbf{f}_{ij}^{\text{repulsion}}) → 防止碰撞的排斥力
  • (\mathbf{f}_{iB}^{\text{boundary}}) → 墙壁或障碍物排斥

本质上把行人看作受力粒子,使用牛顿力学积分位置和速度


3️⃣ 邻居搜索优化公式

群体行为算法的性能瓶颈通常是邻居搜索

  • 距离判断:

[ N_i = { j \mid ||\mathbf{p}_i - \mathbf{p}_j|| < r } ]

  • 优化策略:
    • 空间划分(Grid / Hash):只检查同格或邻近格
    • 近邻列表(Verlet List / K-d Tree):减少搜索次数

三、并行化策略

群体行为模拟高度适合并行:

  1. 个体独立计算

    • 位置、速度更新
    • 三个 Boids 规则力计算
    • CPU 多线程或 GPU 并行处理
  2. 邻居搜索优化

    • 空间哈希桶可以批量处理
    • GPU compute shader 非常适合处理大量个体

并行化可以显著提升大规模群体(数千~数万)模拟性能。


四、应用场景

场景应用示例
游戏人群行走、敌人集群、鸟群/鱼群
VR / AR虚拟城市行人模拟、观众行为
影视动画电影中的大规模生物集群(如《狮子王》动物迁徙)
机器人多机器人协同路径规划、无人机编队
交通模拟行人流、交通疏导策略分析

群体行为模拟不仅用于视觉效果,也用于行为分析和策略研究。


五、总结

  1. 核心思想:局部规则产生全局自然行为
  2. 主要模型
    • Boids → 鸟群/鱼群
    • 社会力模型 → 行人/人群
    • 基于代理的离散模型 → 简化 AI/策略模拟
  3. 数学公式
    • Boids:分离、对齐、聚合
    • 社会力:目标力 + 排斥力 + 边界力
  4. 优化策略
    • 邻居搜索 → 空间划分/近邻表
    • 并行计算 → CPU 多线程 / GPU 并行
  5. 应用广泛
    • 游戏、影视、VR/AR、机器人、交通模拟

群体行为模拟是“小规则 → 大系统行为”的典型例子,也是实时物理模拟中高度可并行的一类算法。