秋雨绵绵打一生肖(串讲:控制理论:自适应控制(APC))
自适应控制 (APC)
说道自适应控制(APC),也要追溯到5年前第一次接触,当时还只会应用下面的自适应律公式来求解,这里结合自己的一些想法来对自适应控制进行深入剖析,希望可以帮助到大家。
APC的历史:
在早期的二十世纪五十年代,APC被开始研究,当时应用在飞机的自动导航装置上。
简而言之,APC是一种带有在线参数识别的控制方法,主要可以被分为模型参考自适应控制(MRAC)、自校正控制器(STC)、参数自适应控制(PAC)。
首先介绍最好理解的STC
自校正控制器(STC)
个人理解,STC可以看作 参数估计器+控制器(这两部分组成)
这种不含有参考模型及自适应率的控制系统其实是很容易理解的。
下图为STC的结构:

既然是这种结构,我所了解的常见的参数估计器可利用如下方法构成:递推最小二乘法(RLS)、快速仿射投影算法(FAP)、最小均方误差(MSE)、卡尔曼滤波(KF)、扩展卡尔曼滤波(EKF)。
可以构成STC的常见控制器:比例积分微分控制器(PID)、滑模控制(SMC)、模糊控制、神经网络、遗传算法、预测控制(PC)、二次型最优控制(LQR)、时间延迟控制(TDC)、基于不确定扰动估计器(UDE)的控制器。
因此可以根据实际被控对象的需求,来构建一种适合的STC至关重要。
STC的参考资料包括如下:

加州理工学院(Caltech)的教学讲义(开源):
其次介绍MRAC(10年前是灌水SCI期刊等论文的一把好手,当然能设计出这种方法是需要想象力的)
模型参考自适应控制(MRAC)
MRAC可以看作是 参考模型+控制器+自适应率(这三部分组成)

假设被控对象的状态方程和输出方程如下所示:
x˙(t)=Ax(t)+Bu(t)y(t)=x(t)\dot{x}(t)=Ax(t)+Bu(t)\\ y(t)={x}(t) (1)
那么参考模型的状态方程和输出方程可构造为如下所示:
x˙m(t)=Amxm(t)+Bmc(t)ym(t)=xm(t)\dot{x}_m(t)=A_mx_m(t)+B_mc(t)\\ y_m(t)={x}_m(t) (2)
仔细一看,Eqs. (1-2)也就是TDC理论的前身中所介绍的模型方程。也就是可以这样描述,MRAC就是加了自适应率的TDC前身,即保持了TDC前身的系统稳定性,又基于自适应的特性来在线预测参数,抑制了被控对象模型的扰动问题。在我看来,MRAC可谓是一箭双雕!
TDC理论的前身传送门:

这里的控制器可以看做一种固定模式结构的控制器,也就是Eq. (5)这种形式的方程,其中包含两个参数 、a、ba、b,为什么这么说的?
首先,对Eq. (2)和Eq. (1)做差如下:
e˙(t)=Amxm(t)+Bmc(t)−Ax(t)−Bu(t)\dot{e}(t)=A_mx_m(t)+B_mc(t)-Ax(t)-Bu(t)\\ (3)
进一步化简,并构造如下:
e˙(t)=Ame(t)+[Amx(t)−Ax(t)+Bmc(t)−Bu(t)]\dot{e}(t)=A_me(t)+[A_mx(t)-Ax(t)+B_mc(t)-Bu(t)]\\ (4)
如果强迫误差 ee 为零,系统需要满足矩阵 AmA_m 特征根大小为负且令下式控制器输出 u(t)u(t) 满足如下:
u(t)=ac(t)+bx(t)u(t)=ac(t)+bx(t) (5)
因此控制器 u(t)u(t) 方程可以表示为Eq. (5),然而参数 、a、ba、b 未知。
由于篇幅较长,我这里加了分割线-------------------------------
自适应律的设计(重头戏)由于控制器 u(t)u(t) 中的参数 、a、ba、b 未知,便有了自适应率的出现。自适应率的设计目的就是为了在线辨识出控制器中的这两个未知参数。
笔者认为自适应率的设计可谓是MRAC的核心,一般可以分为两种方法,梯度法和稳定性理论分析法。
方法1: 梯度法(最早由美国麻省理工学院MIT提出的方法,也称为MIT rule)
假设MRAC控制器中含有一个未知可调节的参数 θ\theta ,定义参考模型和被控对象的状态变量偏差如下:
e=xm−xe=x_m-x (6)
在Eq. (6) 中,我们的目标是通过调节参数 θ\theta来令偏差 ee 最小,即 e→0e\rightarrow0 。
这里引入一个损失函数(loss function)如下:
J=12e2J=\frac{1}{2}e^{2} (7)
如果令e→0e\rightarrow0 ,则 J→0J\rightarrow0 。也就是需要求得 JJ 的最小值。
这里钻石级的做法一般会利用最小二乘法的思想求极值JJ ,即 ∂J∂θ=0\frac{\partial J}{\partial \theta}=0 ,然而你会发现 θ\theta 解不出来。
那么为了求得 θ\theta ,并使JJ最小,到底怎么办呢?
王者级的做法为:梯度下降算法,即:
沿着JJ的负梯度方向变化参数θ\theta(由于梯度的正方向是损失函数 JJ 上升最快的方向,我们要最小化 JJ ,即让参数沿着梯度相反的方向前进一个步长,因此参数θ\theta变化的反方向与 JJ 的负梯度方向一致,可以获得 JJ 的极小值),即:
Δθ=−κ∂J∂θ=−κe∂e∂θθ˙=−γ∂J∂θ=−γe∂e∂θ\Delta\theta=-\kappa\frac{\partial J}{\partial \theta}=-\kappa e\frac{\partial e}{\partial \theta}\\ \dot{\theta}=-\gamma\frac{\partial J}{\partial \theta}=-\gamma e\frac{\partial e}{\partial \theta} (8)
其中, Δθ\Delta\theta 为两个步长的差值,κ\kappa 为学习步长,把Eq. (8)的第一行用导数表示后,
γ\gamma 为调整速率。Eq. (8)的第二行也可以被单独称为MIT rule。
梯度概念可参考:
小小将:一文看懂常用的梯度下降算法

在得知这种自适应率后,基于MIT rule的MRAC的步骤如下:
首先,根据Eq. (5),可以看出构造的参数 、a、ba、b 均未知,为了获取上述两个参数,这里MIT rule思想(Eq. (8))就可以派上用场了,两个未知参数可以表示为:浅显易懂!「高中数学」读懂梯度下降的数学原理首先,根据Eq. (5),可以看出构造的参数 、a、ba、b 均未知,为了获取上述两个参数,这里MIT rule思想(Eq. (8))就可以派上用场了,两个未知参数可以表示为:
a˙(t)=−γe(t)∂e(t)∂ab˙(t)=−γe(t)∂e(t)∂b\dot{a}(t)=-\gamma e(t)\frac{\partial e(t)}{\partial a}\\ \dot{b}(t)=-\gamma e(t)\frac{\partial e(t)}{\partial b}\\ (9)
e(t)e(t)
可以利用下式求解:
e(t)=xm(t)−x(t)x˙m(t)=Amxm(t)+Bmc(t)e(t)=x_m(t)-x(t)\\ \dot{x}_m(t)=A_mx_m(t)+B_mc(t) (10)
代入Eq. (5)于Eq. (1):
x˙(t)=Ax(t)+B[ac(t)+bx(t)]\dot{x}(t)=Ax(t)+B[ac(t)+bx(t)] (11)
把Eq. (11)的 x(t)x(t) 求出,并代入Eq. (6)中且引入微分算子 pp :
e(t)=xm(t)−Bap−A−Bbc(t)e(t)=x_m(t)-\frac{Ba}{p-A-Bb} c(t)\\ (12)
和∂e(t)∂a和∂e(t)∂b\frac{\partial e(t)}{\partial a}和\frac{\partial e(t)}{\partial b} 可以分别利用下式求解:
∂e(t)∂a=−Bp−A−Bbc(t)\frac{\partial e(t)}{\partial a}=-\frac{B}{p-A-Bb} c(t)\\ (13)
∂e(t)∂b=−Bp−A−Bbx(t)\frac{\partial e(t)}{\partial b}=-\frac{B}{p-A-Bb} x(t)\\ (14)
然而参数 、A、BA、B 未知,由于Eqs. (13-14)可以作为一阶惯性环节,因此可以进一步简化得:
∂e(t)∂a=−1p+Amc(t)\frac{\partial e(t)}{\partial a}=-\frac{1}{p+A_m} c(t)\\ (15)
∂e(t)∂b=−1p+Amx(t)\frac{\partial e(t)}{\partial b}=-\frac{1}{p+A_m} x(t)\\ (16)
基于MIT rule的MRAC可以通过式Eqs. (9-10)和Eqs. (15-16)获得参数 、a、ba、b。
然而这种梯度的思想,不能保证系统一直处于稳定,因此科学家们想出了利用稳定性理论分析法获得自适应率,保证系统一直处于稳定。
方法2:稳定性理论分析法(李雅普诺夫第二法、波波夫超稳定性法等)
这里面我仅介绍一种利用李雅普诺夫第二法来获取自适应率,可以说这种方法也是相当富有想象力,波波夫超稳定性法理解及MRAC可以参考如下:
那么如何利用李雅普诺夫稳定性理论构建自适应率呢?
李雅普诺夫第二法定义有如下描述:
对于一个系统,假设存在稳定点 xex_e,构造一个广义标量函数 V(x)V(x) ,且在状态变量x=0x=0 处,恒有 V(0)=0V(0)=0 ,对于所有定义域中的任何非零状态向量 xx ,如果同时满足以下三点:
对所有状态变量具有一阶连续偏导数V(x)对所有状态变量x具有一阶连续偏导数V(\bm{x})对所有状态变量x具有一阶连续偏导数 0">V(x)>0V(\bm{x})>0 V˙(x)<0\dot{V}(\bm{x})<0则称这些状态变量的状态轨迹都收敛在稳定点 xex_e处,即由该状态下构成的系统是渐进稳定的,当 x→∞,V(x)→∞x\rightarrow\infty, V(x)\rightarrow\infty 则称系统在稳定点 xex_e处是大范围渐进稳定的。
李雅普诺夫第二法的定义和稳定性证明可参考我这篇文章,
传送门:

根据上述定义,基于李雅普诺夫第二法的MRAC步骤如下:
首先,参考模型和被控对象的状态变量偏差的变化率可以表示为如下所示:
e˙=x˙m(t)−x˙(t)\dot{e}=\dot{x}_m(t)-\dot{x}(t) (17)
代入Eqs. (1-2)和Eq. (5)于Eq. (17)中,Eq. (17)可以重新整理为如下:
e˙(t)=Ame(t)+[(Am−A−Bb)x(t)+(Bm−Ba)c(t)]\dot{e}(t)=A_me(t)+[(A_m-A-Bb)x(t)+(B_m-Ba)c(t)]\\ (18)
当矩阵 AmA_m 特征根为负时,且下式成立时,误差将收敛为零:
e1=Am−A−Bb=0e2=Bm−Ba=0e_1=A_m-A-Bb=0 \\ e_2=B_m-Ba=0 \\ (19)
如果需要系统稳定,需要同时满足 、、e、e1、e2e、e_1、e_2 都收敛为零。由于Eq. (19)含有多个未知的参数,不能直接求解。因此需要借助李雅普诺夫第二法这个工具。
构建如下标量函数 V(e,e1,e2)V(e,e_1,e_2) (富有想象力的构造):
V=12(e2+1Bγ(Am−A−Bb)2+1Bγ(Bm−Ba)2)=12(e2+1Bγe12+1Bγe22)V=\frac{1}{2}(e^2+\frac{1}{B\gamma}(A_m-A-Bb)^2+\frac{1}{B\gamma}(B_m-Ba)^2)\\ =\frac{1}{2}(e^2+\frac{1}{B\gamma}e_1^2+\frac{1}{B\gamma}e_2^2)\\ (20)
对这个标量函数求时间的导数:
V˙(e,e1,e2)=dV(e,e1,e2)dt=ededt+1Bγe1de1dt+1Bγe2de2dt\dot{V}(e,e_1,e_2)=\frac{dV(e,e_1,e_2)}{dt}=e\frac{de}{dt}+\frac{1}{B\gamma}e_1\frac{de_1}{dt}+\frac{1}{B\gamma}e_2\frac{de_2}{dt} (21)
把Eq. (21)看成一个状态方程,可以看出Eq. (21)为零输入作用下的一阶全状态方程,因此系统状态的唯一的稳定点 exe_x 为
e=0e1=0e2=0e=0\\ e_1=0\\ e_2=0\\ (22)
根据Eq. (20),构造的标量函数 VV满足对所有变量具有一阶连续偏导数,且满足如下:
0(e\ne0,e_1\ne0,e_2\ne0)\\ V(0)=0\\ \dot{V}(e,e_1,e_2)=\frac{dV(e,e_1,e_2)}{dt}<0">V(e,e1,e2)>0(e≠0,e1≠0,e2≠0)V(0)=0V˙(e,e1,e2)=dV(e,e1,e2)dt<0V(e,e_1,e_2)>0(e\ne0,e_1\ne0,e_2\ne0)\\ V(0)=0\\ \dot{V}(e,e_1,e_2)=\frac{dV(e,e_1,e_2)}{dt}<0 (23)
则这三个状态变量的状态轨迹都收敛在稳定点 exe_x处,即由该状态下构成的系统是渐进稳定的。
从上面这句话也可以看出,当着三个状态变量的状态轨迹都收敛在稳定点 exe_x处时,也就意味着、、e、e1、e2e、e_1、e_2 都收敛为零。因此得到了一个因果关系:
V˙(e,e1,e2)=dV(e,e1,e2)dt<0⇒e=e1=e2=0\dot{V}(e,e_1,e_2)=\frac{dV(e,e_1,e_2)}{dt}<0\Rightarrow e=e_1=e_2=0\\ (24)
那么我们来求解 dV(e,e1,e2)dt\frac{dV(e,e_1,e_2)}{dt} ,根据Eq.(18)Eq. (21),方程进一步简化为:
dV(e,e1,e2)dt=ededt+1Bγe1de1dt+1Bγe2de2dt=Ame2(t)+[Am−A−Bb(t)]e(t)x(t)+[Bm−Ba(t)]e(t)c(t)−e1γdb(t)dt−e2γda(t)dt\frac{dV(e,e_1,e_2)}{dt}=e\frac{de}{dt}+\frac{1}{B\gamma}e_1\frac{de_1}{dt}+\frac{1}{B\gamma}e_2\frac{de_2}{dt}\\ =A_me^2(t)+[A_m-A-Bb(t)]e(t)x(t)+[B_m-Ba(t)]e(t)c(t)-\frac{e_1}{\gamma}\frac{db(t)}{dt}-\frac{e_2}{\gamma}\frac{da(t)}{dt}\\ (25)
进一步化简的得:
dV(e,e1,e2)dt=Ame2(t)+e1(t)e(t)x(t)+e2(t)e(t)c(t)−e1γdb(t)dt−e2γda(t)dt=Ame2(t)+e1γ[γe(t)x(t)−db(t)dt]+e2γ[γe(t)c(t)−da(t)dt]\frac{dV(e,e_1,e_2)}{dt}=A_me^2(t)+e_1(t)e(t)x(t)+e_2(t)e(t)c(t)-\frac{e_1}{\gamma}\frac{db(t)}{dt}-\frac{e_2}{\gamma}\frac{da(t)}{dt}\\ =A_me^2(t)+\frac{e_1}{\gamma}[\gamma e(t)x(t)-\frac{db(t)}{dt}]+\frac{e_2}{\gamma}[\gamma e(t)c(t)-\frac{da(t)}{dt}] (26)
由于 Ame2(t)<0A_me^2(t)<0 ,当下式满足:
db(t)dt=γe(t)x(t)da(t)dt=γe(t)c(t)\frac{db(t)}{dt}=\gamma e(t)x(t) \\ \frac{da(t)}{dt}=\gamma e(t)c(t) \\ (27)
V˙(e,e1,e2)<0\dot{V}(e,e_1,e_2)<0 ,即、、e、e1、e2e、e_1、e_2 都收敛为零,因此基于李雅普诺夫第二法的MRAC可以利用Eq. (27)来获得参数 、a、ba、b。
上述两种方法的自适应控制率的设计的参考文献如下所示:
参数自适应控制(PAC)
参数自适应控制类似一种控制器结合参数观测器的控制方法,其可以利用自适应率构造参数自适应系统如下所示:

从上面的框图可以看出,这里的自适应系统没有了参考模型,可调模型来充当观测器。
通常参数自适应律可以表达如下所示:
这种形式可以归纳为积分型的自适应律,由于积分作用,具有一定的记忆性。在离散系统中,其可以当做积分形式的修正项。
为了严格让系统渐进稳定,参数自适应律同样可以利用上述两种方法获得(梯度下降法、李雅普诺夫第二法),除此之外还有卡尔曼滤波器,最小二乘法等。