基于改进灰狼优化算法的无人机三维航迹规划(附源码)

数学建模加油站 2022-11-01 21:25:05

     多无人作战飞机(UCAV)协同航迹规划是多 UCAV 协同作战的重要组成部分,对协同作战的结果有 很多的指引作用。多UCAV协同航迹规划属于多峰值优化函数求解问题,其求解稳定性比较差。为解决多 UCAV 协同航迹规划求解稳定性较差的问题,首先在对影响多机协同约束条件研究分析的基础上,结合单 机航迹规划求解中的核心指标,建立了多 UCAV 协同航迹优化函数;利用多种群灰狼算法(MP-GWO) 在求解多峰值优化函数问题上比较稳定的特点进行求解。

 1、部分代码

%%%   灰狼优化算法航迹规划   %%%
clc, close all


%--- 算法选择 1:GWO算法  2:MP-GWO算法  3:CS-GWO算法 
options = 2;


%--- 算法参数设置          
SearchAgents = 60;           % 搜索智能体个数/狼群数量/可行解的个数 (>= 20)
Max_iter = 145 ;                  % 最大搜索步数     


%--- 协同无人机设置
UAV = UAV_SetUp1;            % 在 UAV_SetUp.m 文件进行设置


%--- 灰狼算法
if options < 2
    solution = GWO(UAV, SearchAgents, Max_iter);  % GWO算法
elseif options < 3
    solution = MP_GWO(UAV, SearchAgents, Max_iter);  % MP-GWO算法
else
    solution = CS_GWO(UAV, SearchAgents, Max_iter);  % CS-GWO算法
end


%--- 绘图
IMG_AutoPlot(solution, UAV) % 自适应绘图(全自动绘图)
% IMG_Plot(solution, UAV) % 手动绘图(需手动添加无人机)
function UAV = UAV_SetUp
%UAV_SETUP 在此设置多无人机协同航迹规划任务
% 10个无人机协同突防


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

UAV.G = [  20,       20,      4;
                   16,       20,      5;
                   20,       16,      5;              
                   18,       20,      4.5; 
                   20,       18,      4.5;
                   
                   18,       18,      5;
                   16,       18,      5.5;
                   18,       16,      5.5;
                   14,       20,      5.5;
                   20,       14,      5.5;  ];      % 目标位置 (x,y)或(x,y,z)

UAV.PointNum = [  30;
                                  26;
                                  24;  
                                  26;  
                                  24;
                                  
                                  30;
                                  24;
                                  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 = [   5,      5,    17,     2.5;
                                        15,    7,    10,     2;  
                                        17,    18,   8,      2; 
                                        8,      8,     0,      6.8;  
                                        8,      17,   8,      3;      ];   % 雷达威胁(数学模型和其余威胁不同)

UAV.Menace.other = [   4,     11,   12,      2.5;
                                        10,    2,     10,     2;
                                        5,      6,     10,     1.5;
                                        10,    8,     12,     1.8;
                                        11,   13,    13,     2.3;
                                        13,   14,     9,      1.8;  
                                        18,   13,    10,     2.2; 
                                        16,   16,     0,      4;     ];   % 导弹、火炮、气象等威胁


% 无人机约束设置(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, 20], UAV.num, 1);                            % 位置x约束 (0 ~ 875km)
UAV.limt.y = repmat([0, 20], 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.6 * norm(UAV.G(i, :) - UAV.S(i, :));
    zz.min = 0.5;
    UAV.limt.L(i, :) = [zz.min, zz.max];
end


% 多无人机协同设置
% (说明略)
UAV.tc = 160;         % 协同时间 (单位s)
UAV.ds = 0.5;          % 安全距离 (单位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

2、结果展示

 

 

 

 

 

 

 

 代码见🍞正在为您运送作品详情

 参考文献:

[1]许 乐 ,赵文龙.基于新型灰狼优化算法的无人机航迹规划[J]

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

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

 如有侵权,请联系删除~

...全文
192 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
代码下载:完整代码,可直接运行 ;运行版本:2022a或2019b;若运行有问题,可私信博主; **仿真咨询 1 各类智能优化算法改进及应用** 生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化 **2 机器学习和深度学习方面** 卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断 **3 图像处理方面** 图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知 **4 路径规划方面** 旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化 **5 无人机应用方面** 无人机路径规划无人机控制、无人机编队、无人机协同、无人机任务分配 **6 无线传感器定位及布局方面** 传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化 **7 信号处理方面** 信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化 **8 电力系统方面** 微电网优化、无功优化、配电网重构、储能配置 **9 元胞自动机方面** 交通流 人群疏散 病毒扩散 晶体生长 **10 雷达方面** 卡尔曼滤波跟踪、航迹关联、航迹融合
代码下载:完整代码,可直接运行 ;运行版本:2022a或2019b;若运行有问题,可私信博主; **仿真咨询 1 各类智能优化算法改进及应用** 生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化 **2 机器学习和深度学习方面** 卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断 **3 图像处理方面** 图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知 **4 路径规划方面** 旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化 **5 无人机应用方面** 无人机路径规划无人机控制、无人机编队、无人机协同、无人机任务分配 **6 无线传感器定位及布局方面** 传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化 **7 信号处理方面** 信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化 **8 电力系统方面** 微电网优化、无功优化、配电网重构、储能配置 **9 元胞自动机方面** 交通流 人群疏散 病毒扩散 晶体生长 **10 雷达方面** 卡尔曼滤波跟踪、航迹关联、航迹融合

110,162

社区成员

发帖
与我相关
我的任务
社区描述
数学建模,就是根据实际问题来建立数学模型,对数学模型来进行求解,然后根据结果去解决实际问题。当需要从定量的角度分析和研究一个实际问题时,人们就要在深入调查研究。加入小岛让我们分享更多建模新知识~
python数据挖掘机器学习 个人社区 浙江省·杭州市
社区管理员
  • fanstuck
  • 老师我作业忘带了
  • 一直在尽头
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎加入数学建模知识共享小岛~

岛主定期共享每个数学建模竞赛的思路和代码(纯开源免费获取)

有需要可以联系岛主

试试用AI创作助手写篇文章吧