kamilosxd678

[SEM4][labSI] Sieci bayessowe(final)

May 27th, 2013
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.10 KB | None | 0 0
  1. % Metody teoretyczne
  2.  
  3. clear
  4. N=1; T=2; % falsz, prawda
  5.  
  6. %zadawanie wartosci prawdopodobienstw
  7. %Pr - błąd programisty
  8. %B - błąd w systemie
  9. %N - skok napięcia
  10. %D - błąd na dysku
  11. %U - utrata danych
  12. %Prawdopodobieństwa dane:
  13.  
  14. % blad programisty
  15. pPr(T) = 0.70;
  16. pPr(N) = 1 - pPr(T);
  17. % skok napiecia
  18. pN(T) = 0.07;
  19. pN(N) = 1 - pN(T);
  20. % blad w systemie
  21. pBPr(T,T) = 0.13;
  22. pBPr(T,N) = 0.05;
  23. pBPr(N,T) = 1 - pBPr(T,T);
  24. pBPr(N,N) = 1 - pBPr(T,N);
  25. % blad na dysku
  26. pDNB(T,T,T) = 0.80;
  27. pDNB(T,N,T) = 0.15;
  28. pDNB(T,T,N) = 0.45;
  29. pDNB(T,N,N) = 0.06;
  30. pDNB(N,T,T) = 1 - pDNB(T,T,T);
  31. pDNB(N,N,T) = 1 - pDNB(T,N,T);
  32. pDNB(N,T,N) = 1 - pDNB(T,T,N);
  33. pDNB(N,N,N) = 1 - pDNB(T,N,N);
  34. %Utrata danych
  35. pUDB(T,T,T) = 0.50;
  36. pUDB(T,N,T) = 0.30;
  37. pUDB(T,T,N) = 0.20;
  38. pUDB(T,N,N) = 0.05;
  39. pUDB(N,T,T) = 1 - pUDB(T,T,T);
  40. pUDB(N,N,T) = 1 - pUDB(T,N,T);
  41. pUDB(N,T,N) = 1 - pUDB(T,T,N);
  42. pUDB(N,N,N) = 1 - pUDB(T,N,N);
  43. % tablica prawdopodobienstw lacznych
  44. %Pr - błąd programisty
  45. %B - błąd w systemie
  46. %N - skok napięcia
  47. %D - błąd na dysku
  48. %U - utrata danych
  49. for Pr=1:2
  50.   for B=1:2
  51.     for N=1:2
  52.       for D=1:2
  53.         for U=1:2
  54.           p(Pr,B,N,D,U)=pPr(Pr)*pN(N)*pBPr(B,Pr)*pDNB(D,N,B)*pUDB(U,D,B);                  
  55.         end
  56.       end
  57.     end
  58.   end
  59. end
  60.  
  61. % Sprawdzenie czy suma wszystkich prawdopodobienstw jest rowna 1
  62. sum(sum(sum(sum(sum(p)))))
  63.  
  64.  
  65. % Na podstawie tablicy prawdopodopienstw lacznych mozna obliczyc dowolne prawdopodobienstwo, np.P(A|S)=P(A,S)/P(S)
  66. pD = sum(sum(sum(sum((p(:,:,:,2,:))))))
  67. pPrD = sum(sum(sum(p(2,:,:,2,:))))/pD
  68.  
  69. %pwas=sum(sum(sum(p(2,:,2,:,:))))/sum(sum(sum(sum(p(:,:,2,:,:)))))
  70. %pwnas=sum(sum(sum(p(1,:,2,:,:))))/sum(sum(sum(sum(p(:,:,2,:,:)))))
  71.  
  72. % -------------------------------------------------------
  73. % Metody Monte Carlo
  74.  
  75. K=10000; % jednorazowa porcja taktow
  76. close
  77. hold on                             % polecenie zostawia wykres, nastepne beda rysowane na tym samym
  78. plot([1 1000],[pPrD pPrD])          % wykres P(A|S) wyznaczonego teoretycznie
  79. axis([0 1000 0 0.9])                % zadanie skali rysunku
  80. srednia = 0;
  81.  
  82. srednia = zeros(1,1000);
  83. for j=1:1000
  84.     pr=rand(1,K)<pPr(T);
  85.     pn=rand(1,K)<pN(T);
  86.     pbprTT=rand(1,K)<pBPr(T,T);
  87.     pbprNT=rand(1,K)<pBPr(N,T);
  88.     pbprTN=rand(1,K)<pBPr(T,N);
  89.     pbprNN=rand(1,K)<pBPr(N,N);
  90.     %pdbnprTTTT=rand(1,K)<pBPr(T,T)*pN(T)*pDNB(T,T,T);
  91.     %pdbnprTTTN=rand(1,K)<pBPr(T,N)*pN(T)*pDNB(T,T,T);
  92.     %pdbnprTTNT=rand(1,K)<pBPr(T,T)*pN(N)*pDNB(T,N,T);
  93.     %pdbnprTTNN=rand(1,K)<pBPr(T,N)*pN(N)*pDNB(T,N,T);
  94.     %pdbnprTNTT=rand(1,K)<pBPr(N,T)*pN(T)*pDNB(T,T,T);
  95.     %pdbnprTNTN=rand(1,K)<pBPr(N,N)*pN(T)*pDNB(T,T,N);
  96.     %pdbnprTNNT=rand(1,K)<pBPr(N,T)*pN(N)*pDNB(T,N,N);
  97.     %pdbnprTNNN=rand(1,K)<pBPr(N,N)*pN(N)*pDNB(T,N,N);
  98.     %pdbnprNTTT=rand(1,K)<pBPr(T,T)*pN(T)*pDNB(N,T,N);
  99.     %pdbnprNTTN=rand(1,K)<pBPr(T,N)*pN(T)*pDNB(N,T,T);
  100.     %pdbnprNTNT=rand(1,K)<pBPr(T,T)*pN(N)*pDNB(N,N,T);
  101.     %pdbnprNTNN=rand(1,K)<pBPr(T,N)*pN(N)*pDNB(N,N,T);
  102.     %pdbnprNNTT=rand(1,K)<pBPr(N,T)*pN(T)*pDNB(N,T,N);
  103.     %pdbnprNNTN=rand(1,K)<pBPr(N,N)*pN(T)*pDNB(N,T,N);
  104.     %pdbnprNNNT=rand(1,K)<pBPr(N,T)*pN(N)*pDNB(N,N,N);
  105.     %pdbnprNNNN=rand(1,K)<pBPr(N,N)*pN(N)*pDNB(N,N,N);
  106.     pbprTTT=rand(1,K)<pBPr(T,T)*pN(T);
  107.     pbprTTN=rand(1,K)<pBPr(T,N)*pN(T);
  108.     pbprTNT=rand(1,K)<pBPr(T,T)*pN(N);
  109.     pbprTNN=rand(1,K)<pBPr(T,N)*pN(N);
  110.     pbprNTT=rand(1,K)<pBPr(N,T)*pN(T);
  111.     pbprNTN=rand(1,K)<pBPr(N,N)*pN(T);
  112.     pbprNNT=rand(1,K)<pBPr(N,T)*pN(N);
  113.     pbprNNN=rand(1,K)<pBPr(N,N)*pN(N);
  114.    
  115.     %pdpr=(pr&pn&pbprTT)|(pr&~pn&pbprTN)|(~pr&pn&pbprNT)|(~pr&~pn&pbprNN);
  116.     pdpr=(pr&pn&pbprTT&pbprTTT)|(~pr&pn&pbprTT&pbprTTN)|(pr&~pn&pbprNT&pbprTNT)|(~pr&~pn&pbprTN&pbprTNN)|(pr&pn&pbprNT&pbprNTT)|(~pr&pn&pbprNN&pbprNTN)|(pr&~pn&pbprNT&pbprNNT)|(~pr&~pn&pbprNN&pbprNNN);
  117.     % usrednienie czestosci dla wszystkich dotychczasowych krokow
  118.     if j == 1
  119.         srednia(j) = 0 + (sum(pdpr)-0)/j;
  120.     else
  121.        srednia(j) = srednia(j-1) + (sum(pr&pdpr)/sum(pdpr)-srednia(j-1))/j;
  122.     end
  123.     % narysowanie wykresu: plot([1:j], tablica_srednich_czestosci)
  124.     %pause
  125. end
  126. hold
  127. plot(1:j,srednia,'r',[1 1000],[pPrD pPrD],'b');
Advertisement
Add Comment
Please, Sign In to add comment