Traffic-Control / Architecture.md
Dhaerya's picture
Add files
b00d5d5
# Traffic Control Reinforcement Learning Architecture
This document provides a comprehensive A-Z breakdown of the Reinforcement Learning (RL) architecture implemented in the Traffic Signal Control project.
The system replaces traditional fixed-timing traffic lights with intelligent, adaptive agents that learn optimal signal switching policies. **It features a full-stack React and FastAPI Web Dashboard** to visualize the intersection in real-time.
---
## 1. High-Level System Flow
The architecture follows the standard Reinforcement Learning MDP (Markov Decision Process) loop:
1. **Observe**: The Agent receives the current **State** (queue lengths for 8 lanes, current light phase) from the Environment.
2. **Decide**: The Agent selects an **Action** (keep the current phase OR switch to the next phase).
3. **Act**: The Environment executes the action, simulating traffic flow for a specific duration.
4. **Learn**: The Environment returns a **Reward** (penalty based on total waiting traffic). The Agent uses this to update its neural network.
---
## 2. The Environment (`TrafficEnvironment`)
The environment is the simulated 8-lane intersection built using the `Gymnasium` API.
### 2.1 State Space (Observation)
We use a continuous **9-dimensional state vector** to perfectly track Straight/Right (SR) and Left-Turn (L) queues:
* `[N_SR, N_L, E_SR, E_L, S_SR, S_L, W_SR, W_L, current_phase]`
* **Absolute Normalization**: Queue lengths are normalized linearly by dividing by `20.0` and clipping to `[0, 1]`. This ensures the neural network correctly perceives absolute traffic volume.
* **Phase Representation**: The current phase (0 to 3) is normalized to `phase / 3.0`.
### 2.2 Action Space & 4-Phase Cycle
The agent has a discrete action space of size 2 (Keep or Switch). It cycles through **4 Directional Phases** to completely eliminate turning collisions:
* `Phase 0`: North Green (Straight + Left)
* `Phase 1`: East Green (Straight + Left)
* `Phase 2`: South Green (Straight + Left)
* `Phase 3`: West Green (Straight + Left)
### 2.3 Reward Function
* **Calculation**: `reward = -(Total Queue Length) / 20.0`
* **Clipping**: The reward is hard-clipped to `[-1.0, 1.0]`.
* **Sensitivity**: Dividing by 20.0 ensures the agent receives strong gradient signals even in low-density traffic conditions, forcing it to actively clear small queues.
---
## 3. Traffic Generation (`TrafficGenerator`)
* **Realistic Volume**: The traffic density is tuned to produce roughly 2,000–4,000 total arrivals per episode.
* **Left-Turn Probabilities**: Roughly 20% of generated traffic is routed into the dedicated Left-Turn queues.
* **Stochastic Bursts**: There is a 15% probability that a sudden "burst" of traffic will arrive in a random lane, testing the agent's adaptability.
---
## 4. The Deep Q-Network Agent (`DQNAgent`)
A modern Deep RL approach utilizing PyTorch.
* **Neural Network Architecture**:
`Input Layer (9)` -> `Hidden Layer (256, ReLU)` -> `Hidden Layer (256, ReLU)` -> `Output Layer (2, Keep/Switch)`
* **Experience Replay Buffer**: Transitions `(s, a, r, s', done)` are stored in a circular buffer (size: 50,000). The network trains by sampling random mini-batches (size 256).
* **Target Network**: Uses an Online and Target network synced every 10 episodes to stabilize training.
* **Hardware Acceleration**: Automatically utilizes CUDA (NVIDIA GPUs) for accelerated tensor operations.
---
## 5. Web Dashboard Architecture
The project features a beautiful full-stack simulation dashboard.
### 5.1 Backend (`backend/app.py`)
* Built with **FastAPI**.
* Loads the fully trained `dqn_best.pth` model into memory.
* Exposes `/api/reset` and `/api/step` endpoints.
* When the frontend calls `/api/step`, the backend asks the DQN agent for an action, steps the Python Gymnasium environment, and returns the 9D State and reward back to the UI.
### 5.2 Frontend (`frontend/src/App.jsx`)
* Built with **React and Vite**.
* **Ultra-Premium Aesthetics**: Features a dark glassmorphism UI, a glowing neon background, and etched asphalt road textures.
* **Live Telemetry**: Tracks total throughput and RL reward signals in real-time.
* **CSS Animations**: Cars are dynamically rendered in all 8 lanes and visually animate driving straight or turning left (-90deg rotation) when their specific directional light turns green.