【MFAC】基于紧格式动态线性化的无模型自适应控制

简介: 【MFAC】基于紧格式动态线性化的无模型自适应控制

来源:侯忠生教授的《无模型自适应控制:理论与应用》(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(kny),u(k),u(knu))

其中,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(k1)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(k1)2=[y(k+1)y(k)]2+[ϕc(k)Δu(k)]22[y(k+1)y(k)]ϕc(k)Δu(k)+λ[u(k)u(k1)]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(k1)]

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(k1)][y(k+1)y(k)]ϕc(k)+λ[u(k)u(k1)]=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(k1)+ϕ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(k1)+ϕ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(k1)ϕc^(k)Δu(k1)2+μϕc^(k)ϕc^(k1)2=[y(k)y(k1)]2+[ϕc^(k)Δu(k1)]22[y(k)y(k1)]ϕc^(k)Δu(k1)+μϕc^(k)ϕc^(k1)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^(k1)+μ+Δu(k1)2Δu(k1)[Δy(k)ϕc^(k1)Δu(k1)]

为了让控制算法更具一般性,引入步长因子 η∈(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^(k1)+μ+Δu(k1)2ηΔu(k1)[Δy(k)ϕc^(k1)Δu(k1)]

与一般的投影估计算法不同,一般的投影估计算法的分母项引入常数μ是为了防止除数=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(k1)ε

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估计算法具有更强的对时变参数的跟踪能力。

仿真实验

【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)

相关文章
|
4月前
|
算法
【MFAC】基于全格式动态线性化的无模型自适应控制
【MFAC】基于全格式动态线性化的无模型自适应控制
|
4月前
|
SQL 开发框架 算法
【MFAC】基于偏格式动态线性化的无模型自适应控制
【MFAC】基于偏格式动态线性化的无模型自适应控制
|
4月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
4月前
【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)
|
4月前
|
算法
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
|
9月前
|
存储 传感器 数据可视化
嵌入式设计中对于只有两种状态的变量存储设计,如何高效的对循迹小车进行偏差量化
嵌入式设计中对于只有两种状态的变量存储设计,如何高效的对循迹小车进行偏差量化
58 0
|
9月前
|
编解码 算法 数据可视化
【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)
【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)
VHDL编写8-3线优先编码器
VHDL编写8-3线优先编码器
|
12月前
|
机器学习/深度学习 编解码 数据可视化
SPM: 一种即插即用的形状先验模块,可轻松嵌入任意编解码架构,助力涨点并显著改善分割效果!
SPM: 一种即插即用的形状先验模块,可轻松嵌入任意编解码架构,助力涨点并显著改善分割效果!
213 0
【Matlab】基于紧格式动态线性化的无模型自适应控制
【Matlab】基于紧格式动态线性化的无模型自适应控制