??作者簡介:熱愛科研的Matlab仿真開發(fā)者,修心和技術同步精進,
代碼獲取、論文復現(xiàn)及科研仿真合作可私信。
??個人主頁:Matlab科研工作室
??個人信條:格物致知。
更多Matlab完整代碼及仿真定制內(nèi)容點擊??
智能優(yōu)化算法?? ? ??神經(jīng)網(wǎng)絡預測?? ? ??雷達通信?? ? ?無線傳感器?? ? ? ?電力系統(tǒng)
信號處理?? ? ? ? ? ? ?圖像處理?? ? ? ? ? ? ??路徑規(guī)劃?? ? ??元胞自動機?? ? ? ?無人機
?? 內(nèi)容介紹
摘要
無人機三維路徑規(guī)劃是無人機自主飛行的關鍵技術之一。本文提出了一種基于 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 多種多目標優(yōu)化算法實現(xiàn)考慮無人機性能的復雜城市地形路徑規(guī)劃方法。該方法首先建立了無人機三維路徑規(guī)劃模型,然后利用 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 等多目標優(yōu)化算法對路徑規(guī)劃模型進行求解,最后對求解結(jié)果進行分析和比較。仿真結(jié)果表明,該方法能夠有效地解決無人機三維路徑規(guī)劃問題,并能夠滿足無人機性能要求。
1. 引言
無人機三維路徑規(guī)劃是無人機自主飛行的關鍵技術之一。無人機三維路徑規(guī)劃是指在三維空間中為無人機規(guī)劃一條從起點到終點的路徑,該路徑需要滿足一定的約束條件,如避障、能量消耗、飛行時間等。無人機三維路徑規(guī)劃問題是一個復雜的多目標優(yōu)化問題,需要考慮多個目標函數(shù),如路徑長度、飛行時間、能量消耗等。
近年來,無人機三維路徑規(guī)劃問題引起了廣泛關注,并提出了多種求解方法。這些方法主要可以分為兩類:傳統(tǒng)方法和智能優(yōu)化算法。傳統(tǒng)方法包括貪婪算法、蟻群算法、粒子群算法等。智能優(yōu)化算法包括遺傳算法、進化算法、模擬退火算法等。
本文提出了一種基于 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 多種多目標優(yōu)化算法實現(xiàn)考慮無人機性能的復雜城市地形路徑規(guī)劃方法。該方法首先建立了無人機三維路徑規(guī)劃模型,然后利用 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 等多目標優(yōu)化算法對路徑規(guī)劃模型進行求解,最后對求解結(jié)果進行分析和比較。
2. 無人機三維路徑規(guī)劃模型
?3. 多目標優(yōu)化算法
多目標優(yōu)化算法是一種用于求解多目標優(yōu)化問題的算法。多目標優(yōu)化算法可以分為兩類:傳統(tǒng)方法和智能優(yōu)化算法。
傳統(tǒng)方法包括貪婪算法、蟻群算法、粒子群算法等。智能優(yōu)化算法包括遺傳算法、進化算法、模擬退火算法等。
本文采用 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 等多目標優(yōu)化算法對無人機三維路徑規(guī)劃模型進行求解。
?? 部分代碼
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; % 阻力系數(shù)
data.R_vf = 0.27; % 汽車風險
data.alpha=10^6; % J 致死動能
data.beta = 100; % J
data.S_c = 0.5 ; % 遮蔽系數(shù)
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; % 樓高分布參數(shù)
data.sigma = sigma; % 樓高分布參數(shù)
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
?? 運行結(jié)果
4. 仿真結(jié)果
本文對提出的方法進行了仿真實驗。仿真實驗在 MATLAB 平臺上進行。仿真實驗結(jié)果表明,該方法能夠有效地解決無人機三維路徑規(guī)劃問題,并能夠滿足無人機性能要求。
圖 1 給出了無人機三維路徑規(guī)劃的仿真結(jié)果。從圖 1 可以看出,該方法能夠規(guī)劃出一條從起點到終點的路徑,該路徑能夠避開障礙物,并且能夠滿足無人機性能要求。
圖 2 給出了無人機三維路徑規(guī)劃的仿真結(jié)果。從圖 2 可以看出,該方法能夠規(guī)劃出一條從起點到終點的路徑,該路徑能夠避開障礙物,并且能夠滿足無人機性能要求。
圖 3 給出了無人機三維路徑規(guī)劃的仿真結(jié)果。從圖 3 可以看出,該方法能夠規(guī)劃出一條從起點到終點的路徑,該路徑能夠避開障礙物,并且能夠滿足無人機性能要求。文章來源:http://www.zghlxwxcb.cn/news/detail-820966.html
5. 結(jié)論
本文提出了一種基于 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 多種多目標優(yōu)化算法實現(xiàn)考慮無人機性能的復雜城市地形路徑規(guī)劃方法。該方法首先建立了無人機三維路徑規(guī)劃模型,然后利用 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 等多目標優(yōu)化算法對路徑規(guī)劃模型進行求解,最后對求解結(jié)果進行分析和比較。仿真結(jié)果表明,該方法能夠有效地解決無人機三維路徑規(guī)劃問題,并能夠滿足無人機性能要求。文章來源地址http://www.zghlxwxcb.cn/news/detail-820966.html
?? 參考文獻
?? 部分理論引用網(wǎng)絡文獻,若有侵權(quán)聯(lián)系博主刪除
?? ?關注我領取海量matlab電子書和數(shù)學建模資料
?? ?私信完整代碼、論文復現(xiàn)、期刊合作、論文輔導及科研仿真定制
1 各類智能優(yōu)化算法改進及應用
生產(chǎn)調(diào)度、經(jīng)濟調(diào)度、裝配線調(diào)度、充電優(yōu)化、車間調(diào)度、發(fā)車優(yōu)化、水庫調(diào)度、三維裝箱、物流選址、貨位優(yōu)化、公交排班優(yōu)化、充電樁布局優(yōu)化、車間布局優(yōu)化、集裝箱船配載優(yōu)化、水泵組合優(yōu)化、解醫(yī)療資源分配優(yōu)化、設施布局優(yōu)化、可視域基站和無人機選址優(yōu)化
2 機器學習和深度學習方面
卷積神經(jīng)網(wǎng)絡(CNN)、LSTM、支持向量機(SVM)、最小二乘支持向量機(LSSVM)、極限學習機(ELM)、核極限學習機(KELM)、BP、RBF、寬度學習、DBN、RF、RBF、DELM、XGBOOST、TCN實現(xiàn)風電預測、光伏預測、電池壽命預測、輻射源識別、交通流預測、負荷預測、股價預測、PM2.5濃度預測、電池健康狀態(tài)預測、水體光學參數(shù)反演、NLOS信號識別、地鐵停車精準預測、變壓器故障診斷
2.圖像處理方面
圖像識別、圖像分割、圖像檢測、圖像隱藏、圖像配準、圖像拼接、圖像融合、圖像增強、圖像壓縮感知
3 路徑規(guī)劃方面
旅行商問題(TSP)、車輛路徑問題(VRP、MVRP、CVRP、VRPTW等)、無人機三維路徑規(guī)劃、無人機協(xié)同、無人機編隊、機器人路徑規(guī)劃、柵格地圖路徑規(guī)劃、多式聯(lián)運運輸問題、車輛協(xié)同無人機路徑規(guī)劃、天線線性陣列分布優(yōu)化、車間布局優(yōu)化
4 無人機應用方面
無人機路徑規(guī)劃、無人機控制、無人機編隊、無人機協(xié)同、無人機任務分配、無人機安全通信軌跡在線優(yōu)化
5 無線傳感器定位及布局方面
傳感器部署優(yōu)化、通信協(xié)議優(yōu)化、路由優(yōu)化、目標定位優(yōu)化、Dv-Hop定位優(yōu)化、Leach協(xié)議優(yōu)化、WSN覆蓋優(yōu)化、組播優(yōu)化、RSSI定位優(yōu)化
6 信號處理方面
信號識別、信號加密、信號去噪、信號增強、雷達信號處理、信號水印嵌入提取、肌電信號、腦電信號、信號配時優(yōu)化
7 電力系統(tǒng)方面
微電網(wǎng)優(yōu)化、無功優(yōu)化、配電網(wǎng)重構(gòu)、儲能配置
8 元胞自動機方面
交通流 人群疏散 病毒擴散 晶體生長
9 雷達方面
卡爾曼濾波跟蹤、航跡關聯(lián)、航跡融合
到了這里,關于【無人機三維路徑規(guī)劃算法】基于NSGA2 MPNDS MPNDS2 BPNNIA BPHEIA BPAIMA多種多目標優(yōu)化算法實現(xiàn)考慮無人機性能的復雜城市地形路徑規(guī)劃的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!