Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Boids 群体智能可视化演示

这是一个基于经典 Boids 算法的群体智能行为可视化演示程序,展示了自然界中鸟群、鱼群等群体的涌现行为模式。

🚀 快速开始

启动演示

# 进入项目目录
cd Boids

# 启动本地服务器
python3 -m http.server 8000

# 在浏览器中访问
open http://localhost:8000

系统要求

  • 现代浏览器(支持 Canvas 2D 和 ES6+)
  • Python 3.x(用于本地服务器)

🎮 交互操作

基础交互

  • 左键点击并拖拽:创建吸引点,群体会被吸引过来
  • 右键点击 或 Alt/Option + 左键:创建排斥点,群体会避开该区域
  • Shift + 左键点击:在点击位置添加圆形障碍物
  • 鼠标移动:在"鼠标跟随模式"开启时,群体会朝鼠标方向移动

控制面板操作

  • 暂停/继续:暂停或恢复模拟
  • 重置:重新生成群体,清除吸引/排斥点
  • 清除障碍:移除所有障碍物

⚙️ 参数说明

基础群体参数

参数 说明 推荐范围 默认值
数量 群体中个体的数量 20-600 150
感知范围 个体能感知到其他个体的距离 20-150 60
分离距离 个体开始相互排斥的距离 10-80 24
最大速度 个体移动的最大速度 0.5-6.0 3.0
最大转向力 个体改变方向的最大力度 0.01-0.3 0.05

群体行为权重

参数 说明 推荐范围 默认值
对齐权重 个体朝相同方向移动的倾向 0-3.0 1.0
凝聚权重 个体向群体中心聚集的倾向 0-3.0 1.0
分离权重 个体相互保持距离的倾向 0-4.0 1.2

扩展行为权重

参数 说明 推荐范围 默认值
障碍躲避权重 个体躲避障碍物的强度 0-5.0 2.0
边界回弹权重 个体在边界回弹的强度 0-4.0 1.5
鼠标跟随权重 个体跟随鼠标的强度 0-3.0 0.8

模式开关

  • 边界回弹模式:开启后个体在边界处回弹,关闭后使用环绕穿越
  • 鼠标跟随模式:开启后个体会主动朝鼠标方向移动

🎯 使用场景与技巧

观察基础群体行为

  1. 使用默认参数启动
  2. 适当调整三个基础权重(对齐、凝聚、分离)
  3. 观察不同权重组合下的群体模式

推荐参数组合:

  • 紧密群体:凝聚权重 2.0,分离权重 0.8
  • 松散群体:凝聚权重 0.5,分离权重 2.0
  • 高度对齐:对齐权重 2.5,其他权重 1.0

障碍物躲避演示

  1. 开启边界回弹模式
  2. 提升障碍躲避权重到 2.5-3.5
  3. 增加最大转向力到 0.08-0.12
  4. 使用 Shift + 点击添加多个障碍物
  5. 观察群体的绕行行为

鼠标交互演示

  1. 开启鼠标跟随模式
  2. 设置跟随权重为 1.5-2.0
  3. 适当降低凝聚权重到 0.5
  4. 移动鼠标引导群体运动

复杂场景构建

  1. 添加多个障碍物形成"迷宫"
  2. 开启边界回弹限制活动区域
  3. 使用吸引点和排斥点创建"流场"
  4. 调整各项权重平衡不同行为

🔧 技术实现

核心算法

  • 对齐(Alignment):个体朝邻居的平均速度方向调整
  • 凝聚(Cohesion):个体朝邻居的平均位置移动
  • 分离(Separation):个体远离过近的邻居

扩展功能

  • 障碍躲避:基于距离的推斥力,支持预测性转向
  • 边界处理:可选择回弹或环绕两种模式
  • 鼠标交互:实时跟踪鼠标位置的寻向行为

性能优化

  • 使用设备像素比适配高分屏
  • Canvas 2D 渲染优化
  • 运动模糊效果增强视觉体验

🎨 自定义与扩展

修改外观

  • 编辑 styles.css 调整 UI 主题
  • 修改 script.js 中的渐变色彩和粒子大小
  • 调整背景和尾迹效果

添加新行为

  1. 在 Boid.flock() 方法中添加新的力计算
  2. 在控制面板中添加对应的参数滑块
  3. 更新参数对象和同步函数

性能提升

  • 实现四叉树或网格空间分割
  • 添加 LOD(细节层次)系统
  • 使用 Web Workers 进行并行计算

📚 参考资料

🐛 故障排除

常见问题

  1. 画面卡顿:降低个体数量或调低最大速度
  2. 行为异常:检查权重参数是否过大
  3. 无法添加障碍物:确保使用 Shift + 左键点击
  4. 鼠标跟随无效:检查"鼠标跟随模式"是否已开启

浏览器兼容性

  • Chrome/Edge 80+
  • Firefox 75+
  • Safari 13+

演示程序基于 HTML5 Canvas 和原生 JavaScript 开发,无需额外依赖。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages