【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代码)

相关文章
|
7月前
|
算法
【MFAC】基于全格式动态线性化的无模型自适应控制
【MFAC】基于全格式动态线性化的无模型自适应控制
|
7月前
|
SQL 开发框架 算法
【MFAC】基于偏格式动态线性化的无模型自适应控制
【MFAC】基于偏格式动态线性化的无模型自适应控制
|
7月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
LEC: 基于Transformer中间层隐藏状态的高效特征提取与内容安全分类方法
通过利用Transformer中间层的隐藏状态,研究提出了层增强分类(LEC)技术,该技术能够以极少的训练样本和参数实现高效的内容安全和提示注入攻击分类,显著提升了模型的性能,并验证了其跨架构和领域的泛化能力。
23 10
LEC: 基于Transformer中间层隐藏状态的高效特征提取与内容安全分类方法
|
7月前
|
数据可视化 数据建模
R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系
R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系
|
7月前
|
算法
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
|
7月前
【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)
|
7月前
[贴装专题] 贴装流程中涉及到的位置关系计算
[贴装专题] 贴装流程中涉及到的位置关系计算
63 0