【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

相关文章

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,