考虑异常天气和太阳辐射下基于强化学习的无人机三维路径规划

目录

环境建模

(1)异常天气区域约束

(2)太阳辐射模型

算法设计

结果展示

完整代码获取


以往关于无人机的推文都是利用元启发式算法去解决的:

一看就会!四种策略改进的蜣螂算法求解三维无人机路径规划!原理公式详解!附赠与原算法对比!出图美观直接用!

UAV路径规划|基于多目标水母算法MOJS求解多无人机协同路径规划 附Matlab代码

今天给大家带来一期基于强化学习的无人机三维路径规划。目前来说,强化学习也是一个非常热门的方向,同时,我们也考虑异常天气和太阳辐射的条件下,利用Q-learning强化学习算法去解决无人机三维路径规划问题,非常新颖。

您只需做的工作:一键运行main文件即可出图!代码注释清晰!非常适合新手小白!

环境建模

首先,从真实地形数据中截取100×100的区域,减去最小高度后除以100,得到归一化的栅格高度。地形以下的栅格标记为-1(障碍),以上的标记为2(可通行)。这样就把连续地形转化成了一个100×100×50的三维栅格地图。

(1)异常天气区域约束

异常天气区域被建模为一个垂直圆柱体禁飞区,其圆心位于*(x₀, y₀) = (60, 70)* ,半径为r = 7.5 个栅格单位,贯穿整个高度范围。对于任意栅格单元*(i, j, k)*,如果满足以下条件,则该单元被标记为障碍:

满足该条件的栅格点同样在MAP矩阵中设置为−1,使得路径规划时无人机会自动回避该区域。

(2)太阳辐射模型

为模拟太阳能无人机的能量获取,在每个水平位置*(i, j)* 生成服从均匀分布U(3.491, 4.491) 的太阳辐射值(单位:kwh/kwp/day),并归一化至[0, 1]区间后扩展到三维空间,形成太阳辐射矩阵S(i, j, k)。该矩阵将作为奖励函数的组成部分,引导无人机优先选择太阳辐射较强的航线。

算法设计

算法的核心思想就是把三维空间离散化成栅格,让无人机在栅格中反复试错,通过奖励信号学习出一张Q表,最终根据Q表贪心地走出一条从起点到终点的最优路径。Q表是一个巨大的矩阵,行数等于所有栅格点的数量,列数为27,对应26个邻居方向加上原地不动。Q(s,a) 表示在状态s执行动作a的预期累积收益。

Q值更新公式就是标准的:

训练的话分两个阶段:

第一阶段:当Q表中非零元素不足500000时,认为Q表还很稀疏,采用纯随机探索。智能体从起点出发,每步随机选一个合法邻居,计算奖励并更新Q值,直到到达终点或走入死胡同。这个阶段的目的是快速填充Q表。

第二阶段:Q表足够稠密后,切换到ε-greedy策略,以0.9的概率选Q值最大的动作(利用),0.1的概率随机探索。当连续两轮路径长度差距小于5且路径点不超过100个时,认为已经收敛,最后用纯贪心(ε=1)走一遍输出最终路径。

每一步的即时奖励函数由三部分组成:

第一项是该位置的太阳辐射收益,鼓励走辐射强的区域。第二项是距离差引导,如果这一步离终点更近就得正奖励,更远就得负奖励。第三项是高度变化惩罚,抑制大幅度升降。到达终点直接给150的大奖励。

整个模型流程就不写了,如果有需要写作的小伙伴也可以私信问我要~

结果展示

我们设置学习率为0.9,折扣因子为0.7,给大家展示一下结果~

首先是Q-learning三维路径规划立体图:

以及俯视图:

航迹剖面图:

可以看到,整个航迹成功避开了异常天气区域,并且也完美符合航迹对应地形高度和低空限制高度,整个航迹在其中间,没有违反任何约束。

最终规划结果也会显示到命令行窗口:

复制代码
%%  运行时间:           20.98 s
%%  迭代次数:           72 次
%%  路径点个数:         98 个
%%  规划路径长度:       13072.62 m
%%  地面投影长度:       11353.91 m

以上所有图片,均可一键运行main生成,无需配置环境!注释清晰!非常适合新手小白!

完整代码获取

想要获取以上完整代码的,可以点击下方小卡片,再后台回复关键词:

无人机

相关推荐
Pixlout2 小时前
《7元接口体系》v1.0
网络·算法·硬件工程
SUNNY_SHUN2 小时前
不需要Memory Bank:CMDR-IAD用2D+3D双分支重建做工业异常检测,MVTec 3D 97.3%
论文阅读·人工智能·算法·3d
Matlab光学2 小时前
Matlab 复现:分数阶&整数阶OAM 变换
算法·matlab·拓扑学
机器学习之心2 小时前
ICEEMDAN-CMBE特征提取+Bayes-TCN-LSTM故障诊断+SHAP可解释分析!MATLAB完整代码
matlab·lstm
凌波粒2 小时前
LeetCode--459.重复的子字符串(字符串/KMP算法)
算法·leetcode·职场和发展
_深海凉_2 小时前
LeetCode热题100-移除元素
数据结构·算法·leetcode
Makoto_Kimur2 小时前
Java Scanner 的 ACM 常用输入模板
java·数据结构·算法
逆境不可逃2 小时前
【后端新手谈09】深入浅出短链接:从原理到实战开发
算法·面试·职场和发展
DeepModel2 小时前
通俗易懂讲透随机梯度下降法(SGD)
人工智能·python·算法·机器学习