2013-11-24 3 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에서 사용할 수 있습니다. 이 질문은 곧 여기서 끝날 수 있습니다. – thewaywewalk

답변

0

더 복잡한 시스템의 경우 Stateflow 또는 SimEvents를 사용하고 싶지만이 간단한 예제에서는 Unit Delay 블록 하나만 있으면됩니다 (출력 = 0 => S1, 출력 = 1 => S2) 스위치 블록, 임의 블록 및 몇 가지 비교 블록을 사용하여 상태의 다음 값을 결정하는 논리를 구성합니다.

통계적으로 유의미한 결과를 얻으려면 시뮬레이션을 (매우) 많은 횟수 실행하고 결과의 평균을 계산해야합니다. 시뮬레이션을 실행할 때마다 임의 생성기의 "시드"를 변경해야합니다. 시드를 "now"(또는 이와 비슷한)로 설정하면됩니다.

또는 모델을 매우 쉽게 벡터화하여 한 번만 실행하면됩니다. 이 시뮬레이션하려면

0

, 그것은 MATLAB에서 매우 간단합니다 : 선박이 파손되기 전에

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

지금 t는 단계의 양을 나타냅니다.

for 루프로 감싸고 원하는만큼 많은 시뮬레이션을 할 수 있습니다. 이것은 당신이 3 시간 후 알고 싶은 경우에 실제로, 당신에게 분배를 제공 단순히 동안 조건에 && t<3를 추가 할 수


참고.