广东工业大学学报  2017, Vol. 34Issue (6): 15-19.  DOI: 10.12052/gdutxb.170082.
0

引用本文 

刘毅, 章云. 一种基于自适应动态规划的协同优化算法[J]. 广东工业大学学报, 2017, 34(6): 15-19. DOI: 10.12052/gdutxb.170082.
Liu Yi, Zhang Yun. A Cooperative Optimization Algorithm Based on Adaptive Dynamic Programming[J]. JOURNAL OF GUANGDONG UNIVERSITY OF TECHNOLOGY, 2017, 34(6): 15-19. DOI: 10.12052/gdutxb.170082.

基金项目:

国家自然科学基金资助项目(U1501251,51307025);高等学校博士学科点专项科研基金资助项目(20124420130001)

作者简介:

刘毅(1979–),男,博士研究生,主要研究方向为智能控制、优化控制。

通信作者

章云(1963–),男,教授,博士生导师,主要研究方向为优化控制、非线性控制和多智能体技术等. E-mail:yun@gdut.edu.cn

文章历史

收稿日期:2017-04-11
一种基于自适应动态规划的协同优化算法
刘毅, 章云     
广东工业大学    自动化学院,广东 广州  510006
摘要: 采用值迭代的自适应动态规划的收敛条件是迭代性能指标函数初始化为任意半正定函数. 根据此收敛条件, 本文研究了迭代性能指标函数的初始化和更新方法, 提出了一种基于自适应动态规划的协同优化算法. 仿真结果表明, 该协同优化算法令迭代的残差快速减小, 大幅提高了自适应动态规划的收敛速度.
关键词: 自适应动态规划    值迭代    协同优化    
A Cooperative Optimization Algorithm Based on Adaptive Dynamic Programming
Liu Yi, Zhang Yun     
School of Automation, Guangdong University of Technology, Guangzhou 510006, China
Abstract: If the initial iterative performance index function is a positive semi-definite function, then the value iteration of adaptive dynamic programming will converge to the optimal. This is the convergence condition of value-iteration based adaptive dynamic programming. Based on the condition, the initializing and updating methods for iterative performance index function is studied and a cooperative optimization algorithm based on adaptive dynamic programming is proposed. The simulation results show that the proposed algorithm can rapidly reduce the iteration residuals and greatly improve the convergence rate of adaptive dynamic programming.
Key words: adaptive dynamic programming    value iteration    cooperative optimization    

动态规划是一种逆向计算方法,必须在时间上逆向求解最优控制序列. 虽然动态规划能精确求解哈密顿-雅可比-贝尔曼方程,但会导致计算量和存储量随着控制序列的长度也即解的时间维度的增加而急剧增长,也即“维数灾”问题[1]. 由Werbos提出的自适应动态规划通过迭代计算求解哈密顿-雅可比-贝尔曼方程[2-5],迭代控制策略和迭代性能指标函数逐渐逼近最优控制策略和最优性能指标函数,避免了“维数灾”问题. 自适应动态规划有4种基本的实现结构:启发式动态规划(HDP)、二次启发式规划(DHP)、执行依赖启发式动态规划(ADHDP)和执行依赖二次启发式规划(ADDHP)[2-3]. 文献[6]提出了全新的自适应动态规划实现结构:全局二次启发式规划(GDHP)和执行依赖全局二次启发式规划(ADGDHP).

值迭代是自适应动态规划的一种迭代方式,需要初始化迭代性能指标函数[7-8]. Al-Tamimi等[9]给出了一种应用于离散时间仿射非线性系统的值迭代,首次指出迭代性能指标函数初始化为零可保证迭代收敛到最优,并给出了数学证明. Zhang等[10]研究了离散仿射非线性系统的最优跟踪控制问题,并给出了值迭代的收敛性和最优性证明. Wang等[11]给出了应用于离散时间非仿射非线性系统的值迭代的收敛性和最优性证明. 文献[9-11]要求迭代性能指标函数初始化为零. Wei等[12]给出一种保证迭代控制策略是稳定控制策略的迭代性能指标函数的初始化方法,并给出了收敛性证明. 文献[13-14]证明了迭代性能指标函数初始化为半正定函数可保证值迭代收敛到最优,极大地放松了值迭代对迭代性能指标函数的初始化要求.

文献[9-14]指出,如果值迭代的迭代次数趋向无穷,那么迭代性能指标函数和迭代控制策略分别等于最优性能指标函数和最优控制策略. 无穷次迭代是无法实现的,有限次迭代所得的迭代性能指标函数和迭代控制策略是含有残差的近似最优性能指标函数和近似最优控制策略. 如果为迭代计算给定一个收敛精度,则可通过多次迭代让残差达到收敛精度的要求. 由于放松了对迭代次数的要求,自适应动态规划的实时性将无法得到保证. 如果给定迭代次数,则不能保证残差达到收敛精度的要求.

值迭代的残差大小与初始的迭代性能指标函数有关. 初始的迭代性能指标函数影响着迭代次数和收敛精度. 本文根据文献[13-14]的证明结果,研究了一种在有限迭代次数下保证收敛精度的快速自适应动态规划算法.

1 问题描述

本文所描述的离散时间非仿射非线性系统如下:

${{\mathit{\boldsymbol{x}}}_{k + 1}} = F({{\mathit{\boldsymbol{x}}}_k},{{\mathit{\boldsymbol{u}}}_k}),\;\;k = 0,1,2, \cdots .$ (1)

其中 ${{\mathit{\boldsymbol{x}}}_k} \in {{\mathbb{R}}^n}$ 是状态向量, ${{\mathit{\boldsymbol{u}}}_k} \in {{\mathbb{R}}^m}$ 是控制向量. $\forall {{\mathit{\boldsymbol{x}}}_k},{{\mathit{\boldsymbol{u}}}_k}$ $F({{\mathit{\boldsymbol{x}}}_k},{{\mathit{\boldsymbol{u}}}_k})$ 连续, $F(0,0) = 0$ . ${\mathit{\boldsymbol{x}}} = 0$ 是系统(1)的稳定状态. 另外,系统(1)是可控的.

优化目标是寻找控制序列 $\underline {\mathit{\boldsymbol{u}}} {_k} = ({{\mathit{\boldsymbol{u}}}_k},{{\mathit{\boldsymbol{u}}}_{k + 1}}, \cdots )$ ,使得性能指标函数(2)最小:

$J({{\mathit{\boldsymbol{x}}}_k},{\underline {\mathit{\boldsymbol{u}}} _k}) = \sum\limits_{t = k}^\infty {U({{\mathit{\boldsymbol{x}}}_t},{{\mathit{\boldsymbol{u}}}_t})} .$ (2)

其中 $U({{\mathit{\boldsymbol{x}}}_t},{{\mathit{\boldsymbol{u}}}_t})$ 称为效用函数,是连续的正定函数. 假设采用状态反馈对系统(1)进行控制,即 ${{\mathit{\boldsymbol{u}}}_k} = u({{\mathit{\boldsymbol{x}}}_k})$ . 另外假设反馈控制满足 $u(0) = 0$ .

根据Bellman最优定理,最优性能指标函数满足如下哈密顿-雅可比-贝尔曼方程:

${J^*}({{\mathit{\boldsymbol{x}}}_k}) = \mathop {\min }\limits_{u({{\mathit{\boldsymbol{x}}}_k})} \{ U({{\mathit{\boldsymbol{x}}}_k},u({{\mathit{\boldsymbol{x}}}_k})) + {J^*}({{\mathit{\boldsymbol{x}}}_{k + 1}})\} .$ (3)

式(3)也可表示为

${J^*}({{\mathit{\boldsymbol{x}}}_k}) = U({{\mathit{\boldsymbol{x}}}_k},{u^*}({{\mathit{\boldsymbol{x}}}_k})) + {J^*}({{\mathit{\boldsymbol{x}}}_{k + 1}}).$ (4)

其中 ${u^*}({{\mathit{\boldsymbol{x}}}_k})$ 是最优控制策略:

${u^*}({{\mathit{\boldsymbol{x}}}_k}) = \mathop {\arg \min }\limits_{u({{\mathit{\boldsymbol{x}}}_k})} \{ U({{\mathit{\boldsymbol{x}}}_k},u({{\mathit{\boldsymbol{x}}}_k})) + {J^*}({{\mathit{\boldsymbol{x}}}_{k + 1}})\} .$ (5)

${u^*}({{\mathit{\boldsymbol{x}}}_k}) = = \mathop {\arg \min }\limits_{u({{\mathit{\boldsymbol{x}}}_k})} \{ U({{\mathit{\boldsymbol{x}}}_k},u({{\mathit{\boldsymbol{x}}}_k})) + {J^*}({{\mathit{\boldsymbol{x}}}_{k + 1}})\} .$ (6)
2 快速自适应动态规划算法 2.1 自适应动态规划的值迭代

${u_i}({{\mathit{\boldsymbol{x}}}_k})$ 是迭代控制策略, ${J_i}({{\mathit{\boldsymbol{x}}}_k})$ 是迭代性能指标函数, $i = 0,1,2, \cdots $ 是迭代次数. 初始化 ${J_0}({\mathit{\boldsymbol{x}}})$ ,值迭代的迭代过程为

${u_i}({{\mathit{\boldsymbol{x}}}_k}) = \mathop {\arg \min }\limits_{u({{\mathit{\boldsymbol{x}}}_k})} \{ U({{\mathit{\boldsymbol{x}}}_k},u({{\mathit{\boldsymbol{x}}}_k})) + {J_i}({{\mathit{\boldsymbol{x}}}_{k + 1}})\} .$ (7)
${J_{i + 1}}({{\mathit{\boldsymbol{x}}}_k}) = \mathop {\rm{min}}\limits_{u({{\mathit{\boldsymbol{x}}}_k})} \{ U({{\mathit{\boldsymbol{x}}}_k},u({{\mathit{\boldsymbol{x}}}_k})) + {J_i}({{\mathit{\boldsymbol{x}}}_{k + 1}})\}.$ (8)

文献[13-14]证明了若 ${J_0}({\mathit{\boldsymbol{x}}})$ 是半正定函数,则 $\mathop {\lim }\limits_{i \to \infty } {J_i}({{\mathit{\boldsymbol{x}}}_k}) = {J^*}({{\mathit{\boldsymbol{x}}}_k})$ $\mathop {\lim }\limits_{i \to \infty } {u_i}({{\mathit{\boldsymbol{x}}}_k}) = {u^*}({{\mathit{\boldsymbol{x}}}_k})$ .

2.2 基于自适应动态规划的协同优化算法

粒子群算法会初始化多个携带不同可行解的粒子,各粒子在迭代过程中通过其他粒子的解来更新自己的解. 参考粒子群算法,本节提出了基于自适应动态规划的协同优化算法(Cooperative Optimization Based on Adaptive Dynamic Programming,COADP). COADP会创建多个值迭代“粒子”. 在每一次迭代里,COADP根据所有“粒子”的迭代性能指标函数来重新构建各“粒子”的迭代性能指标函数.

设一个进程(或智能体、粒子等)运行一个值迭代. 设A是进程的数量, $J_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ 是进程α的迭代性能指标函数, $u_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ 是进程α的迭代控制策略, $a = 1,2, \cdots ,A$ .

(1) COADP的初始化.

由于迭代性能指标函数可初始化为任意半正定函数,COADP将首先初始化A个进程及A个互不相同的半正定函数 $J_0^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ .

(2) COADP的迭代.

命名 $V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ 为进程α的备选迭代性能指标函数. 参考式(7)和(8),进程α以如下方式迭代:

$u_i^{(a)}({{\mathit{\boldsymbol{x}}}_k}) = \mathop {\arg \min }\limits_{u({{\mathit{\boldsymbol{x}}}_k})} \{ U({{\mathit{\boldsymbol{x}}}_k},u({{\mathit{\boldsymbol{x}}}_k})) + J_i^{(a)}({\mathit{\boldsymbol{x}}}_{k + 1}^{})\} .$ (9)
$V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k}) = U({{\mathit{\boldsymbol{x}}}_k},u_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})) + J_i^{(a)}({\mathit{\boldsymbol{x}}}_{k + 1}^{}).$ (10)

与式(8)不同的是,式(10)没有立刻更新 $J_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ ,而是把 $U({{\mathit{\boldsymbol{x}}}_k},u_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})) + J_i^{(a)}({\mathit{\boldsymbol{x}}}_{k + 1}^{(a)})$ 作为一个备选函数保存于 $V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ .

(3) COADP的更新.

设第 ${B_{i + 1}}$ 个进程的 $V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k})$ ${J^*}({{\mathit{\boldsymbol{x}}}_k})$ 最相似(本节称 $V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k})$ 为最优备选迭代性能指标函数,初始化为 $V_0^{({B_0})}({{\mathit{\boldsymbol{x}}}_k}) = 0$ ). COADP的更新方法是:找出 $V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k})$ ,然后在 $V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k})$ 的邻域内构造 $J_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ .

$V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k}) = J_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ ,那么式(10)与式(4)是相同的, $V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k}) = {J^*}({{\mathit{\boldsymbol{x}}}_k})$ . 由此可推断,若 $\left\| {V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k}) - J_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})} \right\| \approx 0$ ,则 $V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k}) \approx {J^*}({{\mathit{\boldsymbol{x}}}_k})$ . 据此,COADP通过式(11)寻找 $V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k})$

${B_{i + 1}} = \mathop {\arg \min }\limits_a \left\{ {\left\| {\frac{{V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k}) - J_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})}}{{V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k})}}} \right\|} \right\}.$ (11)

为了实现可比性,式(11)中采用的是相对变化率. 在重新构建 $J_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ 的时候,令第 ${B_{i + 1}}$ 个进程的 $J_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k})$ 直接等于 $V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k})$ ,而其他进程的 $J_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ 则在 $V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k})$ 的邻域内进行构建:

$J_{i + 1}^{(a)}({\mathit{\boldsymbol{x}}_k}) = \left\{\!\!\!\! \begin{array}{l}V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k}),{{ }}a = {B_{i + 1}};\\[8pt]\!\max \left\{ {V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k}) + Ra_{i + 1}^{(a)} \!\!\cdot \!\!D\! \cdot \!\!V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k}),0} \right\},\\[8pt]\quad{{ }}a \ne {B_{i + 1}}.\end{array} \right.$ (12)

其中 $Ra \in [ - 1,1]$ 是随机数, $D > 0$ 是调整范围. 式(12)保证了 $J_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ 是半正定函数,收敛性不会受到影响.

图1是COADP的流程图. 当 $\left\| {V_{i + 1}^{({B_{i + 1}})}({{\mathit{\boldsymbol{x}}}_k}) -}\right. $ $\left.{ V_i^{({B_i})}({{\mathit{\boldsymbol{x}}}_k})} \right\|$ 小于预先设置的收敛精度 $\varepsilon $ ,则近似认为迭代已收敛,迭代结束.

图 1 COADP算法的流程图 Figure 1 Flow chart of COADP
3 仿真测试

图2是COADP的结构图,其中每个进程均采用HDP结构. 采用三层BP神经网络近似 $J_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ $u_i^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ . 下面给出3个例子来验证COADP的有效性. 第一和第二个例子来自文献[11],第三个例子与文献[12]、[15]和[16]相同.

图 2 COADP算法的结构图 Figure 2 Scheme of COADP

例1:非仿射非线性系统为

${{\mathit{\boldsymbol{x}}}_{k + 1}} = {{\mathit{\boldsymbol{x}}}_k} + \sin ({{\mathit{\boldsymbol{x}}}_k} + {{\mathit{\boldsymbol{u}}}_k}).$ (13)

其中 ${{\mathit{\boldsymbol{x}}}_k} \in {\mathbb{R}}$ ${{\mathit{\boldsymbol{u}}}_k} \in \mathbb{R}$ . ${{\mathit{\boldsymbol{x}}}_k} = 0$ 是该系统的稳定状态. 效用函数为 $U({{\mathit{\boldsymbol{x}}}_k},{{\mathit{\boldsymbol{u}}}_k}) = {\mathit{\boldsymbol{x}}}_k^{\rm{T}}{{\mathit{\boldsymbol{x}}}_k} + {\mathit{\boldsymbol{u}}}_k^{\rm{T}}{{\mathit{\boldsymbol{u}}}_k}$ . 初始状态为 ${{\mathit{\boldsymbol{x}}}_0} = 1.5$ . 所有进程的执行网络均是1-8-1结构,评判网络均是1-8-1结构. 执行网络和评判网络的学习率均为0.02. 执行网络和评判网络的训练次数均设定为2 000次. 各进程的执行网络均初始化为相同的神经网络.

首先令进程数量A=3,初始化各进程的评判网络为: $J_0^{(1)}({{\mathit{\boldsymbol{x}}}_k}) = 0$ $J_0^{(2)}({{\mathit{\boldsymbol{x}}}_k}) = 6{\mathit{\boldsymbol{x}}}_k^{\rm{T}}{{\mathit{\boldsymbol{x}}}_k}$ $J_0^{(3)}({{\mathit{\boldsymbol{x}}}_k}) = 12{\mathit{\boldsymbol{x}}}_k^{\rm{T}}{{\mathit{\boldsymbol{x}}}_k}$ . 图3A=3时的 $V_i^{({B_i})}({{\mathit{\boldsymbol{x}}}_k})$ 收敛曲线. 为了进行比较,图3图8中加入了 ${J_0}({{\mathit{\boldsymbol{x}}}_k}) = 0$ 的且采用式(7)和式(8)进行迭代的 ${J_i}({{\mathit{\boldsymbol{x}}}_k})$ 收敛曲线(图中简称zero-ADP). 若 $D = 0.1$ ,则调整范围过小. 与zero-ADP相比,COADP的残差减小得快,但不明显. 若 $D = 1$ ,则调整范围合适,残差快速减小. 若 $D = 2$ ,则调整范围过大. 线程数量A不足以支持如此大范围的搜索,残差减小的速度没有明显加快.

修改进程数量A=7,新增的4个进程的评判网络初始化为 $J_0^{(4)}({{\mathit{\boldsymbol{x}}}_k}) = 2{\mathit{\boldsymbol{x}}}_k^{\rm{T}}{{\mathit{\boldsymbol{x}}}_k}$ $J_0^{(5)}({{\mathit{\boldsymbol{x}}}_k}) = 4{\mathit{\boldsymbol{x}}}_k^{\rm{T}}{{\mathit{\boldsymbol{x}}}_k}$ $J_0^{(6)}({{\mathit{\boldsymbol{x}}}_k}) = 8{\mathit{\boldsymbol{x}}}_k^{\rm{T}}{{\mathit{\boldsymbol{x}}}_k}$ $J_0^{(7)}({{\mathit{\boldsymbol{x}}}_k}) = 10{\mathit{\boldsymbol{x}}}_k^{\rm{T}}{{\mathit{\boldsymbol{x}}}_k}$ . 各进程的执行网络仍旧初始化为相同的神经网络. 图4 $A = 7$ 时的 $V_i^{({B_i})}({{\mathit{\boldsymbol{x}}}_k})$ 收敛曲线. 若 $D = 0.1$ ,则调整范围过小,即使A增大了也无法显著地加快残差减小的速度. 若 $D = 1$ ,则调整范围合适,残差快速减小. 若 $D = 2$ ,则调整范围足够大. 此时线程数量A足以实现在如此大范围内的有效搜索,残差减小的速度进一步加快,协同优化效果明显.

D足够大,则通过式(12)更新所得的某一 $J_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ (设为 $J_{i + 1}^{(\bar a)}({{\mathit{\boldsymbol{x}}}_k})$ )可能会远大于 ${J^*}({{\mathit{\boldsymbol{x}}}_k})$ . 若A不足,则可供选择的 $V_{i + 1}^{(a)}({{\mathit{\boldsymbol{x}}}_k})$ 数量太少, $V_{i + 2}^{({B_{i + 2}})}({{\mathit{\boldsymbol{x}}}_k})$ 选择 $V_{i + 2}^{(\bar a)}({{\mathit{\boldsymbol{x}}}_k})$ 的可能性就会增大. 因此在图3中, $D = 2$ $V_3^{({B_3})}({{\mathit{\boldsymbol{x}}}_k})$ 出现远大于 ${J^*}({{\mathit{\boldsymbol{x}}}_k})$ 的现象.

图 3 例1的最优备选迭代性能指标函数收敛过程(A=3) Figure 3 Convergence of the best optional iterative performance index function for Example 1 (A=3)
图 4 例1的最优备选迭代性能指标函数收敛过程(A=7) Figure 4 Convergence of the best optional iterative performance index function for Example 1 (A=7)

例2: 非仿射非线性系统为

${{\mathit{\boldsymbol{x}}}_{k + 1}} = \left[ {\begin{array}{*{20}{c}}{ - {{\mathit{\boldsymbol{x}}}_{1k}}{{\mathit{\boldsymbol{x}}}_{2k}}}\\[7pt]{1.5{{\mathit{\boldsymbol{x}}}_{2k}} + \sin ({\mathit{\boldsymbol{x}}}_{2k}^2 + {{\mathit{\boldsymbol{u}}}_k})}\end{array}} \right].$ (14)

其中 ${{\mathit{\boldsymbol{x}}}_k} = {[{{\mathit{\boldsymbol{x}}}_{1k}},{{\mathit{\boldsymbol{x}}}_{2k}}]^{\rm{T}}} \in {\mathbb{R}^2}$ ${{\mathit{\boldsymbol{u}}}_k} \in \mathbb{R}$ . ${{\mathit{\boldsymbol{x}}}_k} = 0$ 是该系统的稳定状态. 效用函数 $U({{\mathit{\boldsymbol{x}}}_k},{{\mathit{\boldsymbol{u}}}_k})$ 与例1相同. 初始状态为 ${{\mathit{\boldsymbol{u}}}_0} = {[0.5, - 1]^{\rm{T}}}$ . 所有进程的执行网络均是2-8-1结构,评判网络均是2-8-1结构. 其他设置与例1相同. 图56分别是 $A = 3$ $A = 7$ 时的 $V_i^{({B_i})}({{\mathit{\boldsymbol{x}}}_k})$ 收敛曲线. 对于系统(14),若 $D = 0.1$ ,则调整范围过小,COADP算法的效果不明显;若 $D = 0.5$ ,则调整范围合适,残差快速减少,但A对残差减小的速度影响不大;若 $D = 1$ ,则调整范围足够大. 若增大A可令残差减小的速度进一步加快,协同优化效果明显. DA对残差的影响与例1相同.

图 5 例2的最优备选迭代性能指标函数收敛过程(A=3) Figure 5 Convergence of the best optional iterative performance index function for Example 2 (A=3)
图 6 例2的最优备选迭代性能指标函数收敛过程(A=7) Figure 6 Convergence of the best optional iterative performance index function for Example 2 (A=7)

例3:仿射非线性系统为

${{\mathit{\boldsymbol{x}}}_{k + 1}} = \left[ \begin{array}{l}({\mathit{\boldsymbol{x}}}_{1k}^2 + {\mathit{\boldsymbol{x}}}_{2k}^2 + {{\mathit{\boldsymbol{u}}}_k})\cos ({{\mathit{\boldsymbol{x}}}_{2k}})\\[6pt]({\mathit{\boldsymbol{x}}}_{1k}^2 + {\mathit{\boldsymbol{x}}}_{2k}^2 + {{\mathit{\boldsymbol{u}}}_k})\sin ({{\mathit{\boldsymbol{x}}}_{2k}})\end{array} \right].$ (15)

其中 ${{\mathit{\boldsymbol{x}}}_k} = {[{{\mathit{\boldsymbol{x}}}_{1k}},{{\mathit{\boldsymbol{x}}}_{2k}}]^{\rm{T}}} \in {\mathbb{R}^2}$ ${{\mathit{\boldsymbol{u}}}_k} \in \mathbb{R}$ . ${{\mathit{\boldsymbol{x}}}_k} = 0$ 是该系统的稳定状态. 效用函数与例1相同. 初始状态为 ${{\mathit{\boldsymbol{x}}}_0} = {[1, - 1]^{\rm{T}}}$ . 所有进程的执行网络均是2-8-1结构,评判网络均是2-8-1结构. 其他设置与例1相同. 图78分别是 $A = 3$ $A = 7$ 时的 $V_i^{({B_i})}({{\mathit{\boldsymbol{x}}}_k})$ 收敛曲线. 对于系统(15),若 $D = 0.1$ ,则调整范围过小,COADP算法的效果不明显;若 $D = 1$ ,则调整范围合适,残差快速减少,但A对残差减小的速度影响不大;若 $D = 3$ ,则调整范围足够大. 若增大A可令残差减小的速度进一步加快,协同优化效果明显. DA对残差的影响与例1相同.

图 7 例3的最优备选迭代性能指标函数收敛过程(A=3) Figure 7 Convergence of the best optional iterative performance index function for Example 3 (A=3)
图 8 例3的最优备选迭代性能指标函数收敛过程(A=7) Figure 8 Convergence of the best optional iterative performance index function for Example 3 (A=7)

以上3个例子的仿真结果表明,如果D过小,或者如果D过大而A过小,则COADP算法的效果与zero-ADP的效果相若,COADP算法不能显著加快残差减小的速度. 在实际应用中,对于不同的系统,AD的恰当取值是难以确定的. 为了充分发挥COADP算法的优势,应把AD设置为较大的数值.

4 总结

本文研究了一种在有限迭代次数下保证收敛精度的快速自适应动态规划算法. 本文提出的协同优化算法能令残差快速减小,令自适应动态规划更为实用.

参考文献
[1] BELLMAN R E. Dynamic Programming[M]. Princeton: Princeton University Press, 1957.
[2] WERBOS P J. Advanced forecasting methods for global crisis warning and models of intelligence[J]. General Systems Yearbook, 1977, 22(6): 25-38.
[3] WERBOS P J. Approximate Dynamic Programming for Real-time Control and Neural Modeling, in Handbook of Intelligent Control[M]. New York: Van Nostrand Reinhold, 1992.
[4] MILLER W T, SUTTON R S, WERBOS P J. A Menu of Designs for Reinforcement Learning Over Time, in Neural Networks for Control[M]. Cambridge: MIT Press, 1991.
[5] MURRAY J J, COX C J, LENDARIS G G, SAEKS R. Adaptive dynamic programming[J]. IEEE Transactions on Systems, Man, and Cybernetics, Part C, 2002, 32(2): 140-153. DOI: 10.1109/TSMCC.2002.801727.
[6] PROKHOROV D V, WUNSCH D C. Adaptive critic designs[J]. IEEE Transactions on Neural Networks, 1997, 8(5): 997-1007. DOI: 10.1109/72.623201.
[7] LEWIS F L, LIU D. Reinforcement learning and adaptive dynamic programming for feedback control[J]. IEEE Circuits & Systems Magazine, 2009, 9(3): 32-50.
[8] LEWIS F L, VRABIE D, VAMVOUDAKIS K G. Reinforcement learning and feedback control: using natural decision methods to design optimal adaptive controllers[J]. IEEE Control Systems, 2012, 32(6): 76-105. DOI: 10.1109/MCS.2012.2214134.
[9] AL-TAMIMI A, LEWIS F L, ABU-KHALAF M. Discrete-time nonlinear HJB solution using approximate dynamic programming: convergence proof[J]. IEEE Transactions on Systems, Man, and Cybernetics, Part B: Cybernetices, 2008, 38(4): 943-949. DOI: 10.1109/TSMCB.2008.926614.
[10] ZHANG H, WEI Q, LUO Y. A novel infinite-time optimal tracking control scheme for a class of discrete-time nonlinear systems via the greedy HDP iteration algorithm[J]. IEEE Transactions on Systems, Man, and Cybernetics, Part B: Cybernetices, 2008, 38(4): 937-942. DOI: 10.1109/TSMCB.2008.920269.
[11] WANG D, LIU D, WEI Q, ZHAO D, JIN N. Optimal control of unknown nonaffine nonlinear discrete-time systems based on adaptive dynamic programming[J]. Automatica, 2012, 48(8): 1825-1832. DOI: 10.1016/j.automatica.2012.05.049.
[12] WEI Q, LIU D. A novel iterative θ-adaptive dynamic programming for discrete-time nonlinear systems[J]. IEEE Transactions on Automation Science and Engineering, 2014, 11(4): 1176-1190. DOI: 10.1109/TASE.2013.2280974.
[13] WEI Q, LIU D, LIN H. Value iteration adaptive dynamic programming for optimal control of discrete-time nonlinear systems[J]. IEEE Transactions on Cybernetics, 2016, 46(3): 840-853. DOI: 10.1109/TCYB.2015.2492242.
[14] 刘毅, 章云. 基于值迭代的自适应动态规划的收敛条件[J]. 广东工业大学学报, 2017, 34(5): 10-14.
LIU Y, ZHANG Y. A convergence condition of value-iteration based adaptive dynamic programming[J]. Journal of Guangdong University of Technology, 2017, 34(5): 10-14.
[15] NAVARRO-LOPEZ E M. Local feedback passivation of nonlinear discrete-time systems through the speed-gradient algorithm[J]. Automatica, 2007, 43(7): 1302-1306. DOI: 10.1016/j.automatica.2006.12.017.
[16] SIRA-RAMIREZ H. Non-linear discrete variable structure systems in quasi-sliding mode[J]. International Journal of Control, 1991, 54(5): 1171-1187. DOI: 10.1080/00207179108934203.