""" 高级群体智能示例 演示复杂的群体行为和交互 """ from panda3d.core import Vec3 import random def create_bird_flock(swarm_manager): """ 创建鸟类群体 """ print("创建鸟类群体...") # 设置群体类型 swarm_manager.update_swarm_type("鸟类") # 配置参数 swarm_manager.config.set("member_count", 50) swarm_manager.config.set("cohesion_weight", 1.2) swarm_manager.config.set("separation_weight", 1.8) swarm_manager.config.set("alignment_weight", 1.0) swarm_manager.config.set("perception_radius", 15.0) swarm_manager.config.set("max_speed", 8.0) # 重新创建群体 swarm_manager.reset() print("鸟类群体创建完成,包含50个成员") def create_fish_school(swarm_manager): """ 创建鱼群 """ print("创建鱼群...") # 设置群体类型 swarm_manager.update_swarm_type("鱼类") # 配置参数 swarm_manager.config.set("member_count", 30) swarm_manager.config.set("cohesion_weight", 1.5) swarm_manager.config.set("separation_weight", 2.0) swarm_manager.config.set("alignment_weight", 1.2) swarm_manager.config.set("perception_radius", 8.0) swarm_manager.config.set("max_speed", 6.0) # 重新创建群体 swarm_manager.reset() print("鱼群创建完成,包含30个成员") def create_insect_swarm(swarm_manager): """ 创建昆虫群体 """ print("创建昆虫群体...") # 设置群体类型 swarm_manager.update_swarm_type("昆虫") # 启用游走行为 swarm_manager.config.set("wander_enabled", True) swarm_manager.config.set("wander_weight", 0.8) # 配置参数 swarm_manager.config.set("member_count", 100) swarm_manager.config.set("cohesion_weight", 0.8) swarm_manager.config.set("separation_weight", 1.2) swarm_manager.config.set("alignment_weight", 0.6) swarm_manager.config.set("perception_radius", 5.0) swarm_manager.config.set("max_speed", 10.0) # 重新创建群体 swarm_manager.reset() print("昆虫群体创建完成,包含100个成员") def add_obstacles(swarm_manager, count=5): """ 添加障碍物 """ print(f"添加{count}个障碍物...") for i in range(count): # 随机位置 position = Vec3( random.uniform(-30, 30), random.uniform(-30, 30), random.uniform(5, 20) ) # 随机半径 radius = random.uniform(2, 5) # 创建障碍物 swarm_manager.create_obstacle(position, radius) print(f"障碍物添加完成") def add_predators(swarm_manager, count=2): """ 添加捕食者 """ print(f"添加{count}个捕食者...") for i in range(count): # 随机位置 position = Vec3( random.uniform(-40, 40), random.uniform(-40, 40), random.uniform(5, 25) ) # 创建捕食者 swarm_manager.create_predator(position) print(f"捕食者添加完成") def create_v_formation(swarm_manager): """ 创建V字形队形 """ print("创建V字形队形...") # 启用队形保持 swarm_manager.config.set("formation_enabled", True) swarm_manager.config.set("formation_type", "V字形") swarm_manager.config.set("formation_weight", 2.0) # 设置目标 target = Vec3(0, 50, 15) swarm_manager.set_target(target) swarm_manager.config.set("seek_enabled", True) swarm_manager.config.set("seek_weight", 1.5) print("V字形队形创建完成") def create_circular_formation(swarm_manager): """ 创建圆形队形 """ print("创建圆形队形...") # 启用队形保持 swarm_manager.config.set("formation_enabled", True) swarm_manager.config.set("formation_type", "圆形") swarm_manager.config.set("formation_weight", 1.5) print("圆形队形创建完成") def create_path_following(swarm_manager): """ 创建路径跟随场景 """ print("创建路径跟随场景...") # 定义路径点 path = [ Vec3(-30, -30, 10), Vec3(0, -40, 15), Vec3(30, -30, 10), Vec3(40, 0, 20), Vec3(30, 30, 10), Vec3(0, 40, 15), Vec3(-30, 30, 10), Vec3(-40, 0, 20), ] # 设置路径 swarm_manager.set_path(path) # 启用路径跟随 swarm_manager.config.set("path_following_enabled", True) swarm_manager.config.set("path_weight", 2.0) swarm_manager.config.set("prediction_distance", 15.0) print("路径跟随场景创建完成") def create_hunting_scenario(swarm_manager): """ 创建捕猎场景 """ print("创建捕猎场景...") # 创建小规模鸟类群体 swarm_manager.update_swarm_type("鸟类") swarm_manager.config.set("member_count", 20) swarm_manager.reset() # 添加捕食者 predator_pos = Vec3(-20, -20, 15) swarm_manager.create_predator(predator_pos) # 启用捕食者躲避 swarm_manager.config.set("predator_avoid_enabled", True) swarm_manager.config.set("predator_avoid_weight", 4.0) swarm_manager.config.set("predator_radius", 20.0) print("捕猎场景创建完成") def create_obstacle_avoidance_scenario(swarm_manager): """ 创建避障场景 """ print("创建避障场景...") # 创建中等规模群体 swarm_manager.config.set("member_count", 30) swarm_manager.reset() # 添加多个障碍物 obstacles = [ (Vec3(-10, 0, 10), 5), (Vec3(10, 0, 15), 4), (Vec3(0, 10, 12), 6), (Vec3(0, -10, 8), 3), ] for pos, radius in obstacles: swarm_manager.create_obstacle(pos, radius) # 设置移动目标 target = Vec3(0, 30, 15) swarm_manager.set_target(target) swarm_manager.config.set("seek_enabled", True) # 启用避障 swarm_manager.config.set("obstacle_avoidance_enabled", True) swarm_manager.config.set("obstacle_weight", 3.0) print("避障场景创建完成") def run_advanced_example(swarm_manager): """ 运行高级示例 """ print("=== 群体智能高级示例 ===") # 创建鸟类群体 create_bird_flock(swarm_manager) # 添加障碍物 add_obstacles(swarm_manager, 3) # 添加捕食者 add_predators(swarm_manager, 1) # 启用多种行为 swarm_manager.config.set("wander_enabled", True) swarm_manager.config.set("boundary_enabled", True) print("高级示例设置完成,观察群体的复杂行为")