# 1.1

Apr 14th, 2021
555
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
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.
RAW Paste Data