| .. | ||
| examples | ||
| __init__.py | ||
| advanced_boids.py | ||
| boids_algorithm.py | ||
| config.py | ||
| environment_manager.py | ||
| gui.py | ||
| interaction_manager.py | ||
| learning_manager.py | ||
| plugin.py | ||
| README.md | ||
| swarm_manager.py | ||
群体智能插件 - 高级功能说明
概述
本插件实现了一个完整的群体智能系统,基于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():清空所有交互关系
性能优化建议
- 启用空间分区:对于大规模群体(>100成员),启用空间分区可以显著提高性能
- 调整感知半径:较小的感知半径可以减少计算量
- 使用邻居搜索优化:减少不必要的距离计算
- 启用并行计算:对于大规模群体(>50成员),启用并行计算可以利用多核CPU提高性能
- 合理设置更新频率:根据需求调整更新频率,在性能和流畅度之间找到平衡
扩展开发
插件设计为模块化结构,可以轻松扩展新功能:
- 自定义行为:继承
AdvancedBoidsAlgorithm类并添加新的行为方法 - 新的队形类型:在
calculate_flock_formation方法中添加新的队形计算逻辑 - 新的物理效果:扩展
PhysicsSimulator类添加新的物理模拟 - 新的优化算法:改进
SpatialPartition类实现更高效的邻居查找 - 自定义并行策略:修改
update_swarm_parallel方法实现自定义的并行计算策略
故障排除
常见问题
- 性能问题:检查是否启用了空间分区和邻居搜索优化
- 群体行为异常:检查权重参数是否设置合理
- 物理效果不明显:确保启用了相应的物理效果开关
调试建议
- 使用状态信息标签页监控群体统计信息
- 查看性能信息了解计算开销
- 逐步调整参数观察行为变化