目录
以往关于无人机的推文都是利用元启发式算法去解决的:
一看就会!四种策略改进的蜣螂算法求解三维无人机路径规划!原理公式详解!附赠与原算法对比!出图美观直接用!
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生成,无需配置环境!注释清晰!非常适合新手小白!
完整代码获取
想要获取以上完整代码的,可以点击下方小卡片,再后台回复关键词:
无人机