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