无人机集群协同作业已成为当前智能控制领域的热点研究方向。在灾害救援、农业植保、物流配送等实际场景中,多架无人机需要高效规划航迹并保持协同作业能力。传统路径规划算法如A*、Dijkstra等在动态环境适应性上存在局限,而群体智能优化算法因其自组织、分布式等特性,成为解决这一问题的有效途径。
灰狼优化算法(GWO)是2014年提出的一种新型群体智能算法,模拟狼群社会等级和狩猎行为,具有参数少、收敛快的特点。但标准GWO存在早熟收敛、局部搜索能力不足等问题。MP-GWO(Modified Parallel GWO)算法通过引入并行搜索机制和动态权重策略,显著提升了算法性能。本项目将MP-GWO应用于多无人机协同路径规划,主要解决三个核心问题:
标准GWO模拟狼群中的α、β、δ三级领导体系,狩猎过程分为三个阶段:
包围阶段:根据猎物位置调整个体位置
matlab复制D = |C·X_p(t) - X(t)|
X(t+1) = X_p(t) - A·D
其中A=2a·r1-a,C=2·r2,a从2线性递减到0
狩猎阶段:由α、β、δ狼引导位置更新
matlab复制X(t+1) = (X1 + X2 + X3)/3
攻击阶段:当|A|<1时发起攻击
并行搜索策略:
matlab复制for i = 1:subpopulation_num
% 子群独立更新
[alpha, beta, delta] = update_leader(subpop(i));
% 每10代进行迁移操作
if mod(iter,10) == 0
subpop = migration(subpop);
end
end
动态权重机制:
matlab复制a = a_max - (a_max-a_min)*(iter/MaxIter)^0.5;
matlab复制w_alpha = 0.5 + 0.5*rand;
w_beta = 0.3 + 0.3*rand;
w_delta = 0.2 + 0.2*rand;
精英保留策略:
三维栅格地图构建:
matlab复制map_resolution = 0.5; % 米
map_size = [100 100 50]; % x,y,z维度
obstacle_map = zeros(map_size);
% 标记障碍物
obstacle_map(20:30,40:60,10:20) = 1;
代价函数设计:
matlab复制function cost = path_cost(path, map)
length_cost = sum(sqrt(sum(diff(path).^2,2)));
collision_cost = sum(map(sub2ind(size(map),round(path(:,1)),...
round(path(:,2)),round(path(:,3)))));
smooth_cost = sum(abs(diff(path,2)));
cost = 0.5*length_cost + 0.3*collision_cost + 0.2*smooth_cost;
end
分层控制结构:
通信拓扑设计:
matlab复制adjacency_matrix = [0 1 1; % UAV1连接UAV2,3
1 0 1; % UAV2连接UAV1,3
1 1 0]; % UAV3连接UAV1,2
冲突消解策略:
matlab复制t_cpa = compute_CPA(uav1, uav2); % 计算最近接近点时间
if t_cpa < threshold
adjust_velocity(uav1);
end
matlab复制function [alpha_pos, alpha_score] = MPGWO(SearchAgents_no, Max_iter, lb, ub, dim, fobj)
% 初始化
alpha_pos = zeros(1,dim);
alpha_score = inf;
% 创建并行子群
subpop_num = 3;
subpop = cell(subpop_num,1);
for i=1:subpop_num
subpop{i}.Positions = initialization(SearchAgents_no/subpop_num,dim,ub,lb);
subpop{i}.alpha_score = inf;
end
% 主循环
for iter=1:Max_iter
a = 2 - iter*(2/Max_iter);
% 各子群独立更新
for k=1:subpop_num
% 计算适应度
for i=1:size(subpop{k}.Positions,1)
fitness = fobj(subpop{k}.Positions(i,:));
% 更新领导者
if fitness < subpop{k}.alpha_score
subpop{k}.alpha_score = fitness;
subpop{k}.alpha_pos = subpop{k}.Positions(i,:);
end
end
% 位置更新
for i=1:size(subpop{k}.Positions,1)
r1 = rand(); r2 = rand();
A1 = 2*a*r1 - a;
C1 = 2*r2;
D_alpha = abs(C1*subpop{k}.alpha_pos - subpop{k}.Positions(i,:));
X1 = subpop{k}.alpha_pos - A1*D_alpha;
% β和δ狼更新类似...
% 动态权重合成
w1 = 0.5 + 0.3*rand();
w2 = 0.3 + 0.2*rand();
w3 = 0.2 + 0.1*rand();
subpop{k}.Positions(i,:) = (w1*X1 + w2*X2 + w3*X3)/(w1+w2+w3);
end
end
% 每10代迁移操作
if mod(iter,10)==0
subpop = migrate(subpop);
end
end
% 选择全局最优
for k=1:subpop_num
if subpop{k}.alpha_score < alpha_score
alpha_score = subpop{k}.alpha_score;
alpha_pos = subpop{k}.alpha_pos;
end
end
end
matlab复制function smooth_path = path_smoothing(raw_path, map)
smooth_path = raw_path;
max_iter = 20;
for iter=1:max_iter
for i=2:size(raw_path,1)-1
% 拉普拉斯平滑
new_point = 0.5*smooth_path(i,:) + 0.25*(smooth_path(i-1,:)+smooth_path(i+1,:));
% 碰撞检测
if ~check_collision(new_point, map)
smooth_path(i,:) = new_point;
end
end
end
% B样条曲线进一步平滑
t = linspace(0,1,size(smooth_path,1));
tt = linspace(0,1,3*size(smooth_path,1));
smooth_path = [spline(t,smooth_path(:,1),tt)', ...
spline(t,smooth_path(:,2),tt)', ...
spline(t,smooth_path(:,3),tt)'];
end
| 参数 | 值 | 说明 |
|---|---|---|
| 场景尺寸 | 1000×1000×200m | 三维任务空间 |
| 无人机数量 | 3-5架 | 可扩展配置 |
| 最大速度 | 15m/s | 每架无人机相同 |
| 通信距离 | 300m | 基于无线Mesh网络 |
| 障碍物密度 | 10-20% | 随机生成 |
| 算法 | 路径长度(m) | 计算时间(s) | 成功率(%) | 平滑度 |
|---|---|---|---|---|
| A* | 1245.6 | 8.72 | 82.3 | 0.56 |
| 标准GWO | 1183.2 | 6.15 | 88.7 | 0.43 |
| PSO | 1167.8 | 7.83 | 85.2 | 0.51 |
| MP-GWO | 1124.5 | 5.92 | 94.6 | 0.39 |
关键发现:MP-GWO在路径质量、收敛速度和成功率上均有显著提升,特别在高密度障碍物场景下优势更明显
密集建筑物避障:
动态威胁规避:
编队队形变换:
狼群规模选择:
收敛因子调整:
matlab复制% 非线性递减比线性效果更好
a = a_initial - (a_initial-a_final)*(iter/MaxIter)^0.8;
适应度函数设计:
并行计算加速:
matlab复制parfor i = 1:SearchAgents_no
Positions(i,:) = update_position(Positions(i,:), alpha, beta, delta);
end
滚动时域规划:
热启动策略:
传感器误差处理:
matlab复制collision_cost = sum(map(round(path)+safety_margin));
通信延迟补偿:
紧急制动策略: