⛄一、灰狼优化算法的无人机三维航迹规划
1 无人机航迹规划建模 1.1 地形模型
首先, 本研究须对三维地理环境 (规划空间) 进行离散化处理.通过对规划空间进行立方体网格划分, 将空间划分为大小相等、彼此相邻的立方体, 根据所设置的飞行航点的个数, 在规划空间搜索有序的多个航点, 从起点依次连接到目标点, 形成航迹, 模型如图1所示.规划空间使用二维矩阵表示, 其中该矩阵的每一个元素代表该精度下此方位的最高海拔.基于上述, 规划空间O为
1.2 禁飞区模型
由于在真实的地理环境中会有人流密集区和军事管制区等禁飞区域, 因此须建立相应禁飞区模型.本研究将禁飞区模型设置为圆柱体模型.由于规划空间矩阵的行代表横向方向, 列代表纵向方向, 因此第i个禁飞区的圆心坐标为 (xi, yi) , 设禁飞区的半径为ri, 高度h (无人机飞行的最高海拔高度) 为固定值, 禁飞区模型如图1深蓝色圆柱所示.基于上述, 将禁飞区用B表示, 有
图1 三维地理环境下的无人机航迹模型
1.3 无人机航迹规划的代价模型
无人机航迹的优劣评价由多种指标构成.航迹代价 (适应度值的倒数) 的评价指标主要由三部分组成:第一部分是能量的消耗程度;第二部分是飞行的高度;第三部分是禁飞区的威胁程度.因此, 将成本函数定义为
式中:w1和w2为权重参数;f1为消耗的能量;f2为飞行纬度的成本因素;f3为禁飞区的威胁程度.当无人机在飞行过程中保持固定速度时, f1可用固定比例的飞行路线长度等价表示[10], 有
式中:p1为比例因子;li为第i段飞行航迹的距离, 有
其中, k为第k个航点, xk为第k个航点的横坐标, yk为第k个航点的纵坐标, zk为第k个航点所对应的海拔高度.
若无人机飞行的高度太高或太低, 则会通过f2函数进行惩罚[10], 有
2 灰狼优化算法
灰狼优化算法模拟了灰狼在自然中的捕食行为和等级制度.在灰狼优化算法中, 由α领导捕食行动, β进行辅助决策, δ进行具体的行动安排, ω服从前三者的指令, 对猎物进行跟踪围剿, 最终完成捕食行动.
利用灰狼优化算法求解优化问题时, 在G维搜索空间中, 假设灰狼种群中的灰狼个体的数目为N, 其中第i只灰狼在G维空间中的位置可表示为Xi= (Xi1, Xi2, …, XiG) , 种群中当前最优个体记为α, 当前次优的个体记为β, 当前第三优的个体记为δ, 其余个体记为ω, 猎物的位置对应于优化问题的全局最优解.灰狼优化算法的寻优过程为:在搜索空间中随机产生一群灰狼个体, 对于这群灰狼个体进行适应度评估, 得出适应度前三的灰狼个体α, β, δ, 由它们作为寻找猎物的位置 (全局最优解) 的基准, 下一代的灰狼个体的位置根据α, β, δ的位置计算得出.
在捕食过程中, 灰狼种群首先须对猎物采取包围行动.对应在灰狼优化算法的寻优过程中, 须确定个体与猎物之间的距离[6], 有
式中:Xp (t) 为第t代时猎物的位置向量;X (t) 为第t代时灰狼个体的位置向量;A和C为系数;a随着迭代次数从2线性递减到0;r1和r2为[0, 1]之间的随机数.
对于种群中其他的狼, 根据最高级的三头灰狼α, β和δ个体位置来判断猎物的方位[6], 有:
虽然灰狼优化算法有控制参数少和一定程度上避免陷入局部最优等优点, 但是灰狼优化算法在解决三维航迹规划问题中, 也有一定的缺陷.当灰狼优化算法随机初始化个体时, 生成的航点杂乱无序, 造成个体的适应度比较低.因为距离控制参数a是线性递减的, 所以开发能力不足.当位置更新时, 灰狼优化算法采用的是根据适应度值前三的个体进行平均计算, 这样导致位置更新策略不灵活, 在一些寻优过程中, 难以找到最优解.
3 基于灰狼优化算法的航迹规划流程
a.设置灰狼种群规模、变量维数、最大迭代次数.根据式 (18) 和 (19) 采用基于贪婪思想和加入变异策略的初始化方法, 对于每个灰狼个体的航点位置进行初始化, 即初始化参数a, A和C.
b.评估种群中每个灰狼个体是否符合约束条件.
c.计算种群中每个灰狼个体的适应度值.
d.将种群中的灰狼个体的适应度值进行比较, 筛选出前三个表现最好的灰狼个体Xα, Xβ, Xδ, 记录它们对应的航点位置.
e.对于种群的每一个灰狼个体, 根据式 (17) 和 (23) 更新自己的位置.
f.根据式 (13) 、 (14) 和 (20) , 更新参数a, A和C的值.
g.判断迭代次数是否满足要求, 若满足, 则算法结束, 否则返回步骤b.
⛄二、部分源代码
%% 基于灰狼算法的三维无人机航迹优化
clc;clear;close all;
%% 1.创建地图
%地图的大小200*200
MapSizeX = 210 ; MapSizeY = 210;
%% 地形地图创建,地图详细参数,请去MapValueFunction.m里面设置
x = 1:1:MapSizeX;
y = 1:1:MapSizeY;
for i = 1:MapSizeX
for j = 1:MapSizeY
Map(i,j) = MapValueFunction(i,j);
end
end
global NodesNumber
global startPoint
global endPoint
global ThreatAreaPostion
global ThreatAreaRadius
%% 威胁区域绘制
%威胁区域中心坐标
ThreatAreaPostion = [120,20;
20,120];
%威胁区域半径
ThreatAreaRadius = [30;30];
%将威胁区域叠加到图上
figure
mesh(Map);
hold on;
for i= 1:size(ThreatAreaRadius)
[X,Y,Z] = cylinder(ThreatAreaRadius(i),50);
X = X + ThreatAreaPostion(i,1);
Y = Y + ThreatAreaPostion(i,2);
Z(2,:) = Z(2,:) + 50;%威胁区域高度
mesh(X,Y,Z)
end
%% 设置起始点
startPoint = [0,0,10];
endPoint = [210,210,20];
plot3(startPoint(1),startPoint(2),startPoint(3),‘mo’);
text(startPoint(1),startPoint(2),startPoint(3),‘起点’)
plot3(endPoint(1),endPoint(2),endPoint(3),‘yp’);
text(endPoint(1),endPoint(2),endPoint(3),‘终点’)
title(‘地图信息’)
%% 麻雀算法参数设置
NodesNumber = 2;%起点与终点之间节点的个数
dim = 3NodesNumber; %维度,一组坐标点为[x,y,z]3个值,所以总的数据个数为3NodesNumber
lb = [20.*ones(1,NodesNumber),20.*ones(1,NodesNumber),0.*ones(1,NodesNumber)];%x,y,z的下限[20,20,0]
ub = [180.*ones(1,NodesNumber),180.*ones(1,NodesNumber),50.*ones(1,NodesNumber)];%x,y,z的上限[200,200,50]
fobj = @(x)fun(x,NodesNumber,startPoint,endPoint,ThreatAreaPostion,ThreatAreaRadius);%适应度函数
SearchAgents_no=30; % 种群数量
Max_iteration=50; % 设定最大迭代次数
%麻雀寻优
[Best_pos,Best_score,GWO_curve]=GWO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); %开始优化
%根据寻优获得的节点,获取插值后的路径
[X_seq,Y_seq,Z_seq,x_seq,y_seq,z_seq] = GetThePathLine(Best_pos,NodesNumber,startPoint,endPoint);
plot3(X_seq,Y_seq,Z_seq,‘k.-’,‘linewidth’,3);%绘制路径
plot3(x_seq,y_seq,z_seq,‘mo’);%绘制节点
title(‘GWO寻优路径’)
%绘制迭代曲线
figure
plot(GWO_curve,‘Color’,‘b’,‘linewidth’,2)
grid on
title(‘GWO收敛曲线’)
xlabel(‘迭代次数’);
ylabel(‘最优适应度值’);
disp([‘最优适应度值为:’,num2str(Best_score)]);
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
a
2 参考文献
[1]柳长安,王晓鹏,刘春阳,吴华.基于改进灰狼优化算法的无人机三维航迹规划[J].华中科技大学学报(自然科学版). ,45(10)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除