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

Практика / 6. Формулы Эрланга

.py
Скачиваний:
20
Добавлен:
19.06.2023
Размер:
2.09 Кб
Скачать
import matplotlib.pyplot as plt
import numpy as np


def erlang1(intensity, count):
if count <= 0:
return 1
tmp = intensity * erlang1(intensity, count - 1)
return tmp / (count + tmp)


def erlang2(intensity, count):
tmp = erlang1(intensity, count)
return tmp / (1 - ((intensity / count) * (1 - tmp)))


def erlang2_queue(intensity, count):
tmp1 = intensity * erlang1(intensity, count)
tmp2 = count - intensity
return tmp1 / (tmp2 + tmp1) * count / tmp2


n = 101


# 1.2
x = np.linspace(0, 30000, 100)
plt.plot(x, [erlang1(i, 2 * n) for i in x])
plt.xlabel("Интенсивность поступающей нагрузки")
plt.ylabel("Вероятность блокировки заявок")
plt.grid()
plt.show()


# 1.3
x = np.linspace(1, 140, 100)
plt.plot(x, [erlang2(n, i) for i in x])
plt.xlabel("Интенсивность поступающей нагрузки")
plt.ylabel("Вероятность блокировки заявок")
plt.grid()
plt.show()


# 2.2
x = np.linspace(150, 2 * n, 100)
plt.plot(x, [erlang2(i, 2 * n) for i in x])
plt.xlabel("Число обслуживающих устройств")
plt.ylabel("Вероятность ожидания начала обслуживания")
plt.grid()
plt.show()

x = np.linspace(150, 2 * n - 1, 100)
plt.plot(x, [erlang2_queue(i, 2 * n) for i in x])
plt.xlabel("Интенсивность поступающей нагрузки")
plt.ylabel("Средняя длина очереди")
plt.grid()
plt.show()


# 2.3
x = np.linspace(n, 140, 100)
plt.plot(x, [erlang2(n, i) for i in x])
plt.xlabel("Число обслуживающих устройств")
plt.ylabel("Вероятность ожидания начала обслуживания")
plt.grid()
plt.show()

x = np.linspace(n + 1, 140, 100)
plt.plot(x, [erlang2_queue(n, i) for i in x])
plt.xlabel("Число обслуживающих устройств")
plt.ylabel("Средняя длина очереди")
plt.grid()
plt.show()