c++ 多重背包状态转移方程_串讲:控制理论:全状态反馈控制(FSFB)
全狀態反饋控制也可以被稱作狀態反饋控制,它是現代控制理論的一種控制方法,私信中部分小伙伴問道極點配置還有狀態反饋是怎么回事,這里就寫一篇文章來解決上述問題。介紹全狀態反饋控制(FSFB)之前,根據自己的理解并結合參考文獻來介紹一下科學家們為什么要設計FSFB來構造閉環控制,如有不對的地方歡迎糾正!
全狀態反饋控制(FSFB)構造的意義
首先,線性系統的被控對象狀態方程如下所示:
(1)給一個結論:在第一個式子中,第一項
代表線性系統的動態特性,系統中的能量如何被存儲及被轉移取決于矩陣 ,第二項 表示系統如何根據輸入量進行響應。因此當有了輸入量后,學者們更關心的問題是如何提高系統的動態特性(也就是說如何快速的轉移系統中的能量)。
那么證明一下結論中第一項
為什么可以代表系統的動態特性?證明如下:
利用Laplace對Eq. (1)進行變換:
(2)假設矩陣
為零矩陣,傳遞函數如下: (3)當滿足下式時,系統的極點(Pole)可以被求出。
(4)然而矩陣
特征根(Eigenvalues)求得方法如下: (5)對比Eqs.(4-5),不難發現,原來矩陣A特征根就是系統的極點!如果知道了系統的極點,就可以判斷系統的穩定性,和收斂趨近狀態及速度。
當系統的極點在s域中的位置如下所示,系統的狀態變量變化形態可以從圖中看出。
圖參考油管中的視頻,鏈接如下所示:因此可以看出系統狀態方程中的第一項
代表系統的動態特性,且矩陣 特征根為系統的極點,極點的位置可以反映出系統的穩定性,如果極點足夠遠,可以快速使系統收斂,但是能量也越大,且抗干擾能量下降。全狀態反饋控制(FSFB)
因此合理的配置極點可以使系統達到我們想要的結果,這里就需要引入FSFB,有了這個控制器,問題就迎刃而解了,我們可以通過FSFB這種方法來任意改變系統的極點位置。
FSFB有幾種結構,三種結構如下所示:
圖參考油管中的視頻三種方法都含有參考量
和參數 ,為了便于理解,這里介紹一種比例參考型的FSFB:根據上圖中的結構,可以看出這種控制方式非常的簡單,FSFB系統的控制率可以表示為如下所示:
(6)通過代入Eq.(1)于Eq. (6),系統狀態方程可以表示為如下:
(7)因此可以看出系統的極點發生了改變,從A的特征根變為了矩陣
的特征根,而矩陣 可以通過人為的設計參數進行調整,因此可以達到理想的系統控制需求。問題:那么如何調整系統的極點來滿足系統的需求,或者是使系統達到最優的性能呢?
答:可以采用以下兩種方法,即利用極點配置(Pole placement,本文重點介紹)的方法來獲取參數K,或者可以利用線性二次型LQR(這里的LQR結合FSFB也是LQR最優控制的一種,在專欄中另一篇文章中講述)來獲取參數
。極點配置:本質是放置這些極點到系統中想要的(理想的)位置來提高系統動態響應性能。
特別注意是的極點配置優于根軌跡方法,根軌跡是改變參數來改變極點沿著根軌跡的位置,不能夠任意擺放極點位置;然而極點配置可以通過改變矩陣的參數來任意的改變改變極點的位置,因此配置起來更加地靈活。
這里我列舉一個極點配置的例子來獲取參數
:極點配置的例子及Matlab仿真分析:
系統狀態和輸出方程如下所示:
(8) (9)Eqs. (8-9)的矩陣對應于Eq. (1)中的矩陣ABCD,因次根據Eq. (5),矩陣A的特征根為-2,1,其中1為正實數,因此系統不穩定。
利用極點配置,令矩陣
的參數為[k1,k2],則矩陣 可以表示如下: (10)根據Eq. (5),可以得到如下所示:
(11)假設我們期望的極點分別為-2,-1,通過上述公式,可以獲取矩陣
的參數為[2,1]。Matlab源代碼如下所示:
clcA=[0 1;2 -1]; B=[1;0]; C=[1 0]; D=0;sys=ss(A,B,C,D);%原狀態方程 E=eig(A);%原系統的特征根 P=[-2 -1]; %理想的特征根 K=place(A,B,P);%極點配置獲取參考KAc=A-B*K;%FSFB矩陣 Ec=eig(Ac);%FSFB系統的特征根 kr=2;%參數kr sysc=ss(Ac,B*kr,C,D);%新狀態方程 step(sysc);%給定輸入信號為階躍信號當輸入為階躍信號,觀察系統的響應為:
改變系統的帶寬可以根據調節系統的極點來提高。
FSFB的缺陷
在上述形式的FSFB中,改變參數
可以提高系統的幅值使系統的輸出和系統參考值保持一致,然而參數 會影響系統的穩態誤差,詳細推導如下:根據比例參考型的FSFB結構,定義誤差
: (12)假設矩陣
為零矩陣,根據傳遞函數Eq. (3)和Eq. (6),可以獲得誤差方程如下: (13)利用終值定理,可以得到:
(14)因此比例參考型的FSFB的穩態誤差為:
(15)當輸入信號為階躍信號時(
),Eq.(15)可以變換為: (16)代入Eq.(3)于傳遞函數Eq. (16)中,得:
(17)從式中可以看出,基于這種方法的FSFB系統算法簡單且動態響應特性可控,但存在穩態誤差,提高參數
會導致穩態誤差進一步增大,為了解決這一問題,可以采用積分形式的FSFB(推導與上述推導類似,這里不做推導)。參考資料包括以下內容,歡迎交流討論:
https://en.wikipedia.org/wiki/Final_value_theorem?en.wikipedia.orghttps://www.youtube.com/watch?v=wEevt2a4SKI?www.youtube.comhttps://www.youtube.com/watch?v=wEevt2a4SKI?www.youtube.comhttps://www.youtube.com/watch?v=FXSpHy8LvmY?www.youtube.com總結
以上是生活随笔為你收集整理的c++ 多重背包状态转移方程_串讲:控制理论:全状态反馈控制(FSFB)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言中point的用法_关于C语言Sw
- 下一篇: arcgis怎么运行python_在ar