基于PSO的UAV三维路径规划(Matlab代码实现)
创始人
2024-04-16 19:07:05
0

 🍒🍒🍒欢迎关注🌈🌈🌈

📝个人主页:我爱Matlab


👍点赞➕评论➕收藏 == 养成习惯(一键三连)🌻🌻🌻

🍌希望大家多多支持🍓~一起加油 🤗

💬语录:将来的我一定会感谢现在奋斗的自己!

🍁🥬🕒摘要🕒🥬🍁

对于UAV三维路径规划这一优化问题而言,需要考虑多方面的因素。首先,UAV要在地图限制的区域内飞行。其次,为了令UAV安全飞行,UAV不能与地面和障碍物发生碰撞,并且与地面保持一定的安全距离。最后,UAV的飞行距离要尽可能短,以节省燃料并尽快到达目的地。

本代码是基于粒子群算法对UAV进行三维路径规划。首先需要构建三维地图。

其次,设置粒子群算法的相关参数,迭代次数为100,粒子数为50,惯性权重为1.2,学习因子c1=c2=1.5,路径节点为4个(可自行增加或减少),其中每个节点为三维坐标(x,y,z),为了使UAV轨迹光滑,利用三次样条拟合散点对路径节点进行处理。

最后,需要判断路径是否与障碍相交,若相交,则设置一个比较大的惩罚项,反之保存当前适应度和路径节点,本代码的目标函数包括路径的总长度和路径节点距离地面的高度,均为越小越好,下图为优化的路径结果图。

✨🔎⚡运行结果⚡🔎✨

 

 

💂♨️👨‍🎓Matlab代码👨‍🎓♨️💂

clc
clear
close all

%% 三维路径规划模型定义
startPos = [40, 129, 5];
goalPos = [951, 833, 10];

% 随机定义山峰地图
mapRange = [1000,1000,120];              % 地图长、宽、高范围
[X,Y,Z] = defMap4(mapRange);

%% 初始参数设置
N = 100;           % 迭代次数
M = 50;            % 粒子数量
pointNum = 4;      % 每一个粒子包含三个位置点
w = 1.2;           % 惯性权重
c1 = 1.5;            % 社会权重
c2 = 1.5;            % 认知权重

% 粒子位置界限
posBound = [[0,0,10]',[1000,1000,60]'];

% 粒子速度界限
alpha = 0.1;
velBound(:,2) = alpha*(posBound(:,2) - posBound(:,1));
velBound(:,1) = -velBound(:,2);
% velBound(3,1)=-4;
% velBound(3,2)=4;

%% 种群初始化
% 初始化一个空的粒子结构体
particles.pos= [];
particles.v = [];
particles.fitness = [];
particles.path = [];
particles.Best.pos = [];
particles.Best.fitness = [];
particles.Best.path = [];

% 定义M个粒子的结构体
particles = repmat(particles,M,1);

% 初始化每一代的最优粒子
GlobalBest.fitness = [inf,inf];

% 第一代的个体粒子初始化
for i = 1:M 
    % 粒子按照正态分布随机生成
    particles(i).pos.x = unifrnd(posBound(1,1),posBound(1,2),1,pointNum);
    particles(i).pos.x=sort(particles(i).pos.x);
    particles(i).pos.y = unifrnd(posBound(2,1),posBound(2,2),1,pointNum);
    particles(i).pos.y=sort(particles(i).pos.y);
    particles(i).pos.z = unifrnd(posBound(3,1),posBound(3,2),1,pointNum);
    %particles(i).pos.z=sort(particles(i).pos.z);
    
    % 初始化速度
%     particles(i).v.x = zeros(1, pointNum);
%     particles(i).v.y = zeros(1, pointNum);
%     particles(i).v.z = zeros(1, pointNum);
    particles(i).v.x=unifrnd(velBound(1,1),velBound(1,2),1,pointNum);
    particles(i).v.y=unifrnd(velBound(2,1),velBound(2,2),1,pointNum);
    particles(i).v.z=unifrnd(velBound(3,1),velBound(3,2),1,pointNum);
    % 适应度
    [flag,fitness,path] = calFitness(startPos, goalPos,X,Y,Z, particles(i).pos);
    
    % 碰撞检测判断
    if flag == 1
        % 若flag=1,表明此路径将与障碍物相交,则增大适应度值
        particles(i).fitness = 1000*fitness;
        particles(i).path = path;
    else
        % 否则,表明可以选择此路径
        particles(i).fitness = fitness;
        particles(i).path = path;
    end
    
    % 更新个体粒子的最优
    particles(i).Best.pos = particles(i).pos;
    particles(i).Best.fitness = particles(i).fitness;
    particles(i).Best.path = particles(i).path;
    
    % 更新全局最优
    if (particles(i).Best.fitness(1) < GlobalBest.fitness(1))&(particles(i).Best.fitness(2) < GlobalBest.fitness(2))
        GlobalBest = particles(i).Best;
    end
end

% 初始化每一代的最优适应度,用于画适应度迭代图
fitness_beat_iters = zeros(N,2);
 

📜📢🌈参考文献🌈📢📜

[1]孙雪莹,易军凯.无人机三维路径规划的粒子群混合算法[J/OL].电讯技术:1-12[2022-11-15].http://kns.cnki.net/kcms/detail/51.1267.TN.20220307.1837.004.html

相关内容

热门资讯

《山东省医疗纠纷预防和处理办法... 近日,山东省政府网站发布《山东省医疗纠纷预防和处理办法》(以下简称《办法》),依法高效预防和处理医疗...
国常会审议通过《供水条例(草案... 李强主持召开国务院常务会议,审议通过《供水条例(草案)》和《中华人民共和国药品管理法实施条例(修订草...
四川路桥:严格执行国家法律法规... 有投资者在互动平台向四川路桥提问:“请问公司是否针对员工生育或育儿设有相关的福利或激励政策?如有,什...
李强主持召开国务院常务会议,审... 据央视新闻,李强主持召开国务院常务会议,审议通过《供水条例(草案)》和《中华人民共和国药品管理法实施...
《济南市城市更新条例》2026... 大众网记者 刘帅 济南报道 城市更新,是城市高质量发展的“必答题”,更是关乎民生福祉的“民生卷”。 ...
证监会:着力健全REITs信息... 证监会印发《关于推动不动产投资信托基金(REITs)市场高质量发展有关工作的通知》。其中提到,维护市...
追踪报道——“去哪儿网”总部在... 来源:大众日报 在去哪儿网购买的机票却在航司官网查不到,用户向平台注册地北京当地法院起诉却被驳回,按...
思创医惠最新公告:收到杭州市公... 思创医惠(300078.SZ)公告称,公司收到杭州市公安局出具的《移送审查起诉告知书》,公司等涉嫌欺...
2025年A股IPO律师事务所... 文/瑞财经 刘治颖 2025年A股IPO市场收官,全年格局正式落定。 最新数据统计显示,截至12月3...