一、算法概述
本文基于 Q-learning 离线强化学习,在三维栅格环境下实现无人机的无碰撞、最短路径及最少步数规划。无人机具备 1 格或 2 格的三维全向移动能力,支持对角线飞行和悬停。通过与环境交互迭代学习最优策略,以到达终点、路径距离、移动步数和避障为核心目标,输出满足约束的最优飞行路径。
二、环境与核心建模
1. 三维状态空间
将无人机飞行空间离散化为三维栅格地图,状态定义为无人机坐标:
$$S = {(x,y,z) \mid 1 \le x \le X_{max},\ 1 \le y \le Y_{max},\ 1 \le z \le Z_{max}}$$
其中 $(x,y,z)$ 表示无人机空间位置,$X_{max}, Y_{max}, Z_{max}$ 为地图边界(代码中设定为 $10 \times 10 \times 10$)。
2. 动作空间
共设计 54 种动作,包含轴向移动、平面斜向移动、空间斜向移动以及悬停。具体集合如下:
$$A = { (\Delta x,\Delta y,\Delta z) \mid \Delta x,\Delta y,\Delta z \in {-2,-1,0,1,2},\ \text{非全零} } \cup { (0,0,0) }$$
这涵盖了 6 个轴向 1 格移动、12 个平面斜向 1 格移动、8 个空间斜向 1 格移动,以及对应的 2 格移动选项和 1 个悬停动作。
3. 约束条件
- 边界约束:坐标必须严格限制在地图范围内。
- 避障约束:禁止进入障碍物坐标区域。
- 目标约束:从起点 $(2,2,2)$ 出发,最终到达终点 $(9,9,8)$。
三、Q-learning 核心数学原理
1. Q 值函数更新
Q 值函数 $Q(s,a)$ 表示在状态 $s$ 下执行动作 $a$ 的长期累积奖励期望,是算法决策的核心依据。更新公式如下:
$$Q(s,a) \leftarrow Q(s,a) + \alpha \cdot [R(s,a) + \gamma \cdot \max_{a'} Q(s',a') - Q(s,a)]$$
参数说明:
- $\alpha$:学习率,控制更新步长(代码中动态衰减,从 0.25 降至 0.05)。
- $\gamma$:折扣因子,权衡远期奖励(代码中设为 0.99)。
- $R(s,a)$:即时奖励。
- $s'$:执行动作后的新状态。
- $\max Q(s',a')$:下一状态的最优动作价值。
2. 动作选择策略
采用 ε-贪心策略配合动态衰减机制,平衡探索与利用:
$$\pi(a|s)= \begin{cases} \arg\max_a Q(s,a) & \text{概率 } 1-\varepsilon \text{(利用最优策略)} \ \text{随机合法动作} & \text{概率 } \varepsilon \text{(探索未知环境)} \end{cases}$$
ε 随训练轮次指数衰减:$\varepsilon = \max(\varepsilon_{min},\ \varepsilon_0 \cdot e^{-0.007 \cdot \text{episode}})$。
四、奖励函数 Reward 设计
本算法以路径最短、无碰撞、必达终点、步数最少为目标,奖励函数分为四类场景:
1. 奖励函数表达式
$$R(s,a)= \begin{cases} 3500 - 15 \cdot d_{step} - 5 \cdot N_{step} & \text{到达终点}\ -1500 & \text{碰撞障碍物/越界}\ 30 \cdot (d_{cur}-d_{next}) -10 \cdot d_{step} -2 \cdot N_{step} -10 & \text{悬停}\ 30 \cdot (d_{cur}-d_{next}) -10 \cdot d_{step} -2 \cdot N_{step} & \text{正常飞行} \end{cases}$$
2. 设计逻辑详解
- 到达终点(最高奖励):基础奖励 +3500,确保优先到达;同时根据单步距离和总步数进行惩罚,强制最短路径。
- 碰撞障碍物/越界(最高惩罚):惩罚 -1500,让无人机彻底学会避障,杜绝碰撞风险。


