来源:侯忠生教授的《无模型自适应控制:理论与应用》(2013年科学出版社)。
👉对应书本 3.4 单输入单输出系统(SISO)全格式动态线性化(FFDL) 和 4.4 单输入单输出系统(SISO)全格式动态线性化(FFDL)的无模型自适应控制(MFAC)
PFDL仅考虑了在下一时刻的系统输出变化量与当前时刻的一个固定长度滑动时间窗口内的输入变化量之间的动态时变关系,而FFDL还考虑了当前时刻的具有某个长度的滑动时间窗口内的所有控制输入变化量和系统输出变化量对下一时刻的系统输出变化量的影响。
FFDL
全格式动态线性化
(full form dynamic linearization)
数据模型:
Δ y ( k + 1 ) = ϕ f , L y , L u T ( k ) Δ H L y , L u ( k ) \Delta y\left( {k + 1} \right) = \phi_{f,L_{y},L_{u}}^{T}(k)\Delta H_{L_{y},L_{u}}(k) Δy(k+1)=ϕf,Ly,LuT(k)ΔHLy,Lu(k)
伪偏导(PPD) ϕ f , L y , L u ( k ) \phi_{f,L_{y},L_{u}}(k) ϕf,Ly,Lu(k) 的下标 f 表示full
L y L_y Ly 和 L u L_u Lu 为伪阶数, 0 ≤ L y ≤ n y 0≤L_y≤n_y 0≤Ly≤ny, 1 ≤ L u ≤ n u 1≤L_u≤n_u 1≤Lu≤nu.
当 L y = 0 L_y=0 Ly=0 和 L u = L L_u=L Lu=L 时,FFDL数据模型可变为PFDL数据模型;
当 L y = 0 L_y=0 Ly=0 和 L u = 1 L_u=1 Lu=1 时,FFDL数据模型可变为CFDL数据模型。
ϕ f , L y , L u ( k ) = [ ϕ 1 ( k ) , ϕ 2 ( k ) , … , ϕ L y ( k ) , ϕ L y + 1 ( k ) , … , ϕ L y + L u ( k ) ] T \phi_{f,L_{y},L_{u}}(k) = \left\lbrack {\phi_{1}(k),\phi_{2}(k),\ldots{,\phi}_{L_{y}}(k),\phi_{L_{y} + 1}(k),\ldots,\phi_{L_{y} + L_{u}}(k)} \right\rbrack^{T} ϕf,Ly,Lu(k)=[ϕ1(k),ϕ2(k),…,ϕLy(k),ϕLy+1(k),…,ϕLy+Lu(k)]T
Δ H L y , L u ( k ) = [ Δ y ( k ) , … , Δ y ( k − L y + 1 ) , Δ u ( k ) , … , Δ u ( k − L u + 1 ) ] T \Delta H_{L_{y},L_{u}}(k) = \left\lbrack {\Delta y(k),\ldots,\Delta y\left( {k - L_{y} + 1} \right),\Delta u(k),\ldots,\Delta u\left( {k - L_{u} + 1} \right)} \right\rbrack^{T} ΔHLy,Lu(k)=[Δy(k),…,Δy(k−Ly+1),Δu(k),…,Δu(k−Lu+1)]T
SISO-FFDL-MFAC
学习控制律
u ( k ) = u ( k − 1 ) + ρ L y + 1 ϕ L y + 1 ( k ) [ y ∗ ( k + 1 ) − y ( k ) ] ∣ ϕ L y + 1 ( k ) ∣ 2 + λ − ϕ L y + 1 ( k ) ∑ i = 1 L y ρ i ϕ i ( k ) Δ u ( k − i + 1 ) ∣ ϕ L y + 1 ( k ) ∣ 2 + λ − ϕ L y + 1 ( k ) ∑ i = L y + 2 L u + L y ρ i ϕ i ( k ) Δ u ( k − L y − i + 1 ) ∣ ϕ L y + 1 ( k ) ∣ 2 + λ u(k) = u\left( {k - 1} \right) + \frac{\rho_{L_{y} + 1}\phi_{L_{y} + 1}(k)\left\lbrack {y^{*}\left( {k + 1} \right) - y(k)} \right\rbrack}{\left| \phi_{L_{y} + 1}(k) \right|^{2} + \lambda} - \frac{\phi_{L_{y} + 1}(k){\sum\limits_{i = 1}^{L_{y}}\rho_{i}}\phi_{i}(k)\Delta u(k - i + 1)}{\left| \phi_{L_{y} + 1}(k) \right|^{2} + \lambda} - \frac{\phi_{L_{y} + 1}(k){\sum\limits_{i = L_{y} + 2}^{L_{u} + L_{y}}\rho_{i}}\phi_{i}(k)\Delta u\left( k - L_{y} - i + 1 \right)}{\left| \phi_{L_{y} + 1}(k) \right|^{2} + \lambda} u(k)=u(k−1)+∣ϕLy+1(k)∣2+λρLy+1ϕLy+1(k)[y∗(k+1)−y(k)]−∣ϕLy+1(k)∣2+λϕLy+1(k)i=1∑Lyρiϕi(k)Δu(k−i+1)−∣ϕLy+1(k)∣2+λϕLy+1(k)i=Ly+2∑Lu+Lyρiϕi(k)Δu(k−Ly−i+1)
步长因子 ρ ∈ ( 0 , 1 ] ( i = 1 , 2 , . … , L y + L u ) ρ∈(0,1] (i= 1,2, .… , L_y+L_u) ρ∈(0,1](i=1,2,.…,Ly+Lu)
PPD参数估计算法
{ ϕ ^ f , L y , L u ( k ) = ϕ ^ f , L y , L u ( k − 1 ) + η Δ H L y , L u ( k − 1 ) μ + ∣ | Δ H L y , L u ( k − 1 ) | ∣ 2 [ Δ y ( k ) − ϕ ^ f , L y , L u T ( k − 1 ) Δ H L y , L u ( k − 1 ) ] \{\hat{\phi}_{f,L_{y},L_{u}}(k) = {\hat{\phi}}_{f,L_{y},L_{u}}\left( {k - 1} \right) + \frac{\eta\Delta H_{L_{y},L_{u}}\left( {k - 1} \right)}{\mu + \left| \middle| \Delta H_{L_{y},L_{u}}\left( {k - 1} \right) \middle| \right|^{2}}\left\lbrack \Delta y(k) - {\hat{\phi}}_{f,L_{y},L_{u}}^{T}(k - 1)\Delta H_{L_{y},L_{u}}\left( {k - 1} \right) \right\rbrack {ϕ^f,Ly,Lu(k)=ϕ^f,Ly,Lu(k−1)+μ+∣∣ΔHLy,Lu(k−1)∣∣2ηΔHLy,Lu(k−1)[Δy(k)−ϕ^f,Ly,LuT(k−1)ΔHLy,Lu(k−1)]
其中,μ>0为权重因子,为了让控制算法更具一般性,引入步长因子 η∈(0,2] .
PPD参数重置算法
如果
∣ ϕ f , L y , L u ^ ( k ) ∣ ≤ ε \left| {\hat{\phi_{f,L_{y},L_{u}}}(k)} \right| \leq \varepsilon ϕf,Ly,Lu^(k) ≤ε
或
∣ Δ H L y , L u ∣ ≤ ε \left| {\Delta H_{L_{y},L_{u}}} \right| \leq \varepsilon ΔHLy,Lu ≤ε
或
s i g n ( ϕ f , L y , L u ^ ( k ) ) ≠ s i g n ( ϕ f , L y , L u ^ ( 1 ) ) sign\left( {\hat{\phi_{f,L_{y},L_{u}}}(k)} \right) \neq sign\left( {\hat{\phi_{f,L_{y},L_{u}}}(1)} \right) sign(ϕf,Ly,Lu^(k))=sign(ϕf,Ly,Lu^(1))
则
ϕ f , L y , L u ^ ( k ) = ϕ f , L y , L u ^ ( 1 ) \hat{\phi_{f,L_{y},L_{u}}}(k) = \hat{\phi_{f,L_{y},L_{u}}}(1) ϕf,Ly,Lu^(k)=ϕf,Ly,Lu^(1)
算法重置机制的引入是为了使PPD估计算法具有更强的对时变参数的跟踪能力。
仿真实验
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)