# 群体智能插件 - 高级功能说明 ## 概述 本插件实现了一个完整的群体智能系统,基于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) ## 使用示例 ### 基本使用 ```python # 创建群体管理器 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() ``` ### 高级使用 ```python # 启用物理效果 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. 逐步调整参数观察行为变化