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

202 lines
8.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 群体智能插件 - 高级功能说明
## 概述
本插件实现了一个完整的群体智能系统基于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. 逐步调整参数观察行为变化