Разработка AI-системы для планирования покрытия сети
Планирование радиопокрытия — итерационная задача: расставить минимальное количество базовых станций для обеспечения заданного покрытия при ограниченном бюджете. AI заменяет месяцы ручного анализа RF-инженеров на недели автоматизированного планирования.
Прогнозирование радиопокрытия
Модели распространения радиосигнала:
Физические модели (Okumura-Hata, COST 231) дают базовый прогноз потерь сигнала. Ограничение: не учитывают локальный рельеф, застройку, растительность.
ML-коррекция физической модели:
import numpy as np
import pandas as pd
from lightgbm import LGBMRegressor
class PropagationMLModel:
"""
ML-поправки к физической модели распространения сигнала.
Данные: измерения уровня сигнала от drive test + CQT
"""
def build_features(self, measurement_df, dem_raster, building_footprints):
"""
measurement_df: GPS + RSRP/RSSI измерения
dem_raster: цифровая модель рельефа (SRTM/Copernicus 30m)
building_footprints: OSM или кадастр
"""
df = measurement_df.copy()
# Рельефные признаки
df['elevation'] = self._sample_dem(df[['lat', 'lon']], dem_raster)
df['elevation_diff'] = df['elevation'] - self._sample_dem_bs(df['bs_id'])
df['terrain_roughness'] = self._calculate_roughness(df[['lat', 'lon']], dem_raster, radius_m=500)
# Застройка
df['building_density_500m'] = self._building_coverage(df[['lat', 'lon']],
building_footprints, radius=500)
df['mean_building_height_200m'] = self._mean_height(df[['lat', 'lon']],
building_footprints, radius=200)
# Геометрия от БС
df['distance_to_bs'] = self._haversine_distance(df[['lat', 'lon']], df['bs_location'])
df['angle_to_bs'] = self._bearing(df[['lat', 'lon']], df['bs_location'])
df['los_probability'] = self._estimate_los(df, building_footprints)
# Физическая модель как базовая фича
df['okumura_hata_pred'] = self._okumura_hata(df)
return df
def train(self, features_df, target='rsrp_dbm'):
feature_cols = [c for c in features_df.columns
if c not in [target, 'lat', 'lon', 'timestamp', 'bs_id']]
self.model = LGBMRegressor(n_estimators=500, learning_rate=0.03, num_leaves=64)
self.model.fit(features_df[feature_cols], features_df[target])
return self
Drive Test замена AI-предсказаниями:
Традиционный подход: проехать по всем улицам с измерительным оборудованием. AI-подход: ML-модель по обученным данным предсказывает RSRP в любой точке → снижение объёма drive tests на 60–75%.
Оптимизация размещения БС
Integer Programming для выбора площадок:
import pulp
def optimize_site_selection(
candidate_sites, # возможные площадки с характеристиками
coverage_predictions, # матрица: site × pixel → predicted RSRP
demand_map, # карта спроса на трафик
budget_usd,
rsrp_threshold=-95 # минимально допустимый RSRP в dBm
):
prob = pulp.LpProblem("site_selection", pulp.LpMaximize)
# Бинарные переменные: строить ли сайт i
build = [pulp.LpVariable(f"build_{i}", cat='Binary') for i in range(len(candidate_sites))]
# Переменные покрытия: покрыт ли пиксель j
covered = [pulp.LpVariable(f"covered_{j}", cat='Binary')
for j in range(coverage_predictions.shape[1])]
# Objective: максимизировать взвешенное покрытие (по трафику)
prob += pulp.lpSum(demand_map[j] * covered[j] for j in range(len(covered)))
# Бюджет
prob += pulp.lpSum(candidate_sites[i]['cost'] * build[i]
for i in range(len(candidate_sites))) <= budget_usd
# Пиксель покрыт если хотя бы один сайт обеспечивает нужный RSRP
for j in range(len(covered)):
covering_sites = [i for i in range(len(candidate_sites))
if coverage_predictions[i][j] >= rsrp_threshold]
if covering_sites:
prob += covered[j] <= pulp.lpSum(build[i] for i in covering_sites)
else:
prob += covered[j] == 0 # этот пиксель нельзя покрыть
prob.solve(pulp.PULP_CBC_CMD(msg=0, timeLimit=120))
selected_sites = [i for i, b in enumerate(build) if b.value() > 0.5]
return selected_sites
5G планирование
Миллиметровые волны (mmWave, 26/28 GHz):
mmWave — высокая пропускная способность, но очень ограниченное покрытие:
- Radio Line-of-Sight требование: любое препятствие (дерево, человек) = значительные потери
- Межсайтовое расстояние: 150–300 м vs. 500–1000 м для Sub-6GHz
ML-задачи специфичные для 5G mmWave:
- Blockage prediction: вероятность потери LoS на конкретном маршруте движения
- Beam management: выбор оптимального beam из 64 возможных по угловому профилю канала
- Dual connectivity: когда переключаться с 5G на 4G LTE (fallback)
Small cells & HetNet:
Уличные малые соты (small cells, femtocells) + макро-сети (HetNet):
- ML clustering точек с высоким спросом → оптимальные позиции для small cells
- Interference coordination: AI управляет мощностью/частотой для минимизации inter-cell interference
Аналитика покрытия
Coverage gap analysis:
- Жалобы абонентов + GPS → карта проблемных зон
- Нейронная сеть связывает жалобы с параметрами сети → точные причины
- Автоматическая приоритизация: где улучшение даст наибольший прирост NPS
Срок разработки: 3–5 месяцев для AI-системы планирования покрытия с ML-предсказанием RSRP и оптимизацией размещения БС.







