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

该文介绍了单输入单输出(SISO)系统的无模型自适应控制(MFAC)方法,基于紧格式动态线性化(CFDL)理论。文章详细阐述了离散时间非线性系统的动态模型,以及如何构建数据模型和控制输入准则函数。通过求导和优化,推导出控制律和PPD参数的估计算法。文中还讨论了参数重置策略,以增强对时变参数的跟踪能力,并提供了MATLAB代码示例进行仿真实验。
摘要由CSDN通过智能技术生成

来源:侯忠生教授的《无模型自适应控制:理论与应用》(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_u ny,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\rbrack du(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)}=0 du(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\rbrack u(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\rbrack u(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代码)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不雨_亦潇潇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值