✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,
代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统
信号处理 图像处理 路径规划 元胞自动机 无人机
🔥 内容介绍
摘要
无人机三维路径规划是无人机自主飞行的关键技术之一。本文提出了一种基于 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 多种多目标优化算法实现考虑无人机性能的复杂城市地形路径规划方法。该方法首先建立了无人机三维路径规划模型,然后利用 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 等多目标优化算法对路径规划模型进行求解,最后对求解结果进行分析和比较。仿真结果表明,该方法能够有效地解决无人机三维路径规划问题,并能够满足无人机性能要求。
1. 引言
无人机三维路径规划是无人机自主飞行的关键技术之一。无人机三维路径规划是指在三维空间中为无人机规划一条从起点到终点的路径,该路径需要满足一定的约束条件,如避障、能量消耗、飞行时间等。无人机三维路径规划问题是一个复杂的多目标优化问题,需要考虑多个目标函数,如路径长度、飞行时间、能量消耗等。
近年来,无人机三维路径规划问题引起了广泛关注,并提出了多种求解方法。这些方法主要可以分为两类:传统方法和智能优化算法。传统方法包括贪婪算法、蚁群算法、粒子群算法等。智能优化算法包括遗传算法、进化算法、模拟退火算法等。
本文提出了一种基于 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 多种多目标优化算法实现考虑无人机性能的复杂城市地形路径规划方法。该方法首先建立了无人机三维路径规划模型,然后利用 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 等多目标优化算法对路径规划模型进行求解,最后对求解结果进行分析和比较。
2. 无人机三维路径规划模型
3. 多目标优化算法
多目标优化算法是一种用于求解多目标优化问题的算法。多目标优化算法可以分为两类:传统方法和智能优化算法。
传统方法包括贪婪算法、蚁群算法、粒子群算法等。智能优化算法包括遗传算法、进化算法、模拟退火算法等。
本文采用 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 等多目标优化算法对无人机三维路径规划模型进行求解。
📣 部分代码
clear;
clc;
close all;
rng default
rng(11)
addpath(genpath(pwd));
%%
data_2();
data.alpha_trace = 60/360*(2*pi); % 偏航角
data.beta_trace = 45/360*(2*pi); % 仰俯角
data.map_size=map_size;
data.P_crash = 3.42 * 10e-4; % 失控概率
data.S_hit=0.0188; % m^2 撞击面积
data.R_I = 0.3; % 阻力系数
data.R_vf = 0.27; % 汽车风险
data.alpha=10^6; % J 致死动能
data.beta = 100; % J
data.S_c = 0.5 ; % 遮蔽系数
data.g = 9.8 ; % m/s^2
data.IOT_pos=IOT_pos;
data.m = 1380 ; % g (DJI Phantom4)
data.rou_a = 1225 ; % g/m^3(大气密度)
data.miu = miu; % 楼高分布参数
data.sigma = sigma; % 楼高分布参数
data.v = 20; % 20m/s
S=[1 1];E=[49 49]; % 起点终点
data.S = S;
data.E = E;
data.minh=bulid_xyz;
data.maxh=141;
Bound = E(1)-S(1);
dim = Bound*2;
data.Bound = Bound;
data.map_step=map_step;
data.populations_risk=populations_risk;
data.road_risk=road_risk;
%% pre-cal
ystep = 3;
pbase = ystep+1;
for i = 1:2*ystep+1
pi = i - pbase;
can=[];
for j = -ystep:1:ystep
if acos([1,pi]*[1,j]'/sqrt(1+pi^2)/sqrt(1+(j)^2))<=data.alpha_trace
can=[can j];
end
end
canselect{i}=can;
end
data.canselect = canselect;
data.canselectp = pbase;
%%
tiledlayout(2,2);
for h = 30:30:120
nexttile;
Risk_map = zeros(map_size);
Riskproperty_map = zeros(map_size);
for i=1:map_size(1)
for j =1:map_size(2)
Risk_map(i,j)=Risk_map(i,j)+getC_Risk(getR_pf(getV(h,data),data),populations_risk(i,j),data);
Risk_map(i,j)=Risk_map(i,j)+getC_Risk(data.R_vf,road_risk(i,j),data);
end
end
colormap('jet')
contourf(Risk_map)
colorbar;
title(['h=' num2str(h) 'm,' ' Risk of property=' num2str(getC_rpd(h,data))]);
end
%%
problemList={@MPUAV1,@MPUAV2,@MPUAV3,@MPUAV4,@MPUAV5,@MPUAV6};
maxiterList={40000,40000,40000,40000,40000,40000};
problemMean=zeros(numel(problemList),6);
problemStd=zeros(numel(problemList),6);
data.lb = [ones(1,dim/2-1).*-1 ones(1,dim/2+1).*0];
data.ub = [ones(1,dim/2-1).*ystep ones(1,dim/2+1).*1];
data.dim = dim;
temp.dec=0;
temp.obj=0;
for problemIndex= 1:numel(problemList)
TT=30;
score=zeros(TT,6);
% res_nsga=repmat(temp,1,numel(problemList));
% res_nsga2=repmat(temp,1,numel(problemList));
% res_mpnds=repmat(temp,1,numel(problemList));
% res_mpnds2=repmat(temp,1,numel(problemList));
% MPNNIA=repmat(temp,1,numel(problemList));
% MPHEIA=repmat(temp,1,numel(problemList));
% MPAIMA=repmat(temp,1,numel(problemList));
%RS=1:31;RS(30)=[];
parfor testtimes = 10:TT
close all;
RANDSEED=testtimes;
testfit = problemList{problemIndex};
popnum=105;
maxiter=maxiterList{problemIndex};
%% NSGA2
rng default;rng(RANDSEED);
test_case={@OptAll,testfit,popnum,1,1,maxiter,dim};
for i =1:numel(test_case)/7
var={'-algorithm',test_case{i,1},'-problem',test_case{i,2},'-N',test_case{i,3},'-save',test_case{i,4},'-run',test_case{i,5}, ...,
'-evaluation',test_case{i,6},'-D',test_case{i,7},'-data',data};
Global = GLOBAL(var{:});
Global.Start();
end
Population = MPSELECT(Global.result{2},100,2);
[Population2,FrontNo,~] = NDSELECT(Global.result{2},100);
Population2=Population2(FrontNo==1);
res_nsgadec=reshape([Population.dec],dim,[])';
res_nsgaobj=reshape([Population.obj],size(Population(1).obj,2),[])';
res_nsga2dec=reshape([Population2.dec],dim,[])';
res_nsga2obj=reshape([Population2.obj],size(Population(1).obj,2),[])';
%% MPNDS
rng default;rng(RANDSEED);
test_case={@OptMPNDS,testfit,popnum,1,1,maxiter,dim};
for i =1:numel(test_case)/7
var={'-algorithm',test_case{i,1},'-problem',test_case{i,2},'-N',test_case{i,3},'-save',test_case{i,4},'-run',test_case{i,5}, ...,
'-evaluation',test_case{i,6},'-D',test_case{i,7},'-data',data};
Global = GLOBAL(var{:});
Global.Start();
end
Population= MPSELECT(Global.result{2},100,2);
res_mpndsdec=reshape([Population.dec],dim,[])';
res_mpndsobj=reshape([Population.obj],size(Population(1).obj,2),[])';
%% MPNDS2
rng default;rng(RANDSEED);
test_case={@OptMPNDS2,testfit,popnum,1,1,maxiter,dim};
for i =1:numel(test_case)/7
var={'-algorithm',test_case{i,1},'-problem',test_case{i,2},'-N',test_case{i,3},'-save',test_case{i,4},'-run',test_case{i,5}, ...,
'-evaluation',test_case{i,6},'-D',test_case{i,7},'-data',data};
Global = GLOBAL(var{:});
Global.Start();
end
Population= MPSELECT(Global.result{2},100,2);
res_mpnds2dec=reshape([Population.dec],dim,[])';
res_mpnds2obj=reshape([Population.obj],size(Population(1).obj,2),[])';
%% MPNNIA
rng default;rng(RANDSEED);
%popnum = 210;
%maxiter=20000;
test_case={@MPNNIA,testfit,popnum,1,1,maxiter,dim};
for i =1:numel(test_case)/7
var={'-algorithm',test_case{i,1},'-problem',test_case{i,2},'-N',test_case{i,3},'-save',test_case{i,4},'-run',test_case{i,5}, ...,
'-evaluation',test_case{i,6},'-D',test_case{i,7},'-data',data};
Global = GLOBAL(var{:});
Global.Start();
end
Population= MPSELECT(Global.result{2},100,2);
MPNNIAdec=reshape([Population.dec],dim,[])';
MPNNIAobj=reshape([Population.obj],size(Population(1).obj,2),[])';
%% MPHEIA
rng default;rng(RANDSEED);
%popnum = 210;
%maxiter=20000;
test_case={@MPHEIA,testfit,popnum,1,1,maxiter,dim};
for i =1:numel(test_case)/7
var={'-algorithm',test_case{i,1},'-problem',test_case{i,2},'-N',test_case{i,3},'-save',test_case{i,4},'-run',test_case{i,5}, ...,
'-evaluation',test_case{i,6},'-D',test_case{i,7},'-data',data};
Global = GLOBAL(var{:});
Global.Start();
end
Population= MPSELECT(Global.result{2},100,2);
MPHEIAdec=reshape([Population.dec],dim,[])';
MPHEIAobj=reshape([Population.obj],size(Population(1).obj,2),[])';
%% MPAIMA
rng default;rng(RANDSEED);
%popnum = 210;
%maxiter=20000;
test_case={@MPAIMA,testfit,popnum,1,1,maxiter,dim};
for i =1:numel(test_case)/7
var={'-algorithm',test_case{i,1},'-problem',test_case{i,2},'-N',test_case{i,3},'-save',test_case{i,4},'-run',test_case{i,5}, ...,
'-evaluation',test_case{i,6},'-D',test_case{i,7},'-data',data};
Global = GLOBAL(var{:});
Global.Start();
end
Population= MPSELECT(Global.result{2},100,2);
MPAIMAdec=reshape([Population.dec],dim,[])';
MPAIMAobj=reshape([Population.obj],size(Population(1).obj,2),[])';
%%
allsol = [res_nsgaobj;res_mpndsobj;res_mpnds2obj;MPNNIAobj;MPHEIAobj;MPAIMAobj];
nsga_hv = MPHV(res_nsgaobj,allsol,2);
mpnds_hv = MPHV(res_mpndsobj,allsol,2);
mpnds2_hv = MPHV(res_mpnds2obj,allsol,2);
MPNNIA_hv = MPHV(MPNNIAobj,allsol,2);
MPHEIA_hv = MPHV(MPHEIAobj,allsol,2);
MPAIMA_hv = MPHV(MPAIMAobj,allsol,2);
score(testtimes,:)=[nsga_hv mpnds_hv mpnds2_hv MPNNIA_hv MPHEIA_hv MPAIMA_hv];
end
problemMean(problemIndex,:)= mean(score)
clear var
problemStd(problemIndex,:)=var(score)
end
% problemMean =
%
% 0.0483 0.0682 0.0696 0.0519 0.0673 0.0807
% 0.0533 0.1022 0.1051 0.0726 0.1102 0.1106
% 0.0519 0.0843 0.0785 0.0610 0.0899 0.0914
% 0.0494 0.0589 0.0523 0.0424 0.0539 0.0663
% 0.0439 0.0744 0.0771 0.0518 0.0775 0.0788
% 0.0369 0.0615 0.0572 0.0403 0.0598 0.0640
%
%
% problemStd =
%
% 0.0003 0.0002 0.0002 0.0003 0.0004 0.0004
% 0.0009 0.0007 0.0006 0.0007 0.0009 0.0010
% 0.0006 0.0004 0.0004 0.0005 0.0005 0.0006
% 0.0007 0.0003 0.0004 0.0005 0.0005 0.0004
% 0.0006 0.0007 0.0007 0.0009 0.0012 0.0008
% 0.0004 0.0004 0.0003 0.0003 0.0003 0.0005
% problemMean =
%
% 0.0485 0.0681 0.0689 0.0669 0.0698 0.0800
% 0.0530 0.1021 0.1038 0.1042 0.1013 0.1108
% 0.0505 0.0817 0.0757 0.0830 0.0795 0.0891
% 0.0488 0.0580 0.0513 0.0445 0.0448 0.0654
% 0.0451 0.0770 0.0793 0.0636 0.0657 0.0803
% 0.0362 0.0610 0.0565 0.0539 0.0533 0.0641
%
%
% problemStd =
%
% 0.0003 0.0002 0.0003 0.0003 0.0003 0.0004
% 0.0009 0.0007 0.0006 0.0012 0.0008 0.0009
% 0.0005 0.0004 0.0004 0.0004 0.0004 0.0006
% 0.0007 0.0003 0.0004 0.0004 0.0005 0.0004
% 0.0007 0.0006 0.0007 0.0009 0.0010 0.0008
% 0.0004 0.0005 0.0004 0.0004 0.0004 0.0005
⛳️ 运行结果
4. 仿真结果
本文对提出的方法进行了仿真实验。仿真实验在 MATLAB 平台上进行。仿真实验结果表明,该方法能够有效地解决无人机三维路径规划问题,并能够满足无人机性能要求。
图 1 给出了无人机三维路径规划的仿真结果。从图 1 可以看出,该方法能够规划出一条从起点到终点的路径,该路径能够避开障碍物,并且能够满足无人机性能要求。
图 2 给出了无人机三维路径规划的仿真结果。从图 2 可以看出,该方法能够规划出一条从起点到终点的路径,该路径能够避开障碍物,并且能够满足无人机性能要求。
图 3 给出了无人机三维路径规划的仿真结果。从图 3 可以看出,该方法能够规划出一条从起点到终点的路径,该路径能够避开障碍物,并且能够满足无人机性能要求。文章来源:https://www.toymoban.com/news/detail-815839.html
5. 结论
本文提出了一种基于 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 多种多目标优化算法实现考虑无人机性能的复杂城市地形路径规划方法。该方法首先建立了无人机三维路径规划模型,然后利用 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 等多目标优化算法对路径规划模型进行求解,最后对求解结果进行分析和比较。仿真结果表明,该方法能够有效地解决无人机三维路径规划问题,并能够满足无人机性能要求。文章来源地址https://www.toymoban.com/news/detail-815839.html
🔗 参考文献
🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁 关注我领取海量matlab电子书和数学建模资料
👇 私信完整代码、论文复现、期刊合作、论文辅导及科研仿真定制
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
4 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化
5 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
6 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
7 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
8 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
9 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合
到了这里,关于【无人机三维路径规划matlab代码】基于NSGA2 MPNDS MPNDS2 BPNNIA BPHEIA BPAIMA多种多目标优化算法实现考虑无人机性能的复杂城市地形路径规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!