Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Z9411_КафкаРС_МСРР_ЛР.docx
Скачиваний:
9
Добавлен:
18.06.2024
Размер:
377.49 Кб
Скачать
  1. Результат моделирования

Все построенные далее графики сделаны на основе 100 агрегированных измерений, полученных на основе данных, сгенерированных написанной нами программой.

Построили график зависимости матожидания минимальной скорости передачи от количества абонентов в соответствии с рисунком 3.

Рисунок 3 – Матожидание минимальной скорости передачи в зависимости от количества абонентов

На графики явно выделяется оценка для алгоритма Maximum Throughput. Такой результат связан с тем, что 100% доли ресурса времени, выделяется абоненту с максимальной скоростью передачи, вследствие чего для остальных абонентов скорость равна 0 при количестве абонентов больше 1. Другие два алгоритма показывают примерно одинаковый характер оценки минимальной скорости передачи. Так как алгоритмы Proportion Fair и Equal blind делят ресурсы на всех абонентов, то с ростом их количества абонентов минимальная скорость заметно падает.

Построили график зависимости матожидания средней скорости передачи от количества абонентов в соответствии с рисунком 3.

Рисунок 3 – Матожидание средней скорости передачи в зависимости от количества абонентов

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

Построили график зависимости матожидания средней скорости передачи от количества абонентов в соответствии с рисунком 4.

Рисунок 4 – Матожидание максимальной скорости передачи в зависимости от количества абонентов

На этом графике особенно заметны результаты тех процессов, которые были описаны для алгоритма Maximum Throughput под прошлым графиком, вследствие чего мы получаем заметный рост максимальной скорости передачи с ростом количества абонентов.

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

Алгоритм Equal blind показал самый худший результат так как подбирает равные скорости для всех абонентов, вследствие чего с ростом количества абонентов растет и шанс того, что появятся абоненты с низкой скоростью передачи который понизит общую скорость передачи до своего уровня. Выход на некоторое стабильное плато, когда количество абонентов становится больше 8 свидетельствует о том, что практически каждый раз в зоне действия базовой станции оказывался абонент на максимально возможном удалении с минимальной скоростью передачи.

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

Рисунок 5 – Значения результатов процессов

ВЫВОД

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

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

Анализируя представленные результаты, можно сделать следующие выводы относительно трёх алгоритмов распределения ресурсов — Equal Blind, Maximum Throughput и Proportion Fair — в контексте моделирования телекоммуникационных систем:

  • Equal Blind обеспечивает равную скорость для всех абонентов, что приводит к линейному уменьшению минимальной и средней скорости передачи данных с увеличением количества абонентов. Суммарная скорость передачи данных остаётся практически неизменной с небольшими колебаниями, что подчёркивает равномерное распределение ресурсов между абонентами независимо от их числа.

  • Maximum Throughput демонстрирует стремление к максимизации общей пропускной способности сети за счёт приоритизации абонентов с лучшими условиями связи. Это приводит к тому, что минимальная скорость для всех абонентов, кроме одного, равна нулю, а суммарная скорость растёт с увеличением количества абонентов. Такой подход обеспечивает высокую эффективность использования ресурсов с точки зрения общей пропускной способности, но не гарантирует равенство или справедливость распределения ресурсов между всеми пользователями.

  • Proportion Fair стремится обеспечить более справедливое распределение ресурсов, выделяя каждому абоненту равную долю ресурсов. Это ведёт к более мягкому уменьшению минимальной и средней скорости передачи данных по сравнению с Equal Blind и, особенно, Maximum Throughput при увеличении количества абонентов. Суммарная скорость остаётся стабильной и сопоставимой с Equal Blind, что подтверждает целесообразность этого метода для обеспечения равных условий доступа к ресурсам сети.

В целом, выбор алгоритма распределения ресурсов должен опираться на специфические требования и цели сети. Если важнее всего максимизация общей пропускной способности без учёта индивидуальных нужд абонентов, то предпочтительнее будет использование Maximum Throughput. Для обеспечения равного доступа к ресурсам сети лучше подойдут Equal Blind или Proportion Fair, с тем отличием, что Proportion Fair обеспечивает более гибкое и справедливое распределение ресурсов, адаптируясь к изменениям в количестве активных абонентов.

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

Приложение А

Листинг программы

import numpy as np

import pandas as pd

from matplotlib import pyplot as plt

def graph_location_subs_stations(subs_data):

'''Построение графика расположения станиций'''

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})

ax.scatter(subs_data['angle'], subs_data['distans'])

ax.set_rmax(31)

plt.title(f'Распредление {len(subs_data)} абонентов', )

plt.show()

return 0

def subs_generator(R, n, Ptx, Pn, f, f0, K):

'''Генерация списка расположения абоненских станций'''

subs = pd.DataFrame(columns=['distans', 'angle', 'x', 'y', 'CC'])

for _ in range(n):

distans = np.sqrt(R**2 * np.random.random()) # Дистанция от абоненцкой до базовой станции

angle = 2 * np.pi * np.random.random() # Угол координат

# Перевод в декартову систему координат

x = distans * np.cos(angle)

y = distans * np.sin(angle)

# Уровень потерь

L = (20*np.log10(f0) + K*np.log10(distans) - 28)

L = 10**(L/10)

Prx = Ptx/L # Мощьность сигнала

SNR = Prx/Pn # Отношение сигнал/шум (SNR)

CC = f * np.log2(1 + SNR) # Макс. пропускная способность канала связи (Сhannel Сapacity)

subs = pd.concat([subs, pd.Series({'distans': distans, 'angle': angle, 'x': x, 'y': y, 'CC': CC}).to_frame().T], ignore_index=True)

return subs

def equal_blind(CC):

'''Алгоритм ПРС - Равные скорости абонентам'''

D = sum([c**-1 for c in CC])**-1 # Cкорость передачи для абонента

return pd.Series({'algorithm': 'Equal Blind', 'count': len(CC),

'minD': D, 'meanD': D, 'sumD': D*len(CC)}).to_frame().T

def maximum_throughput(CC):

'''Алгоритм ПСС - Максимальная суммарная скорость передачи данных'''

equal_max = np.array(CC) == max(CC)

# Суммарная скорость передачи

D = [1/sum(equal_max) * c * equal_max[i] for i, c in enumerate(CC)]

return pd.Series({'algorithm': 'Maximum Throughput', 'count': len(CC),

'minD': min(D), 'meanD': np.mean(D), 'sumD': sum(D)}).to_frame().T

def proportion_fair(CC):

'''Алгоритм ПРД - Равные доли выделенных ресурсов'''

D = [cc/len(CC) for cc in CC] # Суммарная скорость передачи

return pd.Series({'algorithm': 'Proportion Fair', 'count': len(CC),

'minD': min(D), 'meanD': np.mean(D), 'sumD': sum(D)}).to_frame().T

def plot_M_gradeD(D_grade):

'''Построение графиков измеренных величин'''

fig, axs = plt.subplots(1, 3)

fig.suptitle('Графики зависимости оценок')

x_axis = 'count'

y_axis = ['minD', 'meanD', 'sumD']

x_lable = 'Кол-во абонентов'

y_lable = ['МО мин. скорости передачи', 'МО средней скорости передачи', 'МО макс. скорости передачи']

D_grade = D_grade.reset_index(level=['algorithm', 'count'])

groups = D_grade.groupby('algorithm')

for idx in range(3):

for n, g in groups:

axs[idx].plot(g[x_axis], g[y_axis[idx]], label=n)

axs[idx].set_xlabel(x_lable)

axs[idx].set_ylabel(y_lable[idx])

axs[idx].set_title(f'M[{y_axis[idx]}]')

axs[idx].legend()

axs[idx].grid(True)

plt.show()

return 0

def get_M_gradeD(R, Ptx, Pn, f, f0, K, N_test=100, N_subs_pow2=6, isPrintLocGraph=False):

'''Определение мат ожидания для суммарной скорости передачи'''

# Таблица результатов измерений

D_grade = pd.DataFrame(columns=['algorithm', 'count', 'minD', 'meanD', 'sumD'])

for n in [2**i for i in range(N_subs_pow2+1)]: # Кол-во абонентов (1,2,4,8,16...)

for _ in range(N_test):

subs = subs_generator(R, n, Ptx, Pn, f, f0, K)

D_grade = pd.concat([D_grade, equal_blind(subs['CC'])], ignore_index=True)

D_grade = pd.concat([D_grade, maximum_throughput(subs['CC'])], ignore_index=True)

D_grade = pd.concat([D_grade, proportion_fair(subs['CC'])], ignore_index=True)

if isPrintLocGraph: graph_location_subs_stations(subs)

D_grade.set_index(['algorithm', 'count'], inplace=True)

D_grade = D_grade.groupby(level=['algorithm', 'count']).mean()

plot_M_gradeD(D_grade)

return D_grade

def main():

# Параметры варианта

R = 30 # Радиус

Ptx = 0.1 # Мощность излучения БС

f0 = 5600 # Частота БС

f = 40 # Полоса пропускания канала связи

kn = 3 # Коэф. теплового шума приёмника

T = 300 # Абсолютная температура

Pn = f * 10**6 * T * 1.38 * 10**-23 * kn # Мощность теплового шума

K = 29

# ------------------

D_grade = get_M_gradeD(R, Ptx, Pn, f, f0, K, N_test=100, N_subs_pow2=6, isPrintLocGraph=True)

print(D_grade)

return 0

if __name__ == "__main__":

main()