Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as plt
- def expected_n(lmbd, mu):
- return lmbd / (mu - lmbd)
- def expected_u(lmbd, mu):
- return 1 / (mu - lmbd)
- def stationary_distribution(omega, theta, eps):
- while np.linalg.norm(omega.dot(theta) - omega) > eps:
- omega = omega.dot(theta)
- return omega
- def get_lmbds(lmbd_0, omega):
- ans = [lmbd_0 * omega[1] / omega[0]]
- for i in range(2, L + 1):
- ans.append(ans[-1] * omega[i] / omega[0])
- return ans
- L = 7
- # kappa = [1, 1, 2, 1, 4, 2, 3]
- kappa = [1] * L
- mu = [140, 65, 90, 143, 160, 184, 183]
- theta = np.array([[0, 0.3, 0, 0.08, 0.02, 0.3, 0.3, 0],
- [0, 0, 0.5, 0, 0, 0.2, 0.3, 0],
- [0.4, 0.3, 0, 0, 0.2, 0, 0.1, 0],
- [0, 0.8, 0, 0, 0.01, 0, 0.14, 0.05],
- [0.4, 0, 0, 0.1, 0, 0.2, 0.3, 0],
- [0, 0, 0.1, 0.1, 0, 0, 0.5, 0.3],
- [0, 0, 0, 0.9, 0.1, 0, 0, 0],
- [0, 0, 0, 0.6, 0.2, 0, 0.1, 0.1]])
- # нахождение вектора omega
- omega = np.array([0.3, 0.4, 0, 0, 0, 0.3, 0, 0])
- eps = 0.0001
- omega = stationary_distribution(omega, theta, eps)
- print(f'Omegas: {omega},\nCheck (~1): {sum(omega)}')
- # изменение параметров
- x = np.linspace(1, 7, 7)
- legend_to_plot = []
- for l in range(1, 14, 3):
- lmbd_0 = l
- lmbds = get_lmbds(lmbd_0, omega)
- n_s = np.array([expected_n(lmbds[i], mu[i]) for i in range(L)])
- u_s = np.array([expected_u(lmbds[i], mu[i]) for i in range(L)])
- print(f'lambda_0: {l}\nN: {n_s},\nU: {u_s}')
- legend_to_plot.append(l)
- plt.figure(1)
- plt.plot(x, n_s, 'o-', label=str(l))
- plt.suptitle(f'Зависимость мат. ожидания числа требований\nв системах от интенсивности поступающих в сеть требований')
- plt.legend()
- plt.figure(2)
- plt.plot(x, u_s, 'o-', label=str(l))
- plt.suptitle(
- f'Зависимость мат. ожидания длительностей пребывания требований\nв системах от интенсивности поступающих в сеть требований')
- plt.legend()
- print()
- for l in range(100, 201, 20):
- mu[3] = l
- n_s = np.array([expected_n(lmbds[i], mu[i]) for i in range(L)])
- u_s = np.array([expected_u(lmbds[i], mu[i]) for i in range(L)])
- print(f'mu_4: {l}\nN: {n_s},\nU: {u_s}')
- plt.figure(3)
- plt.plot(x, n_s, 'o-', label=str(l))
- plt.legend()
- plt.suptitle(
- f'Зависимость мат. ожидания числа требований\nв системах от интенсивности обслуживания в 4-й системе')
- plt.figure(4)
- plt.plot(x, u_s, 'o-', label=str(l))
- plt.legend()
- plt.suptitle(
- f'Зависимость мат. ожидания числа требований\nв системах от интенсивности обслуживания в 4-й системе')
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement