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

ИМ4

.docx
Скачиваний:
0
Добавлен:
12.04.2025
Размер:
228.6 Кб
Скачать

ГУАП

КАФЕДРА № 41

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

д-р физ.-мат. наук

Рождественский Ю.В

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №4

МОДЕЛИРОВАНИЕ ВХОДНОГО ПОТОКА

по курсу: ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ гр. №

4116

подпись, дата

инициалы, фамилия

Санкт-Петербург 2024

Цель работы: смоделировать входной поток для системы массового обслуживания. Считая входной поток простейшим со статистикой Пуассона промоделировать времена прихода заявок в СМО.

Ход работы:

Простейшим потоком является пуассоновский поток, для которого для которого плотность распределения вероятностей задается формулой экспоненциального распределения:

где  – интенсивность пуассоновского потока.

Листинг 1- Реализация входного потока и вывод метрик

import numpy as np

import matplotlib.pyplot as plt

# Параметры модели

lambda_rate = 5

M = 1000

# Генерация пуассоновского потока

np.random.seed(42)

# Генерация интервалов между заявками

interarrival_times = np.random.exponential(1 / lambda_rate, size=M)

# Вычисление времени прихода заявок

arrival_times = np.cumsum(interarrival_times)

# Гистограмма интервалов между заявками

plt.figure(figsize=(8, 5))

plt.hist(interarrival_times, bins=20, alpha=0.7, color='blue', edgecolor='black', density=True)

plt.title("Гистограмма интервалов между заявками", fontsize=14)

plt.xlabel("Интервал между заявками", fontsize=12)

plt.ylabel("Плотность вероятности", fontsize=12)

plt.grid()

plt.show()

# Расчет статистик

mean_interval = np.mean(interarrival_times)

std_interval = np.std(interarrival_times)

estimated_rate = 1 / mean_interval

coefficient_of_variation = std_interval / mean_interval

# Вывод статистик

print(f"Средний интервал между заявками: {mean_interval:.4f}")

print(f"Оценка интенсивности потока: {estimated_rate:.4f} (теоретическая: {lambda_rate})")

print(f"Коэффициент вариации интервалов: {coefficient_of_variation:.4f} (теоретический: 1)")

plt.tight_layout()

plt.show()

# Зависимость параметров от интенсивности потока

lambda_values = np.linspace(1, 10, 10)

mean_intervals = []

estimated_rates_lambda = []

coefficients_of_variation_lambda = []

for lambda_rate in lambda_values:

interarrival_times = np.random.exponential(1 / lambda_rate, size=M)

mean_interval = np.mean(interarrival_times)

std_interval = np.std(interarrival_times)

estimated_rate = 1 / mean_interval

cv = std_interval / mean_interval

mean_intervals.append(mean_interval)

estimated_rates_lambda.append(estimated_rate)

coefficients_of_variation_lambda.append(cv)

plt.figure(figsize=(15, 5))

# Средний интервал

plt.subplot(1, 3, 1)

plt.plot(lambda_values, mean_intervals, marker='o', label="Средний интервал", color="blue")

plt.title("Средний интервал между заявками от интенсивности", fontsize=14)

plt.xlabel("Интенсивность потока", fontsize=12)

plt.ylabel("Средний интервал", fontsize=12)

plt.grid()

plt.legend()

# Коэффициент вариации

plt.subplot(1, 3, 2)

plt.plot(lambda_values, coefficients_of_variation_lambda, marker='o', label="Коэффициент вариации CV", color="purple")

plt.axhline(y=1, color="red", linestyle="--", label="Теоретическое значение CV = 1")

plt.title("Коэффициент вариации от интенсивности", fontsize=14)

plt.xlabel("Интенсивность потока", fontsize=12)

plt.ylabel("Коэффициент вариации CV", fontsize=12)

plt.grid()

plt.legend()

plt.tight_layout()

plt.show()

Построена гистограмма входного потока, график зависимости среднего времени интервала между заявками и график коэффициента вариации от интенсивности (Рисунок 1-3)

Рисунок 1 – Гистограмма входного потока

Гистограмма входного потока показывает, что интервалы между заявками следуют экспоненциальному распределению.

Рисунок 2- Средний интервал между заявками от интенсивности

Средний интервал между заявками обратно пропорционален интенсивности потока. При увеличении интенсивности интервалы уменьшаются.

Рисунок 3- Зависимость коэффициента вариации от интенсивности

Коэффициент вариации остается близким к 1 при разных значениях интенсивности.

Листинг 2- График поступления заявок по времени

# Параметры модели

lambda_rate = 5 # Интенсивность потока

M = 50 # Количество заявок для моделирования

# Генерация пуассоновского потока

np.random.seed(42)

interarrival_times = np.random.exponential(1 / lambda_rate, size=M)

arrival_times = np.cumsum(interarrival_times)

plt.figure(figsize=(10, 2))

plt.scatter(arrival_times, np.zeros_like(arrival_times), color='blue', s=10)

plt.title("Времена поступления заявок", fontsize=14)

plt.xlabel("Время поступления заявок", fontsize=12)

plt.yticks([])

plt.grid(axis='x')

plt.show()

Рисунок 4 – График поступления заявок

Выводы: смоделирован входной поток для системы массового обслуживания. Построены гистограммы входного потока, графики среднего интервала от интенсивности, коэффициента вариации от интенсивности.

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