Changelog
All notable changes to the AI-Driven Predictive Traffic Flow Optimisation System will be documented in this file.
[2.0.0] - 2026-03-31
Changed
- RL Model: Replaced single-agent PPO (Stable-Baselines3,
model.zip) with MAPPO v4 (EPyMARL,agent.th) — shared GRU RNNAgent controlling 5 junctions simultaneously. - Python inference service:
main.pyrewritten to load EPyMARLRNNAgent(PyTorch) instead of SB3 PPO. Architecture:fc1(24→128) → GRUCell(128→128) → fc2(128→4). - POST
/predict_actionpayload: Now requiresjunction_id(string) andobs_data(float[]). Previously onlyobs_datawas needed. - POST
/api/traffic/actionpayload (Java): Now requiresjunctionId(string) andobservations(float[], max 19). Previously onlyobservationswas needed. - Response payload: Both services now include
junctionId/junction_idin the prediction response. - Environment variable:
MODEL_PATH,OBSERVATION_SHAPE_DIM,NUM_AGENTSreplaced byMAPPO_AGENT_PATH. - Observation dimension: 9 → up to 19 (padded to max junction obs size internally).
- Agent count: 1 → 5 (one per controlled junction).
- Docker images: Versioned as
rl-inference-service:2.0.0andtraffic-api-gateway:2.0.0.
Added
- POST
/reset_hidden(Python) and POST/api/traffic/reset(Java): Reset MAPPO GRU hidden states between simulation runs. - GET
/model_info: Now returns full junction map with agent indices and action masks. - GRU hidden state management: Per-junction recurrent state maintained between
/predict_actioncalls within a simulation run.
Removed
stable-baselines3andshimmydependencies fromrequirements.txt.MODEL_PATH,OBSERVATION_SHAPE_DIM,NUM_AGENTSenvironment variables.
Performance
- Mean waiting time reduced 69.8% vs fixed-time baseline (28.8 s → 8.7 s) with MAPPO v4 model.
- 100% episode completion rate (vs 13.3% for previous IPPO model).
[1.0.0] - 2026-03-21
Added
- Microservices Architecture: Integrated Java Spring Boot API Gateway and Python RL-Inference service.
- ML Pipeline: Support for PPO (Proximal Policy Optimization) model inference.
- [cite_start]Simulation Environment: Integrated SUMO (Simulation of Urban MObility) configurations for the Athlone "Orange Loop"[cite: 101, 161, 424].
Changed
- [cite_start]Monorepo Consolidation: Merged standalone API branch into the main branch to establish a cohesive pipeline[cite: 64, 455].
- Dependency Management: Updated Python requirements to include FastAPI, Pydantic v2, and Stable-Baselines3.
Security
- [cite_start]Data Integrity: Initial implementation of TLS 1.3 for telemetry ingestion[cite: 424].
- [cite_start]Authentication: Added digital signature placeholders in
OpenApiConfig.javato prevent data injection attacks[cite: 43, 63, 500].