AI-Powered Network Coverage Planning System

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1All 1566 services
AI-Powered Network Coverage Planning System
Medium
~1-2 weeks
Frequently Asked Questions

AI Development Areas

AI Solution Development Stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1319
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1226
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    927
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1161
  • image_logo-advance_0.webp
    B2B Advance company logo design
    622
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    897

An RF engineer gets a task: plan LTE coverage for a 1000 sq km area. Three months, limited budget. Using the classic Okumura-Hata model, after deployment 30% of the area shows RSRP below -110 dBm — uncovered. Subscribers complain, NPS drops. Our AI network planning system automates network coverage planning with ±2 dB accuracy, reducing measurement vehicle runs by up to 40%. This saves 60–75% of the drive test budget — tens of millions of rubles (e.g., $300,000) annually for a mid-sized operator. Our solution saves an operator an average of $300,000 annually in drive test costs alone. Contact us to learn how it works on your network.

How AI Predicts Radio Coverage

ML correction of the physical model is key. We take the Okumura-Hata model as a baseline and train gradient boosting (LightGBM) on the difference with real measurements, incorporating shadow fading margin and interference-limited scenarios.

Show Python code
import numpy as np
import pandas as pd
from lightgbm import LGBMRegressor

class PropagationMLModel:
    """
    ML corrections to the physical signal propagation model.
    Data: drive test + CQT signal level measurements
    """

    def build_features(self, measurement_df, dem_raster, building_footprints):
        """
        measurement_df: GPS + RSRP/RSSI measurements
        dem_raster: digital elevation model (SRTM/Copernicus 30m)
        building_footprints: OSM or cadastre
        """
        df = measurement_df.copy()

        # Terrain features
        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)

        # Building features
        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)

        # Geometry relative to BS
        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)

        # Physical model as baseline feature
        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

Features include terrain, buildings, distance, and angle to BS. After training, the model predicts RSRP at any point — replacing up to 75% of measurement vehicle runs. This is an example of how AI for telecom solves RSRP prediction with ML propagation models, achieving RMSE 2.1 dB vs 6 dB for traditional methods.

Why 5G mmWave Needs AI

Millimeter waves (26/28 GHz) have huge capacity gains, but coverage is limited to 150–300 m due to shadow fading and blockage from obstacles like trees, people, even rain. Traditional models (e.g., 3GPP TR 38.901) give only crude estimates. Our ML model predicts blockage probability with up to 1.5 dB accuracy, incorporating MIMO adaptive beamforming. Beam management — selecting the best among 64 beams for each UE — is optimized via ML classification of angular profiles, reducing switching time by 40%.

Optimized BS Placement Provides

Integer Programming mathematically selects sites under budget constraints. Objective: maximize weighted coverage (by traffic or subscriber count). Our AI planning system performs base station placement optimization automatically, achieving 4-6 times faster planning than manual methods.

import pulp

def optimize_site_selection(
    candidate_sites,   # possible sites with characteristics
    coverage_predictions,  # matrix: site × pixel → predicted RSRP
    demand_map,        # traffic demand map
    budget_usd,
    rsrp_threshold=-95  # minimum RSRP in dBm
):
    prob = pulp.LpProblem("site_selection", pulp.LpMaximize)

    # Binary variables: build site i?
    build = [pulp.LpVariable(f"build_{i}", cat='Binary') for i in range(len(candidate_sites))]

    # Coverage variables: is pixel j covered?
    covered = [pulp.LpVariable(f"covered_{j}", cat='Binary')
               for j in range(coverage_predictions.shape[1])]

    # Objective: maximize weighted coverage (by traffic)
    prob += pulp.lpSum(demand_map[j] * covered[j] for j in range(len(covered)))

    # Budget
    prob += pulp.lpSum(candidate_sites[i]['cost'] * build[i]
                       for i in range(len(candidate_sites))) <= budget_usd

    # Pixel is covered if at least one site provides required 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  # this pixel cannot be covered

    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

Comparison with manual approach:

Parameter Traditional (manual) Our AI approach
Time for region (1000 km²) 4–6 months 2–3 weeks
RSRP accuracy ± 6 dB 2 dB
Drive test volume 100% of streets 25–40% of streets
Selection optimality Subjective Global optimum

RSRP prediction methods comparison:

Method Accuracy (RMSE) Data required Computation time
Okumura-Hata 6 dB terrain only instant
ML (LightGBM) 2.1 dB terrain+buildings+measurements 1 sec per point
Hybrid (ML+physics) 2.0 dB same 1.1 sec

Combining RF engineering and machine learning yields a global optimum for placement — our Integer Programming site selection ensures cost-effective coverage.

When Small Cell Optimization Is Needed

In heterogeneous networks (HetNet), macrocells provide basic coverage and small cells (femto, pico) provide capacity in high-demand spots. However, incorrect small cell placement creates interference. Our ML clustering (DBSCAN) groups subscriber requests, then Integer Programming selects optimal installation points, reducing inter-cell interference by 3–5 dB and increasing throughput by 20%.

Coverage Gap Analysis

Coverage gap analysis starts from subscriber complaints + GPS → map of problem areas. A neural network links complaints with network parameters to pinpoint exact causes, generating automatic prioritization: which improvements yield greatest NPS gain. This enables drive test replacement and proactive optimization.

Common mistakes: using physical model without calibration (errors up to 10 dB), ignoring seasonal changes (3–5 dB overestimation), neglecting neighbor cell interference, and optimizing only RSRP without SINR, degrading voice quality.

Our Process

  1. Analytics: collect drive test data, terrain (SRTM), buildings (OSM), complaints. Build demand map.
  2. Planning: train ML model on historical data, calibrate thresholds considering shadow fading margin.
  3. Implementation: run Integer Programming for site selection — base station placement optimization.
  4. Test: pilot on 1–2 clusters, validate actual vs predicted coverage.
  5. Deployment: integrate into OSS, set up CI/CD pipeline for quarterly model retraining.

Estimated Timelines

  • MVP with ML prediction and optimization for one technology (LTE): 3–5 months.
  • Full system with 5G mmWave planning and HetNet: 6–9 months.
  • Cost is calculated individually, with typical project cost ranging from $50,000 to $150,000 per region. Over a 3-year period, savings exceed $1 million.

Deliverables (What's Included)

The following deliverables are included:

  • ML model for RSRP prediction (LightGBM with feature engineering)
  • Integer Programming solver (PuLP/CBC) for site selection
  • Dashboard with coverage map and recommendations
  • Three months post-deployment support
  • Documentation: model card, API spec, update instructions
  • Training for RF engineers

Experience and Guarantees

We have 5+ years of experience in AI/ML for telecom, with over 20 completed LTE/5G network optimization projects. Our engineers are certified in LTE and 5G NR. We guarantee prediction accuracy of ±2 dB on validation. RF engineering and machine learning are integrated into a single system, reducing planning time by a factor of five (AI planning is 4-6 times faster than manual). Our AI network planning system for AI for telecom uses Integer Programming site selection, ML propagation models, and coverage gap analysis to improve base station placement optimization, drive test replacement, and 5G mmWave planning including small cell placement. Contact us for a pilot project or order a consultation on AI planning, and we'll demonstrate results on your data.