system: [SYSTEM]

user: 4. 基于数据驱动的神经动态规划及其实现 首先定义一个数据 ( x ， a ， x ˜ ) 其中 为当前状态x执行控制动作a后得到状态向量。 x ˜ 的获得是通过实际系统输入控制动作a后得到，而不是使用系统模型f的数学解析式。如图1，是策略梯度自适应动态规划算法的结构。其中包括两个部分：离线数据集和在线数据。离线数据集 。M为数据的数量，其中离线数据集 S M 可以通过实际系统随机采样获得，其结构如图2。在线数据 s k = ( x k − 1 ， u k − 1 ， x k ) ，其分别是在时刻 k − 1 和k的在线状态和控制信息，其获得的结构图如图3。图1的大概流程是：首先，给定一个初始控制 u ( 0 ) ，根据离线数据集 S M 通过策略梯度自适应动态规划算法步骤2，得到 Q ( 0 ) ( x ， a ) 。其次，将初始控制 u ( 0 ) 通过实际系统作用于当前状态 x 0 ，得到下一状态 x 1 ，即得到在线数据 s 1 。然后，将 Q ( 0 ) ( x ， a ) 和 u ( 0 ) 通过策略梯度自适应动态规划算法步骤3，得到 u ( 1 ) 。最后，将 s 1 加入离线数据集 S M 作为新的离线数据集，以此重复循环，则可得到在线数据 s 2 ， s 3 ， ⋯ ，控制序列 u ( 2 ) ， u ( 3 ) ， ⋯ 和Q函数序列 Q ( 2 ) ( x ， a ) ， Q ( 3 ) ( x ， a ) ， ⋯ 。 图1. 策略梯度自适应动态规划算法 图2. 收集离线数据集 图3. 收集在线数据 4.1. 神经动态规划的实现设计 由于根据策略梯度自适应动态规划算法，要求去计算未知的Q函数 和控制策略 u ( i ) ( x ) ，为了实现该过程，下面引入执行―评价神经网络。其中用执行网络来逼近控制策略 u ( x ) ，用评价网络来逼近Q函数 Q ( x ， a ) 。首先介绍俩组线性无关的基函数： Φ ( x ) = { ϕ j ( x ) } j = 1 ∞ ， Ψ ( x ， a ) = { ψ j ( x ， a ) } j = 1 ∞ 。其中 ϕ j ( 0 ) = 0 ， ψ j ( 0 ， 0 ) = 0 。根据代数理论，控制策略 u ( x ) 和Q函数 Q ( x ， a ) 可以如下线性表示： u ( x ) = ∑ j = 1 ∞ υ j ϕ j ( x )     . (32) Q ( x ， a ) = ∑ j = 1 ∞ θ j ψ j ( x ， a )     . (33) 根据函数逼近理论，Q函数 Q ( i ) ( x ， a ) 和控制策略 u ( i ) ( x ) 可以被有限维基函数近似表示： (34) Q ¯ ( i ) ( x ， a ) = ∑ j = 1 L 2 θ j ( i ) ψ j ( x ， a ) = Ψ L T ( x ， a ) θ ( i ) . (35) 其中 υ ( i ) = [ υ 1 ( i ) ⋯ υ L 1 ( i ) ] T 和 θ ( i ) = [ θ 1 ( i ) ⋯ θ L 2 ( i ) ] T 分别为执行网络和评价网络的权重系数向量，但其是未知的。 Φ L ( x ) = [ ϕ 1 ( x ) ⋯ ϕ L 1 ( x ) ] T 和 Ψ L ( x ， a ) = [ ψ 1 ( x ， a ) ⋯ ψ L 2 ( x ， a ) ] T 分别为执行网络和评价网络的激活函数向量。则该神经网络的输出可以表示为： u ^ ( i ) ( x ) = ∑ j = 1 L 1 υ ^ j ( i ) ϕ j ( x ) = Φ L T ( x ) υ ^ ( i ) . (36) Q ^ ( i ) ( x ， a ) = ∑ j = 1 L 2 θ ^ j ( i ) ψ j ( x ， a ) = Ψ L T ( x ， a ) θ ^ ( i ) . (37) 其中 和 θ ^ ( i ) = [ θ ^ 1 ( i ) ⋯ θ ^ L 2 ( i ) ] T 分别为 υ ( i ) 和 θ ( i ) 的近似估计。由于神经网络有误差，在用 u ^ ( i ) ( x ) 和 Q ^ ( i ) ( x ， a ) 估计 u ( i ) ( x ) 和 Q ( i ) ( x ， a ) 时会产生残差，定义Q函数残差为： σ Q ( i ) ( x ， a ， x ˜ ) = Q ^ ( i ) ( x ， a ) − Q ^ ( i ) ( x ˜ ， u ^ ( i ) ) − P ( x ， a ) = Ψ L T ( x ， a ) θ ^ ( i ) − Ψ L T ( x ˜ ， u ^ ( i ) ) θ ^ ( i ) − P ( x ， a ) = Ψ L T ( x ， a ) θ ^ ( i ) − Ψ L T ( x ˜ ， Φ L T ( x ˜ ) υ ^ ( i ) ) θ ^ ( i ) − P ( x ， a ) . (38) 下面的目标是，在满足残差趋于0的条件下，基于数据驱动来计算 υ ^ ( i ) ， θ ^ ( i ) 。任意 s 1 ( x ， u ) ∈ U 和 ，定义内积 〈 s 1 ( x ， u ) ， s 2 ( x ， u ) 〉 D = ∫ D s 1 ( x ， u ) ， s 2 ( x ， u ) d ( x ， u ) 。令： (39) 将(38)式带入(39)式得： [ 〈 Ψ L ( x ， a ) ， Ψ L T ( x ， a ) 〉 D − 〈 Ψ L ( x ， a ) ， Ψ L T ( x ˜ ， Φ L T ( x ˜ ) υ ^ ( i ) ) 〉 D ] θ ^ ( i ) − 〈 Ψ L ( x ， a ) ， P ( x ， a ) 〉 D = 0. (40) 则可得： (41) 在计算 θ ^ ( i ) 时，其中涉及许多积分，根据蒙特卡洛积分方法，令： I D = ∫ D d ( x ， a ) 。首先基于离线数据集 S M 来计算 θ ^ ( 0 ) ： 〈 Ψ L ( x ， a ) ， Ψ L T ( x ， a ) 〉 D = ∫ D Ψ L ( x ， a ) Ψ L T ( x ， a ) d ( x ， a ) = I D M ∑ l = 1 M Ψ L ( x l ， a l ) Ψ L T ( x l ， a l ) = I D M η 0 . (42) 其中 η 0 = ∑ l = 1 M Ψ L ( x l ， a l ) Ψ L T ( x l ， a l ) 。同理可得： 〈 Ψ L ( x ， a ) ， Ψ L T ( x ˜ ， Φ L T ( x ˜ ) υ ^ ( 0 ) ) 〉 D = I D M ρ 0 . (43) (44) 且 ， ξ 0 = ∑ l = 1 M Ψ L ( x l ， a l ) P ( x l ， a l ) 。则可得： θ ^ ( 0 ) = ( η 0 − ρ 0 ) − 1 ξ 0 . (45) 如图4，基于离线数据集 S M 可以计算出 θ ^ ( 0 ) ，当 i = k 时，对于在线数据 s k ，此时把在线数据 s k 加入到离线数据集 S M 作为新的离线数据集 S M + s k ，且用其来计算 θ ^ ( k ) ： 〈 Ψ L ( x ， a ) ， Ψ L T ( x ， a ) 〉 D = I D M + 1 η k . (46) 〈 Ψ L ( x ， a ) ， Ψ L T ( x ˜ ， Φ L T ( x ˜ ) υ ^ ( k ) ) 〉 D = I D M + 1 ρ k . (47) 〈 Ψ L ( x ， a ) ， P ( x ， a ) 〉 D = I D M +1 ξ k . (48) 图4. 神经动态规划算法 其中 η k = η 0 + Ψ L ( x k − 1 ， a k − 1 ) Ψ L T ( x k − 1 ， a k − 1 ) ， ρ k = ∑ l = 1 M Ψ L ( x l ， a l ) Ψ L T ( x ˜ l ， Φ L T ( x ˜ l ) υ ^ ( k ) ) + Ψ L ( x k − 1 ， a k − 1 ) Ψ L T ( x k ， u k ) . 则由(41)式知，当 i = k 时： θ ^ ( k ) = ( η k − ρ k ) − 1 ξ k . (49) 接着需要计算执行网络的权重系数 υ ^ ( i ) ，由神经动态规划算法步骤3更新控制策略时，用 u ^ ( i ) ( x ) 替换 u ( i ) ( x ) 会产生误差，定义控制策略残差为： σ u ( i ) ( x ) = u ( i + 1 ) ( x ) − u ( i ) ( x ) + α ∇ a Q ( i ) ( x ， a ) | a = u ( i ) = Φ L T ( x ) υ ^ ( i + 1 ) − Φ L T ( x ) υ ^ ( i ) + α ∇ a Φ L T ( x ， Φ L T ( x ) υ ^ ( i ) ) θ ^ ( i ) . (50) 同理在计算 υ ^ ( i ) 时要满足控制策略残差趋于0： (51) 即： 〈 Φ L ( x ) ， Φ L T ( x ) 〉 X υ ^ ( i + 1 ) − 〈 Φ L ( x ) ， Φ L T ( x ) 〉 X υ ^ ( i )   + α 〈 Φ L ( x ) ， ∇ a Φ L T ( x ， Φ L T ( x ) υ ^ ( i ) ) 〉 X θ ^ ( i ) = 0. (52) 则可得： υ ^ ( i + 1 ) = υ ^ ( i ) − α 〈 Φ L ( x ) ， Φ L T ( x ) 〉 X − 1 × 〈 Φ L ( x ) ， ∇ a Φ L T ( x ， Φ L T ( x ) υ ^ ( i ) ) 〉 X θ ^ ( i ) . (53) 根据蒙特卡洛积分方法，令： I X = ∫ X d x 。基于离线数据集 ，当 i = k 时，对于在线数据 s k ，此时把在线数据 s k 与离线数据集 S M 结合，且用其来计算 υ ^ ( k ) ： (54) 〈 Φ L ( x ) ， ∇ a Ψ L T ( x ， Φ L T ( x ) υ ^ ( k ) ) 〉 X = I X M + 1 F k . (55) 其中 Γ k = Γ 0 + Φ L ( x k ) Φ L T ( x k ) ，且 Γ 0 = ∑ l = 1 M Φ L ( x l ) Φ L T ( x l ) ， F k = ∑ l = 1 M Φ L ( x l ) ∇ a Ψ L T ( x l ， Φ L T ( x l ) υ ^ ( k ) ) + Φ L ( x k ) ∇ a Ψ L T ( x k ， Φ L T ( x k ) υ ^ ( k ) ) 。则由(53)可得： υ ^ ( k + 1 ) = υ ^ ( k ) − α Γ k − 1 F k θ ^ ( k ) . (56) 4.2. 神经动态规划算法 步骤1：收集离线数据集 S M ，计算 。 步骤2：给定一个初始允许误差 ε 和初始控制策略 u ^ ( i ) ( x ) ∈ U ( X ) ，并令 i = 0 。 步骤3： 使用 S M 和 s i + 1 计算 η i ， ρ i ， ξ i 。 并根据(49)式计算 θ ^ ( i ) 。 步骤4：使用离线数据集 和在线状态数据 x i ，计算 Γ i ， F i ，并根据(56)式计算 υ ^ ( i + 1 ) 。 步骤5：若 ‖ θ ^ ( i ) − θ ^ ( i + 1 ) ‖ ≤ ε ，则输出 θ ^ ( i + 1 ) 和 υ ^ ( i + 1 ) ；否则令 i = i + 1 ，返回步骤3，继续循环。