Добавил:
https://vk.com/club199197084 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПР5_Цуканова_0361

.pdf
Скачиваний:
0
Добавлен:
03.02.2024
Размер:
738.08 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра информационных систем

ОТЧЁТ по практической работе №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 – Зависимость вероятности блокировки заявок от интенсивности поступающей нагрузки

N( )

Интенсивность поступления нагрузки = 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()

Соседние файлы в предмете Инфокоммуникационные системы и сети