Advertisement
Infiniti_Inter

task_1_zuev

Apr 26th, 2022
1,106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.52 KB | None | 0 0
  1. from math import factorial, exp
  2.  
  3. def get_r(_alpha, _beta):
  4.     eps = .00000001
  5.     _r = 1
  6.     while ((_alpha / _beta) ** _r / factorial(_r - 1)) * exp(_alpha / _beta) > eps:
  7.         _r += 1
  8.     return _r
  9.  
  10. def get_prod(s):
  11.     res = 1
  12.     for i in range(1, s + 1):
  13.         res *= k + i * beta
  14.     return res
  15.        
  16. def get_p_0():
  17.     sum1 = sum([alpha ** n / factorial(n) for n in range(0, k + 1)])
  18.     coef = alpha ** k / factorial(k)
  19.     sum2 = sum([alpha**s/get_prod(s) for s in range(1, r + 1)])
  20.     return 1/ (sum1 + coef*sum2)
  21.    
  22. def get_p_ks(s):
  23.     res = (alpha ** (k + s)) / (factorial(k) * get_prod(s))
  24.     return res * get_p_0()
  25.  
  26. def get_p_n(n):
  27.     return (alpha ** n / factorial(n)) * get_p_0()
  28.  
  29. def get_b():
  30.     return sum([s * get_p_ks(s) for s in range(1, r + 1)])
  31.  
  32. def get_h():
  33.     return sum([n * get_p_n(n) for n in range(1, k + 1)]) + k * sum([get_p_ks(s) for s in range(1, r + 1)])
  34.  
  35. nu = 1
  36. lambd = 5
  37. mu = 3
  38. k = 2
  39. alpha = lambd / mu
  40. beta = nu / mu
  41. r = get_r(alpha, beta)
  42.  
  43.  
  44. # а) Вероятность того, что все бригады будут сидеть без дела из-за отсутствия овощей
  45. p_0 = get_p_0()
  46. print("Вероятность того, что все бригады будут сидеть без дела из-за отсутствия овощей:", p_0)
  47.  
  48.  
  49. # б) вероятность того, что привезенные овощи не будут своевременно обработаны
  50. b = get_b()
  51. p_otk = b * (beta / alpha)
  52. print("Вероятность того, что привезенные овощи не будут своевременно обработаны:", p_otk)
  53.  
  54. # в) Среднее число бригад, занятых обработкой овощей:
  55. h = get_h()
  56. print("Среднее число бригад, занятых обработкой овощей:", h)
  57.  
  58. g = k - h
  59. k_g = g / k
  60.  
  61. print("Доля простаивающих бригад:", k_g)
  62. k_h = h / k
  63. print("Доля занятых бригад:", k_h)
  64.  
  65. # д) Среднее число тонн овощей, обработанных за сутки, и среднее число тонн овощей, потерянных за сутки из-за их несвоевременной обработки
  66.  
  67. avg_served = lambd * (1 - p_otk)
  68. print("среднее число тонн, обработанных за сутки:", avg_served)
  69. avg_lost = lambd * p_otk
  70. print("среднее число потерянных тонн:", avg_lost)
  71. # е) Среднее число тонн овощей, ожидающих обработки:
  72. print("Среднее число тонн овощей, ожидающих обработки:", b)
  73.  
  74. #Определить необходимое число бригад, чтобы потери овощей были минимальны, а обработка их была наиболее экономичной
  75. eff_crit = ((50000 / 31 * 2) + (10000 * avg_lost)) / avg_served
  76.  
  77. crit = [(eff_crit, 2)]
  78. while k != 10:
  79.     k += 1
  80.     b = get_b()
  81.     p_otk = b * (beta / alpha)
  82.     avg_served = lambd * (1 - p_otk)
  83.     avg_lost = lambd * p_otk
  84.     eff_crit = ((50000 / 31 * k) + (10000 * avg_lost)) / avg_served
  85.     crit.append((eff_crit, k))
  86.     print(f"eff_crit = {eff_crit} при {k} бригад")
  87.     print(f"avg_served = {avg_served}, avg_lost = {avg_lost}")
  88.  
  89. print(f'При {min(crit)[1]} бригад критерий эффективности минимален и равняется {min(crit)[0]} ')
  90.  
  91.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement