Скачиваний:
0
Добавлен:
25.04.2024
Размер:
273.26 Кб
Скачать

Генерация возможных скоростей передачи

Объем данных, который может быть передан -ому абоненту в -ом ресурсном блоке -ого слота:

где .

- максимальная пропускная способность у -ого АБ в -ом ресурсном блоке -ого слота. Данное значение определяется по формуле:

где . Из данной формулы необходимо найти . Данное значение вычисляется по формуле:

где Формула для подсчета величины выглядит следующим образом:

Во всех вышеприведённых формулах известны следующие значения:

* – полоса пропускания канала связи БС;

* – абсолютная температура;

* – постоянная Больцмана;

* – коэффициент теплового шума приёмника;

* – мощность излучения БС.

Для созданных расстояний до АБ необходимо найти степень затухания сигнала . Она определяется по формуле:

где

– среднее затухание в канале от БС до -ого АБ найденное при помощи модели Окамура-Хата. Формула выглядит следующим образом:

В данной формуле изначально даны следующие параметры:

* – частота сигнала;

* – параметр, зависящий от среды распространения (small city = 0, large city = 3);

* - высота БС;

* - высота точки приёма;

Величина высчитывается как:

В таблице 2 приведен список используемых переменных, а в листинге 2 – программный код разработанного алгоритма.

Таблица 1. Список используемых переменных

Название

Тип

Описание

Distance

Массив

Сгенерированное расстояние до БС

Lg_l

Массив

Потери сигнала выраженные в дБ

L

Массив

Потери сигнала выраженные в разы

P_rx

Массив

Принятая мощность сигнала от БС

P_n

Дробный

Мощность теплового шума

SNR

Массив

Отношение сигнал-шум

C

Массив

Максимальная пропускная способность

Slots_amount

Целочисленный

Количество слотов

tau

Дробный

Длительность одного слота

subs

Датафрейм

Пропускные способности абонентов

Листинг 2. Программа создания пропускных способностей

def generate_subs(distance: list, slots_amount: int, tau: float) -> pd.DataFrame:

"""Функция генерации возможных скоростей для

каждого абонента в каждом временном слоте

Parameters

----------

distance : list

Массив созданных расстояний АБ

slots_amount : int

Количество слотов внутри сигнала передачи

tau : float

Время одного слота

Returns

-------

pd.DataFrame

Датафрейм возможных пропускных способностей каналов каждого пользователя

"""

# Подсчитываем величину a(h_rx)

alpha_h_rx = (1.1 * np.log10(f_0) - 0.7) * h_rx - (1.56 * np.log10(f_0) - 0.8)

# Потери мощности сигнала (lg(L))

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)

+ S

) / 10

# Потери мощности сигнала (L)

L = 10 ** (lg_l)

# Случайное затухание сигнала

L = L + np.random.normal(loc=0, scale=1, size=len(L))

# Принятая мощность сигнала (P_rx) (Вт)

P_rx = P_tx / L

# Мощность теплового шума (P_n) (Вт)

P_n = delta_f * T * k * k_n

# Соотношение сигнал/шум (SNR)

SNR = P_rx / P_n

# Максимальная пропускная способность канала (кбит/с)

C = (delta_f * np.log2(1 + SNR)) / 8192

# Создаём и заполняем датафрейм

subs = pd.DataFrame(columns=range(slots_amount))

for sub_i, C_i in enumerate(C):

subs.loc[f"sub_{sub_i}"] = C_i * tau

return subs

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

Рисунок 3 – Пропускные способности абонентов

Соседние файлы в предмете Моделирование систем распределения ресурсов