news 2026/4/25 18:19:34

基于NSGA2 MPNDS MPNDS2 BPNNIA BPHEIA BPAIMA算法实现复杂城市地形路径规划附matlab代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于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 雷达方面
    卡尔曼滤波跟踪、航迹关联、航迹融合
    版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
    网站建设 2026/4/25 18:18:22

    Radxa AICore DX-M1M:边缘AI计算的能效革命

    1. Radxa AICore DX-M1M&#xff1a;边缘AI计算的能效革命在工业机器人、无人机和边缘计算设备中&#xff0c;AI推理性能与功耗的平衡一直是开发者面临的难题。Radxa最新推出的AICore DX-M1M模块通过创新的硬件架构&#xff0c;在仅3W的功耗下实现了25 TOPS&#xff08;INT8&am…

    作者头像 李华
    网站建设 2026/4/25 18:15:59

    venv虚拟环境运行Django项目

    创建虚拟环境&#xff1a;在C:\Users\Administrator\Desktop\new_s目录执行python -m venv venv激活虚拟环境&#xff1a;.\venv\Scripts\Activate.ps1&#xff08;终端前缀出现(venv)即成功&#xff09; 如果报错权限问题&#xff0c;先执行&#xff1a; Set-ExecutionPolicy …

    作者头像 李华
    网站建设 2026/4/25 18:14:38

    2026体制内考什么经济学专业证书有用?

    每年毕业季&#xff0c;不少经济学相关专业的同学会将目光投向各类机关和事业单位的经济管理岗位。无论是宏观经济分析、政策研究&#xff0c;还是区域经济规划&#xff0c;这些方向都与专业学习内容高度契合。然而&#xff0c;随着各单位管理方式的持续优化&#xff0c;对人才…

    作者头像 李华
    网站建设 2026/4/25 18:12:40

    文件和fd,文件的内核级缓冲区,重定向

    文件文件 内容 属性访问文件之前&#xff0c;必须要打开它文件在未打开之前&#xff0c;是在磁盘中的当访问一个文件时&#xff0c;是进程在访问文件进程在内存里&#xff0c;cpu只可以读取内存但是文件存在磁盘中所以可以看出&#xff0c;文件也会加载到内存中否则cpu无法访…

    作者头像 李华
    网站建设 2026/4/25 18:10:56

    极光信息社|4月21日科技速报:反垄断、并购与科技产业新动向

    2026年4 月 21 日&#xff0c;全球科技领域重磅事件频发&#xff0c;反垄断监管、企业并购、海外业务布局、智能新品发布等动态接连落地&#xff0c;多家科技巨头迎来关键发展节点&#xff0c;产业格局持续优化调整。1. 苹果印度反垄断案加速推进&#xff0c;最高面临 380 亿美…

    作者头像 李华