HomeAI & Machine LearningCell Network Load Balancer — Graph Coloring Live

📡 Cell Network Load Balancer — Graph Coloring Live

Watch a graph-coloring optimizer reassign frequency channels across overlapping cell towers to eliminate interference, balancing load as simulated call traffic shifts across the network.

AI & Machine Learning3DAdvanced60 FPS
ai-telecom-network-optimization ↗ Open standalone

About this simulation

Cellular networks pack towers close enough together that neighbouring cells overlap — and any two overlapping towers broadcasting on the same frequency will interfere with each other's calls. Telecom engineers solve this with graph coloring: build a graph where towers are nodes and an edge joins any two towers whose coverage overlaps, then assign each node a "color" (frequency channel) so that no edge connects two same-colored nodes. This simulation builds that interference graph from a randomly scattered set of cell towers and runs DSATUR, a real degree-of-saturation greedy coloring heuristic, live in the browser as simulated call traffic switches towers on and off.

🔬 What it shows

Towers are 3D nodes positioned on a ground plane; edges mark interference links within the configurable interference radius. Each tower's simulated call-traffic load oscillates over time — when it crosses the traffic-load threshold the tower goes active and must hold a channel that doesn't collide with any active neighbour. Because towers keep a "sticky" legacy channel from the last time they were active, reactivating near new neighbours can create a real, visible conflict (flashing red edge) until the solver repairs it.

🎮 How to use

Adjust the tower count and interference radius, then click "Regenerate network" to rebuild the interference graph. Slide traffic load to change how often towers are active, and use "Force re-solve now" to trigger an immediate DSATUR repair, or leave "Auto re-solve" on to watch it fix conflicts automatically after a short delay. Click any tower to inspect its channel, load and neighbour count.

💡 Did you know?

Optimal graph coloring is NP-hard, so real-world frequency planning (and this simulation) relies on heuristics like DSATUR rather than brute-force search. DSATUR often gets very close to the true minimum number of channels — the chromatic number — on realistic geometric interference graphs, without ever having to try every possibility.

Frequently asked questions

What algorithm assigns the frequency channels?

The simulation runs DSATUR (degree of saturation), a well-known greedy graph-coloring heuristic. It repeatedly picks the uncolored tower whose neighbours currently use the most distinct channels (breaking ties by raw degree), then assigns it the smallest channel number not already used by an active neighbour. When call traffic activates or deactivates towers, only the towers touching a conflict are recoloured, leaving the rest of the network undisturbed — a realistic incremental repair strategy rather than a full re-plan every tick.

Why do conflicts appear at all if the algorithm is correct?

Each tower keeps a sticky legacy channel from the last time it was active, mimicking how real base stations retain their last-assigned frequency plan. When a previously quiet tower reactivates near active neighbours, its old channel can now collide with one of them. That collision is a genuine, visible conflict until the solver runs its repair pass.

How is the interference graph built?

Every pair of towers whose ground-plane distance is less than the interference radius is connected by an edge, representing overlapping coverage cells that would cause co-channel interference if assigned the same frequency. This is the graph that must be properly coloured: no two towers joined by an edge may share a channel while both are actively carrying traffic.

What does the traffic load slider control?

Each tower has an independent simulated call-traffic waveform. The load slider shifts the activation threshold, so a higher value means towers spend more of their cycle above the threshold and are active more often — increasing how frequently the coverage pattern, and therefore the active interference graph, changes.

Is DSATUR guaranteed to find the minimum number of channels?

No — optimal graph coloring is NP-hard in general, so DSATUR is a heuristic, not an exact solver. It typically performs very well in practice and often matches or comes close to the chromatic number on the geometric interference graphs generated here, but it is not guaranteed to be optimal on every random layout.

⚙ Under the hood

An interference graph of cell towers is colored live by DSATUR, a real degree-of-saturation greedy algorithm, as simulated call traffic activates and deactivates towers and the solver repairs any resulting channel conflicts.

Graph ColoringDSATURConstraint SatisfactionTelecomLoad Balancing

3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)