Advertisement
Sephinroth

1.1

Apr 14th, 2021
672
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.04 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4.  
  5. def expected_n(lmbd, mu):
  6.     return lmbd / (mu - lmbd)
  7.  
  8.  
  9. def expected_u(lmbd, mu):
  10.     return 1 / (mu - lmbd)
  11.  
  12.  
  13. def stationary_distribution(omega, theta, eps):
  14.     while np.linalg.norm(omega.dot(theta) - omega) > eps:
  15.         omega = omega.dot(theta)
  16.     return omega
  17.  
  18.  
  19. def get_lmbds(lmbd_0, omega):
  20.     ans = [lmbd_0 * omega[1] / omega[0]]
  21.     for i in range(2, L + 1):
  22.         ans.append(ans[-1] * omega[i] / omega[0])
  23.     return ans
  24.  
  25.  
  26. L = 7
  27. # kappa = [1, 1, 2, 1, 4, 2, 3]
  28. kappa = [1] * L
  29. mu = [140, 65, 90, 143, 160, 184, 183]
  30. theta = np.array([[0, 0.3, 0, 0.08, 0.02, 0.3, 0.3, 0],
  31.                   [0, 0, 0.5, 0, 0, 0.2, 0.3, 0],
  32.                   [0.4, 0.3, 0, 0, 0.2, 0, 0.1, 0],
  33.                   [0, 0.8, 0, 0, 0.01, 0, 0.14, 0.05],
  34.                   [0.4, 0, 0, 0.1, 0, 0.2, 0.3, 0],
  35.                   [0, 0, 0.1, 0.1, 0, 0, 0.5, 0.3],
  36.                   [0, 0, 0, 0.9, 0.1, 0, 0, 0],
  37.                   [0, 0, 0, 0.6, 0.2, 0, 0.1, 0.1]])
  38.  
  39. # нахождение вектора omega
  40. omega = np.array([0.3, 0.4, 0, 0, 0, 0.3, 0, 0])
  41. eps = 0.0001
  42. omega = stationary_distribution(omega, theta, eps)
  43. print(f'Omegas: {omega},\nCheck (~1): {sum(omega)}')
  44.  
  45. # изменение параметров
  46.  
  47. x = np.linspace(1, 7, 7)
  48. legend_to_plot = []
  49. for l in range(1, 14, 3):
  50.     lmbd_0 = l
  51.     lmbds = get_lmbds(lmbd_0, omega)
  52.     n_s = np.array([expected_n(lmbds[i], mu[i]) for i in range(L)])
  53.     u_s = np.array([expected_u(lmbds[i], mu[i]) for i in range(L)])
  54.     print(f'lambda_0: {l}\nN: {n_s},\nU: {u_s}')
  55.     legend_to_plot.append(l)
  56.     plt.figure(1)
  57.     plt.plot(x, n_s, 'o-', label=str(l))
  58.     plt.suptitle(f'Зависимость мат. ожидания числа требований\nв системах от интенсивности поступающих в сеть требований')
  59.     plt.legend()
  60.     plt.figure(2)
  61.     plt.plot(x, u_s, 'o-', label=str(l))
  62.     plt.suptitle(
  63.         f'Зависимость мат. ожидания длительностей пребывания требований\nв системах от интенсивности поступающих в сеть требований')
  64.     plt.legend()
  65. print()
  66. for l in range(100, 201, 20):
  67.     mu[3] = l
  68.     n_s = np.array([expected_n(lmbds[i], mu[i]) for i in range(L)])
  69.     u_s = np.array([expected_u(lmbds[i], mu[i]) for i in range(L)])
  70.     print(f'mu_4: {l}\nN: {n_s},\nU: {u_s}')
  71.     plt.figure(3)
  72.     plt.plot(x, n_s, 'o-', label=str(l))
  73.     plt.legend()
  74.     plt.suptitle(
  75.         f'Зависимость мат. ожидания числа требований\nв системах от интенсивности обслуживания в 4-й системе')
  76.     plt.figure(4)
  77.     plt.plot(x, u_s, 'o-', label=str(l))
  78.     plt.legend()
  79.     plt.suptitle(
  80.         f'Зависимость мат. ожидания числа требований\nв системах от интенсивности обслуживания в 4-й системе')
  81. plt.show()
  82.  
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement