Advertisement
Sephinroth

1111

Apr 23rd, 2021
991
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.88 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. np.set_printoptions(precision=4)
  4.  
  5. def expected(P, t, lmbd):
  6.     res_q = 0
  7.     for i in range(1, 200):
  8.         res_q += i * P[i]
  9.     print(f'Мат. ожидание числа требований в СМО в момент времени {t}: {res_q}')
  10.     res_b = 0
  11.     for i in range(1, 199):
  12.         res_b += i * P[i+1]
  13.     print(f'Мат. ожидание числа требреваний в очереди в момент времени {t}: {res_b}')
  14.     print(f'Мат. ожидание длительности пребывания требования в момент времени {t}: {res_q / lmbd}\n')
  15.  
  16.  
  17. Q = 200
  18. P = np.zeros(Q)
  19. P[0] = 1
  20. PP = np.zeros(Q)
  21. t_max = 100
  22. dt = 0.001
  23. eps = dt/2
  24. lmbd = 4
  25. mu = 5
  26. t = 0
  27. p0 = [1]
  28. p1 = [0]
  29. t_task = [1, 5, 10, 20]
  30.  
  31. while t < t_max:
  32.     PP[0] = dt * (-lmbd * P[0] + mu * P[1])
  33.     for j in range(1, Q-1):
  34.         PP[j] = dt * (-(lmbd + mu) * P[j] + lmbd * P[j-1] + mu * P[j + 1])
  35.     for j in range(Q):
  36.         P[j] += PP[j]
  37.         if min(map(lambda i: abs(t - i), t_task)) < eps:
  38.             expected(P, t, lmbd)
  39.         t += dt
  40.     p0.append(P[0])
  41.     p1.append(P[1])
  42. print(f'\n Распределение вероятностей {P}\nВероятности пребывания в состоянии 0 {p0}\nВероятности пребывания в состоянии 1 {p1}')
  43. t_to_plot = np.linspace(0, 100, 200)
  44. p0 = p0[:200]
  45. p1 = p1[:200]
  46. plt.figure(1)
  47. plt.plot(t_to_plot, P)
  48. plt.suptitle('Изменение распределения с течением времени')
  49. plt.figure(2)
  50. plt.plot(t_to_plot, p0, label='Изменение вероятности пребывания в состоянии 0')
  51. plt.plot(t_to_plot, p1, label='Изменение вероятности пребывания в состоянии 1')
  52. plt.legend()
  53. plt.show()
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement