大规模超多目标优化:基于导航变量的多目标粒子群优化算法(NMOPSO)的无人机三维路径规划,MATLAB代码

一、基于导航变量的多目标粒子群优化算法(NMOPSO)介绍

基于导航变量的多目标粒子群优化算法(Navigation variable-based multi-objective particle swarm optimization,NMOPSO)是2025年提出的一种用于无人机路径规划的先进算法,旨在生成满足无人机运动学约束的帕累托最优路径。该算法通过将路径规划问题建模为一个多目标优化问题,并利用粒子群优化(PSO)技术来寻找最优解。NMOPSO 算法的核心在于引入导航变量来表示无人机的路径,从而更好地考虑无人机的运动学约束,并通过多目标优化方法生成一组非支配解,以满足不同的应用需求。

二、无人机路径规划问题

无人机路径规划问题的运动学模型、约束条件以及目标函数的定义如下:

2.1 运动学模型和约束

在这里插入图片描述
在这里插入图片描述

这些约束条件确保无人机在飞行过程中不会超出其物理能力范围,从而保证飞行的安全性和可行性。

2.2 路径规划的目标函数

无人机路径规划问题可以描述为在三维空间中找到一条从起点到终点的路径,该路径需要满足以下要求:
路径长度最短:减少飞行时间和能量消耗。
避免障碍物:确保飞行安全。
飞行高度稳定:减少能量消耗并提高飞行稳定性。
路径平滑:减少转向角度的变化,降低能量消耗。
这些要求可以通过以下四个目标函数来量化:

2.2.1 路径长度 (F1)

路径长度的目标函数 F1​ 用于衡量路径的总长度。路径长度越短,无人机的飞行效率越高。目标函数 F1​ 定义为:
在这里插入图片描述

2.2.2 避碰 (F2)

避碰的目标函数 F2​ 用于确保无人机在飞行过程中避免与障碍物碰撞。目标函数 F2​ 定义为:
在这里插入图片描述

在这里插入图片描述

2.2.3 飞行高度 (F3)

飞行高度的目标函数 F3​ 用于确保无人机在飞行过程中保持稳定的飞行高度,以减少能量消耗。目标函数 F3​ 定义为:
在这里插入图片描述

2.2.4 平滑度 (F4)

平滑度的目标函数 F4​ 用于衡量无人机飞行路径的平滑程度,以减少转向角度的变化,从而降低能量消耗。目标函数 F4​ 定义为:
在这里插入图片描述
参考文献:
[1]Duong, Thi Thuy Ngan et al. “Navigation variable-based multi-objective particle swarm optimization for UAV path planning with kinematic constraints.” Neural Computing and Applications (2025): n. pag.

三、NMOPSO求解路径规划

由于上述目标函数之间可能存在冲突,因此采用多目标优化方法来寻找帕累托最优解。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
以下是基于导航变量的多目标粒子群优化算法(NMOPSO)的详细算法流程:
在这里插入图片描述

  1. 初始化
    设置参数:确定粒子群的大小、最大迭代次数、惯性权重、学习因子等参数。
    生成初始路径:随机生成一组路径,作为粒子群的初始位置。每个路径由导航变量表示,包括路径段的长度、爬升角和转向角。
    初始化粒子的物理变量:为每个粒子初始化速度和位置,并根据约束条件进行调整。
    计算适应度:根据目标函数 F1​,F2​,F3​,F4​ 计算每个粒子当前路径的适应度。
    初始化非支配解集 P:将初始粒子群中的非支配解加入非支配解集 P。
    建立超网格:根据非支配解集 P 中各解的目标函数值,建立超网格,为后续的领导者选择做准备。
  2. 迭代更新
    选择领导者:
    遍历超网格,计算每个超立方体的拥挤度。
    根据拥挤度随机选择一个领导者,作为粒子更新的参考点。
    更新粒子的速度和位置:
    根据粒子的当前位置、个人最好位置和领导者的位置,更新粒子的速度:
    vt+1i​=w⋅vti​+c1​⋅r1​⋅(pbestti​−xti​)+c2​⋅r2​⋅(lbestti​−xti​)

其中,w 是惯性权重,c1​ 和 c2​ 是学习因子,r1​ 和 r2​ 是随机数。
根据更新后的速度,更新粒子的位置:
xt+1i​=xti​+vt+1i​

应用变异机制:
随机选择一个粒子的导航变量,按照区域变异机制进行变异:
xt,iji​=xt,iji​+Nij​⋅Gt​⋅xt,pbest,ii​

其中,Nij​ 是服从正态分布的随机数,Gt​ 是变异增益。
评估新路径:
将变异后的导航变量转换为笛卡尔坐标,生成新的飞行路径。
根据目标函数 F1​,F2​,F3​,F4​ 计算新路径的适应度。
更新非支配解集 P:
将新生成的路径加入非支配解集 P,并去除被支配的解。
根据需要进行剪枝操作,保持非支配解集的规模在合理范围内。
更新超网格:
根据更新后的非支配解集 P,重新建立超网格,为下一次迭代的领导者选择做准备。
终止条件判断:
如果达到最大迭代次数或满足其他终止条件,停止算法,输出非支配解集 P。
否则,继续进行下一次迭代。
3. 输出结果
生成帕累托最优路径:从非支配解集 P 中提取所有路径,作为帕累托最优解。
路径后处理:根据应用需求,对帕累托最优路径进行进一步筛选和优化,生成最终的飞行路径。

参考文献:
[1]Duong, Thi Thuy Ngan et al. “Navigation variable-based multi-objective particle swarm optimization for UAV path planning with kinematic constraints.” Neural Computing and Applications (2025): n. pag.

四、部分代码及部分结果

%% Problem Definition
model = CreateModel(); % Create search map and parameters
model_name = 6;

nVar=model.n;       % Number of Decision Variables = searching dimension of PSO = number of path nodes

VarSize=[1 nVar];   % Size of Decision Variables Matrix

% Lower and upper Bounds of particles (Variables)
VarMin.x=model.xmin;           
VarMax.x=model.xmax;           
VarMin.y=model.ymin;           
VarMax.y=model.ymax;           
VarMin.z=model.zmin;           
VarMax.z=model.zmax;                 

VarMax.r=3*norm(model.start-model.end)/nVar;  % r is distance
VarMin.r=VarMax.r/9;

% Inclination (elevation)
AngleRange = pi/4; % Limit the angle range for better solutions
VarMin.psi=-AngleRange;            
VarMax.psi=AngleRange;          

% Azimuth 
VarMin.phi=-AngleRange;            
VarMax.phi=AngleRange;          

% Lower and upper Bounds of 
alpha=0.5;
VelMax.r=alpha*(VarMax.r-VarMin.r);    
VelMin.r=-VelMax.r;                    
VelMax.psi=alpha*(VarMax.psi-VarMin.psi);    
VelMin.psi=-VelMax.psi;                    
VelMax.phi=alpha*(VarMax.phi-VarMin.phi);    
VelMin.phi=-VelMax.phi;   

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
部分目标值:

0.300365264512433	0	0.0109216475554173	0.157103667847307
0.180069472931536	0.00717057109677057	0.921603257396324	0.0953346837909458
0.280207207478691	0	0.234143267974745	0.140098460110780
0.203454591036713	0	0.615170885787356	0.105465857354038
0.401976119060461	0	0.799892726449414	0.0863074238854263
0.199237316936387	0	0.773279042451712	0.105418266306425
0.271838496611607	0	0.307157895178272	0.109666436161432
0.255666433362837	0.00554746541981953	0.665128138204463	0.0952926620592650
0.0877292789926853	0	0.698146967610539	0.116314640273981
0.271034629115423	0	0.576585131107617	0.100546273591615
0.204929089406155	0.00930726839817866	0.263683557281992	0.107834349418997
0.287787136604497	0	0.503329665477220	0.0993740956104593
0.195281448127700	0.0167603997926334	0.424931965313948	0.154561038654894
0.190277670359048	0	0.598019548413648	0.111630271344450
0.264534830017376	0	0.498093143407658	0.111146814388160
0.277757542348206	0	0.245534111340621	0.108418668795096
0.237168715621827	0.000224536574886301	0.447838987420496	0.135213706531868
0.176145899621352	0.00852702325501375	0.279610584380127	0.161379204881807
0.141367436175594	0.0210658714732379	0.336914302731387	0.167546381483178
0.202473230609544	0	0.300075155494763	0.158424167863161
0.311013505009188	0	0.320182836219369	0.0991703941962695
0.187004986746893	0	0.935614763654719	0.0853483164537535
0.168307745521377	0.00160421919079389	0.454554393847683	0.175583565002359
0.0913660979694189	0.0144499097186495	0.473337097970996	0.154030417569909
0.121692119290297	0.0272790036392756	0.382838012209535	0.155096281698757
0.339806261568176	0	0.584529100098253	0.0958664067216775
0.257894151241395	0.00733698855277842	0.444275949061896	0.123182322959434
0.267771942066655	0	0.617189936681618	0.0923193834989379
0.269520901316745	0.0196289146676047	0.225807628677862	0.158684522988329
0.255921007790497	0	0.560751206634023	0.114061790665696
0.0938595392278734	0.00436537959498293	0.529742003401117	0.105369714940128
0.191351895017579	0.00388699725597306	0.612077386697780	0.109562462716857
0.225221906107897	0	0.371255920952597	0.144882797343828
0.205106510537343	0	0.462678151895162	0.140356537550818
0.174869997860869	0	0.344367778457776	0.184745638963785
0.0591365515902442	0	0.552199790381657	0.122256535497274
0.0783705846440442	0	0.477967930113006	0.129837536260137
0.175898722350626	0.0115328169765328	0.352188813727490	0.183106336999839
0.0901943127414524	0	0.702953610547384	0.107664524074211
0.280836562804398	0	0.252406847667071	0.101543378630368
0.158563161770229	0.0237132999300125	0.433991191646272	0.162399846988122

五、完整MATLAB代码见下方名片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值