自适应控制——仿真实验一 用李雅普诺夫稳定性理论设计自适应规律
自適應控制——仿真實驗一 用李雅普諾夫穩定性理論設計自適應規律
- 一、問題描述
- 二、問題建模
- 三、問題求解
- 附錄:實現MATLAB代碼
- 參考書目
一、問題描述
設控制對象的狀態方程為
x˙p=Ap(t)xp+bp(t)u(1)\dot{\boldsymbol{x}}_{p}=\boldsymbol{A}_{p}(t) x_{p}+\boldsymbol{b}_{p}(t) u \tag{1} x˙p?=Ap?(t)xp?+bp?(t)u(1)
式中
Ap=[01?6?7],bp=[24](2)\boldsymbol{A}_{p}=\left[\begin{array}{cc} 0 & 1 \\ -6 & -7 \end{array}\right], \quad \boldsymbol{b}_{p}=\left[\begin{array}{l} 2 \\ 4 \end{array}\right] \tag{2} Ap?=[0?6?1?7?],bp?=[24?](2)
參考模型的狀態方程為
x˙m=Amxm+bmr(3)\dot{\boldsymbol{x}}_{m}=\boldsymbol{A}_{m} x_{m}+\boldsymbol{b}_{m} r \tag{3} x˙m?=Am?xm?+bm?r(3)
式中
Am=[01?10?5],bm=[12](4)\boldsymbol{A}_{m}=\left[\begin{array}{cc} 0 & 1 \\ -10 & -5 \end{array}\right], \quad \boldsymbol{b}_{m}=\left[\begin{array}{l} 1 \\ 2 \end{array}\right] \tag{4} Am?=[0?10?1?5?],bm?=[12?](4)
用李雅普諾夫穩定性理論設計自適應規律。
二、問題建模
由于控制對象的參數(狀態矩陣 Ap\boldsymbol{A}_{p}Ap? 和控制矩陣 bp\boldsymbol{b}_{p}bp? )一般是未知的,且無法直接調整。所以為改變控制對象的動態特性,需采用前饋控制加反饋控制。
控制信號 uuu 由前饋信號 KrKrKr 和反饋信號 FxpFx_pFxp? 組成,即
u=Kr+Fxp(5)u=K r+F \boldsymbol{x}_{p} \tag{5} u=Kr+Fxp?(5)
式中,rrr 為 mmm 維輸入向量,xp\boldsymbol{x}_{p}xp? 為 nnn 維狀態向量,KKK 為 m×mm \times mm×m 前饋增益矩陣,FFF 為 m×nm \times nm×n 反饋增益矩陣;具體在本次仿真實驗中,輸入向量維度 m=1m=1m=1,狀態向量維度 n=2n=2n=2。
將(5)式代入控制對象的狀態方程,可得
x˙p=[Ap(t)+bp(t)F]xp+bp(t)Kr(6)\dot{\boldsymbol{x}}_{p}=\left[\boldsymbol{A}_{p}(t)+\boldsymbol{b}_{p}(t) F\right] \boldsymbol{x}_{p}+\boldsymbol{b}_{p}(t) K r \tag{6} x˙p?=[Ap?(t)+bp?(t)F]xp?+bp?(t)Kr(6)
設系統的廣義狀態誤差向量為
e=xm?xp(7)\boldsymbol{e}=\boldsymbol{x}_{m}-\boldsymbol{x}_{p} \tag{7} e=xm??xp?(7)
由參考模型的狀態方程,結合(6)式及(7)式,可得:
e˙=Ame+(Am?Ap?bpF)xp+(bm?bpK)r(8)\dot{\boldsymbol{e}}=\boldsymbol{A}_{m} \boldsymbol{e}+\left(\boldsymbol{A}_{m}-\boldsymbol{A}_{p}-\boldsymbol{b}_{p} F\right) \boldsymbol{x}_{p}+\left(\boldsymbol{b}_{m}-\boldsymbol{b}_{p} K\right) r \tag{8} e˙=Am?e+(Am??Ap??bp?F)xp?+(bm??bp?K)r(8)
在理想情況,即 e→0e \rightarrow 0e→0 的情況下,(8)式等號右端后兩項應等于0。設前饋增益矩陣 KKK 和反饋增益矩陣 FFF 的理想值分別為 Kˉ\bar{K}Kˉ 和 Fˉ\bar{F}Fˉ。
則最終可將(8)式寫成
e˙=Ame+bmKˉ?1Φxp+bmKˉ?1Ψr(9)\dot{\boldsymbol{e}}=\boldsymbol{A}_{m} \boldsymbol{e}+\boldsymbol{b}_{m} \bar{K}^{-1} \Phi \boldsymbol{x}_{p}+\boldsymbol{b}_{m} \bar{K}^{-1} \Psi r \tag{9} e˙=Am?e+bm?Kˉ?1Φxp?+bm?Kˉ?1Ψr(9)
式中,Φ=Fˉ?F\Phi=\bar{F}-FΦ=Fˉ?F 為 m×nm \times nm×n 矩陣,Ψ=Kˉ?K\Psi=\bar{K}-KΨ=Kˉ?K 為 m×mm \times mm×m 矩陣。
選取李雅普諾夫函數為:
V=12[eTPe+tr?(ΦTΓ1?1Φ+ΨTΓ2?1Ψ)](10)V=\frac{1}{2}\left[\boldsymbol{e}^{T} \boldsymbol{P} \boldsymbol{e}+\operatorname{tr}\left(\Phi^{T} \Gamma_{1}^{-1} \Phi+\Psi^{T} \Gamma_{2}^{-1} \Psi\right)\right] \tag{10} V=21?[eTPe+tr(ΦTΓ1?1?Φ+ΨTΓ2?1?Ψ)](10)
式中,P\boldsymbol{P}P 為 n×nn \times nn×n 維正定對稱陣,Γ1\Gamma_{1}Γ1? 和 Γ2\Gamma_{2}Γ2? 均為 m×mm \times mm×m 維正定對稱陣;符號 tr?\operatorname{tr}tr 表示矩陣的跡。
求(10)式對時間的導數,得
V˙=12[e˙Pe+eTPe˙+tr?(Φ˙TΓ1?1Φ+ΦTΓ1?1Φ˙+Ψ˙TΓ2?1Ψ+ΨTΓ2?1Ψ˙)](11)\dot{V}=\frac{1}{2}\left[\dot{\boldsymbol{e}} \boldsymbol{P} \boldsymbol{e}+\boldsymbol{e}^{T} \boldsymbol{P} \dot{\boldsymbol{e}}+\operatorname{tr}\left(\dot{\Phi}^{T} \Gamma_{1}^{-1} \Phi+\Phi^{T} \Gamma_{1}^{-1} \dot{\Phi}+\dot{\Psi}^{T} \Gamma_{2}^{-1} \Psi+\Psi^{T} \Gamma_{2}^{-1} \dot{\Psi}\right)\right] \tag{11} V˙=21?[e˙Pe+eTPe˙+tr(Φ˙TΓ1?1?Φ+ΦTΓ1?1?Φ˙+Ψ˙TΓ2?1?Ψ+ΨTΓ2?1?Ψ˙)](11)
將(9)式代入(11)式,再根據矩陣跡的性質,于是有
V˙=12eT(PAm+AmTP)e+tr?(Φ˙TΓ1?1Φ+xpeTPbmKˉ?1Φ)+tr?(Ψ˙TΓ2?1Ψ+reTPbmKˉ?1Ψ)(12)\begin{aligned} \dot{V}=&\frac{1}{2} \boldsymbol{e}^{T}\left(\boldsymbol{P} \boldsymbol{A}_{m}+\boldsymbol{A}_{m}^{\boldsymbol{T}} \boldsymbol{P}\right) \boldsymbol{e}+\operatorname{tr}\left(\dot{\Phi}^{T} \Gamma_{1}^{-1} \Phi+\boldsymbol{x}_{p} \boldsymbol{e}^{T} \boldsymbol{P} \boldsymbol{b}_{m} \bar{K}^{-1} \Phi\right) \\ &+\operatorname{tr}\left(\dot{\Psi}^{T} \Gamma_{2}^{-1} \Psi+r \boldsymbol{e}^{T} \boldsymbol{P} \boldsymbol{b}_{m} \bar{K}^{-1} \Psi\right) \end{aligned} \tag{12} V˙=?21?eT(PAm?+AmT?P)e+tr(Φ˙TΓ1?1?Φ+xp?eTPbm?Kˉ?1Φ)+tr(Ψ˙TΓ2?1?Ψ+reTPbm?Kˉ?1Ψ)?(12)
為滿足李雅普諾夫第二法,需保證(12)式是負定的,對應的情況為(12)式第一項是負定的,后兩項都為零。
因為 Am\boldsymbol{A}_{m}Am? 為穩定矩陣,則可選定正定對稱陣 QQQ,使 PAm+AmTP=?Q\boldsymbol{P} \boldsymbol{A}_{m}+\boldsymbol{A}_{m}^{\boldsymbol{T}} \boldsymbol{P}=-\boldsymbol{Q}PAm?+AmT?P=?Q 成立。同時根據上述對應情況,Φ\PhiΦ 和 Ψ\PsiΨ 的選擇如下:
Φ˙=?Γ1(bmKˉ?1)TPexpTΨ˙=?Γ2(bmKˉ?1)TPerT(13)\begin{aligned} \dot{\Phi}&=-\Gamma_{1}\left(\boldsymbol{b}_{m} \bar{K}^{-1}\right)^{T} \boldsymbol{P} \boldsymbol{e} \boldsymbol{x}_{p}^{T} \\ \dot{\Psi}&=-\Gamma_{2}\left(\boldsymbol{b}_{m} \bar{K}^{-1}\right)^{T} \boldsymbol{P} \boldsymbol{e} r^{T} \end{aligned} \tag{13} Φ˙Ψ˙?=?Γ1?(bm?Kˉ?1)TPexpT?=?Γ2?(bm?Kˉ?1)TPerT?(13)
當 Ap\boldsymbol{A}_{p}Ap? 和 bp\boldsymbol{b}_{p}bp? 為常值或緩慢變化時,可得自適應調節規律:
F(t)=∫0tΓ1(bmKˉ?1)TPexpTdτ+F(0)K(t)=∫0tΓ2(bmKˉ?1)TPerdτ+K(0)(14)\begin{aligned} F(t)&=\int_{0}^{t} \Gamma_{1}\left(\boldsymbol{b}_{m} \bar{K}^{-1}\right)^{T} \boldsymbol{P e} \boldsymbol{x}_{p}^{T} d \tau+F(0) \\ K(t)&=\int_{0}^{t} \Gamma_{2}\left(\boldsymbol{b}_{m} \bar{K}^{-1}\right)^{T} \boldsymbol{P e} r d \tau+K(0) \end{aligned} \tag{14} F(t)K(t)?=∫0t?Γ1?(bm?Kˉ?1)TPexpT?dτ+F(0)=∫0t?Γ2?(bm?Kˉ?1)TPerdτ+K(0)?(14)
需額外說明的一點是,按上述步驟推導得到的自適應調節規律要求 xp\boldsymbol{x}_{p}xp? 與 rrr 線性獨立。兩者獨立的條件是 r(t)r(t)r(t) 為具有一定頻率的方波信號或為 qqq 個不同頻率的正弦信號組成的分段連續信號,其中 q>n/2q>n / 2q>n/2 或 q>(n?1)/2q>(n-1) / 2q>(n?1)/2。
三、問題求解
由上述推導可知,為采取李雅普諾夫穩定性理論設計該MRACS,需引入前饋增益矩陣 KKK 和反饋增益矩陣 FFF,設計的目標是確定 KKK 和 FFF 的系數。
在引入兩個增益矩陣進行自適應控制后,可調系統的狀態方程變為:
x˙p=[Ap(t)+bp(t)F]xp+bp(t)Kr(15)\dot{\boldsymbol{x}}_{p}=\left[\boldsymbol{A}_{p}(t)+\boldsymbol{b}_{p}(t) F\right] \boldsymbol{x}_{p}+\boldsymbol{b}_{p}(t) K r \tag{15} x˙p?=[Ap?(t)+bp?(t)F]xp?+bp?(t)Kr(15)
由之前的推導可知,(14)式中的 bmKˉ?1\boldsymbol{b}_{m} \bar{K}^{-1}bm?Kˉ?1 與 bp\boldsymbol{b}_{p}bp? 的關系如下:
bmKˉ?1=bp=[24](16)\boldsymbol{b}_{m} \bar{K}^{-1}=\boldsymbol{b}_{p}=\left[\begin{array}{l} 2 \\ 4 \end{array}\right] \tag{16} bm?Kˉ?1=bp?=[24?](16)
選取(14)式中的部分自適應參數如下:
P=[3111],Γ1=Γ2=1(17)\boldsymbol{P}=\left[\begin{array}{ll} 3 & 1 \\ 1 & 1 \end{array}\right], \quad \Gamma_{1}=\Gamma_{2}=1 \tag{17} P=[31?11?],Γ1?=Γ2?=1(17)
所以可得最終的自適應規律:
F(t)=∫0t[24][3111]expTdτ+F(0)K(t)=∫0t[24][3111]erdτ+K(0)(18)\begin{aligned} F(t)&=\int_{0}^{t}\left[\begin{array}{ll} 2 & 4 \end{array}\right]\left[\begin{array}{ll} 3 & 1 \\ 1 & 1 \end{array}\right] \boldsymbol{e} \boldsymbol{x}_{p}^{T} d \tau+F(0) \\ K(t)&=\int_{0}^{t}\left[\begin{array}{ll} 2 & 4 \end{array}\right]\left[\begin{array}{ll} 3 & 1 \\ 1 & 1 \end{array}\right] \boldsymbol{e r d} \tau+K(0) \end{aligned} \tag{18} F(t)K(t)?=∫0t?[2?4?][31?11?]expT?dτ+F(0)=∫0t?[2?4?][31?11?]erdτ+K(0)?(18)
下將上述連續自適應規律進行離散化,用于實際的數值仿真實驗。設數值積分步長為 hhh,則各時刻的參考模型狀態向量及控制對象狀態向量如下:
xm(k+1)=xm(k)+h[Am(k)xm(k)+Bm(k)r(k)]xp(k+1)=xp(k)+h[Ap(k)xp(k)+Bp(k)u(k)](19)\begin{aligned} \boldsymbol{x}_{m}(k+1)&=\boldsymbol{x}_{m}(k)+h\left[\boldsymbol{A}_{m}(k) \boldsymbol{x}_{m}(k)+\boldsymbol{B}_{m}(k) r(k)\right] \\ \boldsymbol{x}_{p}(k+1)&=\boldsymbol{x}_{p}(k)+h\left[\boldsymbol{A}_{p}(k) \boldsymbol{x}_{p}(k)+\boldsymbol{B}_{p}(k) u(k)\right] \end{aligned} \tag{19} xm?(k+1)xp?(k+1)?=xm?(k)+h[Am?(k)xm?(k)+Bm?(k)r(k)]=xp?(k)+h[Ap?(k)xp?(k)+Bp?(k)u(k)]?(19)
由于上述推導得到的自適應控制規律要求 xp\boldsymbol{x}_{p}xp? 與 rrr 線性獨立,即要求 r(t)r(t)r(t) 為具有一定頻率的方波信號或為 qqq 個不同頻率的正弦信號組成的分段連續信號,其中q>n/2q>n / 2q>n/2 或 q>(n?1)/2q>(n-1) / 2q>(n?1)/2。在本次實驗中,n=2n=2n=2,對應就要求 q>1q>1q>1,所以本次實驗中選取由3個不同頻率的正弦信號組成的分段連續信號,具體的輸入信號的形式如下:
r(k)=sin?(0.01πk)+4sin?(0.2πk)+sin?(πk)(20)r(k)=\sin (0.01 \pi k)+4 \sin (0.2 \pi k)+\sin (\pi k) \tag{20} r(k)=sin(0.01πk)+4sin(0.2πk)+sin(πk)(20)
我們設計自適應規律時引入的控制信號 uuu 的離散化形式如下:
u(k)=K(k)r(k)+F(k)xp(k)(21)u(k)=K(k) r(k)+F(k) \boldsymbol{x}_{p}(k) \tag{21} u(k)=K(k)r(k)+F(k)xp?(k)(21)
最終,還需將自適應規律離散化:
F(k)=h?∑j=0kbpTPe(k)(xp(k))T+F(0)K(k)=h?∑j=0kbpTPe(k)r(k)+K(0)(22)\begin{aligned} F(k)&=h \cdot \sum_{j=0}^{k} \boldsymbol{b}_{p}^{T} \boldsymbol{P} \boldsymbol{e}(k)\left(\boldsymbol{x}_{p}(k)\right)^{T}+F(0) \\ K(k)&=h \cdot \sum_{j=0}^{k} \boldsymbol{b}_{p}^{T} \boldsymbol{P} \boldsymbol{e}(k) r(k)+K(0) \end{aligned} \tag{22} F(k)K(k)?=h?j=0∑k?bpT?Pe(k)(xp?(k))T+F(0)=h?j=0∑k?bpT?Pe(k)r(k)+K(0)?(22)
在推導出全部的自適應規律并對相應規律進行離散化后,通過MATLAB進行了相關的仿真實驗。
可以得到2個維度的狀態向量的參考模型值與可調系統值的情況如下:
圖1.?狀態向量的參考模型值與可調系統值可以看到,可調系統并沒有很好的跟蹤參考模型,這是由于在該例中不存在最優匹配。
附錄:實現MATLAB代碼
% 課本習題3.4-用李雅普諾夫穩定性理論設計自適應規律 clear, clc; close all;h=0.01;L=100/h; % 數值積分步長和仿真步數 % 可調系統的系數矩陣 Ap = [0 1;-6 -7]; Bp = [2; 4]; % 參考模型的系數矩陣 Am = [0 1;-10 -5]; Bm = [1; 2]; % n為行向量維數、m為列向量維數,Bp是n*m的矩陣 n = size(Bp, 1); m = size(Bp, 2);P = [3 1;1 1]; % 經計算得到的用于自適應規律的正定對稱矩陣% 設定所有參數的初始值 yr0 = zeros(m, 1); xp0 = zeros(n, 1); xm0 = zeros(n, 1); u0 = zeros(m, 1); e0 = zeros(n, 1); F0 = zeros(m, n); % 反饋增益矩陣初始值 K0 = zeros(m, m); % 前饋增益矩陣初始值% 初始分配參數空間 time = zeros(1, L); % 用于記錄仿真的時刻,對應繪圖的橫軸 yr = zeros(m, L); % 輸入信號(L個m維向量) xp = zeros(n, L); % 可調系統的狀態向量(L個n維向量) xm = zeros(n, L); % 參考模型的狀態向量(L個n維向量) u = zeros(m, L); % 控制信號(L個m維向量) e = zeros(n, L); % 系統的廣義狀態誤差向量(L個n維向量)for k = 1:Ltime(k) = k*h;% 輸入信號yr(k) = 1*sin(0.01*pi*time(k))+4*sin(0.2*pi*time(k))+sin(1*pi*time(k));xp(:,k) = xp0+h*(Ap*xp0+Bp*u0); % 計算xpxm(:,k) = xm0+h*(Am*xm0+Bm*yr0); % 計算xme(:,k) = xm(:,k)-xp(:,k); % e=xm-xp% 代入F和K的自適應控制規律F = F0+h*(Bp'*P*e0*xp0');K = K0+h*(Bp'*P*e0*yr0);% 控制信號u=K*r+F*xp(K是前饋增益矩陣,F是反饋增益矩陣)u(:,k) = K*yr(k)+F*xp(:,k);% 將本輪求解得到的參數賦值給參數初始值,方便下一輪迭代使用yr0 = yr(:,k);u0 = u(:,k);e0 = e(:,k);xp0 = xp(:,k);xm0 = xm(:,k);F0 = F;K0 = K; endsubplot(2,1,1); plot(time, xm(1,:), 'Color', 'b', 'LineWidth', 0.9); hold on plot(time, xp(1,:), 'Color', 'r', 'LineStyle', '--', 'LineWidth', 1.1); xlabel('t'); ylabel('x_m_1(t)、x_p_1(t)'); legend('x_m_1(t)','x_p_1(t)'); hold off subplot(2,1,2); plot(time, xm(2,:), 'Color', 'b', 'LineWidth', 0.9) hold on plot(time, xp(2,:), 'Color', 'r', 'LineStyle', '--', 'LineWidth', 1.1) xlabel('t'); ylabel('x_m_2(t)、x_p_2(t)'); legend('x_m_2(t)', 'x_p_2(t)'); hold off參考書目
李言俊, 張科. 自適應控制理論及應用[M]. 西北工業大學出版社, 2005.
總結
以上是生活随笔為你收集整理的自适应控制——仿真实验一 用李雅普诺夫稳定性理论设计自适应规律的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 分位数计算代码_Pytho
- 下一篇: 案例 github_2019年12月Gi