Bootstrap

【无人机】基于GWO算法、MP-GWO灰狼算法、灰狼-布谷鸟优化算法、CS-GWO多种群灰狼优化算法的无人机路径规划(Matlab代码实现)​

     💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

1. 灰狼优化算法(GWO)

2. 多种群灰狼优化算法(MP-GWO)

3. 灰狼-布谷鸟优化算法(CS-GWO)

4. 实验与仿真

结论

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

在无人机路径规划中,基于灰狼优化算法(GWO)及其变种如多种群灰狼优化算法(MP-GWO)、灰狼-布谷鸟优化算法(CS-GWO)等,已经展现出强大的应用潜力和性能优势。这些算法通过模拟灰狼的社会等级和狩猎行为,能够在复杂的搜索空间中找到最优或次优路径,为无人机提供高效、安全的飞行指导。以下是对这些算法在无人机路径规划中的研究概述:

1. 灰狼优化算法(GWO)

基本原理
GWO算法通过模拟灰狼的社会等级和狩猎过程(包围、追捕、攻击猎物)来优化问题。算法中,狼群被分为α(领导者)、β(次优解)、δ(侦查者)和ω(跟随者)四个等级。通过不断更新狼群中个体的位置,逐步逼近最优解。

在无人机路径规划中的应用

  • 建模:将无人机路径规划问题转化为优化问题,考虑无人机的飞行约束(如最大转弯角、最大爬升角、最低和最高飞行高度等)以及飞行环境中的障碍物和威胁区(如山体、雷暴区)。
  • 求解:利用GWO算法的全局搜索和局部搜索能力,在复杂的飞行环境中为无人机规划出无碰撞且高效的飞行路径。

2. 多种群灰狼优化算法(MP-GWO)

基本原理
MP-GWO算法在GWO的基础上引入了多种群策略,通过并行搜索不同区域来增强算法的全局搜索能力,同时保持局部搜索的精度。每个种群独立进化,并通过一定的机制交换信息,从而避免早熟收敛。

在无人机路径规划中的应用

  • 协同航迹规划:特别适用于多无人机协同作战场景,通过MP-GWO算法为每架无人机规划出既独立又协同的飞行路径,提高整体作战效率。
  • 稳定性提升:多种群策略能够有效解决多峰值优化函数求解稳定性差的问题,提高无人机路径规划的鲁棒性。

3. 灰狼-布谷鸟优化算法(CS-GWO)

基本原理
CS-GWO算法结合了灰狼优化算法(GWO)和布谷鸟搜索算法(CS)的优势。布谷鸟搜索算法通过模拟布谷鸟的寄生育雏行为来优化问题,其随机游走特性有助于跳出局部最优解。

在无人机路径规划中的应用

  • 混合优化:利用GWO的全局搜索能力和CS的随机性,为无人机路径规划提供更为丰富的搜索策略和更高的求解精度。
  • 复杂环境应对:在复杂多变的飞行环境中,CS-GWO算法能够更有效地应对突发情况,为无人机规划出更加灵活和安全的飞行路径。

4. 实验与仿真

在无人机路径规划的仿真实验中,通常会设置不同的飞行环境和约束条件,以验证算法的可行性和有效性。实验结果通常包括规划出的飞行路径、飞行时间、避障效果等关键指标。

结论

基于GWO算法及其变种的无人机路径规划方法,具有结构简单、参数少、易于实现等优点,能够在复杂的飞行环境中为无人机提供高效、安全的飞行指导。未来,随着算法的不断优化和无人机技术的不断发展,这些方法将在更多领域得到广泛应用。

📚2 运行结果

程序框架:

运行结果: 

部分代码:

function [UAV] = UAV_SetUp1
%UAV_SETUP1 在此设置多无人机协同航迹规划任务
% 论文1的3D环境


% 航迹点设置
% (每行为一个无人机的参数)
UAV.S = [ 0,           0,        10;
          0,           100,      10;
          300,         0,        10;  
          0,           300,      10;  ]; % 起点位置 (x,y)或(x,y,z)

UAV.G = [ 875,      875,      10;
          800,       875,      10;
          875,       800,      10; 
          800,       875,      10;  ]; % 目标位置 (x,y)或(x,y,z)

UAV.PointNum = [  28;
                  24;
                  24; 
                  24;  ];             % 每个无人机导航点个数(起始点之间点的个数)

UAV.PointDim = size(UAV.S, 2);        % 坐标点维度 (由 起点 坐标决定)
UAV.num = size(UAV.S, 1);             % UAV数量 (由 起点 个数决定)


% 威胁点设置 (x,y,r) 或 (x,y,z,r)
% (每行为一个威胁的坐标和半径)
UAV.Menace.radar = [  200, 200, 10,   20;
                      600, 700, 10,   20;  ];  % 雷达威胁(数学模型和其余威胁不同)

UAV.Menace.other = [ 80,  40, 10,   40;
                    300, 300, 10,   40;
                    350, 600, 10,   40;
                    480, 450, 10,   20;
                    700, 700, 10,   40;
                    720, 760, 10,   20;
                    680, 760, 10,   20;  ];   % 导弹、火炮、气象等威胁


% 无人机约束设置(min,max)
% (可单独为每个无人机设置,每行为一个无人机约束的上下限)
UAV.limt.v = 0.34*repmat([0.3, 0.7], UAV.num, 1);           % 速度约束 (0.3Ma ~ 0.7Ma)
UAV.limt.phi = deg2rad(repmat([-60, 60], UAV.num, 1));      % 偏角约束 (-60° ~ 60°)
UAV.limt.theta = deg2rad(repmat([-45, 45], UAV.num, 1));    % 倾角约束 (-45° ~ 45°)
UAV.limt.h = repmat([0.02, 20], UAV.num, 1);                % 高度约束 (0.02km ~ 20km)
UAV.limt.x = repmat([0, 875], UAV.num, 1);                  % 位置x约束 (0 ~ 875km)
UAV.limt.y = repmat([0, 875], UAV.num, 1);                  % 位置y约束 (0 ~ 875km)
UAV.limt.z = UAV.limt.h;                                    % 位置z约束 (忽略地球弧度)
UAV.limt.L = zeros(UAV.num, 2);                             % 航程约束 (最短航迹片段2km,最大航程1.5倍起始距离)
for i =1:UAV.num
    zz.max = 1.5 * norm(UAV.G(i, :) - UAV.S(i, :));
    zz.min = 2;
    UAV.limt.L(i, :) = [zz.min, zz.max];
end


% 多无人机协同设置
% (说明略)
UAV.tc = 6850;        % 协同时间 (单位s)
UAV.ds = 25;          % 安全距离 (单位km)


% 报错
ErrorCheck(UAV)
end

%% 程序自检
function ErrorCheck(UAV)

dim = UAV.PointDim; 
if dim ~= size(UAV.G,2) || dim ~= size(UAV.Menace.radar,2)-1 || dim ~= size(UAV.Menace.other,2)-1
    if dim ~= size(UAV.G,2)
        error('仿真维度为%d,但目标点坐标为%d维', dim, size(UAV.G,2))
    else
        error('仿真维度为%d,但威胁点坐标为%d维', dim, size(UAV.Menace.radar,2)-1)
    end
end

num = UAV.num;
if num ~= size(UAV.G,1) || num ~= size(UAV.limt.v,1) || num ~= size(UAV.limt.phi,1) ...
        || num ~= size(UAV.limt.theta,1) || num ~= size(UAV.limt.h,1) || num ~= size(UAV.limt.x,1) ...
        || num ~= size(UAV.limt.y,1) || num ~= size(UAV.limt.z,1) || num ~= size(UAV.limt.L,1)
    if num ~= size(UAV.G,1)
        error('无人机个数为%d, 但目标点有%d个', num, size(UAV.G,1))
    else
        error('约束条件个数与无人机个数不一致')
    end
end

if num ~= size(UAV.PointNum, 1)
    error('无人机个数为%d, 但为%d个无人机设置了导航点', num, size(UAV.PointNum, 1))
end

MaxPoint = floor(UAV.limt.L(:,2) ./ UAV.limt.L(:,1)) - 1;   % 每个无人机支持的最大航迹点数量
for i = 1 : UAV.num
    if UAV.PointNum(i) > MaxPoint(i)
        error('%d号无人机导航点个数超出任务需求,请尝试减少导航点个数', i)
    end
end

end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]周瑞,黄长强,魏政磊,赵克新.MP-GWO 算法在多 UCAV 协同航迹规划
中的应用[J].空军工程大学学报(自然科学版),2017,18(05):24-29.

[2]胡中华,赵敏,姚敏,李可现,吴蕊.一种改进蚂蚁算法的无人机多目标三
维航迹规划[J].沈阳工业大学学报,2011,33(05):570-575.

[3]柳长安,王晓鹏,刘春阳,吴华.基于改进灰狼优化算法的无人机三维航迹
规 划 [J]. 华 中 科 技 大 学 学 报 ( 自 然 科 学 版 ),2017,45(10):38-
42.DOI:10.13245/j.hust.171007.

🌈4 Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

;