- •Цель работы
- •Вариант задания
- •Базовая теория
- •Случайное расположение абонентов
- •Генерация возможных скоростей передачи
- •Формирование пуассоновской случайной величины
- •Расчет значений приоритета пользователей
- •Расчет средней скорости загрузки
- •Расчет среднего суммарного объема
- •Построение графиков
- •Список используемых источников
Генерация возможных скоростей передачи
Объем данных,
который может быть передан
-ому
абоненту в
-ом
ресурсном блоке
-ого
слота:
где .
- максимальная
пропускная способность у
-ого
АБ в
-ом
ресурсном блоке
-ого
слота. Данное значение определяется по
формуле:
где
.
Из данной формулы необходимо найти
.
Данное значение вычисляется по формуле:
где
Формула для подсчета величины
выглядит следующим образом:
Во всех вышеприведённых формулах известны следующие значения:
*
– полоса пропускания канала связи БС;
*
– абсолютная температура;
*
– постоянная Больцмана;
*
– коэффициент теплового шума приёмника;
*
– мощность излучения БС.
Для созданных
расстояний до АБ необходимо найти
степень затухания сигнала
.
Она определяется по формуле:
где
– среднее затухание
в канале от БС до
-ого
АБ найденное при помощи модели
Окамура-Хата. Формула выглядит следующим
образом:
В данной формуле изначально даны следующие параметры:
*
– частота сигнала;
*
– параметр, зависящий от среды
распространения (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 – Пропускные способности абонентов
