Моделирование скоростей алгоритмов планирования
Далее, поскольку мощность БС ограничена, а абонентов много, то максимальная пропускная способность является лишь гипотетическим пределом. Введём коэффициент , показывающий какая доля ресурсов выделяется -ому абонентов. В таком случае результирующая скорость для -ого абонента выглядит следующим образом:
В связи с этим существует 3 алгоритма распределения ресурсов. Первый алгоритм обеспечивает равные скорости между всеми абонентами (Equal Blind):
Второй алгоритм максимизирует суммарную скорость передачи:
И наконец третий метод выделяет равные доли ресурсов всем абонентам:
В качестве основных величин для сравнения данных трёх алгоритмов между собой выступают: суммарная скорость передачи , средняя скорость , а также средняя минимальная скорость среди всех абонентов . В таблице 1 приведен список используемых переменных, а в листинге 2 – программный код разработанного алгоритма.
Таблица 1. Список используемых переменных
Название |
Тип |
Описание |
Distance |
Массив |
Сгенерированное расстояние до БС |
Lg_l |
Массив |
Потери сигнала выраженные в дБ |
L |
Массив |
Потери сигнала выраженные в разы |
P_rx |
Массив |
Принятая мощность сигнала от БС |
P_n |
Дробный |
Мощность теплового шума |
SNR |
Массив |
Отношение сигнал-шум |
C |
Массив |
Максимальная пропускная способность |
D1, D2, D3 |
Массивы |
Реальные пропускные способности |
Equals, maxs, props |
Массивы |
Временная переменная для результатов |
N |
Массив |
Количество абонентов внутри радиуса |
Accuracy |
Целочисленный |
Точность вычислений |
D_equals, D_maxs, D_props |
Массивы |
Окончательные результаты рассчета |
Листинг 2. Программа моделирования результатов
def calculate_Ds(N: int, accuracy: int, dtype: str): # Определяем массивы вычисляемых значений print(f"{dtype = }, {N = }") equal = [] maxs = [] proportion = [] for _ in range(accuracy): # Определяем основные параметры distance = create_distance(N) lg_l = ( 46.3 + 33.9 * np.log10(f_0) - 13.82 * np.log10(h_bs) - alpha_h_rx + (44.9 - 6.55 * np.log10(h_rx)) * np.log10(distance) ) / 10 L = 10 ** (lg_l) P_rx = p_tx / L P_n = delta_f * t * k * k_n SNR = P_rx / P_n C = delta_f * np.log2(1 + SNR)
# Создаём массивы D D1 = [(np.sum(C ** (-1))) ** (-1) for _ in range(N)] D2 = [0 if i != np.argmax(C) else C[i] for i in range(N)] D3 = C / N
# В зависимости от функции записываем результат match dtype: case "sum": equal.append(np.sum(D1)) maxs.append(np.sum(D2)) proportion.append(np.sum(D3)) case "mean": equal.append(np.mean(D1)) maxs.append(np.mean(D2)) proportion.append(np.mean(D3)) case "min": equal.append(np.min(D1)) maxs.append(np.min(D2)) proportion.append(np.min(D3))
return np.mean(equal), np.mean(maxs), np.mean(proportion)
# Количество абонентов N = np.logspace(0, 6, base=2, num=7, dtype=np.int16)
# Точность вычислений accuracy = 1000
# Массивы для графиков D_equals, D_maxs, D_proportion = {}, {}, {}
# Возможные типы алгоритмов algs = ["sum", "mean", "min"]
for alg in algs: temp_results = np.array([calculate_Ds(i, accuracy, alg) for i in N]).T D_equals[alg] = temp_results[0] D_maxs[alg] = temp_results[1] D_proportion[alg] = temp_results[2] |
После запуска данной программы на выходе получаются 3 массива с данными, которые необходимо визуализировать. Полученные визуализации показаны на рисунках 2-4.
Рисунок 2 – Сравнение суммарной скорости разных алгоритмов
Рисунок 3 – Сравнение средней скорости разных алгоритмов
Рисунок 4 – Сравнение минимальной скорости разных алгоритмов
Из полученных рисунков видно, что алгоритмы Equals Blinds и Proportion Fair практически не различаются между собой, чего нельзя сказать о Maximum Throughput, поскольку данный алгоритм выбирает абонента с максимальной пропускной способностью и работает только с ним. А когда абонентов становится более 1, тогда передачи данных остальным абонентам не происходит.
Выводы
В ходе выполнения данной лабораторной работы мною были получены навыки моделирования стандартных сценариев работы телекоммуникационных систем с топологией типа «звезда», а также изучены свойства алгоритмов планирования ресурсов нисходящего кадра в подобных системах.
В результате изучения данных алгоритмов были построены графики зависимостей минимальной, средней и суммарной скорости передачи данных от количества абонентов в зоне работы БС. По данным графикам видно, что алгоритмы Equals Blinds и Proportion Fair отличаются незначительно. Смею предположить, что данная разница объясняется тем, что и в том, и в другом случае происходит усреднение показателей. В алгоритме Equals Blinds обязательное условие равное значение всех скоростей между собой, а в алгоритме Proportion Fair на каждого абонента выделяется равные ресурсы БС. Средняя и минимальные оценки скоростей уменьшаются с ростом количества абонентов, а график суммарной оценки остаётся неизменным.
Совершенно выделяется на их фоне алгоритм Maximum Throughput. Данный алгоритм отдаёт предпочтение тому абоненту, чья пропускная способность максимальная на фоне остальных. В связи с этим, когда в зоне действия БС находятся более одного абонента, то передача данных с остальными не происходит, что наглядно показано на графике минимальной скорости. Также, на графике сравнения суммарных скоростей видно, что при увеличении количества абонентов в системе, растет и суммарная скорость у данного алгоритма. Это объясняется тем, что в системе появляются все новые и новые абоненты, которые находятся ближе к БС, в связи с чем их пропускная способность увеличивается.
Таким образом, можно сделать вывод о том, что алгоритм Maximum Throughput не подходит для систем с большим количеством абонентов, и следует выбирать между алгоритмами Equals Blinds и Proportion Fair.