Advertisement
Guest User

SP_LR_3_SALNIKOVA

a guest
Dec 4th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 7.22 KB | None | 0 0
  1. function SP_LR_3_SALNIKOVA
  2.  
  3.     pn1 = 0.325, pn2 = 0.325, pm1 = 0.504, y1 = 0.25, y2 = 0.10 %13 var
  4.     iN=100;
  5.     tH = zeros(iN,1);
  6.    
  7.     num_of_Sn1 = num_of_Sn2 = num_of_Sn3 = num_of_Sm0 = num_of_Sm1 = 0;
  8.     S = {'S_N(1)','S_N(2)','S_N(3)','S_M(0)','S_M(1)'};
  9.     Sch = cell(iN,1);
  10.     Si = zeros(iN,1);
  11.     tL1 = zeros(iN,1); tL2 = zeros(iN,1);
  12.     C = zeros(iN,2);
  13.     tW = zeros(iN,1);
  14.     num_t = zeros(iN,1);
  15.     type_t = cell(iN,1);    
  16.     type = cell(2*iN,1);    
  17.     tn = zeros(2*iN,1); tu = zeros(2*iN,1);
  18.     Des1 = zeros(2*iN,1); Des2 = zeros(2*iN,1);
  19.     Sch{1} = S{1};
  20.     Si(1) = 1;
  21.     lambda=0.1;
  22.     tL1(1) = exprnd(1/lambda); tL2(1) = -1;
  23.     C(1,1) = 1;
  24.     tW(1) = tL1(1);
  25.     num_t(1) = 1;
  26.     type_t{1} = 'N';
  27.     type{1} = 'N';
  28.     tn(1) = 0; tu(1) = tL1(1);
  29.     TN = tL1(1);
  30.     jN = 1; TM = 0; jM = 0;
  31.     j = 1;
  32.     for i = 2:iN
  33.         r = rand;
  34.         switch type_t{i-1}
  35.             case 'N'
  36.                 if r < pn1
  37.                     tH(i) = tW(i-1) + tH(i-1);
  38.                     Sch{i} = S{1};
  39.                     Si(i) = 1;
  40.                     lambda=y1*jN+2*y1*jM+0.1;
  41.                     tL1(i) = exprnd(1/lambda);
  42.                     tL2(i) = -1;
  43.                     Des1(num_t(i-1)) = j+1; Des2(num_t(i-1)) = -1;
  44.                     j = j + 1;
  45.                     type{j} = 'N';
  46.                     tn(j) = tH(i);
  47.                     tu(j) = tH(i) + tL1(i);
  48.                     TN = TN + tL1(i);
  49.                     jN = jN + 1;
  50.                     C(i,1) = C(i-1,1);
  51.                     C(i,2) = C(i-1,2);
  52.                 elseif r < pn1 + pn2 %&& r > pn1
  53.                     tH(i) = tW(i-1) + tH(i-1);
  54.                     Sch{i} = S{2};
  55.                     Si(i) = 2;
  56.                     lambda=y1*jN+2*y1*jM+0.1;
  57.                     tL1(i) = exprnd(1/lambda);
  58.                     tL2(i) = exprnd(1/lambda);
  59.                     Des1(num_t(i-1)) = j+1; Des2(num_t(i-1)) = j+2;
  60.                     j = j + 1;
  61.                     type{j} = 'N';
  62.                     tn(j) = tH(i);
  63.                     type{j+1} = 'N';
  64.                     tn(j+1) = tH(i);
  65.                     if tL1(i) < tL2(i)
  66.                         tu(j) = tH(i) + tL1(i);
  67.                         j = j + 1;
  68.                         tu(j) = tH(i) + tL2(i);
  69.                     else
  70.                         tu(j) = tH(i) + tL2(i);
  71.                         j = j + 1;
  72.                         tu(j) = tH(i) + tL1(i);
  73.                     end
  74.                     TN = TN + tL1(i) + tL2(i);
  75.                     jN = jN + 2;
  76.                     C(i,1) = C(i-1,1) + 1;
  77.                     C(i,2) = C(i-1,2);
  78.                 else
  79.                     tH(i) = tW(i-1) + tH(i-1);
  80.                     Sch{i} = S{3};
  81.                     Si(i) = 3;
  82.                     lambda=y1*jN+2*y1*jM+0.1;
  83.                     mu=3*y2*jN+y2*jM;
  84.                     tL1(i) = exprnd(1/lambda);
  85.                     tL2(i) = exprnd(1/mu);
  86.                     Des1(num_t(i-1)) = j+1; Des2(num_t(i-1)) = j+2;
  87.                     j = j + 1;
  88.                     if tL1(i) < tL2(i)
  89.                         type{j} = 'N';
  90.                         tn(j) = tH(i);
  91.                         tu(j) = tH(i) + tL1(i);
  92.                         j = j + 1;
  93.                         type{j} = 'M';
  94.                         tn(j) = tH(i);
  95.                         tu(j) = tH(i) + tL2(i);
  96.                     else
  97.                         type{j} = 'M';
  98.                         tn(j) = tH(i);
  99.                         tu(j) = tH(i) + tL2(i);
  100.                         j = j + 1;
  101.                         type{j} = 'N';
  102.                         tn(j) = tH(i);
  103.                         tu(j) = tH(i) + tL1(i);
  104.                     end
  105.                     TN = TN + tL1(i);
  106.                     jN = jN + 1;
  107.                     TM = TM + tL2(i);
  108.                     jM = jM + 1;
  109.                     C(i,1) = C(i-1,1);
  110.                     C(i,2) = C(i-1,2) + 1;
  111.                 end
  112.             case 'M'
  113.                 if r > pm1
  114.                     tH(i) = tW(i-1) + tH(i-1);
  115.                     Sch{i} = S{4};
  116.                     Si(i) = 4;
  117.                     tL1(i) = -1;
  118.                     tL2(i) = -1;
  119.                     C(i,1) = C(i-1,1);
  120.                     C(i,2) = C(i-1,2) - 1;
  121.                     Des1(num_t(i-1)) = -1; Des2(num_t(i-1)) = -1;
  122.                    
  123.                 else
  124.                     tH(i) = tW(i-1) + tH(i-1);
  125.                     Sch{i} = S{5};
  126.                     Si(i) = 5;
  127.                     mu=3*y2*jN+y2*jM;
  128.                     tL1(i) = exprnd(1/mu);
  129.                     tL2(i) = -1;
  130.                     Des1(num_t(i-1)) = j+1; Des2(num_t(i-1)) = -1;
  131.                     j = j + 1;
  132.                     type{j} = 'M';
  133.                     tn(j) = tH(i);
  134.                     tu(j) = tH(i) + tL1(i);
  135.                     TM = TM + tL1(i);
  136.                     jM = jM + 1;
  137.                     C(i,1) = C(i-1,1);
  138.                     C(i,2) = C(i-1,2);
  139.                 end
  140.         end
  141.  
  142.         tw = tu - tH(i);
  143.         q = find(tw == min( tw( tw > 0 ) ), 1);
  144.         tW(i) = tw(q);
  145.         num_t(i) = q;
  146.         type_t{i} = type{q};
  147.     end
  148.  
  149.     Sn = zeros(1,5);
  150.     for i = 1:5
  151.         Sn(i) = sum( Si == i );
  152.     end  
  153.     Sfreq = Sn ./ iN;
  154.     TN = TN / jN;
  155.     if jM > 0
  156.         TM = TM / jM;
  157.     end
  158.  
  159.     printf('\n\n---TABLE1---\nNomer sobytia:\n')
  160.     print_it(1:iN)
  161.     printf('\nMoment nastuplenia sobytia:\n')
  162.     print_it(tH)
  163.     printf('\nTip sobytia:\n')
  164.     print_is(Sch)
  165.     printf('\nVremya jizni 1:\n')
  166.     print_it(tL1)
  167.     printf('\nVremya jizni 2:\n')
  168.     print_it(tL2)
  169.     printf('\nSostoyanie sistemy posle sobutia:\n')
  170.     for i = 1:length(C)
  171.       printf('\n(%i, %i)', round_it(C(i, 1), 5), round_it(C(i, 2), 5));
  172.     endfor
  173.     printf('\nVremya ojidania do sled. sobytia:\n')
  174.     print_it(tW)
  175.     printf("\nNomer ob'ekta, u kotorogo ranshe konec jizni:\n")
  176.     print_it(num_t)
  177.     printf('\nEgo vid:\n')
  178.     print_is(type_t)
  179.    
  180.     printf("\n\n---TABLE2---\nNomer ob'ekta:\n")
  181.     print_it(1:2*iN)
  182.     printf("\nVid ob'ekta:\n")
  183.     print_is(type)
  184.     printf("\nMoment poyavlenia ob'ekta:\n")
  185.     print_it(tn)
  186.     printf("\nVremya jizni ob'ekta:\n")
  187.     print_it(tu-tn)
  188.     printf("\nMoment ischeznovenia ob'ekta:\n")
  189.     print_it(tu)
  190.     printf('\nPotomok 1:\n')
  191.     print_it(Des1)
  192.     printf('\nPotomok 2:\n')
  193.     print_it(Des2)
  194.    
  195.     printf("\nSredneye vremya jizni N-ob'ekta:\n")
  196.     disp(TN);
  197.     printf("\nSredneye vremya jizni M-ob'ekta:\n")
  198.     disp(TM);
  199.     printf("\nChislo proizoshedshih sobytiy kajdogo vida:\n")
  200.     printf("\n Sn1: %i\n Sn2: %i\n Sn3: %i\n Sm0: %i\n Sm1: %i\n", Sn(1), Sn(2), Sn(3), Sn(4), Sn(5));
  201.     printf("\nChislo poyavivshihsya ob'ektov tipa N:\n")
  202.     disp(jN);
  203.     printf("\nChislo poyavivshihsya ob'ektov tipa M:\n")
  204.     disp(jM);
  205.     printf("\nOtnositelnye chastoty:\n")
  206.     disp(Sfreq);
  207. end
  208.  
  209.  
  210. function print_it(arr)
  211.  
  212.   for i = 1:length(arr)
  213.    printf('\n%i', round_it(arr(i), 5));
  214.   endfor
  215.  
  216. end
  217.  
  218. % okrugleniye do 5 znakov posle zapyatoy:
  219. function R = round_it(x, k)
  220.   R = 0; R = round(x*10^k)/10^k;
  221. endfunction
  222.  
  223. function print_is(arr)
  224.  
  225.   for i = 1:length(arr)
  226.    printf('\n%s', arr{i});
  227.   endfor
  228.  
  229. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement