【MOV三维路径规划】基于matlab灰狼算法无人机三维航迹规划【含Matlab源码 2445期】

本文主要是介绍【MOV三维路径规划】基于matlab灰狼算法无人机三维航迹规划【含Matlab源码 2445期】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、灰狼优化算法的无人机三维航迹规划

1 无人机航迹规划建模
1.1 地形模型

首先, 本研究须对三维地理环境 (规划空间) 进行离散化处理.通过对规划空间进行立方体网格划分, 将空间划分为大小相等、彼此相邻的立方体, 根据所设置的飞行航点的个数, 在规划空间搜索有序的多个航点, 从起点依次连接到目标点, 形成航迹, 模型如图1所示.规划空间使用二维矩阵表示, 其中该矩阵的每一个元素代表该精度下此方位的最高海拔.基于上述, 规划空间O为
在这里插入图片描述
1.2 禁飞区模型
由于在真实的地理环境中会有人流密集区和军事管制区等禁飞区域, 因此须建立相应禁飞区模型.本研究将禁飞区模型设置为圆柱体模型.由于规划空间矩阵的行代表横向方向, 列代表纵向方向, 因此第i个禁飞区的圆心坐标为 (xi, yi) , 设禁飞区的半径为ri, 高度h (无人机飞行的最高海拔高度) 为固定值, 禁飞区模型如图1深蓝色圆柱所示.基于上述, 将禁飞区用B表示, 有
在这里插入图片描述
在这里插入图片描述
图1 三维地理环境下的无人机航迹模型

1.3 无人机航迹规划的代价模型
无人机航迹的优劣评价由多种指标构成.航迹代价 (适应度值的倒数) 的评价指标主要由三部分组成:第一部分是能量的消耗程度;第二部分是飞行的高度;第三部分是禁飞区的威胁程度.因此, 将成本函数定义为
在这里插入图片描述
式中:w1和w2为权重参数;f1为消耗的能量;f2为飞行纬度的成本因素;f3为禁飞区的威胁程度.当无人机在飞行过程中保持固定速度时, f1可用固定比例的飞行路线长度等价表示[10], 有
在这里插入图片描述
式中:p1为比例因子;li为第i段飞行航迹的距离, 有
在这里插入图片描述
其中, k为第k个航点, xk为第k个航点的横坐标, yk为第k个航点的纵坐标, zk为第k个航点所对应的海拔高度.

若无人机飞行的高度太高或太低, 则会通过f2函数进行惩罚[10], 有
在这里插入图片描述
2 灰狼优化算法
灰狼优化算法模拟了灰狼在自然中的捕食行为和等级制度.在灰狼优化算法中, 由α领导捕食行动, β进行辅助决策, δ进行具体的行动安排, ω服从前三者的指令, 对猎物进行跟踪围剿, 最终完成捕食行动.

利用灰狼优化算法求解优化问题时, 在G维搜索空间中, 假设灰狼种群中的灰狼个体的数目为N, 其中第i只灰狼在G维空间中的位置可表示为Xi= (Xi1, Xi2, …, XiG) , 种群中当前最优个体记为α, 当前次优的个体记为β, 当前第三优的个体记为δ, 其余个体记为ω, 猎物的位置对应于优化问题的全局最优解.灰狼优化算法的寻优过程为:在搜索空间中随机产生一群灰狼个体, 对于这群灰狼个体进行适应度评估, 得出适应度前三的灰狼个体α, β, δ, 由它们作为寻找猎物的位置 (全局最优解) 的基准, 下一代的灰狼个体的位置根据α, β, δ的位置计算得出.

在捕食过程中, 灰狼种群首先须对猎物采取包围行动.对应在灰狼优化算法的寻优过程中, 须确定个体与猎物之间的距离[6], 有
在这里插入图片描述
式中:Xp (t) 为第t代时猎物的位置向量;X (t) 为第t代时灰狼个体的位置向量;A和C为系数;a随着迭代次数从2线性递减到0;r1和r2为[0, 1]之间的随机数.

对于种群中其他的狼, 根据最高级的三头灰狼α, β和δ个体位置来判断猎物的方位[6], 有:
在这里插入图片描述
虽然灰狼优化算法有控制参数少和一定程度上避免陷入局部最优等优点, 但是灰狼优化算法在解决三维航迹规划问题中, 也有一定的缺陷.当灰狼优化算法随机初始化个体时, 生成的航点杂乱无序, 造成个体的适应度比较低.因为距离控制参数a是线性递减的, 所以开发能力不足.当位置更新时, 灰狼优化算法采用的是根据适应度值前三的个体进行平均计算, 这样导致位置更新策略不灵活, 在一些寻优过程中, 难以找到最优解.

3 基于灰狼优化算法的航迹规划流程
a.设置灰狼种群规模、变量维数、最大迭代次数.根据式 (18) 和 (19) 采用基于贪婪思想和加入变异策略的初始化方法, 对于每个灰狼个体的航点位置进行初始化, 即初始化参数a, A和C.

b.评估种群中每个灰狼个体是否符合约束条件.

c.计算种群中每个灰狼个体的适应度值.

d.将种群中的灰狼个体的适应度值进行比较, 筛选出前三个表现最好的灰狼个体Xα, Xβ, Xδ, 记录它们对应的航点位置.

e.对于种群的每一个灰狼个体, 根据式 (17) 和 (23) 更新自己的位置.

f.根据式 (13) 、 (14) 和 (20) , 更新参数a, A和C的值.

g.判断迭代次数是否满足要求, 若满足, 则算法结束, 否则返回步骤b.

⛄二、部分源代码

%% 基于灰狼算法的三维无人机航迹优化
clc;clear;close all;
%% 1.创建地图
%地图的大小200*200
MapSizeX = 210 ; MapSizeY = 210;
%% 地形地图创建,地图详细参数,请去MapValueFunction.m里面设置
x = 1:1:MapSizeX;
y = 1:1:MapSizeY;
for i = 1:MapSizeX
for j = 1:MapSizeY
Map(i,j) = MapValueFunction(i,j);
end
end
global NodesNumber
global startPoint
global endPoint
global ThreatAreaPostion
global ThreatAreaRadius
%% 威胁区域绘制
%威胁区域中心坐标
ThreatAreaPostion = [120,20;
20,120];
%威胁区域半径
ThreatAreaRadius = [30;30];
%将威胁区域叠加到图上
figure
mesh(Map);
hold on;
for i= 1:size(ThreatAreaRadius)
[X,Y,Z] = cylinder(ThreatAreaRadius(i),50);
X = X + ThreatAreaPostion(i,1);
Y = Y + ThreatAreaPostion(i,2);
Z(2,:) = Z(2,:) + 50;%威胁区域高度
mesh(X,Y,Z)
end

%% 设置起始点
startPoint = [0,0,10];
endPoint = [210,210,20];
plot3(startPoint(1),startPoint(2),startPoint(3),‘mo’);
text(startPoint(1),startPoint(2),startPoint(3),‘起点’)
plot3(endPoint(1),endPoint(2),endPoint(3),‘yp’);
text(endPoint(1),endPoint(2),endPoint(3),‘终点’)
title(‘地图信息’)
%% 麻雀算法参数设置
NodesNumber = 2;%起点与终点之间节点的个数
dim = 3NodesNumber; %维度,一组坐标点为[x,y,z]3个值,所以总的数据个数为3NodesNumber
lb = [20.*ones(1,NodesNumber),20.*ones(1,NodesNumber),0.*ones(1,NodesNumber)];%x,y,z的下限[20,20,0]
ub = [180.*ones(1,NodesNumber),180.*ones(1,NodesNumber),50.*ones(1,NodesNumber)];%x,y,z的上限[200,200,50]
fobj = @(x)fun(x,NodesNumber,startPoint,endPoint,ThreatAreaPostion,ThreatAreaRadius);%适应度函数
SearchAgents_no=30; % 种群数量
Max_iteration=50; % 设定最大迭代次数
%麻雀寻优
[Best_pos,Best_score,GWO_curve]=GWO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); %开始优化
%根据寻优获得的节点,获取插值后的路径
[X_seq,Y_seq,Z_seq,x_seq,y_seq,z_seq] = GetThePathLine(Best_pos,NodesNumber,startPoint,endPoint);
plot3(X_seq,Y_seq,Z_seq,‘k.-’,‘linewidth’,3);%绘制路径
plot3(x_seq,y_seq,z_seq,‘mo’);%绘制节点
title(‘GWO寻优路径’)
%绘制迭代曲线
figure
plot(GWO_curve,‘Color’,‘b’,‘linewidth’,2)
grid on
title(‘GWO收敛曲线’)
xlabel(‘迭代次数’);
ylabel(‘最优适应度值’);
disp([‘最优适应度值为:’,num2str(Best_score)]);

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]柳长安,王晓鹏,刘春阳,吴华.基于改进灰狼优化算法的无人机三维航迹规划[J].华中科技大学学报(自然科学版). 2017,45(10)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

这篇关于【MOV三维路径规划】基于matlab灰狼算法无人机三维航迹规划【含Matlab源码 2445期】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/253577

相关文章

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu4826(三维DP)

这是一个百度之星的资格赛第四题 题目链接:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1004&cid=500 题意:从左上角的点到右上角的点,每个点只能走一遍,走的方向有三个:向上,向下,向右,求最大值。 咋一看像搜索题,先暴搜,TLE,然后剪枝,还是TLE.然后我就改方法,用DP来做,这题和普通dp相比,多个个向上