neuroevolution · networking · live in your browser

Congestion Control Arena

A population of 40 tiny neural networks learns to send data over a congested link, with no knowledge of TCP. Each agent only sees latency and packet loss, and evolves generation after generation. Then it faces the classics.

Champion brain

Fitness per generation

Fitness per decision = utilization − 0.5 × queueing delay (in base RTTs) − 4 × loss rate, averaged over 3 random links per generation.

Scoreboard

How it works

The network

A fluid model of one bottleneck link, stepped every simulated millisecond. Senders push packets into a FIFO router queue in front of a link of capacity C. Whatever does not fit in the buffer is dropped. Training links vary capacity (6 to 36 Mbps), base RTT (20 to 80 ms) and buffer size (0.3 to 2 BDP), and 60% of them change capacity midway.

The agent

Once per RTT, each agent sees three signals from its last three intervals: latency gradient, RTT over minimum RTT, and loss rate. A 9-8-1 network outputs a in [−2, 2] and the sending rate becomes rate × (1 + 0.05a), or rate ÷ (1 − 0.05a) when a is negative. The formulation follows Aurora (Jay et al., ICML 2019).

The evolution

No gradients. All 40 networks run the same 3 random links each generation. The top 4 survive unchanged, and the rest are children of tournament winners, with uniform crossover and Gaussian mutation. A fixed seed reproduces the whole run.

Limitations

This is a teaching simulator, not a production congestion controller. Feedback reaches the sender without the extra RTT of real ACKs, there is a single bottleneck, and training only uses one flow, so fairness is never rewarded. The two-flow scenario shows what that costs.