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

ЛР / ЛР№1_МПиС_Хакова_ИСТ_223

.docx
Скачиваний:
0
Добавлен:
07.06.2026
Размер:
1.27 Mб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Лабораторная работа №2

«Изучение многоканальной замкнутой системы массового обслуживания»

Выполнил: ст. гр. ИСТ-223

Коваленко А. С.

Хакова Ю. М.

Гасанов И.

Проверил: ст. пр. Эль Сабаяр Шевченко Н.

Цель работы

Изучение многоканальной замкнутой системы массового обслуживания с неограниченным временем ожидания требований в системе.

1. Задание исходных данных.

Последовательно введем исходные данные:

µ: = 30 := 6 m:= 10 N := 2

2. Начальные приближения.

Последовательно введем начальные приближенные значения искомых

параметров:

P0:= 0,25 P1:= 0,15 P2:= 0,15 P3:= 0,15 P4:= 0,15 P5:= 0,15

3. Запись системы уравнений, описывающей функционирование многоканальной СМО.

Решение системы линейных уравнений для вычисления стационарных вероятностей состояний системы массового обслуживания с 6 состояниями P0, P1, P2, P3, P4, P5, с использованием метода численного решения нелинейных уравнений:

Рис. 1. Определение параметров функционирования

многоканальной замкнутой СМО.

Рис. 2. Вывод программы на консоль

Рис. 3. Описание функционирования многоканальной замкнутой СМО при неустановившемся режиме

Рис. 4. Решение системы дифференциальных уравнений многоканальной

замкнутой СМО.

Рис. 5. Код графиков для всех состояний

Рис. 6. Результаты решения системы дифференциальных уравнений

многоканальной замкнутой СМО

Рис. 7. решения системы обыкновенных дифференциальных уравнений в численном виде.

Рис. 8. Фрагмент результатов решения системы обыкновенных

дифференциальных уравнений в численном виде для многоканальной замкнутой СМО

Вывод: Первый код решает задачу нахождения вероятностей перехода между состояниями динамической системы с использованием численного интегрирования системы обыкновенных дифференциальных уравнений (ОДУ). Модель иллюстрирует, как с течением времени вероятности меняются под действием параметров интенсивности поступления и обслуживания, что может помочь в анализе устойчивости системы, вероятности перегрузки или других характеристик.

Второй код решает стационарную задачу для вычисления вероятностей состояний в системе массового обслуживания в стационарном режиме (когда вероятности не зависят от времени).

Стационарное решение показывает, какие состояния наиболее вероятны при длительном времени работы системы, что позволяет оценить её поведение при фиксированных параметрах. Это важно для анализа долгосрочных характеристик системы массового обслуживания, таких как вероятность очереди или перегрузки.

Листинг кода:

from scipy.optimize import fsolve

mu = 30

lambda_ = 6

m = 5

def equations(P):

P0, P1, P2, P3, P4, P5 = P

eq1 = P0 * m * lambda_ - P1 * mu

eq2 = P1 * (mu + (m - 1) * lambda_) - (P0 * m * lambda_ + P2 * mu)

eq3 = P2 * (2 * mu + (m - 2) * lambda_) - (P1 * (m - 1) * lambda_ + P3 * mu)

eq4 = P3 * (2 * mu + (m - 3) * lambda_) - (P2 * (m - 2) * lambda_ + P4 * mu)

eq5 = P4 * (2 * mu + (m - 4) * lambda_) - (P3 * (m - 3) * lambda_ + P5 * mu)

eq6 = P0 + P1 + P2 + P3 + P4 + P5 - 1

return [eq1, eq2, eq3, eq4, eq5, eq6]

initial_guess = [0.15, 0.15, 0.15, 0.15, 0.15, 0.15]

solution = fsolve(equations, initial_guess)

P0, P1, P2, P3, P4, P5 = solution

print(f"Вероятность P0 = {P0:.6f}")

print(f"Вероятность P1 = {P1:.6f}")

print(f"Вероятность P2 = {P2:.6f}")

print(f"Вероятность P3 = {P3:.6f}")

print(f"Вероятность P4 = {P4:.6f}")

print(f"Вероятность P5 = {P5:.6f}")

print(f"Сумма вероятностей: {P0 + P1 + P2 + P3 + P4 + P5:.6f}")

import numpy as np

from scipy.integrate import odeint

import matplotlib.pyplot as plt

mu = 29

lmbd = 6

m = 5

N = 2

P0 = [1, 0, 0, 0, 0, 0] # Начальные условия для P(0)

def equations(P, t, lmbd, mu):

dP0_dt = -P[0] * 5 * lmbd + P[1] * mu

dP1_dt = P[0] * 5 * lmbd + P[2] * 2 * mu - P[1] * (mu + 4 * lmbd)

dP2_dt = P[1] * 4 * lmbd + P[3] * 3 * mu - P[2] * (2 * mu + 3 * lmbd)

dP3_dt = P[2] * 3 * lmbd + P[4] * 2 * mu - P[3] * (2 * mu + 2 * lmbd)

dP4_dt = P[3] * 2 * lmbd + P[5] * mu - P[4] * (2 * mu + lmbd)

dP5_dt = P[4] * lmbd - P[5] * 2 * mu

return [dP0_dt, dP1_dt, dP2_dt, dP3_dt, dP4_dt, dP5_dt]

t = np.linspace(0, 0.3, 1000)

solution = odeint(equations, P0, t, args=(lmbd, mu))

P0_sol = solution[:, 0]

P1_sol = solution[:, 1]

P2_sol = solution[:, 2]

P3_sol = solution[:, 3]

P4_sol = solution[:, 4]

P5_sol = solution[:, 5]

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

plt.subplot(2, 3, 1)

plt.plot(t, P0_sol, label='P0')

plt.xlabel('t')

plt.ylabel('P0')

plt.grid(True)

plt.subplot(2, 3, 2)

plt.plot(t, P1_sol, label='P1')

plt.xlabel('t')

plt.ylabel('P1')

plt.grid(True)

plt.subplot(2, 3, 3)

plt.plot(t, P2_sol, label='P2')

plt.xlabel('t')

plt.ylabel('P2')

plt.grid(True)

plt.subplot(2, 3, 4)

plt.plot(t, P3_sol, label='P3')

plt.xlabel('t')

plt.ylabel('P3')

plt.grid(True)

plt.subplot(2, 3, 5)

plt.plot(t, P4_sol, label='P4')

plt.xlabel('t')

plt.ylabel('P4')

plt.grid(True)

plt.subplot(2, 3, 6)

plt.plot(t, P5_sol, label='P5')

plt.xlabel('t')

plt.ylabel('P5')

plt.grid(True)

plt.tight_layout()

plt.show()

import numpy as np

from scipy.integrate import odeint

import pandas as pd

mu = 29

lmbd = 6

m = 5

N = 2

P0 = [1, 0, 0, 0, 0, 0]

def equations(P, t, lmbd, mu):

dP0_dt = -P[0] * 5 * lmbd + P[1] * mu

dP1_dt = P[0] * 5 * lmbd + P[2] * 2 * mu - P[1] * (mu + 4 * lmbd)

dP2_dt = P[1] * 4 * lmbd + P[3] * 3 * mu - P[2] * (2 * mu + 3 * lmbd)

dP3_dt = P[2] * 3 * lmbd + P[4] * 2 * mu - P[3] * (2 * mu + 2 * lmbd)

dP4_dt = P[3] * 2 * lmbd + P[5] * mu - P[4] * (2 * mu + lmbd)

dP5_dt = P[4] * lmbd - P[5] * 2 * mu

return [dP0_dt, dP1_dt, dP2_dt, dP3_dt, dP4_dt, dP5_dt]

t = np.linspace(0, 15, 16)

solution = odeint(equations, P0, t, args=(lmbd, mu))

P0_sol = solution[:, 0]

P1_sol = solution[:, 1]

P2_sol = solution[:, 2]

data = {

't': np.arange(16),

'S^(0)': P0_sol,

'S^(1)': P1_sol,

'S^(2)': P2_sol

}

df = pd.DataFrame(data)

print(df)

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

2024