EG/plugins/user/swarm_intelligence/README.md
2025-12-12 16:16:15 +08:00

8.1 KiB
Raw Permalink Blame History

群体智能插件 - 高级功能说明

概述

本插件实现了一个完整的群体智能系统基于Boids算法并扩展了多种高级行为和优化功能。

核心功能

1. 高级Boids算法

  • 聚集行为:个体向邻居群集中心移动
  • 分离行为:个体避免与邻居过于靠近
  • 对齐行为:个体与邻居的移动方向保持一致
  • 加权邻居计算:距离越近的邻居对行为影响越大
  • 个人空间:考虑个体的个人空间需求

2. 扩展行为

  • 避障行为:避开场景中的障碍物
  • 寻求行为:向目标位置移动
  • 逃离行为:远离目标位置
  • 游走行为:产生自然的随机移动
  • 边界限制:将成员保持在指定区域内
  • 路径跟随:沿着预定义路径移动
  • 队形保持维持特定的群体队形V字形、直线、圆形、楔形、球形
  • 躲避捕食者:远离捕食者
  • 到达行为:接近目标时减速

3. 群体间交互

  • 合作交互:群体之间相互协作,共享资源或信息
  • 竞争交互:群体之间争夺资源或领域
  • 捕食者-猎物交互:一个群体捕食另一个群体
  • 中性交互:群体之间无直接相互作用
  • 动态交互:交互关系随时间变化

4. 环境感知和响应机制

  • 环境传感器:每个群体成员都配备环境传感器,可感知障碍物、其他群体、捕食者、资源点和危险区域
  • 传感器参数:可调节传感器范围和精度
  • 环境响应:根据感知到的环境信息调整行为(避障、避敌、寻资源、避危险)
  • 天气适应:适应风向、温度等天气条件
  • 时间效应:环境随时间变化(昼夜、季节)
  • 环境动态:资源恢复、天气变化等环境动态效果

5. 学习和适应能力

  • 经验学习:基于经验优化行为策略
  • 环境适应:根据环境条件调整行为参数
  • 强化学习使用Q-learning算法优化决策
  • 探索与利用:平衡探索新策略和利用已知策略
  • 参数自适应:自动调整行为参数以适应环境

5. 物理模拟

  • 重力模拟:真实的重力效果
  • 空气阻力:考虑空气阻力对移动的影响
  • 浮力效果:适用于水下生物模拟
  • 质量属性:不同成员可以有不同的质量

6. 性能优化

  • 空间分区:使用网格划分优化邻居查找
  • 邻居搜索优化:减少不必要的距离计算
  • 并行计算:支持多线程计算加速
  • 多群体管理:高效管理多个群体

配置参数

基本Boids参数

  • cohesion_weight:聚集权重 (0.0-10.0)
  • separation_weight:分离权重 (0.0-10.0)
  • alignment_weight:对齐权重 (0.0-10.0)
  • perception_radius:感知半径 (0.1-100.0)

移动参数

  • max_speed:最大速度 (0.1-50.0)
  • max_acceleration:最大加速度 (0.01-10.0)
  • max_force:最大转向力 (0.01-5.0)

高级行为参数

  • personal_space:个人空间半径 (0.1-20.0)
  • obstacle_radius:障碍物影响半径 (0.1-50.0)
  • seek_weight:寻求力权重 (0.0-10.0)
  • flee_weight:逃离力权重 (0.0-10.0)
  • wander_weight:游走力权重 (0.0-5.0)
  • boundary_weight:边界力权重 (0.0-10.0)
  • path_weight:路径跟随权重 (0.0-10.0)
  • formation_weight:队形保持权重 (0.0-10.0)
  • predator_avoid_weight:捕食者躲避权重 (0.0-10.0)
  • interaction_weight:群体间交互权重 (0.0-5.0)

环境感知参数

  • sensor_range:传感器范围 (1.0-50.0)
  • sensor_accuracy:传感器精度 (0.1-1.0)
  • obstacle_response_weight:障碍物响应权重 (0.0-5.0)
  • predator_response_weight:捕食者响应权重 (0.0-5.0)
  • resource_seek_weight:资源寻求权重 (0.0-2.0)
  • hazard_avoid_weight:危险回避权重 (0.0-5.0)
  • time_flow_rate:时间流逝速度 (0.01-2.0)
  • gravity_enabled:重力开关 (布尔值)
  • air_resistance_enabled:空气阻力开关 (布尔值)
  • buoyancy_enabled:浮力开关 (布尔值)
  • fluid_level:流体水平面高度 (-100.0-100.0)

性能参数

  • spatial_partitioning:空间分区优化 (布尔值)
  • neighbor_search_optimization:邻居搜索优化 (布尔值)
  • parallel_computation:并行计算 (布尔值)
  • update_rate:更新频率 (1-240 FPS)

使用示例

基本使用

# 创建群体管理器
swarm_manager = SwarmManager(world)

# 设置参数
swarm_manager.config.set("member_count", 100)
swarm_manager.config.set("cohesion_weight", 1.2)
swarm_manager.config.set("separation_weight", 1.8)

# 创建群体
swarm_manager.create_example_swarm()

高级使用

# 启用物理效果
swarm_manager.config.set("gravity_enabled", True)
swarm_manager.config.set("air_resistance_enabled", True)

# 启用性能优化
swarm_manager.config.set("spatial_partitioning", True)
swarm_manager.config.set("neighbor_search_optimization", True)

# 添加障碍物
swarm_manager.create_obstacle(Vec3(10, 10, 5), 3.0)

# 设置目标
swarm_manager.set_target(Vec3(20, 20, 10))
swarm_manager.config.set("seek_enabled", True)

API参考

SwarmManager类

  • create_example_swarm():创建示例群体
  • create_multiple_swarms(swarm_configs):创建多个群体
  • create_obstacle(position, radius):创建障碍物
  • create_predator(position):创建捕食者
  • set_target(target):设置群体目标位置
  • set_path(path):设置群体移动路径
  • add_member():添加一个新的群体成员
  • remove_member():移除一个群体成员
  • update_swarm_type(swarm_type):更新群体类型
  • get_stats():获取群体统计信息
  • toggle_pause():切换暂停状态
  • cleanup():清理资源
  • reset():重置群体
  • get_swarm_by_id(swarm_id)根据ID获取群体
  • get_swarm_by_type(swarm_type):根据类型获取群体

Config类

  • get(key, default=None):获取配置值
  • set(key, value):设置配置值
  • reset_to_default():重置为默认配置
  • load():从文件加载配置
  • save():保存配置到文件
  • export_config(file_path):导出配置到指定文件
  • import_config(file_path):从指定文件导入配置

InteractionManager类

  • add_interaction(swarm1, swarm2, interaction_type, strength):添加群体间交互关系
  • remove_interaction(interaction):移除群体间交互关系
  • update_interactions(swarms):更新所有群体间交互
  • get_interaction_stats():获取交互统计信息
  • clear_interactions():清空所有交互关系

性能优化建议

  1. 启用空间分区:对于大规模群体(>100成员启用空间分区可以显著提高性能
  2. 调整感知半径:较小的感知半径可以减少计算量
  3. 使用邻居搜索优化:减少不必要的距离计算
  4. 启用并行计算:对于大规模群体(>50成员启用并行计算可以利用多核CPU提高性能
  5. 合理设置更新频率:根据需求调整更新频率,在性能和流畅度之间找到平衡

扩展开发

插件设计为模块化结构,可以轻松扩展新功能:

  1. 自定义行为:继承AdvancedBoidsAlgorithm类并添加新的行为方法
  2. 新的队形类型:在calculate_flock_formation方法中添加新的队形计算逻辑
  3. 新的物理效果:扩展PhysicsSimulator类添加新的物理模拟
  4. 新的优化算法:改进SpatialPartition类实现更高效的邻居查找
  5. 自定义并行策略:修改update_swarm_parallel方法实现自定义的并行计算策略

故障排除

常见问题

  1. 性能问题:检查是否启用了空间分区和邻居搜索优化
  2. 群体行为异常:检查权重参数是否设置合理
  3. 物理效果不明显:确保启用了相应的物理效果开关

调试建议

  1. 使用状态信息标签页监控群体统计信息
  2. 查看性能信息了解计算开销
  3. 逐步调整参数观察行为变化