ПР5_Цуканова_0361
.pdfМИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра информационных систем
ОТЧЁТ по практической работе №5
по дисциплине «Инфокоммуникационные системы и сети» Тема: «Формулы Эрланга»
№ индивидуального варианта – 65
Студент гр. 0361 |
|
Цуканова П.А. |
|
Преподаватель |
|
Верзун Н.А. |
|
|
|||
|
|
|
|
Санкт-Петербург
2023
ЗАДАНИЕ НА ПРАКТИЧЕСКУЮ РАБОТУ
Тема работы: формулы Эрланга.
Вариант задания: 65
1.Используя первую формулу Эрланга:
1.Написать программу, основанную на рекуррентной процедуре;
2.Построить графики зависимости вероятности блокировки заявок от интенсивности поступающей нагрузки при числе обслуживающих устройств 2*n, где n – индивидуальный номер студента в списке группы;
3.Построить графики зависимости вероятности блокировки заявок от числа обслуживающих устройств при интенсивности поступающей нагрузки n.
2.Используя вторую формулу Эрланга:
1.Написать программу расчета;
2.Построить графики зависимости вероятности ожидания начала обслуживания и средней длины очереди от интенсивности поступающей нагрузки при числе обслуживающих устройств 2*n;
3.Построить графики зависимости вероятности ожидания начала обслуживания и средней длины очереди от числа обслуживающих устройств при интенсивности поступающей нагрузки n.
ВЫПОЛНЕНИЕ РАБОТЫ
Исходные данные:
= 65, = 2 = 130, = = 65
1. Первая формула Эрланга.
Напишем программу, основанную на рекуррентной процедуре.
Воспользуемся функцией и построим зависимости вероятности блокировки заявок от интенсивности поступающей нагрузки при числе обслуживающих устройств 2*n и вероятности блокировки заявок от числа обслуживающих устройств при интенсивности поступающей нагрузки n (n = 65). Код программы находится в Приложении 1.
0( ) = 1,
( ) = −1, −1(() ) , = 1. . N.
+ −1, −1
Число обслуживающих устройств = 130, сгенерирован массив значений интенсивности : 1. .100000. Значения обработаем функцией, сформируем массив вероятностей E. По массивам и построена зависимость ( ),
график представлен на рис. 1. Вероятность блокировки заявок растёт с увеличением интенсивности, и примерно с интенсивности 10000 будет близка к 1.
Рисунок 1 – Зависимость вероятности блокировки заявок от интенсивности поступающей нагрузки
Интенсивность поступления нагрузки = 65, сгенерирован массив количеств обслуживающих устройств : 1. .800. Значения поданы в функцию и из результатов сформирован массив вероятностей E. По массивам значений
и построена зависимость ( ), представленная на рис. 2. Видно, что вероятность блокировки заявок уменьшается с увеличением числа обслуживающих устройств, и примерно с 80 устройств равняется нулю.
Рисунок 2 – Зависимость вероятности блокировки заявок от числа обслуживающих устройств
2. Вторая формула Эрланга
N( )
= .
1−N(1−N( ))
Формула для средней длины очереди:
= (N− )+ N( ) N−N .
Написаны функции на языке Python, принимающие значения (N, A).
Воспользуемся функциями и построим зависимости вероятности ожидания начала обслуживания и средней длины очереди от интенсивности поступающей нагрузки при числе обслуживающих устройств 2*n и
вероятности ожидания начала обслуживания и средней длины очереди от числа обслуживающих устройств при интенсивности поступающей нагрузки n.
Для третьего графика число обслуживающих устройств N = 130,
сгенерирован массив значений интенсивности A: 1..130 (так как A < N). Эти значения поданы в функции для P и Q, и из результатов сформированы соответствующие массивы и построены зависимости P(A) и Q(A). Графики зависимостей представлены на рисунках 3 и 4, по ним можно наблюдать, что до величины интенсивности равной 100 обе величины = 0, далее с увеличением интенсивности возрастают, причём средняя длина очереди растёт быстрее.
Рисунок 3 – Зависимость вероятности ожидания начала обслуживания от интенсивности поступающей нагрузки
Рисунок 4 – Зависимость средней длины очереди от интенсивности поступающей нагрузки
Далее взята интенсивность поступления нагрузки = 65, сгенерирован массив количеств обслуживающих устройств N: 66..150 (так как A < N). Эти значения поданы в функции для P и Q, и из результатов сформированы соответствующие массивы и построены зависимости P(N) и Q(N), графики отображены на рисунках 5 и 6, можно наблюдать, что с увеличением числа обслуживающих устройств обе величины уменьшаются, причём средняя длина очереди уменьшается быстрее.
Рисунок 5 – Зависимость вероятности ожидания начала обслуживания от числа обслуживающих устройств
Рисунок 6 – Зависимость средней длины очереди от числа обслуживающих устройств
ВЫВОДЫ
При выполнении работы была написана программа, основанная на первой и второй формулах Эрланга, а также на формуле для средней длины очереди. Для написания программы был использован язык программирования
Python и библиотеки numpy, pylab.
Также были построены графики зависимостей, которые показывают поведение того или иного параметра.
ПРИЛОЖЕНИЕ 1
Код программы:
import numpy as np import pylab
def probability_of_loss_M_M_V(i, A): if i == 0:
return 1 else:
# по первой формуле Эрланга
x = A * probability_of_loss_M_M_V(i - 1, A) E_i = x / (i + x)
return E_i
def probability_of_loss_M_M_V_inf(V, A): E_V = probability_of_loss_M_M_V(V, A) P = E_V / (1 - (A / V) * (1 - E_V)) return P
def avrg_queue_length(V, A):
E_V = probability_of_loss_M_M_V(V, A)
q = ((A * E_V) / ((V - A) + (A * E_V))) * (V / (V - A)) return q
n = 65
pylab.subplot(3, 2, 1) pylab.subplots_adjust(hspace=0.5)
A, E = [], []
N = 2 * n
A = list(range(1, 100000)) for i in range(len(A)):
E.append(probability_of_loss_M_M_V(N, A[i]))
pylab.plot(A, E) pylab.grid() pylab.xlabel('A') pylab.ylabel('E')
pylab.subplot(3, 2, 2)
A = n
N, E = [], []
N = list(range(1, 800)) for i in range(len(N)):
E.append(probability_of_loss_M_M_V(N[i], A))
pylab.plot(N, E) pylab.grid() pylab.xlabel('N') pylab.ylabel('E')
A, P, Q = [], [], []
N = 2 * n
A = list(range(1, N)) # A < N for i in range(len(A)):
P.append(probability_of_loss_M_M_V_inf(N, A[i])) Q.append(avrg_queue_length(N, A[i]))
pylab.subplot(3, 2, 3)
pylab.plot(A, P) pylab.grid() pylab.xlabel('A') pylab.ylabel('P')
pylab.subplot(3, 2, 4)
pylab.plot(A, Q) pylab.grid() pylab.xlabel('A') pylab.ylabel('Q')
A = n
N, P, Q = [], [], []
N = list(range(A + 1, 150)) # A < N for i in range(len(N)):
P.append(probability_of_loss_M_M_V_inf(N[i], A)) Q.append(avrg_queue_length(N[i], A))
pylab.subplot(3, 2, 5) pylab.plot(N, P) pylab.grid() pylab.xlabel('N') pylab.ylabel('P') pylab.subplot(3, 2, 6) pylab.plot(N, Q) pylab.grid() pylab.xlabel('N') pylab.ylabel('Q') pylab.show()
exit()