Python 还原控制SCI论文算法系列1: 基于策略迭代的自适应最优控制器设计
0.前言
经过前两个文章的基本铺垫,
Python解决微分方程-状态方程求解作图问题
Python解决线性连续系统最优控制状态反馈问题
从本系列开始,我将把写作重心倾向于复现目前所研究的SCI科研论文提出的控制算法。本文将关注强化学习与最优控制领域的经典控制文章:
D.Vrabie, O.Pastravanu, M. Abu-Khalaf, F.L. Lewis. Adaptive optimal control for continuous-time linear systems based on policy iteration, Automatica, 2009(45): 477-484
文章将描述Lewis团队所提出的策略迭代算法相比于传统最优控制算法的创新点,并通过python编程将策略迭代控制算法程序化,通过文章中的例子实现算法复现,最后根据复现过程中发现的数值精度问题, 提出本文中算法执行时还存在什么样的问题。
1.研究问题的描述
1.1 经典线性系统最优控制器设计问题
对于线性系统:
x ˙ = A x + B u ( 1 ) \dot{x} = A x + B u (1) x˙=Ax+Bu(1)
问题的核心是求一个最优控制器 u ∗ = − K ∗ x u^{*} = -K^{*} x u∗=−K∗x,使得:
(i)系统的状态能够在反馈控制作用下收敛到平衡点;
(ii)系统的价值函数:
J = ∫ t 0 ∞ x T ( τ ) Q x ( τ ) + u T ( τ ) R u ( τ ) d τ ( 2 ) J = \int^{\infin}_{t_0} x^T(\tau)Qx(\tau) + u^T(\tau)Ru(\tau)d\tau (2) J=∫t0∞xT(τ)Qx(τ)+uT(τ)Ru(τ)dτ(2)
在控制器作用下值取到最小。
传统的求解方法即只需解出经典的代数黎卡提方程的解P即可:
A T P + P A − P B R − 1 B T P + Q = 0 ( 3 ) A^TP+PA-PBR^{-1}B^{T}P+Q = 0 (3) ATP+PA−PBR−1BTP+Q=0(3)
对应的最优控制器 u ∗ u^{*} u∗可以表示为:
u ∗ = − K ∗ x = − R − 1 B T P x ( 4 ) u^{*} = - K^* x = -R^{-1}B^TPx (4) u∗=−K∗x=−R−1BTPx(4)
1.2 策略迭代问题的提出
从式(3)可以很明显的看出,如果要求出代数黎卡提方程的解P,则必须知道系统矩阵A,控制矩阵B和价值函数中的Q与R的精确值,从而进一步由(4)推导得到最优控制器。如果系统矩阵A未知时,那么很明显,直接使用代数黎卡提方程(3)来求解P将变的无法进行。因此,必须要寻找到一种新的算法,能够解决系统矩阵A不精确已知时最优控制器的求法。这就是上述论文需要核心解决的问题。
2. 论文所提的策略迭代控制算法详解
2.1 idea1: 将部分价值函数等效成Lyapunov函数增量
目前我们已知了最优控制器的结构为(4)式,唯一需要解决的是 P ∗ P^{*} P∗的值。因此,可以考虑用P的迭代值来代替精确值,保证迭代足够多次后,P能够收敛到精确值 P ∗ P^{*} P∗。
为此,假设存在一个K能够保证A -BK为Hurwitz矩阵,即特征值实部为负,且满足
V ( t ) = x T ( t ) P x ( t ) = ∫ t ∞ x T ( τ ) Q x ( τ ) + x T ( τ ) K T R K x ( τ ) d τ ( 5 ) V(t) = x^T(t)Px(t) = \int^{\infin}_{t}x^T(\tau)Qx(\tau)+x^T(\tau)K^TRKx(\tau)d\tau (5) V(t)=xT(t)Px(t)=∫t∞xT(τ)Qx(τ)+xT(τ)KTRKx(τ)dτ(5)
P为Lyapunov方程的解,即
( A − B K ) T P + P ( A − B K ) = Q + K T R K ( 6 ) (A-BK)^TP+P(A-BK) = Q + K^TRK (6) (A−BK)TP+P(A−BK)=Q+KTRK(6)
那么,可以将价值函数进行如下等效变换:
V ( t ) = ∫ t t + T x T ( τ ) ( Q + K T R K ) x ( τ ) d τ + V ( t + T ) ( 7 ) V(t) =\int^{t+T}_{t} x^T(\tau)(Q + K^TRK) x(\tau)d\tau + V(t + T) (7) V(t)=∫tt+TxT(τ)(Q+KTRK)x(τ)dτ+V(t+T)(7)
结合(5)式,可得
x T ( t ) P x ( t ) − x T ( t + T ) P x ( t + T ) = ∫ t t + T x T ( τ ) ( Q + K T R K ) x ( τ ) d τ ( 6 ) x^T(t)Px(t) - x^T(t+T)Px(t+T) = \int^{t+T}_{t}x^T(\tau)(Q+K^TRK)x(\tau)d\tau (6) xT(t)Px(t)−xT(t+T)Px(t+T)=∫tt+T