Добавил:
jetu
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Практика / 6. Формулы Эрланга
.py 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()
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()
Соседние файлы в папке Практика