Advertisement
Infiniti_Inter

Zадание 1[Vыполнено]

Mar 28th, 2022
485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.98 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 product(_k, _s, _beta):
  11.     prod = 1
  12.     for m in range(1, _s + 1):
  13.         prod *= (_k + m * _beta)
  14.     return prod
  15.  
  16. def get_p_0(_k, _alpha, _beta, _r):
  17.     res_1 = sum([_alpha ** n / factorial(n) for
  18.     n in range(0, _k + 1)])
  19.     res_2 = _alpha ** _k / factorial(_k)
  20.     res_3 = sum([_alpha ** s / product(_k, s, _beta) for
  21.     s in range(1, _r + 1)])
  22.     res = 1 / (res_1 + res_2 * res_3)
  23.     return res
  24.  
  25. def get_p_ks(_k, _s, _alpha, _beta, _p_0):
  26.     res = (_alpha ** (_k + _s)) / (factorial(_k) * product(_k, _s, _beta))
  27.     return res * _p_0
  28.  
  29. nu = 1./3
  30. lambd = 2
  31. mu = 1/1.5
  32. k = 1
  33.  
  34. alpha = lambd / mu
  35. beta = nu / mu
  36. r = get_r(alpha, beta)
  37.  
  38. # а) Вероятность того, что вооружение нападающей стороны не используется
  39.  
  40. p_0 = get_p_0(k, alpha, beta, r)
  41.  
  42. print("Вероятность того, что вооружение нападающей стороны не используется", p_0)
  43.  
  44.  
  45. # б)  вероятность того, что обнаруженная цель противника будет обстреляна за время пребывания ее на огневой позиции
  46.  
  47. b = sum([s * get_p_ks(k, s, alpha, beta, p_0)
  48. for s in range(1, r + 1)])
  49. p_otk = b * (beta / alpha)
  50. print("Вероятность того, что обнаруженная цель противника будет обстреляна за время пребывания ее на огневой позиции:", 1 - p_otk)
  51.  
  52.  
  53.  
  54.  
  55. # в)вероятность того, что обнаруженная и обстрелянная цель противника будет уничтожена (поражена)
  56. accuracy = 0.9
  57. print("Вероятность того, что обнаруженная и обстрелянная цель противника будет уничтожена (поражена):", (1-p_otk)*accuracy)
  58.  
  59.  
  60. # г) вероятность нахождения цели в зоне поражения нападающей стороны
  61.  
  62. print("Вероятность нахождения цели в зоне поражения нападающей стороны", 1 - p_0)
  63.  
  64.  
  65. # д) среднее число целей, находящихся в зоне поражения нападающей стороны;
  66. print("Cреднее число целей, находящихся в зоне поражения нападающей стороны:", b)
  67.  
  68.  
  69. # е) среднее число образцов вооружения, ведущих обстрел появляющихся целей, и их долю от общего числа образцов вооружения
  70.  
  71. 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)
  72. for s in range(1, r + 1)])
  73. print("Cреднее число образцов вооружения, ведущих обстрел появляющихся целей:", h)
  74.  
  75. # г) доля от общего числа обраZцов вооружения
  76. g = k - h
  77. k_g = g / k
  78. print("Доля простаивающих орудий:", k_g)
  79. k_h = h / k
  80. print("Доля занятых орудий:", k_h)
  81.  
  82.  
  83. # Определить необходимое число бригад, чтобы потери овощей были минимальны, а обработка их была наиболее экономичной
  84. back_punch = 0.5
  85. loss = ((1-p_otk)*(1-accuracy) + p_otk)*back_punch
  86.  
  87. print("loss_coef", loss)
  88.  
  89.  
  90. while loss > 0.1:
  91.     k += 1
  92.     b = sum([s * get_p_ks(k, s, alpha, beta, p_0) for s in range(1, r + 1)])
  93.     p_otk = b * (beta / alpha)
  94.     loss = ((1-p_otk)*(1-accuracy) + p_otk)*back_punch
  95.     #print(loss)
  96.  
  97. print(f"loss_coef = {loss} при {k} орудий")
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement