Advertisement
Infiniti_Inter

Zaдание 2

Mar 28th, 2022
1,057
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.03 KB | None | 0 0
  1. from math import factorial, exp
  2.  
  3.  
  4. def get_r(_alpha, _beta):
  5.     eps = .00000001
  6.     _r = 1
  7.     while ((_alpha / _beta) ** _r / factorial(_r - 1))* exp(_alpha / _beta) > eps:
  8.         _r += 1
  9.     return _r
  10.  
  11. def product(_k, _s, _beta):
  12.     prod = 1
  13.     for m in range(1, _s + 1):
  14.         prod *= (_k + m * _beta)
  15.     return prod
  16.  
  17. def get_p_0(_k, _alpha, _beta, _B):
  18.     tmp1 = sum([_alpha ** n / factorial(n) for n in range(0, _k + 1)])
  19.     tmp2 = _alpha ** _k / factorial(_k)
  20.     tmp3 = sum([_alpha ** s / product(_k, s, _beta) for s in range(1, _B + 1)])
  21.     return 1 / (tmp1 + tmp2 * tmp3)
  22.  
  23. def get_p_n(_alpha, _n, _p_0):
  24.     return (_alpha ** _n) / factorial(_n) * _p_0
  25.  
  26. def get_p_ks(_k, _s, _alpha, _beta, _p_0):
  27.     res = (_alpha ** (_k + _s)) / (factorial(_k) * product(_k, _s, _beta))
  28.     return res * _p_0
  29.  
  30. nu = 2
  31. lambd = 20
  32. mu = 10
  33. k = 2
  34. B = 10
  35.  
  36. alpha = lambd / mu
  37. beta = nu / mu
  38.  
  39.  
  40.  
  41.  
  42. p_0 = get_p_0(k, alpha, beta, B)
  43. p_1 = get_p_n(alpha, 1, p_0)
  44. p_otk = (alpha - k + sum([(k - n) * get_p_n(alpha, n, p_0) for n in range(0, k + 1)])) / alpha
  45. r = get_r(alpha, beta)
  46. 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)])
  47.  
  48.  
  49. # а)процент информационных сообщений, которые теряются из-за того,
  50. # что пропускная способность машины не позволяет своевременно обрабатывать все сообщения
  51. print("Процент потерь:", 100 * p_otk)
  52. # б) вероятность того, что информация будет обработана до того, как она потеряет свою ценность;
  53. print("Вероятность того, что информация будет обработана", (1-p_otk))
  54. # в) вероятность простоя вычислительной машины
  55. print("Вероятность простоя машины", p_0)
  56. # г) вероятность того, что вычислительная машина обрабатывает 1 группу сообщений
  57. print("Вероятность того, что вычислительная машина обрабатывает 1 группу сообщений", p_1)
  58. # д) среднее число ожидающих обработки групп сообщений
  59. b = sum([s * get_p_ks(k, s, alpha, beta, p_0) for s in range(1, B + 1)])
  60. print("Cреднее число ожидающих обработки групп сообщений:", b)
  61. # е) среднее число одновременно обрабатываемых групп сообщений.
  62.  
  63. print("среднее число одновременно обрабатываемых групп сообщений", h)
  64. print(50*'-')
  65.  
  66.  
  67. while p_otk > 0.05:
  68.     k = k + 1
  69.     alpha = lambd / mu
  70.     beta = nu / mu
  71.     p_otk = (alpha - k + sum([(k - n) * get_p_n(alpha, n, p_0) for n in range(0, k + 1)])) / alpha    
  72. print(k)
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement