基于白鹭群优化算法ESOA的多无人机协同集群避障路径规划算法研究,目标函数:最低成本:路径、高度、威胁、转角附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。
🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。
🔥 内容介绍
一、引言
在多无人机协同作业场景中,如搜索救援、军事侦察等,确保无人机能够安全、高效地避开障碍物并到达目标地点至关重要。基于白鹭群优化算法(ESOA)的多无人机协同集群避障路径规划算法,以最低成本(涵盖路径、高度、威胁、转角等因素)为目标函数,为解决这一问题提供了新的思路。该算法模拟白鹭群体的觅食、飞行等行为,通过群体协作来优化多无人机的路径规划。
二、白鹭群优化算法 ESOA 原理
- 白鹭行为模拟
:ESOA 模拟白鹭在自然环境中的行为模式。白鹭在觅食时,会根据自身经验以及群体中其他白鹭的信息来调整飞行方向和位置。算法将每只无人机视为一只白鹭个体,其在三维空间中的位置和飞行方向对应白鹭的位置和移动方向。白鹭在寻找食物(目标点)过程中,会避开障碍物(模拟现实中的障碍物),同时考虑与其他白鹭保持适当距离(对应无人机间的避碰需求)。
- 关键要素
:
⛳️ 运行结果
📣 部分代码
%% 参数设置
% (1) 设置每个无人机的待优化点的个数
n=10;
% % (2) 设置起点和终点
% start_location = [160;60;50];%100
% end_location = [900;720;50];%150
%
% % (3)设置障碍物
% R1=50; % Radius 80
% x1 = 400; y1 = 500; z1 = 100; % center
%
% R2=60; % Radius 70
% x2 = 600; y2 = 100; z2 = 150; % center
%
% R3=50; % Radius 80
% x3 = 500; y3 = 350; z3 = 150; % center
%
% R4=70; % Radius 70
% x4 = 350; y4 = 200; z4 = 150; % center
%
% R5=70; % Radius 70
% x5 = 700; y5 = 550; z5 = 150; % center
%
% R6=80; % Radius 80
% x6 = 650; y6 = 750; z6 = 150; % center
%
% R7=70; % Radius 70
% x7 = 750; y7 = 350; z7 = 150; % center
%
% R8=70;
% x8 = 250; y8 = 350; z8 = 150; % center
%
% R9=70;
% x9 = 530; y9 = 620; z9 = 150; % center
%
% R10=60;
% x10 = 850; y10 = 200; z10 = 150; % center
%
% Threats=[x1 y1 z1 R1;x2 y2 z2 R2; x3 y3 z3 R3; x4 y4 z4 R4; x5 y5 z5 R5;x6 y6 z6 R6;x7 y7 z7 R7;x8 y8 z8 R8;x9 y9 z9 R9;x10 y10 z10 R10];
% (2) 设置起点和终点
start_location = [150;150;50];
end_location = [900;720;50];
% (3)设置障碍物
R1=30; % Radius 80
x1 = 400; y1 = 500; z1 = 150; % center
R2=50; % Radius 70
x2 = 700; y2 = 150; z2 = 150; % center
R3=40; % Radius 80
x3 = 550; y3 = 450; z3 = 150; % center
R4=50; % Radius 70
x4 = 350; y4 = 100; z4 = 150; % center
R5=30; % Radius 70
x5 = 400; y5 = 650; z5 = 150; % center
R6=50; % Radius 80
x6 = 800; y6 = 800; z6 = 150; % center
R7=70; % Radius 70
x7 = 750; y7 = 350; z7 = 150; % center
R8=60;
x8 = 150; y8 = 350; z8 = 150; % center
R9=50;
x9 = 920; y9 = 600; z9 = 150; % center
R10=50;
x10 = 920; y10 = 200; z10 = 150; % center
% Threats=[x1 y1 z1 R1;x2 y2 z2 R2; x3 y3 z3 R3; x5 y5 z5 R5;x6 y6 z6 R6;x7 y7 z7 R7;x8 y8 z8 R8;x9 y9 z9 R9;x10 y10 z10 R10];
Threats=[x1 y1 z1 R1;x2 y2 z2 R2; x3 y3 z3 R3; x4 y4 z4 R4; x5 y5 z5 R5;x6 y6 z6 R6;x7 y7 z7 R7;x8 y8 z8 R8;x9 y9 z9 R9;x10 y10 z10 R10];
