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