Добавил:
t.me Установите расширение 'SyncShare' для решения тестов в LMS (Moodle): https://syncshare.naloaty.me/ . На всякий лучше отключить блокировщик рекламы с ним. || Как пользоваться ChatGPT в России: https://habr.com/ru/articles/704600/ || Также можно с VPNом заходить в bing.com через Edge браузер и общаться с Microsoft Bing Chat, но в последнее время они форсят Copilot и он мне меньше нравится. || Студент-заочник ГУАП, группа Z9411. Ещё учусь на 5-ом курсе 'Прикладной информатики' (09.03.03). || Если мой материал вам помог - можете написать мне 'Спасибо', мне будет очень приятно :) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Z9411_КафкаРС_ВССиТ_ЛР

.docx
Скачиваний:
5
Добавлен:
24.10.2023
Размер:
152.17 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

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

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА 41

ОЦЕНКА

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

ассистент

Н. В. Апанасенко

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

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

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

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

АНАЛИЗ ЭЛЕМЕНТАРНОЙ СИСТЕМЫ МНОЖЕСТВЕННОГО ДОСТУПА

по дисциплине: Вычислительные системы, сети и телекоммуникации

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

СТУДЕНТ ГР. №

Z9411

Р. С. Кафка

номер группы

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

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

Студенческий билет №

2019/3603

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

  1. Цель работы

Целью данной работы является получение навыков моделирования алгоритмов случайного множественного доступа в системах передачи данных.

  1. Краткие теоретические сведения

В данной работе рассматривается элементарная модель системы множественного доступа, где под множественным доступом подразумевается использование общего канала связи всеми абонентами. В рассматриваемой модели длительность сообщений от абонентов принято за единицу времени. Время разделено на равные интервалы – слоты, длительность которого равна длительности передаваемого сообщения. Предполагается, что абоненты начинают передачу сообщений только в начале слота. В соответствии с алгоритмом возможны три события.

  1. Событие «успех». Если в слоте с индексом k передает только один абонент, считается, что сообщение доставлено успешно. Абонент, успешно передавший сообщение, покидает систему.

  2. Событие «конфликт». Если в слоте k передают два и более абонентов, то в этом случае считается, что сообщение не доставлено – произошел конфликт. Абоненты остаются в системе и осуществляют попытки передачи сообщения в следующих слотах.

  3. Событие «пусто». В слоте не передает ни один из абонентов.

На рисунке 1 видно, что в первом слоте сообщение передано успешно, во втором слоте произошел конфликт. В слоте 3 не было абонентов для передачи.

Рисунок 1

Легко записать правило для количества переданных сообщений в одном слоте:

Здесь - количество абонентов, передающих сообщение в слоте с индексом k. Количество абонентов – у которых появляются сообщения для передачи в слоте k распределено по закону Пуассона с параметром .

Таким образом, количество абонентов в слоте k+1 определяется как: где - индикаторная функция.

В данной работе будет рассмотрен следующий алгоритм, на основе которого абоненты принимают решение о передаче сообщений в слоте k:

  1. Вероятность передачи сообщения каждым абонентом в слоте k определяется как: . Таким образом количество передающих абонентов в слоте k распределено по биномиальному закону . Данный алгоритм является стабильным.

Среднее количество абонентов в такой системе определяется как:

где S количество слотов. Тогда среднее количество слотов необходимое для передачи сообщения одним абонентом определяется как:

  1. Количественные и качественные выводы

В лабораторной работе рассматривается элементарная модель системы множественного доступа, где под множественным доступом понимается использование общего канала связи всеми абонентами. В этой модели длительность сообщений от абонентов принимается за единицу времени. Время делится на равные интервалы, называемые слотами, длительность которых равна длине передаваемого сообщения. Предполагается, что абоненты начинают передавать сообщения только в начале слота. Согласно алгоритму, возможны три события: "успех", "конфликт" и "столкновение". Событие "успех" происходит, когда только один абонент передает сообщение в слоте k, и считается, что сообщение успешно доставлено. Абонент, который успешно передал сообщение, покидает систему. Событие "конфликт" происходит, когда два или более абонента передают в слоте k, и сообщение не доставляется. Событие "коллизия" происходит, когда все абоненты передают в одном слоте и все сообщения потеряны.

  1. Листинг программы с комментариями

Код программы представлен в листинге 1.

Листинг 1 – Построение графика зависимости среднего количества абонентов и среднего времени нахождения абонента от лямбды

import random

import matplotlib.pyplot as plt

import numpy as np

def average_users_def(lam, num_slots):

'''

Calculate the average number of users in the system at each slot

'''

start_slot = [0] * num_slots # Initialize a list to store the number of users in each start slot

end_slot = [0] * num_slots # Initialize a list to store the number of users in each end slot

P = np.random.poisson(lam, num_slots) # Generate the Poisson distribution with mean lam for num_slots

for i in range(num_slots): # Loop through each slot

I = 0

if start_slot[i] != 0:

R = np.random.binomial(start_slot[i], 1 / start_slot[i], 1) # Generate a binomial distribution to simulate the leaving of users

I = int(R == 1) # Count the number of users that leave

end_slot[i] = start_slot[i] - I + P[i] # Calculate the number of users in the end slot

if i < num_slots - 1: # Set the end slot to be the start slot for the next slot

start_slot[i + 1] = end_slot[i]

return np.mean(end_slot)

def mean_time(average_users, lam):

'''

Calculate the mean time a user spends in the system

'''

return average_users / lam

if __name__ == "__main__":

num_slots = 10 ** 5

start = 0.05

step = 0.01

end = 0.5

lam_count = int((end - start) / step + 1)

lam = np.linspace(start, end, lam_count)

average_users = np.zeros(lam_count)

t_mean = np.zeros(lam_count)

for i, l in enumerate(lam):

average_users[i] = average_users_def(l, num_slots)

t_mean[i] = mean_time(average_users[i], l)

plt.figure()

plt.plot(lam, average_users, label='Среднее количество абонентов (N^)')

plt.plot(lam, t_mean, label='Среднее количество слотов (T^)', color='red')

plt.title('График зависимости среднего количества абонентов в системе (N^) \nи\n среднего времени нахождения абонента в системе (T^) от Lam')

plt.grid(color='gray')

plt.xlabel('Lam')

plt.ylabel('Values')

plt.ylim(-1, 21)

plt.xlim(0.05, 0.4)

plt.legend()

plt.show()

Этот код импортирует модуль 'random', библиотеку 'matplotlib.pyplot' как 'plt' и библиотеку 'numpy' как 'np'.

Затем он определяет две функции:

  1. 'average_users_def': вычисляет среднее число пользователей в системе, сначала инициализируя два списка 'start_slot' и 'end_slot' нулями 'num_slots'.

Затем функция генерирует распределение Пуассона со средним значением 'lam' для слотов 'num_slots', используя 'np.random.poisson', и сохраняет его в 'P'.

Затем функция перебирает каждый слот и обновляет количество пользователей в системе, используя биномиальное распределение со средним, равным количеству пользователей в предыдущем слоте.

Обновленное количество пользователей в каждом слоте хранится в списке 'end_slot', а последнее значение 'end_slot' используется для обновления 'start_slot' следующего слота.

В итоге функция возвращает среднее значение списка 'end_slot'.

  1. 'mean_time': вычисляет среднее время пользователя в системе путем деления 'average_users' на параметр скорости 'lam'.

Блок 'if name == "main": определяет, что следующий за ним код будет выполняться только в том случае, если скрипт запущен как самостоятельная программа (не импортирован как модуль).

Код определяет несколько переменных для симуляции:

  • 'num_slots' определяет количество временных интервалов для моделирования, установленное на 10^5.

  • 'start', 'step' и 'end' задают начальное и конечное значения для параметра скорости 'lam' и размер шага для его увеличения.

  • 'lam_count' рассчитывает количество значений параметра 'lam' для генерации.

  • 'lam', 'average_users' и 't_mean' - массивы для хранения параметра скорости, среднего количества пользователей и среднего времени для каждого значения 'lam' соответственно.

Затем код перебирает каждое значение 'lam', вызывает функцию 'average_users_def' для получения среднего числа пользователей и сохраняет его в 'average_users', а также вызывает функцию 'mean_time' для получения среднего времени и сохраняет его в 't_mean'.

Наконец, код строит графики массивов 'average_users' и 't_mean' против значений 'lam' с помощью matplotlib, с соответствующими метками и границами оси, и отображает график.

Результат работы кода представлен на рисунке 1.

Рисунок 1 – График зависимости

ЗАКЛЮЧЕНИЕ

В этой лабораторной работе мы смоделировали поведение коммуникационной системы, используя процесс Пуассона и биномиальный процесс. Мы проанализировали связь между средним количеством пользователей в системе, представленным N, и средним временем, которое пользователь проводит в системе, представленным T. Для этого мы использовали функцию average_users_def, которая вычисляет N, и функцию mean_time, которая вычисляет T. Моделирование проводилось для различных значений параметра Lam, который представляет собой среднее количество пользователей, прибывающих в единицу времени. Результаты были представлены в виде графика, показывающего зависимость между N и T, а также между Lam и N/T.

График показал, что с увеличением значения параметра Lam среднее количество пользователей в системе также увеличивается. Кроме того, среднее время, которое пользователь проводит в системе, уменьшается. Эта зависимость соответствует тому, что можно было бы ожидать для коммуникационной системы, где увеличение количества пользователей, приходящих в единицу времени, приводит к увеличению использования системных ресурсов, что приводит к уменьшению среднего времени, которое пользователь проводит в системе.

В целом, данная лабораторная работа дала хорошее понимание поведения коммуникационной системы, смоделированной с использованием процесса Пуассона и биномиального процесса. Результаты моделирования показали, что взаимосвязь между N, T и Lam соответствует тому, что можно было бы ожидать в реальной коммуникационной системе.

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