Результаты моделирования сценариев работы:
Было смоделировано равномерное размещение абонентов по площади и расчет коэффициентов деления ресурсов канала между абонентами для трех типов планировщиков. Количество абонентов составило 2, 4, 16, 32. Число слотов составило 100000. В результате были получены графики, представленные на рисунках 2 – 6.
Рисунок 2 – Графики зависимости среднего суммарного объема данных в буфере от λ
Графики показывают зависимость среднего суммарного объема данных в буфере от интенсивности поступления пакетов (λ) для разного количества абонентов при использовании трех алгоритмов планирования ресурсов.
С увеличением λ средний объем данных в буфере растет нелинейно для всех алгоритмов. При превышении определенного порогового значения λ наблюдается резкий рост размера буфера, что говорит о достижении критической нагрузки в системе. Этот порог снижается с увеличением числа абонентов: для 2 абонентов он составляет λ≈1.0, для 4 абонентов – λ≈0.5, для 16 абонентов – λ≈0.1, а для 32 абонентов – λ≈0.05.
Сравнение алгоритмов планирования показывает их различную эффективность. Алгоритм Equal Blind демонстрирует наибольший объем данных в буфере, поскольку не учитывает условия канала при распределении ресурсов. Max Throughput обеспечивает наименьший размер буфера благодаря приоритизации абонентов с лучшими условиями канала. Proportional Fair представляет собой компромиссное решение, находясь между двумя другими алгоритмами.
При малой интенсивности поступления пакетов все алгоритмы работают примерно одинаково, а их различия проявляются только при высокой нагрузке. Это объясняется тем, что при малой нагрузке система обладает достаточными ресурсами для обслуживания всех пользователей независимо от стратегии планирования.
Рисунок 3 – График зависимости среднего суммарного объема данных в буфере от λ для 2 абонентов
Рисунок 4 – График зависимости среднего суммарного объема данных в буфере от λ для 4 абонентов
ы
Рисунок 5 – График зависимости среднего суммарного объема данных в буфере от λ для 16 абонентов
Рисунок 6 – График зависимости среднего суммарного объема данных в буфере от λ для 32 абонентов
В Листинге 3 представлен программный код для визуализации результатов моделирования.
Листинг 3 – Визуализация результатов
results_plot = results_optimized
# Визуализация результатов
plt.figure(figsize=(16, 10))
for i, N in enumerate(N_users_values, 1):
plt.subplot(2, 2, i)
if N == 2:
lambda_values = N2_lambda
elif N == 4:
lambda_values = N4_lambda
elif N == 16:
lambda_values = N16_lambda
elif N == 32:
lambda_values = N32_lambda
plt.plot(lambda_values, results_plot[N]['Equal Blind'], linewidth=1, marker='o', linestyle='-', markersize=3, alpha=0.7, label='Equal Blind')
plt.plot(lambda_values, results_plot[N]['Max Throughput'], linewidth=1, marker='s', linestyle='--', markersize=3, alpha=0.7, label='Maximum Throughput')
plt.plot(lambda_values, results_plot[N]['Proportional Fair'], linewidth=1, marker='d', linestyle=':', markersize=3, alpha=0.7, label='Proportional Fair')
plt.title(f'N={N} абонентов', fontsize=14)
plt.xlabel('λ', fontsize=12)
plt.ylabel('Средний суммарный объем данных в буфере (бит)', fontsize=12)
plt.legend(fontsize=10)
plt.grid(True, linestyle='--', alpha=0.7)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tight_layout(pad=3.0)
plt.suptitle('Зависимость среднего суммарного объема данных в буфере от λ', fontsize=16, y=0.98)
plt.savefig('buffer_results.png', dpi=300, bbox_inches='tight')
plt.show()
Полный программный код представлен в приложении.
