
ГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
старший преподаватель |
|
|
|
Н.В. Апанасенко |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1 |
МОДЕЛИРОВАНИЕ РАСПРЕДЕЛЕНИЯ РЕСУРСОВ НИСХОДЯЩЕГО КАДРА В ТЕЛЕКОММУНИКАЦИОННЫХ СЕТЯХ |
по курсу: МОДЕЛИРОВАНИЕ СИСТЕМ РАСПРЕДЕЛЕНИЯ РЕСУРСОВ |
|
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ гр. № |
|
|
|
|
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2025
Цель работы: получение навыков моделирования стандартных сценариев работы телекоммуникационных систем с топологией типа «звезда». Изучение свойств алгоритмов планирования ресурсов нисходящего кадра в подобных системах.
Вариант 13:
На рисунке 1 представлены параметры сети согласно варианту задания.
Рисунок 1 – Параметры сети по варианту 13
Расчетные формулы для оценки предельно достижимой скорости:
Рассчитаем мощность шума:
(1)
здесь
– полоса
пропускания канала связи,
T – абсолютная температура (К),
k
– постоянная
Больцмана
,
-
коэффициент теплового шума приемника
.
Рассчитаем потери L:
(2)
где
-
частота (МГц),
-
высота базовой станции (м), возьмем 40м,
-
высота точки приема (м), возьмём средний
рост человека 1.7м,
d – расстояние от АБ до БС (км), возьмем максимальное расстояние 2.5км,
,
(3)
Переведем из «дБ» в «разы»:
(4)
Рассчитаем мощность, принятую АБ:
(5)
где
-
излучаемая мощность БС (Вт),
L - уровень потерь мощности при преодолении сигналов расстояния от БС к АБ
Рассчитаем отношение сигнал/шум:
(6)
где
PRX – мощность, принятая АБ,
PN - мощность шума.
Рассчитаем пропускную способность канала связи:
(7)
где
-
полоса пропускания канала связи,
-
отношение сигнал/шум (Signal-to-Noise
Ratio,
SNR)
у абонента с индексом
.
Рассмотрим
алгоритмы распределения ресурсов.
Введем коэффициент
,
показывающий какая доля ресурсов
(например, времени) выделяется i-му
абоненту.
,
1. ПРС (Equal blind) — Планировщик, обеспечивающий равные скорости абонентам. Данный алгоритм обеспечивает равные скорости передачи данных между всеми абонентами. Каждый абонент получает одинаковую долю ресурсов, которая находится как
|
(8) |
Скорость для абонента i может быть выражена как:
|
(9) |
2. ПСС (Maximum Throughput) — Планировщик, обеспечивающий максимальную суммарную скорость передачи данных. Данный алгоритм максимизирует суммарную скорость передачи данных. Доля ресурса времени, выделяемая каждому абоненту, находится как
|
(10) |
3. ПРД (Proportion Fair)— Планировщик, обеспечивающий равные доли выделенных ресурсов. Данный алгоритм выделяет равные доли ресурсов всем абонентам. Доля ресурса времени, выделяемая каждому абоненту, находится как
|
(10) |
Суммарная скорость:
|
(11) |
Пример случайных расположений абонентских станций
Была разработана программа для моделирования и визуализации пространственного распределения абонентов вокруг базовой станции в полярной системе координат (Листинг 1).
Сначала определяется функция place_users, которая принимает количество абонентов N и радиус окружности R как входные параметры. Функция генерирует случайные углы в диапазоне от 0 до 2π с равномерным распределением с помощью метода np.random.uniform, а также случайные радиусы, равномерно распределённые по площади круга. Для получения радиусов используется метод квадратного корня от случайных значений, что обеспечивает равномерную плотность распределения абонентов по всей площади окружности.
С целью обеспечения воспроизводимости результатов устанавливается фиксированное значение зерна генератора случайных чисел с помощью функции np.random.seed.
Далее выполняется визуализация полученного распределения абонентов. В полярной системе координат с использованием библиотеки matplotlib строится диаграмма, где положения абонентов отображаются в виде точек. Центр координат обозначает местоположение базовой станции и выделяется красным маркером. Также задаются параметры отображения: ориентация начального угла по направлению на восток и направление оси углов по часовой стрелке, добавляются сетка и легенда.
В результате работы программы визуализируется схема с размещением 64 абонентов в пределах окружности заданного радиуса, позволяющая наглядно оценить пространственное распределение пользователей относительно базовой станции (Рисунок 1).
Листинг 1- Генерация и визуализация размещения абонентов вокруг БС
# Функция для размещения абонентов внутри окружности
def place_users(N, R):
angles = np.random.uniform(0, 2 * np.pi, N)
radii = np.sqrt(np.random.uniform(0, R**2, N))
return angles, radii
np.random.seed(123) # Зерно рандома для воспроизводимости результатов
# Визуализация распределения абонентов в полярной системе координат
angles, radii = place_users(64, R) # Пример для 64 абонентов
plt.figure(figsize=(8, 8))
ax = plt.subplot(111, projection='polar')
ax.scatter(angles, radii, s=30, label='Абоненты')
ax.plot(0, 0, color='red', marker='o', markersize=10, label='Базовая станция')
ax.set_theta_zero_location('E')
ax.set_theta_direction(1)
ax.grid(True)
ax.set_title('Распределение 64 абонентов вокруг базовой станции', pad=20)
ax.legend(loc='upper right')
plt.show()
Рисунок 1 – Распределение абонентов вокруг БС
Результаты моделирования сценариев работы:
Было
смоделировано равномерное размещение
абонентов по площади и расчет коэффициентов
деления ресурсов канала между абонентами
для трех типов планировщиков и рассчитаны
величины суммарной скорости передачи
,
средней скорости
,
а также средней минимальной скорости
среди всех абонентов
.
Количество абонентов составило 1, 2, 4,
8, 16, 32, 64, для каждого числа абонентов
моделирование проводилось 100 раз. В
результате были получены графики,
представленные на рисунках 2 – 4.
Рисунок 2 – График зависимости суммарной скорости передачи данных от количества абонентов
По графику видно, ПСС имеет максимальную суммарную скорость, т.к. алгоритм нацелен на её максимизацию. У алгоритма ПРС с увеличением числа абонентов суммарная скорость снижается. Это связано с тем, что ресурсы распределяются равномерно, и каждый абонент получает меньшую долю пропускной способности. Алгоритм ПРД показал стабильный результат около 30 Мбит/c для каждого числа абонентов.
Рисунок 3 – График зависимости средней скорости передачи данных от количества абонентов
По графику видно, что средняя скорость алгоритма ПРС уменьшается с ростом числа абонентов. Для 1 абонента она около 30 Мбит/с, а для 64 абонентов — близка к нулю. У ПСС Средняя скорость снижается, но остается выше, чем у остальных и примерно равняется 2.5 Мбит/с. ПРД показал лучший, но незначительно отличающийся, результат чем ПРС.
Рисунок 4 – График зависимости минимальной скорости передачи данных от количества абонентов
По графику видно, что в случае с минимальной скоростью алгоритм ПРС превосходит алгоритм ПРД, но разница также незначительна. Алгоритм ПСС имеет минимальную скорость равную нулю во всех случаях, кроме 1 абонента, так как один абонент получает все ресурсы.
На рисунке 5 представлены результаты в формате таблицы.
Рисунок 5 – Результаты
Код для вывода и визуализации результатов представлен в Листинге 2.
Сначала реализована функция print_results, которая выыводит таблицу с результатами. Таблица форматируется с использованием метода format, который обеспечивает выравнивание столбцов. Для каждого алгоритма в отдельной строке выводятся значения метрик для заданного диапазона количества абонентов, заданного в переменной num_users_range. После вывода результатов для каждого алгоритма добавляется разделительная линия.
Следующим этапом реализована функция plot_results, предназначенная для графической визуализации результатов. Функция строит линейные графики зависимости одной из трёх метрик от количества абонентов. Графики сопровождаются сеткой, легендой и соответствующей разметкой осей для облегчения анализа данных.
Листинг 2 – Вывод и визуализация результатов
def print_results(results):
print("{:<15} {:<10} {:<15} {:<15} {:<15}".format(
"Алгоритм", "N", "Суммарная (Мбит/с)", "Средняя (Мбит/с)", "Минимальная (Мбит/с)"
))
print("-" * 70)
for algorithm in results:
for i, N in enumerate(num_users_range):
total = results[algorithm]['total'][i]
avg = results[algorithm]['avg'][i]
min_speed = results[algorithm]['min'][i]
print("{:<15} {:<10} {:<15.2f} {:<15.2f} {:<15.2f}".format(
algorithm, N, total, avg, min_speed
))
print("-" * 70)
def plot_results(results, metric, title, ylabel):
plt.figure(figsize=(10, 6))
for strategy in results:
if strategy == 'Equal Blind':
label = f'{strategy} (ПРС)'
elif strategy == 'Maximum Throughput':
label = f'{strategy} (ПСС)'
elif strategy == 'Proportion Fair':
label = f'{strategy} (ПРД)'
plt.plot(num_users_range, results[strategy][metric], label=label, alpha=0.7)
plt.xlabel('Количество абонентов')
plt.ylabel(ylabel)
plt.title(title)
plt.legend()
plt.grid(True)
plt.xticks(num_users_range)
plt.show()
plot_results(results, 'total', 'Суммарная скорость передачи данных (Мбит/с)', 'Суммарная скорость (Мбит/с)')
plot_results(results, 'avg', 'Средняя скорость передачи данных (Мбит/с)', 'Средняя скорость (Мбит/с)')
plot_results(results, 'min', 'Минимальная скорость передачи данных (Мбит/с)', 'Минимальная скорость (Мбит/с)')
Подробное описание программы для моделирования: на этапе инициализации задаются переменные:
R = 2500 — радиус в метрах, определяет зону покрытия базовой станции.
num_experiments = 100 — количество экспериментов для усреднения результатов.
num_users_range = [1, 2, 4, 8, 16, 32, 64] — список количества абонентов для моделирования.
Ptx = 10 — мощность излучаемого сигнала базовой станции в ваттах.
F0 = 900 — частота базовой станции в мегагерцах.
DF = 10 * 10**6 — ширина полосы пропускания канала связи в герцах.
KN = 2 — коэффициент шума приёмника.
K = 1.38 * 10**(-23) — постоянная Больцмана в Дж/К.
T = 300 — абсолютная температура в Кельвинах.
Hbs = 40 — высота антенны базовой станции в метрах.
Hrx = 1.7 — высота антенны абонента в метрах.
S = 0 — дополнительные потери сигнала в децибелах.
Pn = K * T * DF * KN — мощность шума приёмника в ваттах, рассчитывается по формуле.
results — структура данных для хранения результатов моделирования по трём стратегиям распределения ресурсов.
Также в процессе моделирования используются локальные переменные:
angles — массив случайных углов в радианах для полярного размещения абонентов.
radii — массив случайных расстояний абонентов от базовой станции.
distances — расстояния до абонентов, равны radii.
speeds — массив максимально возможных скоростей передачи данных для каждого абонента.
alpha_EB, alpha_MT, alpha_PF — коэффициенты распределения ресурсов для стратегий Equal Blind, Maximum Throughput и Proportion Fair соответственно.
total, avg, min_ — текущие значения метрик: суммарная, средняя и минимальная скорость передачи.
total_EB, avg_EB, min_EB и аналогичные — списки для накопления результатов по каждой стратегии в каждом эксперименте.
Для моделирования потерь сигнала используется функция, реализующая модель Окамура-Хата. В функции производится перевод расстояния от базовой станции до абонента в километры, расчёт коэффициента потерь в зависимости от высоты антенны приёмника, а также итоговый расчёт потерь в децибелах.
Мощность принятого сигнала определяется на основе вычисленных потерь. Далее для каждого абонента вычисляется отношение сигнал/шум (SNR), на основе которого определяется пропускная способность с использованием формулы (7).
Абоненты размещаются в зоне покрытия базовой станции случайным образом. Для равномерного распределения по площади используется генерация углов и радиусов в полярной системе координат с коррекцией радиуса путём применения квадратного корня от равномерного распределения по площади круга.
Далее для каждого количества абонентов проводится серия из 100 экспериментов. В каждом эксперименте абоненты случайным образом размещаются в зоне обслуживания, для них рассчитываются индивидуальные скорости передачи данных, после чего применяются три стратегии распределения ресурсов: Equal Blind, Maximum Throughput, Proportion Fair.
Для каждой стратегии рассчитываются три метрики: суммарная скорость передачи данных, средняя скорость передачи и минимальная скорость. После проведения всех экспериментов для каждого количества абонентов усреднённые значения метрик сохраняются в структуру данных results для последующего отображения и визуализации.
Полный код представлен в приложении.