在被控對象模型上使用蒙特卡洛方法改進(jìn)系統(tǒng)模型
航空航天系統(tǒng)模型通常由大量的子系統(tǒng)組成,每一個(gè)子系統(tǒng)可能由不同的開發(fā)團(tuán)隊(duì)完成,而一個(gè)共享的建模環(huán)境和通用的建模標(biāo)準(zhǔn)能幫助開發(fā)團(tuán)隊(duì)輕松、快捷的交互,超越了組織、語言和文化的障礙。在航空航天應(yīng)用中,蒙特卡洛技術(shù)可用于保證高可靠性和魯棒性設(shè)計(jì)。但是進(jìn)行蒙特卡洛仿真非常耗時(shí),如果能夠并行運(yùn)行仿真可大大的縮短仿真的時(shí)間。在這篇文章中將主要討論在MATLAB/Simulink中建模、優(yōu)化和測試對象模型以搭建更好的系統(tǒng)模型的技術(shù),同時(shí)也介紹通過使用高性能計(jì)算集群提高蒙特卡洛分析速度的新技術(shù)。
蒙特卡洛技術(shù)
工程師在同一個(gè)建模環(huán)境中建立對象模型和嵌入式控制器后,可以使用多個(gè)對象的參數(shù)測試該控制器,也包括理想值仿真。建模時(shí)可變的物理參數(shù)提供了在實(shí)物中將要發(fā)生動作的最好描述。蒙特卡洛分析就是對實(shí)際物理參數(shù)可變性仿真的一種標(biāo)準(zhǔn)的方法。在航空航天應(yīng)用中,蒙特卡洛技術(shù)被用來保證高質(zhì)量和魯棒設(shè)計(jì),同時(shí)它有助于對非常復(fù)雜而又很難得到分析結(jié)果的系統(tǒng)進(jìn)行建模,也能對不確定性進(jìn)行仿真。但是蒙特卡洛仿真一個(gè)最大的缺點(diǎn)是它需要對單個(gè)模型進(jìn)行成千上萬次的運(yùn)行,而且仿真的系統(tǒng)越復(fù)雜或系統(tǒng)中包含的不確定性因素越多,那么執(zhí)行仿真的次數(shù)也越多,而通常數(shù)百次或數(shù)千次運(yùn)行一個(gè)復(fù)雜模型需要花費(fèi)幾天的時(shí)間。所以在開發(fā)過程中仿真時(shí)間往往成為致命的瓶頸。而并行地運(yùn)行多個(gè)且獨(dú)立的仿真循環(huán)則能顯著地節(jié)省時(shí)間。新的高性能的計(jì)算工具和多處理器計(jì)算機(jī)強(qiáng)大的處理能力在很大程度上排除了時(shí)間和資源的限制,非常適合對包含大量參數(shù)的復(fù)雜動態(tài)系統(tǒng)的仿真。
分布式計(jì)算
一些計(jì)算問題被稱為是并行的,因?yàn)樗鼈兛梢院苋菀椎乇环衷跀?shù)個(gè)節(jié)點(diǎn)運(yùn)行,而沒有交互、共享數(shù)據(jù)或是不同節(jié)點(diǎn)之間的同步點(diǎn)。每個(gè)節(jié)點(diǎn)上的運(yùn)行時(shí)間相比啟動和停止應(yīng)用程序的時(shí)間占絕對優(yōu)勢。蒙特卡洛仿真就是屬于這一類,因此非常適合在計(jì)算集群上運(yùn)行。仿真軟件和HPC集群之間的集成需要最大化計(jì)算能力的開發(fā)。
有了SystemTest和MATLAB分布式計(jì)算引擎(MATLAB Distributed Computing Server)這樣的COTS工具,用戶無需編寫復(fù)雜的腳本文件就可以輕松實(shí)現(xiàn)在計(jì)算集群上運(yùn)行仿真。通過這些工具可以在用戶界面(GUI)中設(shè)置進(jìn)行蒙特卡洛測試的模型中需要變化的一系列參數(shù),然后定義相應(yīng)的任務(wù),使其運(yùn)行在多個(gè)處理器上。從GUI啟動任務(wù)避免了編寫腳本和集群交互、創(chuàng)建任務(wù)、從單獨(dú)的仿真運(yùn)行編譯結(jié)果等。這也使得在計(jì)算集群或多核、多處理器計(jì)算機(jī)上進(jìn)行分布式Simulink仿真而無需編寫任何代碼成為可能。COTS仿真工具和HPC調(diào)度器的集成是提高蒙特卡洛仿真速度的一種手段。
案例研究
A. 模型
我們要分析的系統(tǒng)是控制副翼角度的液壓執(zhí)行器。建模的目的是分析伺服閥參數(shù)改變的影響,模擬電路控制開環(huán)伺服閥的效果以及副翼上負(fù)載變化的影響。我們將通過上升時(shí)間和調(diào)節(jié)時(shí)間研究這些參數(shù)對于系統(tǒng)穩(wěn)定性和性能的影響。
圖1 閉環(huán)副翼系統(tǒng)的模型。模塊中所關(guān)心的參數(shù)已被標(biāo)注:1-6是液壓伺服閥的參數(shù);
7-10是控制器模擬電路的實(shí)現(xiàn);11是空氣動力學(xué)負(fù)載。
使用COTS物理建模工具,我們在Simulink中建立被控對象和控制器的模型。選擇COTS物理建模工具,可以幫助我們開發(fā)精確的對象模型,通過仿真研究被控對象與現(xiàn)實(shí)世界盡可能接近的動作行為。圖1顯示的是完整的系統(tǒng)模型,包括伺服閥、雙動液壓缸、副翼和控制器的模擬電路實(shí)現(xiàn)。圖2 顯示的是通過SimElectronics建模的控制器詳細(xì)的模擬電路。
圖2 控制器模擬電路的實(shí)現(xiàn)的模型,感興趣的參數(shù)已被標(biāo)注
在閉環(huán)模型中,我們可以改變控制器和對象的參數(shù),通過仿真來研究系統(tǒng)的性能。我們已用蒙特卡洛技術(shù)選好需要改變的對象和控制器的參數(shù),在建模時(shí)這些參數(shù)已用理想值設(shè)置,但是我們知道它們的實(shí)際測量值是不斷變化的。同時(shí),我們加上了公差數(shù)據(jù),反映它們在實(shí)際物理組件中的變化情況。并通過這些數(shù)據(jù)來研究它們對系統(tǒng)性能的影響。 #p#page_title#e#
B. 蒙特卡洛測試
為了檢驗(yàn)這些物理參數(shù)已知的變化,我們在SystemTest中建立蒙特卡洛測試,這可以通過概率分布測試矢量和MATLAB代碼來實(shí)現(xiàn)。我們的目的是研究系統(tǒng)的穩(wěn)定性以及這些參數(shù)的變化對系統(tǒng)穩(wěn)定性的影響。利用正態(tài)、對數(shù)正態(tài)和均勻概率分布產(chǎn)生其中10個(gè)參數(shù)的1000組隨機(jī)值。對于最后一個(gè)參數(shù),為了測試特定的值,通過MATLAB代碼產(chǎn)生其可能值整個(gè)范圍上的一些值。界限測試單元(Limit Check element)被用來設(shè)置仿真中上升時(shí)間和調(diào)節(jié)時(shí)間的上下界。
圖3顯示的是測試的流程。首先運(yùn)行Simulink模型,然后用MATLAB計(jì)算上升和調(diào)節(jié)時(shí)間,接著利用界限測試單元決策測試是否通過,圖中測試矢量的列表表示的是在測試過程中Simulink模型變化的參數(shù)。使用SystemTest運(yùn)行蒙特卡洛測試的優(yōu)勢是可以自動改變所設(shè)置的參數(shù),同時(shí)也可以獨(dú)立于模型建立測試并進(jìn)行并行仿真。
C. 結(jié)果
第一次測試運(yùn)行了七個(gè)小時(shí),這是非常耗時(shí)的。所以我們將它在計(jì)算集群上運(yùn)行。利用SystemTest可以自動地分布式運(yùn)行測試,而無需改變?nèi)魏蔚臏y試設(shè)置。測試運(yùn)行在8核的計(jì)算集群上,每一個(gè)包含4個(gè)workers,使用的是64位Linux系統(tǒng)。結(jié)果只用了一個(gè)多小時(shí)。詳細(xì)的結(jié)果如表1所示。
表1 每次測試執(zhí)行時(shí)間和使用計(jì)算集群所減少的時(shí)間
注意速度的提高并不與workers的數(shù)量成線性比例,之前也報(bào)道過,這還依賴于將文件從主機(jī)拷貝到集群的每個(gè)計(jì)算機(jī)上的時(shí)間、在workers和任務(wù)調(diào)度器之間傳遞輸入輸出數(shù)據(jù)的時(shí)間以及網(wǎng)絡(luò)傳輸?shù)囊蛩亍Mǔ?,整個(gè)仿真時(shí)間要遠(yuǎn)遠(yuǎn)大于上述的時(shí)間。
由于SystemTest與并行計(jì)算工具箱和MATLAB分布式計(jì)算引擎緊密集成的,測試報(bào)告和結(jié)果的MAT文件和在單機(jī)上花費(fèi)7個(gè)小時(shí)所完成的結(jié)果是一致的。
第一次測試說明我們的設(shè)計(jì)對一些參數(shù)非常敏感。圖4所示的是液壓缸所受力影響的曲線。R7,即圖2中標(biāo)注的參數(shù)8,導(dǎo)致液壓缸所受力很大的不穩(wěn)定性,使得許多測試用例都失敗了。這也延長了測試,因?yàn)榉抡鏁r(shí)的顫動會讓仿真花費(fèi)比正常值更長的時(shí)間。
圖4 左圖是使用正常參數(shù)值時(shí)的液壓缸力;
右圖是第一次蒙特卡洛測試時(shí)的液壓缸力,注意顫動的頻率。
對于第二次測試,我們約束了R7的公差值,這消除了不穩(wěn)定性,但是仍然沒有達(dá)到上升和調(diào)節(jié)時(shí)間的要求。第二次測試僅用了一個(gè)小時(shí),但使用分布式計(jì)算只需11分鐘,計(jì)算集群仍同第一次測試。具體時(shí)間如表1所示。
對于這種情況,需要進(jìn)一步分析我們的設(shè)計(jì),這需要改變模型中更多的參數(shù)、檢查控制器的設(shè)計(jì)、與實(shí)驗(yàn)數(shù)據(jù)比較所建立的對象模型以確保模型的準(zhǔn)確性等。設(shè)計(jì)中也使用到了其它的控制設(shè)計(jì)工具,比如Simulink Response Optimization優(yōu)化設(shè)計(jì)。
對于這篇論文的目的,測試是完成了。我們已在一組真實(shí)的參數(shù)上運(yùn)行了蒙特卡洛測試,發(fā)現(xiàn)設(shè)計(jì)的至少一個(gè)組件必須要有約束的公差。
結(jié)論
這篇文章主要討論了三個(gè)方面:精確對象模型的建立、蒙特卡洛測試和分布式測試。將蒙特卡洛測試和分布式環(huán)境結(jié)合起來使得這個(gè)過程更快更容易實(shí)現(xiàn)。而在同一個(gè)環(huán)境中對整個(gè)系統(tǒng)建模并仿真的能力是實(shí)現(xiàn)以上功能的關(guān)鍵所在??傊畬⒁陨先矫娼Y(jié)合起來能在很大程度上提高設(shè)計(jì)的品質(zhì),同時(shí)能節(jié)省大量的開發(fā)時(shí)間。
Matlab個(gè)人超級圖形計(jì)算平臺-Jacket Engine+Tesla