Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import factorial, exp
- def get_r(_alpha, _beta):
- eps = .00000001
- _r = 1
- while ((_alpha / _beta) ** _r / factorial(_r - 1))* exp(_alpha / _beta) > eps:
- _r += 1
- return _r
- def product(_k, _s, _beta):
- prod = 1
- for m in range(1, _s + 1):
- prod *= (_k + m * _beta)
- return prod
- def get_p_0(_k, _alpha, _beta, _B):
- tmp1 = sum([_alpha ** n / factorial(n) for n in range(0, _k + 1)])
- tmp2 = _alpha ** _k / factorial(_k)
- tmp3 = sum([_alpha ** s / product(_k, s, _beta) for s in range(1, _B + 1)])
- return 1 / (tmp1 + tmp2 * tmp3)
- def get_p_n(_alpha, _n, _p_0):
- return (_alpha ** _n) / factorial(_n) * _p_0
- def get_p_ks(_k, _s, _alpha, _beta, _p_0):
- res = (_alpha ** (_k + _s)) / (factorial(_k) * product(_k, _s, _beta))
- return res * _p_0
- nu = 2
- lambd = 20
- mu = 10
- k = 2
- B = 10
- alpha = lambd / mu
- beta = nu / mu
- p_0 = get_p_0(k, alpha, beta, B)
- p_1 = get_p_n(alpha, 1, p_0)
- p_otk = (alpha - k + sum([(k - n) * get_p_n(alpha, n, p_0) for n in range(0, k + 1)])) / alpha
- r = get_r(alpha, beta)
- h = sum([n * (alpha ** n / factorial(n)) * p_0 for n in range(1, k + 1)]) + k * sum([get_p_ks(k, s, alpha, beta, p_0) for s in range(1, r + 1)])
- # а)процент информационных сообщений, которые теряются из-за того,
- # что пропускная способность машины не позволяет своевременно обрабатывать все сообщения
- print("Процент потерь:", 100 * p_otk)
- # б) вероятность того, что информация будет обработана до того, как она потеряет свою ценность;
- print("Вероятность того, что информация будет обработана", (1-p_otk))
- # в) вероятность простоя вычислительной машины
- print("Вероятность простоя машины", p_0)
- # г) вероятность того, что вычислительная машина обрабатывает 1 группу сообщений
- print("Вероятность того, что вычислительная машина обрабатывает 1 группу сообщений", p_1)
- # д) среднее число ожидающих обработки групп сообщений
- b = sum([s * get_p_ks(k, s, alpha, beta, p_0) for s in range(1, B + 1)])
- print("Cреднее число ожидающих обработки групп сообщений:", b)
- # е) среднее число одновременно обрабатываемых групп сообщений.
- print("среднее число одновременно обрабатываемых групп сообщений", h)
- print(50*'-')
- while p_otk > 0.05:
- k = k + 1
- alpha = lambd / mu
- beta = nu / mu
- p_otk = (alpha - k + sum([(k - n) * get_p_n(alpha, n, p_0) for n in range(0, k + 1)])) / alpha
- print(k)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement