Описание разработанной программы
Код программы представлен в приложении А, в конце лабораторной работы.
Основные переменные, используемые в программе, представлены в таблице 2.
Таблица 2 – Таблица используемых переменных
Переменная |
Описание |
R |
Радиус действия базовой станции, в пределах которого располагаются абонентские станции. |
n |
Количество абонентских станций для генерации. |
Ptx |
Мощность сигнала, излучаемого базовой станцией. |
Pn |
Мощность теплового шума, принимаемая абонентской станцией. |
f |
Полоса пропускания канала связи. |
f0 |
Центральная частота сигнала, излучаемого базовой станцией. |
K |
Коэффициент, используемый в формуле для расчета потерь сигнала на проложенном расстоянии. |
subs |
DataFrame, содержащий информацию о расположении и характеристиках абонентских станций. |
distans |
Расстояние от абонентской станции до базовой станции. |
angle |
Угол положения абонентской станции относительно базовой станции. |
x, y |
Координаты абонентских станций в декартовой системе координат. |
CC |
Максимальная пропускная способность канала связи для абонентской станции. |
L |
Уровень потерь сигнала на расстоянии от базовой до абонентской станции. |
Prx |
Мощность сигнала, принимаемого абонентской станцией. |
SNR |
Отношение сигнал/шум на абонентской станции. |
D |
Скорость передачи данных для абонента в соответствии с выбранным алгоритмом распределения. |
D_grade |
DataFrame с результатами измерений для различных алгоритмов распределения ресурсов. |
N_test |
Количество итераций тестирования для усреднения результатов. |
N_subs_pow2 |
Максимальная степень двойки для количества абонентов, используемая в тестах. |
isPrintLocGraph |
Флаг для вывода графика расположения абонентских станций. |
kn |
Коэффициент теплового шума приемника. |
T |
Абсолютная температура окружающей среды. |
Программа предназначена для анализа и визуализации распределения абонентских станций в заданном радиусе и их способностей по передаче данных. Она состоит из нескольких функций, каждая из которых выполняет свою роль в анализе:
graph_location_subs_stations(subs_data): Функция строит график расположения станций на полярных координатах, используя расстояние от центра и угол как координаты. Это позволяет визуализировать пространственное распределение абонентских станций в заданной области.
subs_generator(R, n, Ptx, Pn, f, f0, K): Генерирует DataFrame, содержащий позиции (в полярных и декартовых координатах) и емкости коммуникационного канала n абонентских станций, случайно распределенных в круге радиуса R. Рассчитывает емкость канала каждой станции на основе заданных параметров, таких как мощность передачи, мощность шума, частота и коэффициенты потерь сигнала.
Алгоритмы распределения ресурсов (equal_blind(CC), maximum_throughput(CC), proportion_fair(CC)): Эти функции реализуют различные стратегии распределения коммуникационных ресурсов между станциями. Каждая стратегия возвращает DataFrame с метриками, такими как минимальная, средняя и общая скорости передачи данных для абонентов под этой стратегией.
Equal Blind: Выделяет равные скорости передачи всем абонентам.
Maximum Throughput: Дает приоритет абонентам в лучших условиях для максимизации общей пропускной способности.
Proportion Fair: Распределяет ресурсы пропорционально для обеспечения справедливости между абонентами.
plot_M_gradeD(D_grade): Визуализирует результаты работы алгоритмов распределения ресурсов с помощью линейных графиков, показывая, как различные метрики (минимальная, средняя и общая скорости) изменяются в зависимости от количества абонентов.
get_M_gradeD(R, Ptx, Pn, f, f0, K, N_test=100, N_subs_pow2=6, isPrintLocGraph=False): Функция организует симуляцию, генерируя абонентские станции и оценивая три алгоритма распределения ресурсов при различном количестве абонентов. Результаты усредняются за несколько итераций для статистической точности и визуализируются по запросу.
main(): Настраивает параметры симуляции (например, радиус, мощность излучения, частоту базовой станции, полосу пропускания, фактор шума, температуру) и выполняет анализ, вызывая get_M_gradeD. Также выводит DataFrame, содержащий усредненные результаты работы алгоритмов распределения ресурсов для различного количества абонентов.
