来源:侯忠生教授的《无模型自适应控制:理论与应用》(2013年科学出版社)。
👉对应书本 3.2 单输入单输出系统(SISO)紧格式动态线性化(CFDL) 和 4.2 单输入单输出系统(SISO)紧格式动态线性化(CFDL)的无模型自适应控制(MFAC)
CFDL
紧格式动态线性化
(compact form dynamic linearization)
SISO离散时间非线性系统模型:
y ( k + 1 ) = f ( y ( k ) , … y ( k − n y ) , … u ( k ) , … u ( k − n u ) ) y\left( {k + 1} \right) = f\left( y(k),\ldots y\left( {k - n_{y}} \right),\ldots u(k),\ldots u\left( {k - n_{u}} \right) \right)y(k+1)=f(y(k),…y(k−ny),…u(k),…u(k−nu))
其中,n y , n u n_y,n_uny,nu为两个未知的正整数,分别表示系统输出和输入的阶数。
数据模型:
Δ y ( k + 1 ) = ϕ c ( k ) Δ u ( k ) \Delta y\left( {k + 1} \right) = \phi_{c}(k)\Delta u(k)Δy(k+1)=ϕc(k)Δu(k)
伪偏导(PPD) ϕ c ( k ) \phi_{c}(k)ϕc(k) 的下标 c 表示compact,Δu(k)=u(k)-u(k-1).
SISO-CFDL-MFAC
学习控制律
控制输入准则函数:
J [ u ( k ) ] = ∣ y ∗ ( k + 1 ) − y ( k + 1 ) ∣ 2 + λ ∣ u ( k ) − u ( k − 1 ) ∣ 2 J\left\lbrack {u(k)} \right\rbrack = \left| y^{*}\left( {k + 1} \right) - y(k + 1) \right|^{2} + \lambda\left| u(k) - u(k - 1) \right|^{2}J[u(k)]=∣y∗(k+1)−y(k+1)∣2+λ∣u(k)−u(k−1)∣2
其中,λ>0为权重因子,用来限制控制输入量的变化,从而限制了非线性系统式由动态线性系统式线性替代的范围,因此可以间接地限制伪偏导数值的变化。其二,它可以避免控制律算法式中分母可能为零的奇异情况。
将数据模型代入控制输入准则函数,可以得到:
J [ u ( k ) ] = ∣ y ∗ ( k + 1 ) − y ( k ) − ϕ c ( k ) Δ u ( k ) ∣ 2 + λ ∣ u ( k ) − u ( k − 1 ) ∣ 2 = [ y ∗ ( k + 1 ) − y ( k ) ] 2 + [ ϕ c ( k ) Δ u ( k ) ] 2 − 2 [ y ∗ ( k + 1 ) − y ( k ) ] ϕ c ( k ) Δ u ( k ) + λ [ u ( k ) − u ( k − 1 ) ] 2 J\left\lbrack {u(k)} \right\rbrack = \left| {y^{*}\left( {k + 1} \right) - y(k) - \phi_{c}(k)\Delta u(k)} \right|^{2} + \lambda\left| {u(k) - u\left( {k - 1} \right)} \right|^{2} = \left\lbrack {y^{*}\left( {k + 1} \right) - y(k)} \right\rbrack^{2} + \left\lbrack {\phi_{c}(k)\Delta u(k)} \right\rbrack^{2} - 2\left\lbrack y^{*}\left( {k + 1} \right) - y(k) \right\rbrack\phi_{c}(k)\Delta u(k) + \lambda\left\lbrack {u(k) - u\left( {k - 1} \right)} \right\rbrack^{2}J[u(k)]=∣y∗(k+1)−y(k)−ϕc(k)Δu(k)∣2+λ∣u(k)−u(k−1)∣2=[y∗(k+1)−y(k)]2+[ϕc(k)Δu(k)]2−2[y∗(k+1)−y(k)]ϕc(k)Δu(k)+λ[u(k)−u(k−1)]2
J ( u ( k ) ) J(u(k))J(u(k)) 对 u ( k ) u(k)u(k) 求导,得:
d J [ u ( k ) ] d u ( k ) = 2 ∣ ϕ c ( k ) ∣ 2 Δ u ( k ) − 2 [ y ∗ ( k + 1 ) − y ( k ) ] ϕ c ( k ) + 2 λ [ u ( k ) − u ( k − 1 ) ] \frac{dJ\left\lbrack {u(k)} \right\rbrack}{du(k)} = 2\left| \phi_{c}(k) \right|^{2}\Delta u(k) - 2\left\lbrack y^{*}\left( {k + 1} \right) - y(k) \right\rbrack\phi_{c}(k) + 2\lambda\left\lbrack {u(k) - u\left( {k - 1} \right)} \right\rbrackdu(k)dJ[u(k)]=2∣ϕc(k)∣2Δu(k)−2[y∗(k+1)−y(k)]ϕc(k)+2λ[u(k)−u(k−1)]
令 d J [ u ( k ) ] d u ( k ) = 0 \frac{dJ\left\lbrack {u(k)} \right\rbrack}{du(k)}=0du(k)dJ[u(k)]=0,得
∣ ϕ c ( k ) ∣ 2 [ u ( k ) − u ( k − 1 ) ] − [ y ∗ ( k + 1 ) − y ( k ) ] ϕ c ( k ) + λ [ u ( k ) − u ( k − 1 ) ] = 0 \left| \phi_{c}(k) \right|^{2}\left\lbrack {u(k) - u\left( {k - 1} \right)} \right\rbrack - \left\lbrack {y^{*}\left( {k + 1} \right) - y(k)} \right\rbrack\phi_{c}(k) + \lambda\left\lbrack {u(k) - u\left( {k - 1} \right)} \right\rbrack = 0∣ϕc(k)∣2[u(k)−u(k−1)]−[y∗(k+1)−y(k)]ϕc(k)+λ[u(k)−u(k−1)]=0
整理可得:
u ( k ) = u ( k − 1 ) + ϕ c ( k ) ∣ ϕ c ( k ) ∣ 2 + λ [ y ∗ ( k + 1 ) − y ( k ) ] u(k) = u\left( {k - 1} \right) + \frac{\phi_{c}(k)}{\left| \phi_{c}(k) \right|^{2} + \lambda}\left\lbrack {y^{*}\left( {k + 1} \right) - y(k)} \right\rbracku(k)=u(k−1)+∣ϕc(k)∣2+λϕc(k)[y∗(k+1)−y(k)]
为了让控制算法更具一般性,引入步长因子 ρ∈(0,1] :
u ( k ) = u ( k − 1 ) + ρ ϕ c ( k ) ∣ ϕ c ( k ) ∣ 2 + λ [ y ∗ ( k + 1 ) − y ( k ) ] u(k) = u\left( {k - 1} \right) + \frac{\rho\phi_{c}(k)}{\left| \phi_{c}(k) \right|^{2} + \lambda}\left\lbrack {y^{*}\left( {k + 1} \right) - y(k)} \right\rbracku(k)=u(k−1)+∣ϕc(k)∣2+λρϕc(k)[y∗(k+1)−y(k)]
PPD参数估计算法
考虑参数估计值对采样数据的敏感性,提出PPD估计准则函数:
J [ ϕ c ^ ( k ) ] = ∣ y ( k ) − y ( k − 1 ) − ϕ c ^ ( k ) Δ u ( k − 1 ) ∣ 2 + μ ∣ ϕ c ^ ( k ) − ϕ c ^ ( k − 1 ) ∣ 2 = [ y ( k ) − y ( k − 1 ) ] 2 + [ ϕ c ^ ( k ) Δ u ( k − 1 ) ] 2 − 2 [ y ( k ) − y ( k − 1 ) ] ϕ c ^ ( k ) Δ u ( k − 1 ) + μ ∣ ϕ c ^ ( k ) − ϕ c ^ ( k − 1 ) ∣ 2 J\left\lbrack {\hat{\phi_{c}}(k)} \right\rbrack = \left| {y(k) - y\left( {k - 1} \right) - \hat{\phi_{c}}(k)\Delta u\left( {k - 1} \right)} \right|^{2} + \mu\left| {\hat{\phi_{c}}(k) - \hat{\phi_{c}}\left( {k - 1} \right)} \right|^{2} = \left\lbrack {y(k) - y\left( {k - 1} \right)} \right\rbrack^{2} + \left\lbrack {\hat{\phi_{c}}(k)\Delta u\left( {k - 1} \right)} \right\rbrack^{2} - 2\left\lbrack y(k) - y(k - 1) \right\rbrack\hat{\phi_{c}}(k)\Delta u\left( {k - 1} \right) + \mu\left| {\hat{\phi_{c}}(k) - \hat{\phi_{c}}\left( {k - 1} \right)} \right|^{2}J[ϕc^(k)]=y(k)−y(k−1)−ϕc^(k)Δu(k−1)2+μϕc^(k)−ϕc^(k−1)2=[y(k)−y(k−1)]2+[ϕc^(k)Δu(k−1)]2−2[y(k)−y(k−1)]ϕc^(k)Δu(k−1)+μϕc^(k)−ϕc^(k−1)2
其中,μ>0为权重因子,ϕ c ( k ) ϕ_c (k)ϕc(k) 为 ϕ c ( k ) ϕ_c (k)ϕc(k) 的估计值。
对 J [ ϕ c ( k ) ] J[ϕ_c (k)]J[ϕc(k)] 求极值,可得PPD的估计算法为:
ϕ c ^ ( k ) = ϕ C ^ ( k − 1 ) + Δ u ( k − 1 ) μ + Δ u ( k − 1 ) 2 [ Δ y ( k ) − ϕ c ^ ( k − 1 ) Δ u ( k − 1 ) ] \hat{\phi_{c}}(k) = \hat{\phi_{C}}\left( {k - 1} \right) + \frac{\Delta u\left( {k - 1} \right)}{\mu + {\Delta u\left( {k - 1} \right)}^{2}}\left\lbrack \Delta y(k) - \hat{\phi_{c}}(k - 1)\Delta u\left( {k - 1} \right) \right\rbrackϕc^(k)=ϕC^(k−1)+μ+Δu(k−1)2Δu(k−1)[Δy(k)−ϕc^(k−1)Δu(k−1)]
为了让控制算法更具一般性,引入步长因子 η∈(0,1] :
ϕ c ^ ( k ) = ϕ c ^ ( k − 1 ) + η Δ u ( k − 1 ) μ + Δ u ( k − 1 ) 2 [ Δ y ( k ) − ϕ c ^ ( k − 1 ) Δ u ( k − 1 ) ] \hat{\phi_{c}}(k) = \hat{\phi_{c}}\left( {k - 1} \right) + \frac{\eta\Delta u\left( {k - 1} \right)}{\mu + {\Delta u\left( {k - 1} \right)}^{2}}\left\lbrack \Delta y(k) - \hat{\phi_{c}}(k - 1)\Delta u\left( {k - 1} \right) \right\rbrackϕc^(k)=ϕc^(k−1)+μ+Δu(k−1)2ηΔu(k−1)[Δy(k)−ϕc^(k−1)Δu(k−1)]
与一般的投影估计算法不同,一般的投影估计算法的分母项引入常数μ是为了防止除数=0,而在估计算法中μ是对PPD估计值变化量的惩罚因子。
PPD参数重置算法
如果
∣ ϕ c ^ ( k ) ∣ ≤ ε \left| {\hat{\phi_{c}}(k)} \right| \leq \varepsilonϕc^(k)≤ε
或
∣ Δ u ( k − 1 ) ∣ ≤ ε \left| {\Delta u\left( {k - 1} \right)} \right| \leq \varepsilon∣Δu(k−1)∣≤ε
或
s i g n ( ϕ c ^ ( k ) ) ≠ s i g n ( ϕ c ^ ( 1 ) ) sign\left( {\hat{\phi_{c}}(k)} \right) \neq sign\left( {\hat{\phi_{c}}(1)} \right)sign(ϕc^(k))=sign(ϕc^(1))
则
ϕ c ^ ( k ) = ϕ c ^ ( 1 ) \hat{\phi_{c}}(k) = \hat{\phi_{c}}(1)ϕc^(k)=ϕc^(1)
算法重置机制的引入是为了使PPD估计算法具有更强的对时变参数的跟踪能力。