This repository provides the official implementation of RobustLight, a diffusion-based framework for robust traffic signal control under corrupted or missing perception data.
The core idea is to leverage a diffusion model for traffic state recovery, enabling downstream reinforcement learning (RL) controllers to operate reliably under noise, masking, and adversarial disturbances.
The framework supports training, inference (state recovery), and evaluation under multiple noise settings, consistent with the experimental setup described in the paper.
- Diffusion-based traffic state recovery
- Robustness to multiple noise types and masking
- Seamless integration with RL traffic signal controllers
- Support for training-only, inference-only, or end-to-end evaluation
- Configurable experimental parameters aligned with the paper
-
Noise Injection
Raw traffic states are corrupted by configurable noise or masking. -
Diffusion Model
- Trained to reconstruct clean traffic states from corrupted inputs.
- Can be trained, frozen, or used only for inference.
-
Recovered States
- Output of the diffusion model.
- Used as inputs to downstream traffic signal control algorithms.
-
Traffic Signal Control
- RL-based controller operates on recovered states.
- Performance is evaluated under different noise conditions.
| Parameter | Type | Description |
|---|---|---|
is_test |
bool | Controls whether the diffusion model is trained. • False: Train the diffusion model • True: Skip training and load a pretrained model |
inference_epoch |
int | Number of diffusion training epochs. Set to 50 in the paper. |
is_inference |
bool | Controls whether diffusion-based inference (state recovery) is performed. • True: Enable state recovery • False: Use noisy states directly |
| Value | Noise Type | Description |
|---|---|---|
0 |
Gaussian | Additive Gaussian noise |
1 |
Uniform | Uniform random noise |
2 |
Q-Min | Minimum Q-value–based perturbation |
3 |
Action-Diff | Action difference–based noise |
| Value | Meaning | Description |
|---|---|---|
0 |
Noise | Additive noise corruption |
1 |
Mask | Feature masking (missing data) |
Note:
noise_level = 1simulates sensor failure or missing perception data, while
noise_level = 0simulates noisy but available sensor measurements.
is_test = False
is_inference = False
inference_epoch = 50