# Rwanda Spatial Policy Engine — RL Summative
A reinforcement learning system that optimises budget allocation across **5 Rwandan districts** and **7 development sectors** over a 5-year strategy horizon (20 budget cycles).
Trained agents are compared across three algorithms: **DQN**, **PPO**, and **REINFORCE**.
---
## Project Structure
```
Ganza_Didier_rl_summative/
├── environment/
│ ├── custom_env.py # Custom Gymnasium environment (RwandaPolicy-v0)
│ └── rendering.py # Pygame visualization components
├── training/
│ ├── dqn_training.py # DQN training script (10 hyperparameter experiments)
│ └── pg_training.py # PPO & REINFORCE training scripts (10 experiments each)
├── models/
│ ├── dqn/ # Saved DQN models + VecNormalize stats
│ └── pg/ # Saved PPO & REINFORCE models + VecNormalize stats
├── data_files/
│ ├── rwanda_districts_baseline.csv # Real district indicators (NISR, World Bank)
│ ├── sector_impact_matrix.csv # Sector → indicator impact coefficients
│ ├── district_profiles.json # Rich district economic profiles
│ └── project_catalog.json # 100+ development project catalog
├── plots/ # Generated analysis figures (created by analysis.py)
├── main.py # Entry point — run best agent + recommendations
├── play.py # Playback script with pygame visualization
├── analysis.py # Generate all training analysis plots
├── generalization_test.py # Test agents on unseen scenarios
├── recommendation.py # Project recommendation engine
├── district_data.py # District baseline data loader
├── callbacks.py # Custom SB3 training callbacks
├── requirements.txt # Python dependencies
└── README.md
```
---
## Setup
```bash
# 1. Clone the repository
git clone
github.com /Ganza_Didier_rl_summative.git
cd Ganza_Didier_rl_summative
# 2. Create and activate virtual environment
pyth …