Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 8.28 KB | None | 0 0
  1. function SP_LR_3_KHMELEV
  2.   % Variant 16
  3.  
  4.   pn = [0.355, 0.356]; % veroyatnost', s kotoroy N-objekt porojdaet (1) N-objekt  -  Sn1 ili (2) N-objekta  -  Sn2
  5.   pm1 = 0.302; % veroyatnost', s kotoroy M-objekt porojdaet M-objekt  -  Sm1
  6.   gamma = [0.25, 0.20];
  7.  
  8.   pn11 = 1 - pn(1) - pn(2); % veroyatnost', s kotoroy N-objekt porojdaet odin N-objekt i odin M-objekt  -  Sn3
  9.   pm0 = 1 - pm1; % veroyatnost', s kotoroy M-objekt nichevo ne porojdaet  -  Sm0
  10.  
  11.  
  12.   N = M = 0; % chislo objektov do momenta vremeni t - vremeni rojdeniya objekta
  13.   param = lambda(N, M);
  14.  
  15.   Type = {};
  16.   d = 1;
  17.  
  18.   TABLE_1 = {};
  19.   i = 1; I(i) = i;
  20.   t_sob(i) = 0;
  21.   Type{i} = 'Sn(1)'; % sobytie - okonchanie jizni lyubogo iz objektov i odnovremennoe poyavlenie novyh objektov
  22.   t_z1(i) = exprnd(1/param, 1, 1); % Время будем считать с помощью exprnd(1/lambda, 1, N); где N, видимо, равен 1: нам же нужен один элемент на выходе
  23.   t_z2(i) = -1; % priznal togo, chto poyavilsya tol'ko odin objekt
  24.   N += 1;
  25.   C = [N, M]; % = [1, 0]
  26.   t_oz(i) = t_z1(1);
  27.   J_kz(i) = 1;
  28.   Gen_kz{i} = 'N';
  29.  
  30.   TABLE_2 = {};
  31.   j = 1; J(j) = j;
  32.   J(j) = j;
  33.   Gen{j} = 'N'; % ili 'M'
  34.   t_b(j) = 0;
  35.   t_l(j) = t_z1(1);
  36.   t_d(j) = t_b(1) + t_l(1);
  37.   Des_1(j) = Des_2(j) = -1;
  38.  
  39.   %TABLE_1{i} = {i, t_sob, Type, t_z1, t_z2, C, t_oz, J_kz, Gen_kz};
  40.  
  41.  
  42.  
  43.   w = rand(1);
  44.  
  45.   i = j += 1;
  46.   w = 0.9
  47.   Type{i} = whichType(Gen_kz{i-1}, w);
  48.   i += 1;
  49.   w = 0.4
  50.   Type{i} = whichType(Gen_kz{i-1}, w);
  51.   i += 1;
  52.   w = 0.1
  53.   Type{i} = whichType(Gen_kz{i-1}, w);
  54.   i += 1;
  55.   w = rand(1);
  56.   Type{i} = whichType(Gen_kz{i-1}, w);
  57.   w = rand(1);
  58.   Type{i} = whichType(Gen_kz{i-1}, w);
  59.  
  60.  
  61.   TABLE_1 = {{'nomer:', I}, {'mom sob-ya:', t_sob}, {'tip sob-ya:', Type}, {'vremya jizni 1', t_z1}, {'vremya jizni 2', t_z2}, {'sostoyanie sistemy', C}, {'vremya do sled sob-ya', t_oz}, {'nomer objekta, u kot raneye konec', J_kz}, {'ego vid', Gen_kz}}
  62.   TABLE_2 = {{'nomer:', J}, {'Vid:', Gen}, {'mom poyavl:', t_b}, {'vremya jizni:', t_l}, {'mom izch:', t_d}, {'potomok 1:', Des_1}, {'potomok 2:', Des_2}}
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.   %______________________________________used functions:
  70.  
  71.   function S = whichType(GEN, w)
  72.     S = ' ';
  73.    
  74.     switch GEN
  75.       case 'N'
  76.         N -= 1;
  77.        
  78.         if w < pn(1)
  79.           S = 'Sn(1)'; % N-objekt porojdaet 1 N-objekt  
  80.           table_fill(S);
  81.           j += 1;
  82.         elseif w < pn(1) + pn(2)
  83.           S = 'Sn(2)'; % N-objekt porojdaet 2 N-objekta  
  84.           table_fill(S);
  85.           j += 1;
  86.         elseif w <= 1
  87.           S = 'Sn(3)'; % N-objekt porojdaet odin N-objekt i odin M-objekt
  88.           table_fill(S);
  89.           j += 1;
  90.         endif
  91.        
  92.       case 'M'
  93.         M -= 1;
  94.        
  95.         if 0 <= w < pm1
  96.           S = 'Sm(1)'; % M-objekt porojdaet M-objekt
  97.           table_fill(S);
  98.           j += 1;
  99.         else
  100.           S = 'Sm(0)'; % M-objekt nichevo ne porojdaet, poetomu  j  ne uvelichivayem
  101.           table_fill(S);
  102.         endif
  103.      endswitch
  104.  
  105.  
  106.  
  107.  
  108.  
  109.     %______________________________________
  110.    
  111.     function table_fill(S)
  112.       switch S
  113.        
  114.         case 'Sm(0)'
  115.           I(i) = i;
  116.           t_sob(i) = t_sob(i-1) + t_oz(i-1);
  117.           Type{i} = S;
  118.           t_z1(i) = t_z2(i) = -1;
  119.           C(i, :) = [N, M];
  120.           t_oz(i) = t_z2(i-1) - t_oz(i-1);
  121.           J_kz(i) = J(end);
  122.           Gen_kz(i) = 'N';
  123.           d += 1;
  124.  
  125.      
  126.         case 'Sm(1)'
  127.           M += 1;
  128.          
  129.           param = mu(N, M);
  130.           t_M = exprnd(1/param, 1, 1);
  131.          
  132.           % tablica 1:
  133.           t_z1(i) = t_M;
  134.           Des_1(i-1) = j; % tablica 2, proshlaya stroka
  135.          
  136.           I(i) = i;
  137.           t_sob(i) = t_sob(i-1) + t_oz(i-1);
  138.           Type{i} = S;
  139.           t_z2(i) = -1;
  140.           C(i, :) = [N, M];
  141.           t_oz(i) = min( t_z1(i),  t_d(j) - t_sob(i) )
  142.           if t_oz == t_d(j) - t_sob(i)
  143.             J_kz(i) = j;
  144.             Gen_kz(i) = 'N';
  145.           else
  146.             J_kz(i) = j+1;
  147.             Gen_kz(i) = 'M';
  148.           endif
  149.          
  150.           % tablica 2:
  151.           d = J(j) = j;
  152.           Gen(j) = 'M';
  153.           t_b(j) = t_sob(i);
  154.           t_l(j) = t_z1(i);
  155.           t_d(j) = t_b(j) + t_l(j);
  156.           Des_1(j) = Des_2(j) = -1;
  157.          
  158.         case 'Sn(1)'
  159.           N += 1;
  160.          
  161.           param = lambda(N, M);
  162.           t_N = exprnd(1/param, 1, 1);
  163.          
  164.           % tablica 1:
  165.           t_oz(i) = t_z1(i) = t_N;
  166.           Des_1(i-1) = j; % tablica 2, proshlaya stroka
  167.          
  168.           I(i) = i;
  169.           t_sob(i) = t_sob(i-1) + t_oz(i-1);
  170.           Type{i} = S;
  171.           t_z2(i) = -1;
  172.           C(i, :) = [N, M];
  173.           J_kz(i) = J(end);
  174.           Gen_kz(i) = 'N';
  175.          
  176.           % tablica 2, tekuschaya stroka:
  177.           d = J(j) = j;
  178.           t_b(j) = t_sob(i);
  179.           t_l(j) = t_z1(i);
  180.           t_d(j) = t_b(j) + t_l(j);
  181.          
  182.           Gen(j) = 'N';
  183.          
  184.           j += 1; J(j) = j;
  185.           t_b(j) = t_sob(i);
  186.           t_l(j) = t_z2(i);
  187.           t_d(j) = t_b(j) + t_l(j);
  188.           Des_1(j) = Des_2(j) = -1;
  189.        
  190.         case 'Sn(2)'
  191.           N += 2;
  192.          
  193.           param = lambda(N, M);
  194.           t_N1 = exprnd(1/param, 1, 1);
  195.          
  196.           param = lambda(N, M);
  197.           t_N2 = exprnd(1/param, 1, 1);
  198.          
  199.           % tablica 1:
  200.           if t_N1 < t_N2
  201.             t_z1(i) = t_N1;
  202.             t_z2(i) = t_N2;
  203.           else
  204.             t_z1(i) = t_N2;
  205.             t_z2(i) = t_N1;
  206.           endif
  207.          
  208.           t_oz(i) = t_z1(i);
  209.          
  210.           Des_1(i-1) = j; % tablica 2, proshlaya stroka
  211.           Des_2(d) = Des_1(i-1) + 1; % tablica 2, proshlaya stroka
  212.          
  213.           I(i) = i;
  214.           t_sob(i) = t_sob(i-1) + t_oz(i-1);
  215.           Type{i} = S;
  216.           C(i, :) = [N, M];
  217.           J_kz(i) = J(end);
  218.           Gen_kz(i) = 'N';
  219.          
  220.           % tablica 2, tekuschaya stroka:
  221.           d = J(j) = j;
  222.           t_b(j) = t_sob(i);
  223.           t_l(j) = t_z1(i);
  224.           t_d(j) = t_b(j) + t_l(j);
  225.          
  226.           Gen(j) = Gen(j+1) = 'N';
  227.          
  228.           j += 1; J(j) = j;
  229.           t_b(j) = t_sob(i);
  230.           t_l(j) = t_z2(i);
  231.           t_d(j) = t_b(j) + t_l(j);
  232.           Des_1(j) = Des_2(j) = -1;
  233.        
  234.         case 'Sn(3)'
  235.           N += 1;
  236.           M += 1;
  237.  
  238.           param = lambda(N, M);
  239.           t_N = exprnd(1/param, 1, 1);
  240.          
  241.           param = mu(N, M);
  242.           t_M = exprnd(1/param, 1, 1);
  243.          
  244.           % tablica 1:
  245.          
  246.           if t_N < t_M
  247.             t_z1(i) = t_N;
  248.             t_z2(i) = t_M;
  249.             Gen_kz(i) = 'N';
  250.             % tablica 2:
  251.             Gen(j) = 'N';
  252.             Gen(j+1) = 'M';
  253.           else
  254.             t_z1(i) = t_M;
  255.             t_z2(i) = t_N;
  256.             Gen_kz(i) = 'M';
  257.             % tablica 2:
  258.             Gen(j) = 'M';
  259.             Gen(j+1) = 'N';
  260.           endif
  261.        
  262.           t_oz(i) = t_z1(i);
  263.           Des_1(i-1) = j; % tablica 2
  264.           Des_2(d) = Des_1(i-1) + 1; % tablica 2
  265.          
  266.           I(i) = i;
  267.           t_sob(i) = t_sob(i-1) + t_oz(i-1);
  268.           Type{i} = S;
  269.           C(i, :) = [N, M];
  270.           J_kz(i) = j
  271.          
  272.           % tablica 2:
  273.          
  274.           d = J(j) = j;
  275.           t_b(j) = t_sob(i);
  276.           t_l(j) = t_z1(i);
  277.           t_d(j) = t_b(j) + t_l(j);
  278.           Des_1(j) = Des_2(j) = -1;
  279.          
  280.           j += 1; J(j) = j;
  281.           t_b(j) = t_sob(i);
  282.           t_l(j) = t_z2(i);
  283.           t_d(j) = t_b(j) + t_l(j);
  284.           Des_1(j) = Des_2(j) = -1;
  285.  
  286.       endswitch
  287.    
  288.     endfunction
  289.  
  290.  
  291. %    function d = descendants
  292. %      if Type{i-1} == 'Sn(2)' || Type{i-1} == 'Sn(3)'
  293. %        d = J(end-1);
  294. %      else
  295. %        d = J(end);
  296. %      endif
  297. %    endfunction
  298.    
  299.    
  300.   endfunction
  301.  
  302.  
  303.  
  304.  
  305.   function l = lambda(N, M) % pokazatel'noe raspredelenie dlya vremeni jizni N-objekta
  306.     l = 0;
  307.      
  308.     l = gamma(1)*(N + 2*M) + 0.1;
  309.  
  310.   endfunction
  311.  
  312.  
  313.   function m = mu(N, M) % pokazatel'noe raspredelenie dlya vremeni jizni M-objekta
  314.     m = 0;
  315.    
  316.     m = gamma(2)*(3*N + M);
  317.  
  318.   endfunction
  319.  
  320.   %______________________________________konec osnovnoy funkcii  
  321. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement