Advertisement
Guest User

Untitled

a guest
May 21st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. % Metody teoretyczne
  2.  
  3. clear
  4. N=1; T=2; % falsz, prawda
  5.  
  6.  
  7. % ----------------- zadawanie wartosci prawdopodobienstw
  8.  
  9. % wlamanie
  10. ps(T)=0.3;
  11. ps(N)=1-ps(T);
  12.  
  13. % alarm przy warunku wlamania i uderzenia pioruna
  14. pwrs(T,N)=0.6;
  15. pwrs(T,T)=0.0;
  16. pwts(T,N)=0.5;
  17. pwts(T,T)=0.8;
  18. pwrs(N,N)=1-pwrs(T,N);
  19. pwrs(N,T)=1-pwrs(T,T);
  20. pwts(N,T)=1-pwts(T,T);
  21. pwts(N,N)=1-pwts(T,N);
  22.  
  23.  
  24. pwhrt(T,N,N)=0.3;
  25. pwhrt(T,N,T)=0.5;
  26. pwhrt(T,T,N)=0.4;
  27. pwhrt(T,T,T)=0.9;
  28. pwhrt(N,N,N)=1-pwhrt(T,N,N);
  29. pwhrt(N,N,T)=1-pwhrt(T,N,T);
  30. pwhrt(N,T,N)=1-pwhrt(T,T,N);
  31. pwhrt(N,T,T)=1-pwhrt(T,T,T);
  32.  
  33.  
  34. % ----------------- tablica prawdopodobienstw lacznych
  35.  
  36. for S=1:2
  37. for R=1:2
  38. for Ti=1:2
  39. for H=1:2
  40. p(S,R,Ti,H)=pwhrt(H,R,Ti)*pwrs(R,S)*pwts(Ti,S)*ps(S)
  41. end
  42. end
  43. end
  44. end
  45.  
  46. % Sprawdzenie czy suma wszystkich prawdopodobienstw jest rowna 1
  47. sum(sum(sum(sum(sum(p)))))
  48.  
  49.  
  50. % ------------- obliczenie wybranych p-w z rozkładu łącznego
  51. %p(t\h,~s)
  52. % Obliczenie P(A|B,S,U,W)=P(A,B,S,U,W)/P(B,S,U,W)
  53.  
  54. % Obliczenie P(A|S,B)=P(A,S,B)/P(S,B)
  55. %pwasb=sum(sum(sum(p(2,2,2,:,:))))/sum(sum(sum(sum(p(:,2,2,:,:)))))
  56. %pwnasb=sum(sum(sum(p(1,2,2,:,:))))/sum(sum(sum(sum(p(:,2,2,:,:)))))
  57.  
  58.  
  59. pths=sum(sum(p(1,:,2,2)))/sum(sum(sum(p(1,:,:,2))))
  60.  
  61. pths=sum(sum(sum(p(1,:,2,2))))/sum(sum(p(1,:,2,:)))
  62. % -------------------------------------------------------
  63.  
  64. % Metody Monte Carlo szacowania wybranych prawdopodobienstw
  65.  
  66. K=10000; % jednorazowa porcja taktow
  67. srp_as=0; % poczatkowy wynik P(A|S)
  68. srp_a=0; % poczatkowy wynik P(A)
  69.  
  70. close
  71. hold on
  72. plot([1 1000],[pwas pwas], 'b:')
  73. plot([1 1000],[pa pa],'r:')
  74. axis([0 1000 0 0.1]) % zadanie skali rysunku
  75.  
  76. % pętla w której będziemy poprawiać naszą estymatę, iteracyjnie licząc średnie p-wo
  77. for j=1:1000
  78.  
  79. % losowanie realizacji zgodnie z określonymi w sieci prawdopodobieństwami
  80. w=rand(1,K)<pw(T);
  81. u=rand(1,K)<pu(T);
  82.  
  83. aNN=rand(1,K)<pwawu(T,N,N);
  84. aNT=rand(1,K)<pwawu(T,N,T);
  85. aTN=rand(1,K)<pwawu(T,T,N);
  86. aTT=rand(1,K)<pwawu(T,T,T);
  87. a=(w&u&aTT)|(w&~u&aTN)|(~w&u&aNT)|(~w&~u&aNN);
  88.  
  89. sN=rand(1,K)<pwsa(T,N);
  90. sT=rand(1,K)<pwsa(T,T);
  91. s=(a&sT)|(~a&sN);
  92.  
  93. bN=rand(1,K)<pwba(T,N);
  94. bT=rand(1,K)<pwba(T,T);
  95. b=(a&bT)|(~a&bN);
  96.  
  97.  
  98. % Obliczenie P(A|S)
  99. pwas_mc = sum(a&s) / sum(s); % obliczenie czestosci dla biezacej porcji taktow
  100.  
  101. % obliczenie czestosci dla wszystkich dotychczasowych taktow
  102. % (znany wzor na iteracyjne liczenie średniej)
  103. srp_as = srp_as + (pwas_mc - srp_as) / j;
  104.  
  105.  
  106.  
  107. % Obliczenie P(A)
  108. pa_mc = sum(a)/K;
  109. srp_a = srp_a + (pa_mc - srp_a) / j;
  110.  
  111.  
  112.  
  113.  
  114. % aktualizacja wykresu
  115. historia_sr_as(j) = srp_as;
  116. plot([1:j], historia_sr_as, 'b');
  117.  
  118. historia_sr_a(j) = srp_a;
  119. plot([1:j], historia_sr_a, 'r')
  120.  
  121. pause(0.001)
  122.  
  123. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement