2013-11-24 72 views
1

我有以下馬爾可夫鏈:
仿真馬爾可夫鏈的

enter image description here

此鏈示出了飛船,這是在小行星帶的狀態:S1 - 是維修,S2 - 被破壞。 0.12 - 與小行星碰撞破壞宇宙飛船的概率。 0.88 - 碰撞的可能性不會很嚴重。需要找出第三次碰撞後船舶的可用狀態的概率。

分析解決方案顯示響應 - 0.681。但是有必要通過使用任何建模工具(MATLAB Simulink,AnyLogic,Scilab等)的仿真方法來解決這個問題。

你知道是什麼成分應該被用來模擬在Simulink或任何其他模擬環境這個過程?任何示例或鏈接。 (對不起,我的英語。)

+0

馬爾可夫鏈是基於離散事件的,對吧?除非你有「SimEvents」工具箱,否則這可能會在Simulink中變得笨重。 (或者可能使用這個[FEX-alternative](http://www.mathworks.com/matlabcentral/fileexchange/42875-function-chart-v-3-2),實際上用於驅動器控制) - 無論如何它有可能做它在Simulink中沒有任何進一步的工具箱。這個問題可能會很快結束,因爲它在SO上是關於主題的。 – thewaywewalk

回答

0

對於更復雜的系統,你會想用Stateflow的或SimEvents,但對於這個簡單的例子,你需要的是一個單一的單位延遲塊(輸出= 0 => S1,輸出= 1 => S2),用一個開關塊,一個隨機塊和一些比較塊來構成確定下一個狀態值的邏輯。

想必你必須執行仿真(非常)大量的時間和平均結果獲得統計學顯著輸出。 每次運行模擬時都需要更改隨機生成器的「種子」。 這可以通過設置種子爲「現在」(或類似的東西)來完成。

另外,您可以很容易地矢量化模式,使你只需要一次執行它。

0

如果你想模仿這個,它是在MATLAB相當容易:

servicable = 1; 
t = 0; 
while servicable =1 
    t = t+1; 
    servicable = rand()<=0.88 
end 

現在t代表的步驟的數量出貨前被打破。

包裝這在for循環中,當你喜歡,你可以做盡可能多的模擬。


注意,這實際上可以給你分配,如果你要經過3次知道的話,只需添加&& t<3到時條件。