当前位置: 首页 > news >正文

基于NSGA2 MPNDS MPNDS2 BPNNIA BPHEIA BPAIMA算法实现复杂城市地形路径规划附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 defaultrng(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; % Jdata.S_c = 0.5 ; % 遮蔽系数data.g = 9.8 ; % m/s^2data.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/sS=[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-calystep = 3;pbase = ystep+1;for i = 1:2*ystep+1pi = i - pbase;can=[];for j = -ystep:1:ystepif acos([1,pi]*[1,j]'/sqrt(1+pi^2)/sqrt(1+(j)^2))<=data.alpha_tracecan=[can j];endendcanselect{i}=can;enddata.canselect = canselect;data.canselectp = pbase;%%tiledlayout(2,2);for h = 30:30:120nexttile;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);endendcolormap('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:TTclose all;RANDSEED=testtimes;testfit = problemList{problemIndex};popnum=105;maxiter=maxiterList{problemIndex};%% NSGA2rng default;rng(RANDSEED);test_case={@OptAll,testfit,popnum,1,1,maxiter,dim};for i =1:numel(test_case)/7var={'-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();endPopulation = 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),[])';%% MPNDSrng default;rng(RANDSEED);test_case={@OptMPNDS,testfit,popnum,1,1,maxiter,dim};for i =1:numel(test_case)/7var={'-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();endPopulation= MPSELECT(Global.result{2},100,2);res_mpndsdec=reshape([Population.dec],dim,[])';res_mpndsobj=reshape([Population.obj],size(Population(1).obj,2),[])';%% MPNDS2rng default;rng(RANDSEED);test_case={@OptMPNDS2,testfit,popnum,1,1,maxiter,dim};for i =1:numel(test_case)/7var={'-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();endPopulation= MPSELECT(Global.result{2},100,2);res_mpnds2dec=reshape([Population.dec],dim,[])';res_mpnds2obj=reshape([Population.obj],size(Population(1).obj,2),[])';%% MPNNIArng default;rng(RANDSEED);%popnum = 210;%maxiter=20000;test_case={@MPNNIA,testfit,popnum,1,1,maxiter,dim};for i =1:numel(test_case)/7var={'-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();endPopulation= MPSELECT(Global.result{2},100,2);MPNNIAdec=reshape([Population.dec],dim,[])';MPNNIAobj=reshape([Population.obj],size(Population(1).obj,2),[])';%% MPHEIArng default;rng(RANDSEED);%popnum = 210;%maxiter=20000;test_case={@MPHEIA,testfit,popnum,1,1,maxiter,dim};for i =1:numel(test_case)/7var={'-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();endPopulation= MPSELECT(Global.result{2},100,2);MPHEIAdec=reshape([Population.dec],dim,[])';MPHEIAobj=reshape([Population.obj],size(Population(1).obj,2),[])';%% MPAIMArng default;rng(RANDSEED);%popnum = 210;%maxiter=20000;test_case={@MPAIMA,testfit,popnum,1,1,maxiter,dim};for i =1:numel(test_case)/7var={'-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();endPopulation= 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];endproblemMean(problemIndex,:)= mean(score)clear varproblemStd(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 可以看出,该方法能够规划出一条从起点到终点的路径,该路径能够避开障碍物,并且能够满足无人机性能要求。

    5. 结论

    本文提出了一种基于 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 多种多目标优化算法实现考虑无人机性能的复杂城市地形路径规划方法。该方法首先建立了无人机三维路径规划模型,然后利用 NSGA2、MPNDS、MPNDS2、BPNNIA、BPHEIA、BPAIMA 等多目标优化算法对路径规划模型进行求解,最后对求解结果进行分析和比较。仿真结果表明,该方法能够有效地解决无人机三维路径规划问题,并能够满足无人机性能要求。

    🔗 参考文献

    🎈 部分理论引用网络文献,若有侵权联系博主删除
    🎁 关注我领取海量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 雷达方面
    卡尔曼滤波跟踪、航迹关联、航迹融合
    http://www.jsqmd.com/news/699272/

    相关文章:

  • 2026成都好吃的火锅串串推荐|老成都人认证的必吃榜单 - TOP10品牌推荐榜单
  • S7-1500与第三方串口设备通信,TRCV_C接收不定长数据时,这个ADHOC参数千万别设错!
  • 3步掌握AutoHotkey脚本编译核心技巧:从源码到独立EXE的实战指南
  • 如何将酷狗KGM格式转换为MP3?kgg转换mp3,kgma转换mp3,详细步骤与工具推荐
  • 无人机航拍小目标检测太难?YOLO-MARS 一招搞定,精度暴涨 8.1%!
  • Voxtral-4B-TTS-2603开源可部署:Mistral官方权重+社区Web封装完整溯源
  • TLPI 第12章 读书笔记:System and Process Information
  • ARMv8架构PLB与RAS机制解析及优化实践
  • 2026北京高考冲刺一对一,如何选到梦中情班? - 品牌测评鉴赏家
  • 2026届毕业生推荐的十大AI写作工具横评
  • 如何将酷我音乐KWM格式转换为MP3?详细步骤与工具推荐
  • OpenCV图像特征提取:边缘与角点检测实战指南
  • intv_ai_mk11镜像免配置:健康检查接口+日志路径固化+服务状态可视
  • 【MCP 2026工业落地实战白皮书】:覆盖钢铁、能源、制造三大高危场景的7类适配陷阱与零故障部署清单
  • 【限时开放】VSCode 2026农业插件Early Access权限倒计时48小时:含独家GeoJSON农田边界自动校准模块(仅剩217个激活码)
  • 读2025世界前沿技术发展报告51干细胞
  • 智能安防中的视频分析与预警处置
  • 别再手动轮询了!用STM32CubeMX+DMA搞定ADC多通道采样,效率提升不止一点点
  • 【工业级MCP网关配置白皮书】:基于Linux内核4.19+DPDK 22.11的C++实现,含6份可审计配置清单
  • 软考-数据库系统工程师-五大经典查找算法原理与数据库应用
  • Phi-4-mini-reasoning部署案例:边缘服务器(Jetson AGX Orin)可行性评估
  • DeepTutor:基于智能体原生架构的个性化AI学习伴侣部署与实战指南
  • Ubuntu 安装CUDA 教程
  • 董永建《信息学奥赛一本通》(C++版)
  • 量化不确定性的庖丁解牛
  • 大数据分析专业毕设京东美妆产品数据集,数据量大概32150条
  • 【VSCode 2026日志筛选分析工具终极指南】:20年一线工程师亲测的5大高阶技巧,90%开发者还不知道
  • 游戏电竞护航陪玩源码系统小程序:从多端接单到俱乐部级运营的全开源护航平台 - 壹软科技
  • GoWxDump:如何快速实现微信聊天记录的深度取证分析?
  • MT5 Zero-Shot中文增强镜像效果展示:直播话术实时多样性生成