当前位置:   article > 正文

自适应动态规划(Adaptive Dynamic Programming,ADP)解决动态系统中的最优控制问题--基础入门(附带matlab代码帮助理解)

自适应动态规划

自适应动态规划(Adaptive Dynamic Programming,ADP)是一种优化控制方法,用于解决动态系统中的最优控制问题。它通过近似动态规划(Approximate Dynamic Programming)的方式来逼近系统的最优控制策略。

一、原理推导---废话少说

逐步推导自适应动态规划(ADP)算法在离散时间线性二次型调节器(LQR)问题中的应用。

1. 问题定义

考虑一个离散时间线性系统:

x_{k+1} = Ax_{k}+Bu_{k}

其中,

  • x_{k}\in \mathbb{R}^{n}是系统状态向量,
  • u_{k}\in \mathbb{R}^{m}是控制输入向量,
  • A\in \mathbb{R}^{n\times n}B\in \mathbb{R}^{n\times m} 分别是系统的状态矩阵和控制矩阵。

2. 成本函数

目标是最小化以下无穷时间范围内的二次型成本函数:

J=\sum_{k=0}^{\infty }\gamma ^{k}(x_{k}^{T}Qx_{k}+u_{k}^{T}Ru_{k})

其中,

  • Q\in \mathbb{R}^{n\times n}是正定的状态权重矩阵,
  • R\in \mathbb{R}^{m\times m} 是正定的控制权重矩阵,
  • \gamma \in (0,1)是折扣因子。

3. 动态规划原理

动态规划(DP)方法通过求解贝尔曼方程来找到最优策略。贝尔曼方程为:

V(x_{k})=min_{u_{k}}[x_{k}^{T}Qx_{k}+u_{k}^{T}Ru_{k}+\gamma V(x_{k+1})]

其中,V(x_{k})是从状态x_{k}开始的最优成本函数。

假设值函数V(x_{k})具有二次型形式:

V(x_{k})=x_{k}^{T}Px_{k}

其中,P 是一个对称正定矩阵。

4. 最优控制策略

在这种假设下,贝尔曼方程变为:

x_{k}^{T}Px_{k}=min_{u_{k}}[x_{k}^{T}Qx_{k}+u_{k}^{T}Ru_{k}+\gamma (Ax_{k}+Bu_{k})^{T}P(Ax_{k}+Bu_{k})]

对控制输入 u_{k}求导并设置导数为零,得到最优控制输入:

u^{_{k}^{*}}=-(R+\gamma B^{T}PB)^{-1}\gamma B^{T}PA x_{k}

5. 值函数迭代

为了迭代更新值函数矩阵 P,可以使用梯度下降方法。具体地,在每次迭代中,根据当前策略计算状态和成本,然后更新 P:

P=P+\alpha [(x_{k}^{T}Qx_{k}+u_{k}^{T}Ru_{k}+\gamma x_{k +1}^{T}Px_{k+1})-x_{k}^{T}Px_{k}]x_{k}x_{k}^{T}

其中,\alpha 是学习率。

6. 数值稳定性和正则化

为了确保矩阵R+\gamma B^{T}PB 在计算控制输入时的可逆性,可以加入正则化项

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/920835
推荐阅读
相关标签