Advertisement
Infiniti_Inter

3(Вариант 8)

Apr 26th, 2022
853
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.73 KB | None | 0 0
  1. Код
  2. import math
  3. import numpy as np
  4. from scipy.optimize import fsolve
  5. import matplotlib.pyplot as plt
  6.  
  7. lamda = 3/60
  8. k = 6
  9. mu = k*1/90
  10. v = 1/35
  11. k=1
  12.  
  13. alpha = lamda/mu
  14. beta = v/mu
  15. v_ = 1/(mu)
  16.  
  17. #Проверка на точность для первой суммы
  18. eps = 0.00001
  19. r1 = 1
  20. cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1)
  21. while cond1 >= eps:
  22.     cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1)
  23.     r1 += 1
  24. print("Число слагаемых в сумме: ", r1)
  25.  
  26. #Подсчет pn
  27. sum1_1 = 0
  28. for n in range(0, k+1):
  29.     sum1_1 += alpha**n / (math.factorial(n))
  30.  
  31. sum1_2 = 0
  32. for s in range(1, r1+1):
  33.     mul = 1
  34.     for m in range(1,s+1):
  35.         mul *=(k + m*beta)
  36.     sum1_2 += alpha**s / mul    
  37. p = np.zeros(2)
  38. p[0] = 1 / (sum1_1 + sum1_2*(alpha**k / (math.factorial(k))))
  39. p[1] = p[0]* alpha**1 / math.factorial(1)
  40.  
  41. #Подсчет вероятностей pk+s
  42. pk = np.zeros(r1+1)
  43. for s in range(1,r1+1):
  44.     mul3 = 1
  45.     for m in range(1, s+1):
  46.         mul3 *=(k+m*beta)
  47.     pk[s] = p[0]*alpha**(k+s) / (math.factorial(k)*mul3)
  48. print('pk:\n ', pk)
  49.  
  50. b_ = 0
  51. for s in range(1, r1+1):
  52.     b_ += s*pk[s]
  53.    
  54. p_otk = b_*beta/alpha
  55. print("Сумма вероятностей = ",sum(p) + sum(pk))
  56. print("Среднее время обработки отделом одной сводки v_= ", '%.3f' %(v_), "мин")
  57. print("Вероятность того, что сотрудники свободны от работы p0= ", '%.3f' %(p[0]))
  58. print('Вероятность того, что в отделе одна сводка обрабатывается, а сводок, ожидающих обработки, нет p1= ', '%.3f' %(p[1]))
  59. print('Cреднее число сводок, ожидающих обработки b_= ', '%.3f' %(b_))
  60. print("Процент своевременно использованной информации", '%.3f' %((1 - p_otk)*100), '%')
  61. print("Вероятность того, что информация не будет использована из-за того, \n что до окончания обработки она уже потеряла свою ценность p_otk="
  62. ,'%.3f' %(p_otk))
  63.  
  64. percent_points= []
  65. for i in range(7,13):
  66.     lamda = 3/60
  67.     k = i
  68.     mu = k*1/90
  69.     v = 1/35
  70.     k=1
  71.  
  72.     alpha = lamda/mu
  73.     beta = v/mu
  74.     v_ = 1/(mu)
  75.  
  76.     #Проверка на точность для первой суммы
  77.     eps = 0.00001
  78.     r1 = 1
  79.     cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1)
  80.     while cond1 >= eps:
  81.         cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1)
  82.         r1 += 1
  83.  
  84.     #Подсчет pn
  85.     sum1_1 = 0
  86.     for n in range(0, k+1):
  87.         sum1_1 += alpha**n / (math.factorial(n))
  88.  
  89.     sum1_2 = 0
  90.     for s in range(1, r1+1):
  91.         mul = 1
  92.         for m in range(1,s+1):
  93.             mul *=(k + m*beta)
  94.         sum1_2 += alpha**s / mul    
  95.     p = np.zeros(2)
  96.     p[0] = 1 / (sum1_1 + sum1_2*(alpha**k / (math.factorial(k))))
  97.     p[1] = p[0]* alpha**1 / math.factorial(1)
  98.  
  99.     #Подсчет вероятностей pk+s
  100.     pk = np.zeros(r1+1)
  101.     for s in range(1,r1+1):
  102.         mul3 = 1
  103.         for m in range(1, s+1):
  104.             mul3 *=(k+m*beta)
  105.         pk[s] = p[0]*alpha**(k+s) / (math.factorial(k)*mul3)
  106.  
  107.     b_ = 0
  108.     for s in range(1, r1+1):
  109.         b_ += s*pk[s]
  110.     p_otk = b_*beta/alpha
  111.     percent = (1 - p_otk)*100
  112.     percent_points.append(percent)
  113.  
  114.  
  115.  
  116. k = [7, 8, 9, 10, 11, 12]
  117.  
  118. fig, ax = plt.subplots()
  119. ax.set_ylabel('Процент использованной информации')
  120. ax.set_xlabel('Количество работников')
  121. ax.plot(k, percent_points, marker='o')
  122. for i in range(len(k)):
  123.     ax.annotate(f'({round(percent_points[i],3)}; {round(k[i], 3)})', (k[i], percent_points[i]))
  124. plt.show()
  125.  
  126. t = [0, 0.10, 0.20, 0.30, 0.40, 0.50]
  127. percent_points= []
  128. percent_points_time= []
  129.  
  130. for i in range(6):
  131.     lamda = 3/60
  132.     k = 6
  133.     mu = k*1/(90*(1-t[i]))
  134.     v = 1/35
  135.     k=1
  136.  
  137.     alpha = lamda/mu
  138.     beta = v/mu
  139.     v_ = 1/(mu)
  140.     #Проверка на точность для первой суммы
  141.     eps = 0.00001
  142.     r1 = 1
  143.     cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1)
  144.     while cond1 >= eps:
  145.         cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1)
  146.         r1 += 1
  147.  
  148.     #Подсчет pn
  149.     sum1_1 = 0
  150.     for n in range(0, k+1):
  151.         sum1_1 += alpha**n / (math.factorial(n))
  152.  
  153.     sum1_2 = 0
  154.     for s in range(1, r1+1):
  155.         mul = 1
  156.         for m in range(1,s+1):
  157.             mul *=(k + m*beta)
  158.         sum1_2 += alpha**s / mul    
  159.     p = np.zeros(2)
  160.     p[0] = 1 / (sum1_1 + sum1_2*(alpha**k / (math.factorial(k))))
  161.     p[1] = p[0]* alpha**1 / math.factorial(1)
  162.  
  163.     #Подсчет вероятностей pk+s
  164.     pk = np.zeros(r1+1)
  165.     for s in range(1,r1+1):
  166.         mul3 = 1
  167.         for m in range(1, s+1):
  168.             mul3 *=(k+m*beta)
  169.         pk[s] = p[0]*alpha**(k+s) / (math.factorial(k)*mul3)
  170.  
  171.     b_ = 0
  172.     for s in range(1, r1+1):
  173.         b_ += s*pk[s]
  174.     p_otk = b_*beta/alpha
  175.  
  176.     percent = (1 - p_otk)*100
  177.     percent_points.append(percent)
  178.     percent_points_time.append(90*(1-t[i]))
  179.  
  180. fig, ax = plt.subplots()
  181. ax.set_ylabel('Процент использованной информации')
  182. ax.set_xlabel('Длительность обработки сводки данных одним сотрудником')
  183. ax.plot(percent_points_time, percent_points, marker='o')
  184. for i in range(len(percent_points_time)):
  185.     ax.annotate(f'({round(percent_points[i],3)}; {round(percent_points_time[i], 3)})', (percent_points_time[i], percent_points[i]))
  186. plt.show()
  187.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement