RL

理论知识 强化学习学习

强化学习

Posted by Sun on October 9, 2020

多智能体强化学习飞行路径规划算法

image-20200506103040234

概述

提出一种基于智能体强化学习理论的飞行路径规划算法.

  1. 算法对状态空间进行划分和抽象, 避免了状态数量, 解决了强化学习维数灾难的问题
  2. MATLAB对算法进行数字仿真, 验证算法可行性, 显示结果收敛快, 可解决飞行规划的问题

问题描述

image-20200506105010141

本文考虑的问题是从某一点如何寻找一条安全的路径到达目标 。如图 1所示是一个简单的飞机进入敌方防御阵地的任务规划示意图 。图中飞机出发点用五角星表示 , 目标点用三角表示 , 地形 、 雷达 、 导弹 、 高炮 、气候威胁等威胁源用圆圈表示 , 圆圈半径即为威胁源的威胁半径 。

强化学习

对所希望的结果奖励, 不希望的结果惩罚

image-20200506105223099

算法介绍

全局智能体状态和动作的划分

此处状态划分不再以网格为依据 , 而是以威胁源作为划分的基准 。即每个威胁源所在区域 、 飞机出发点和目标点构成状态空间 。这样总的状态数量就是n + 2 个 , 其中 n 为威胁源数量 。图 1中所示是一个有两个威胁源的状态划分示意图 。图中威胁源周围的虚线框表示的威胁源的状态区域 , 比如威胁源 1虚线框内的区域都表示状态 2( 状态 2的状态域 ) , 图中前点表示状态域的进口 , 终点表示状态域的出口 。 全局智能体的动作共有 n + 1个 , 这里的动作不是某一个具体的动作 , 而是指明下一步要转移到的状态 。 比如在上图中 , 在出发点选择动作 2, 表示下一步就是要向状态 2转移 。如果此动作可以执行 , 则转移到状态 2的状态域 。

局部智能体状态和动作的划分

局部智能体的任务主要是寻找能绕过威胁源的路径 。由于局部智能体处于状态域中 , 一般一个状态域中只有一个威胁源 , 可以按照网格的方法进行状态和动作的划分 , 即一个网格对应着一个状态 。当智能体选择动作后进入到威胁源时 , 奖赏 - 1, 反之如果更接近状态域的出口时 , 则奖赏 1。局部智能体状态划分如图 3所示。

image-20200508111137934

为了能进一步减少状态 , 加快学习速度 , 在这里还可以使用相关强化学习[ 14]中状态和动作划分方法对状态和动作进行划分 。相关联强化学习同时把相关状态和动作进行表述 。强化学习提供了一个通用的框架和一组方法 。这一方法可以使智能体最优化它们在随机环境中的动作 。但是强化学习对状态和动作的描述使得它在应用到复杂的现实世界中时非常困难 。在很多领域中 , 状态和动作更多的是以相关联的形式表述的 , 比如在做饭的过程 , 在每道工序中采用什么动作是一定的 , 而不需进行更多的考虑 。

在这里把所有状态划分为 4个相关联状态 。前点和后点把整个威胁源划分为两个半圆 , 按照各个半圆中是否有其他威胁源接触进行相关联状态划分 。如图4所示 。

image-20200508110749967

算法的描述本文中 , 采用了两个智能体 , 对路径规划任务进行划分 : 一个是全局智能体 , 负责全局路径的搜索 ; 一个是局部智能体 , 负责状态区域内的路径搜索 , 找到绕过威胁源的路径 。每个智能体内部 Q 表的更新都采用标准的 Q 学习算法 。改进算法的过程伪码见表 1。

image-20200508111236467

仿真结果及分析

这里先以 7个威胁源的地形图为例进行路径规划 , 然后威胁源的个数增加到 17个 , 分别对这两种情况进行路径规划 , 结果如图 5 ~图 8所示 。

image-20200508111339786

7个威胁源时的参考路径

由图可知 , 这一路径并不是实际中最优的路径 , 强化学习在13 第 10期李东华等 : 多智能体强化学习飞行路径规划算法 实际路径规划中寻找的并不是现实中的最优 , 而是强化学习定义的 “最优 ”。虽然这不是实际的最优但是已经很接近了 。 当然 , 可以通过定义新的奖惩函数的表达式 , 将强化学习定义的最优与通常概念下的最优联系起来 。

image-20200508111446351

7个威胁源时的收敛速度

image-20200508111544720

17个威胁源时的参考路径

image-20200508111712008

17个威胁源时的收敛速度

总结

本方法使得飞行器能够完成给定的任务 、适应不同环境的要求 , 提高其生存率和任务完成率 。此算法中采用多智能体的方法 , 将研究对象进行了分层和抽象 , 解决了强化学习在复杂问题中维数灾难的困难 。实验仿真证明这一方法是可行的 , 并且具有较快的收敛速度

深度强化学习在变体飞行器自主外形优化中的应用

image-20200508121219751

概述

基于深度强化学习策略,研究了一类变体飞行器外形自主优化问题。以一种抽象化的变体飞行器为对象,给出其外形变化公式与最优外形函数等。结合深度学习与确定性策略梯度强化学习,设计深度确定性策略 梯度( DDPG) 学习步骤,使飞行器经过训练学习后具有较高的自主性和环境适应性,提高其在战场上的生存、应变 和攻击能力。仿真结果表明,训练过程收敛较快,训练好的深度网络参数可以使飞行器在整个飞行任务过程中达 到最优气动外形。

关键词: 变体飞行器; 深度强化学习; 气动外形优化

变体飞行器外形模型

image-20200508121515695

基于深度确定性策略梯度的变体飞行器外形优化学习

对于本文的变体飞行器,强化学习的目标是通 过大量的学习训练使飞行器对于特定的飞行状态 F 能够根据经验策略自主的控制电压 Vy 与 Vz ,从而 在整个飞行包线内处于最优的气动外形 Sy 和 Sz 。

考虑到上述动作空间的连续性问题,本文采用 的是强化学习中的确定性策略梯度算法以实现连续控制问题。针对单纯的确定性策略无法探索环境这 个缺陷,可以利用Actor-Critic(AC)学习框架实现异 策略学习方式,即行动策略与评估策略不是同一个 策略方法。行动策略为随机策略,以保证充足的探 索。而评估策略为确定性策略,其可以通过梯度计 算来实现累计奖赏 J 的最大化。

DDPG 的算法步骤

image-20200508122634629

1) 随机初始化 Critic 深度神经网络 Q( s,a | θQ ) 的权重θQ 和Actor的深度神经网络μ(s| θμ) 的权 重θμ。 2)初始目标网络Q- 与μ- 的权重θQ- 与θμ- 。 3) 初始化经验回放的缓存区 R 。 4) 重复每一幕。 5) 初始化随机过程 N 以用于行动策略的探索。 6) 初始观测得到状态 s1 。 7)重复步骤8) ~16)。 8) 根据当前的策略和随机探索选择动作:image-20200508122105102 9) 执行动作 a 从而得到奖励 r 和新的状态 st+1。 10) 将 ( st,at,rt,st+1) 存储在缓存区 R 中。 11) 在 R 中随机选取一组数量为 M 的 ( si,ai,ri,si+1) 。 12) 设定image-20200508122226703 13)更新Critic的网络参数使得image-20200508122249786image-20200508122300650最小 14) 利用所选取样本的策略梯度更新 Actor 的网络参数image-20200508122357356 15) 更新目标网络image-20200508122459548 16) 直到最大步数和最大幕数。

仿真校验

image-20200508122712690

image-20200508122823265

总结

本文针对变体飞行器的外形优化问题,应用近 几年较为热门的深度强化学习算法使飞行器通过训 练学习具有了自主优化外形的能力,将人工智能方 法拓展到飞行器策略优化领域。为了解决传统的强 化学习框架不适用于连续控制这个问题,结合确定 性策略梯度算法与 Actor-Critic 框架进行强化学习 过程,并将深度神经网络替代原来传统的 Actor 函 数与 Critic 函数结构,以实现更好的学习效果。仿 真结果表明,整个学习过程收敛较快,并且利用训练 好的深度网络参数,可以使后期飞行过程中的外形 优化效果大幅度提高。

飞行器强化学习多模在轨控制

image-20200508123017870

概述

传感器模块用于向控制模块实时输入飞行器敏 感的飞行数据,该数据分为可供飞行器控制直接使用的具有历史相关性的多维结构化浮点数据以及某特定 传感器独有的物理表征量;控制模块使用实时并行化决策机制,分为输入层、特征抽取层和全连接层;执行模 块用于接收控制模块实时输出的驱动数据,包括用于决策的状态最优值和用于评价的动作输出值。系统根 据用于决策的回报最优值决定使用哪些具体的执行模块,而某个被选定的具体执行模块的输出值取决于 用 于 评 价 的 动 作 输 出 值 。

系统框架

image-20200508123231936

网络结构:

image-20200508123331351

仿真及结果

image-20200508123453033

总 结

通过使用6路异构传感器模块、基于强化学习算法的控制模块和3路异构执行模块,完成了飞行器长期 在轨多模式控制。通过使用可控的两个并行输入层和两个串行连接层结构,可准确实时判别多个模块健康 度,提前选择更优模块执行控制操作。飞行器多控制模型在不同场景下的控制效果不一样,因此控制模块的 强化学习算法可以使飞行器通过与环境的不断交互试错,自主学习动作策略,在多控制模型的飞行器决策方 法中选择较优模块,达到控制优化的决策目的。在控制器出现故障失效的情形下,强化学习也可根据当前的 环境模型和状态空间感知出故障的发生,并且快速地做出决策。

Q-Learning-走迷宫实例

目标是找到一条没有炸弹的路径,以最快的速度从起始状态到达目标状态。

Q-Learning 就是要学习在一个给定的 state 时,采取了一个特定的行动后,能得到的奖励是什么。

Q表更新

image-20200528183051364

image-20200528183210453

其中, S 代表当前的状态,a 代表当前状态所采取的行动, S’ 代表这个行动所引起的下一个状态,a’ 是这个新状态时采取的行动, r 代表采取这个行动所得到的奖励 reward,γ 是 discount 因子,

由公式可以看出 s,a 对的 Q 值等于 即时奖励 + 未来奖励的 discount。 γ 决定了未来奖励的重要性有多大, 比如说,我们到了一个状态,它虽然离目标状态远了一些,但是却离炸弹远了一些,那这个状态的即时奖励就很小,但是未来奖励就很多。

算法是:

  1. 初始化 Q table 为 0
    1. 每一次遍历,随机选择一个状态作为起点
    2. 在当前状态 (S) 的所有可选的行动中选择一个 (a)
    3. 移动到下一个状态 (S’)
    4. 在新状态上选择 Q 值最大的那个行动 (a’)
    5. 用 Bellman Equation 更新 Q-table
    6. 新状态设置为当前状态重复第 1~5 步
  2. 如果已经到了目标状态就结束

image-20200528183437304

理论

强化学习

  1. 分数导向性, 分数类似于监督学习的标签
  2. 分类 image-20201009171448002
  3. 理解环境/不理解环境
  4. 基于概率/基于价值 -> Actor-Critic image-20201009171811759
  5. 回合更新/单步更新 image-20201009172019366 image-20201009172125347
  6. 在线学习/离线学习 image-20201009172241594 image-20201009172255551

介绍

  1. 模拟环境编写: tkinter/gym

Q-Learning

image-20201009173557136 \(Q(s,a) <-Q(s,a)+α[r+γmax_{a^{'}}Q(s',a')-Q(s,a)]\)

Q现实 = 当前奖励 + 衰减*最大的Q估计

ε-greedy: 一种学习策略,用ε概率(如90%)按照Q表最优值选择

α: 学习效率

γ: 衰减系数, 越大越有远见

image-20201009181946022

实例1/2 — 走迷宫

sarsa

  1. 比较保守

实例 — Goddard Rocket

10 Goddard Rocket

强化学习有两个基本概念:环境(即外部世界)和代理(即你正在编写的算法)。代理向环境发送操作,环境回复观察和奖励(即分数)。

核心的 gym 界面是 Env,它是统一的环境界面。没有代理商界面。以下是应该了解的 Env 方法:

  • reset(self)::重置环境的状态。返回观察。
  • step(self, action):一步一步进入环境。返回观察、奖励、完成、信息。
  • render(self, mode=’human’):渲染一帧环境。默认模式将执行人性化的操作,例如弹出窗口。

最大化垂直发射的火箭的最终高度,使用推力作为控制,并给出火箭的初始质量、燃料质量和阻力

Formulation

这是动态优化中的一个经典问题,是单弧控制问题的典型 See Bryson [8, pages 392-394] for background information. 火箭运动方程: \(h' = v, \qquad v' = \frac{T-D(h,v)}{m}-g(h) , \qquad m' = -\frac{T}{c} ,\)

其中 $h $ 是来自地球中心的高度,$v $ 是垂直速度,$T $是火箭推力,$D $是空气动力学阻力,$g $ 是引力,$c $ 是测量火箭燃料脉冲的常数。推力必须满足: egin{displaymath} 0 \le T ( t ) \le T_{\max} . \end{displaymath}

The drag and the gravitational force are defined by

其中$D_c$和${h_c}$是常数,$g_0$是地球表面的引力。火箭最初处于休息状态($v(0)=0$),飞行结束时的质量只是初始质量的一小部分

\begin{displaymath} m ( t_f ) = m_c m(0) , \end{displaymath}

其中 $ t_f $ 是飞行时间和 $ m_c $ 是一个常数。除了推力上的界限外,还有在火箭的质量,高度和速度的如下界限。这些边界是运动方程的直接结果。

\begin{displaymath} m(t_f) \le m(t) \le m(0) , \qquad h(t) \ge h(0), \qquad v(t) \ge 0 , \end{displaymath}

运动方程可以通过缩放方程和选择模型参数( $h (0) $、m(0) 和 $g_0 $)来使运动方程具有维度。我们按照 [8] 和使用

\begin{displaymath} T_{\max} = 3.5 \, g_0 m(0) , \qquad D_c = {\textstyle{\frac{... ...} , \qquad c = {\textstyle{\frac{1}{2}}}( g_0 h(0) ) ^ {1/2}. \end{displaymath}

有了这些选择,我们可以假设,不失去普遍性, that $ h (0) = m(0) = g_0 = 1 $. We also follow [8] and choose

\begin{displaymath} h_c = 500, \qquad m_c = 0.6, \qquad v_c = 620 . \end{displaymath}

We discretize the equations of motion with the trapezoidal rule(梯形法则), and a uniform mesh with $n_h$intervals. Data for this problem appears in Table 10.1.

戈达德火箭问题数据

Variables ( 4 (n_h+1) + 1 )
Constraints ( 3 n_h )
Bounds ( 3 ( n_h+1 ) )
Linear equality constraints 0
Linear inequality constraints 0
Nonlinear equality constraints ( 3 n_h)
Nonlinear inequality constraints 0
Nonzeros in ( \nabla ^{2}f(x) ) 0
Nonzeros in ( c'(x) ) ( 21 n_h )

Performance

Results for the AMPL implementation are shown in Table 10.2. For starting points we use $  t_f = 1 $and the functions $ h = 1 $,

\begin{displaymath} v(t) = \frac{t}{t_f} \left ( 1 - \frac{t}{t_f} \right ) , \qquad m(t) = (m_f - m_0 ) \left ( \frac{t}{t_f} \right ) + m_0 , \end{displaymath}

evaluated at the grid points. The initial value for the thrust(推力) is $ T = T_{\max}/2 $.

For the rocket problem with $n_h = 200,\ 400$, MINOS makes no progress, declaring it to be an unbounded (or badly scaled) problem.

Solver $n_h=50$ $n_h=100$ $n_h=200$ $n_h=400$
LANCELOT $\ddagger$ $\ddagger$ $\ddagger$ $\ddagger$
$f$ $\ddagger$ $\ddagger$ $\ddagger$ $\ddagger$
$c$ violation $\ddagger$ $\ddagger$ $\ddagger$ $\ddagger$
iterations $\ddagger$ $\ddagger$ $\ddagger$ $\ddagger$
LOQO 3.34 s 3.38 s 4.65 s 12.42 s
$f$ 1.01281e+00 1.01283e+00 1.01283e+00 1.01283e+00
$c$ violation 2.1e-10 4.5e-10 8.2e-10 7.5e-10
iterations 123 64 43 48
MINOS 1.69 s 4.48 s 1.12 s 3.93 s
$f$ 1.01280e+00 1.01278e+00 9.85326e+03$\dagger$ 6.11246e+03$\dagger$
$c$ violation 4.8e-13 6.1e-16 3.6e+03$\dagger$ 1.1e+03$\dagger$
iterations 11 11 2 2
SNOPT 3.04 s 9.5 s 31.5 s 64.48 s
$f$ 1.01281e+00 1.01280e+00 1.01281e+00 1.01238e+00
$c$ violation 1.9e-09 4.1e-08 3.5e-09 5.2e-07
iterations 37 29 43 39
$\dagger$ Errors or warnings. $\ddagger$ Timed out.        

Figure 10.1 shows the altitude and mass of the rocket as a function of time. Note that altitude increases until a maximum altitude of $ h = 1.01 $ is reached, while the mass of the rocket steadily decreases until the final mass of $ m(t_f) = 0.6 $is reached at .$ t = 0.073 $

Figure 10.2 shows the velocity and thrust as a function of time. The thrust is bang-singular-bang, with the region of singularity occurring when

\begin{displaymath} 0 < T(t) < T_{\max} . \end{displaymath}

This figure shows that the optimal flight path involves using maximal thrust until $ t = 0.022 $, and no thrust for $ t \ge 0.073 $, at which point the final mass is reached, and the rocket coasts to its maximal altitude. The oscillations that appear at the point of discontinuity in the thrust parameter can be removed by using more grid points.

\includegraphics[width=2.5in]{ps/rocket_h.eps} \includegraphics[width=2.5in]{ps/rocket_m.eps}

\includegraphics[width=2.5in]{ps/rocket_v.eps} \includegraphics[width=2.5in]{ps/rocket_c.eps}

难点:

  1. 环境编写 - tkinter/GYM
  2. 状态选择, 评分方式选择, 如何使其收敛