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

## 概述

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