我們?cè)谟貌⑿羞\(yùn)算工具箱來(lái)多次運(yùn)行模型的時(shí)候,一般都會(huì)改變些什么,來(lái)實(shí)現(xiàn)不同的仿真。
在這里,我們可以通過(guò) Simulink.SimulationInput 對(duì)象來(lái)實(shí)現(xiàn)。首先,我們?yōu)槟P托陆ㄈ舾蓚€(gè) Simulink.SimulationInput 對(duì)象,然后通過(guò)它來(lái)定義不同的配置,包括初始狀態(tài)、模型參數(shù)、模塊參數(shù)、輸入信息以及模型使用的各種變量。
這是一個(gè)簡(jiǎn)單的碰撞模型:

配置不同的 Restitution 系數(shù),再實(shí)現(xiàn)并行仿真,如下圖:

我們從 -0.9 到 -0.2 取 10 個(gè)不同的系數(shù)值,然后構(gòu)造了一個(gè)長(zhǎng)度為 10 的Simulink.SimulationInput 對(duì)象數(shù)組。接著使用 setBlockParameter 方法,給指定的模塊 blk 的參數(shù) 'Gain' 設(shè)置了不同的值。最后調(diào)用 parsim ,把Simulink.SimulationInput 數(shù)組作為輸入?yún)?shù),進(jìn)行并行運(yùn)算。
計(jì)算完畢,就會(huì)得到一組Simulink.SimulationOutput 作為返回值。
一些更真實(shí)的場(chǎng)景應(yīng)用
在工作空間定義變量
在 parsim 出來(lái)之前,模型并行仿真的一大難點(diǎn)在于怎么去管理模型里的各種變量。我在之前的貼子里還介紹了各種管理攻略,比如各個(gè)模塊的參數(shù)值不再直接寫(xiě)在對(duì)話框里,而是使用腳本來(lái)構(gòu)造。比如這里的重力加速度 g 和恢復(fù)系數(shù) Cr。

輸出的處理
在很多情況下,仿真會(huì)產(chǎn)生大量數(shù)據(jù)。尤其在遠(yuǎn)程計(jì)算機(jī)集群上仿真的時(shí)候,一般都不需要傳遞全部的數(shù)據(jù)。所以,我們可以對(duì)這些記錄的數(shù)據(jù)做后處理,然后傳遞我們真正感興趣的那部分。
如下圖,這里構(gòu)造了一個(gè)后處理函數(shù) detectFallen,輸入仿真結(jié)果,返回一個(gè)結(jié)構(gòu)體。這里返回的是球跳了多長(zhǎng)時(shí)間,以及彈跳了多少次。

接著,我們跟剛才一樣構(gòu)造 Simulink.SimulationInput 對(duì)象數(shù)組。有所不同的是,這里是使用 setVariable 方法來(lái)為 workspace 里的變量 Cr 設(shè)置不同的值。之后,把剛才構(gòu)造的函數(shù)句柄賦給 Simulink.SimulationInput 對(duì)象的 postSimFcn 屬性。
代碼如下:

注意,在調(diào)用 parsim 時(shí),我還使用了 UseFastRestart 來(lái)進(jìn)一步加速仿真。這樣設(shè)置后,模型在每一個(gè) worker 上只會(huì)編譯以及初始化一次。
錯(cuò)誤處理
我喜歡 parsim 的另一個(gè)地方是它對(duì)仿真出錯(cuò)的處理方法。
比如下面這個(gè)例子,返回的Simulink.SimulationOutput 對(duì)象里包括了錯(cuò)誤提示信息以及錯(cuò)誤發(fā)生之前仿真數(shù)據(jù)。

這些信息可以幫助我們理解模型哪里出了錯(cuò),也不需要重新仿真模型。
如果你基于這些記錄數(shù)據(jù),也看不出模型哪里出了問(wèn)題,那么你還可以在本地機(jī)器上使用同樣的參數(shù)配置來(lái)重新運(yùn)行模型。這時(shí)候,你可以使用 SimulaitonInput 對(duì)象的applyToModel 方法。
就如它名字所說(shuō),這個(gè)函數(shù)會(huì)把這個(gè)SimulationInput 對(duì)象里的信息來(lái)配置本地模型,包括模型配置、參數(shù)值、變量值。這樣你就可以很容易得到一個(gè)跟遠(yuǎn)程出錯(cuò)的模型一模一樣的模型,在本地調(diào)試。
-
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7842瀏覽量
93498 -
結(jié)構(gòu)體
+關(guān)注
關(guān)注
1文章
131瀏覽量
11417
發(fā)布評(píng)論請(qǐng)先 登錄
汽車(chē)HIL測(cè)試系統(tǒng),歐美標(biāo)充電模型Simulink模型,開(kāi)發(fā),有償
雷達(dá)系統(tǒng)中數(shù)字下變頻的實(shí)現(xiàn)
關(guān)于使用 parsim 輕松實(shí)現(xiàn) Simulink 模型并行仿真的分析和研究
評(píng)論