mirror of
https://github.com/davidalves04/Trabalho-Pratico-SD.git
synced 2025-12-07 20:16:36 +00:00
Step 2 - Finishing touches
This commit is contained in:
134
STEP2_SUMMARY.md
Normal file
134
STEP2_SUMMARY.md
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
# 🏁 Single-Process Prototype — Implementation Summary
|
||||||
|
|
||||||
|
**Status:** ✅ Complete
|
||||||
|
**Date:** October 22, 2025
|
||||||
|
**Branch:** `8-single-process-prototype`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The single-process prototype implements a **discrete event simulation (DES)** of a 3×3 urban grid with five intersections, realistic vehicle behavior, and fully synchronized traffic lights. Everything runs under one process, laying the groundwork for the distributed architecture in Phase 3.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Core Architecture
|
||||||
|
|
||||||
|
### **SimulationEngine**
|
||||||
|
|
||||||
|
Drives the DES loop with a priority queue of timestamped events — vehicles, lights, crossings, and periodic stats updates. Handles five intersections (Cr1–Cr5) and six event types.
|
||||||
|
|
||||||
|
**Main loop:**
|
||||||
|
|
||||||
|
```
|
||||||
|
while (events && time < duration):
|
||||||
|
event = nextEvent()
|
||||||
|
time = event.timestamp
|
||||||
|
handle(event)
|
||||||
|
```
|
||||||
|
|
||||||
|
### **VehicleGenerator**
|
||||||
|
|
||||||
|
Spawns vehicles via:
|
||||||
|
|
||||||
|
* **Poisson arrivals** (λ = 0.5 veh/s) or fixed intervals
|
||||||
|
* **Probabilistic routes** from E1–E3
|
||||||
|
* **Type distribution**: 20% BIKE, 60% LIGHT, 20% HEAVY
|
||||||
|
|
||||||
|
### **StatisticsCollector**
|
||||||
|
|
||||||
|
Tracks system-wide and per-type metrics: throughput, avg. wait, queue sizes, light cycles — updated every 10 s and at simulation end.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Model Highlights
|
||||||
|
|
||||||
|
* **Vehicle** – type, route, timings, lifecycle.
|
||||||
|
* **Intersection** – routing tables, traffic lights, queues.
|
||||||
|
* **TrafficLight** – red/green cycles with FIFO queues.
|
||||||
|
* **Event** – timestamped, comparable; 6 types for all DES actions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration (`simulation.properties`)
|
||||||
|
|
||||||
|
```properties
|
||||||
|
simulation.duration=60.0
|
||||||
|
simulation.arrival.model=POISSON
|
||||||
|
simulation.arrival.rate=0.5
|
||||||
|
|
||||||
|
vehicle.bike.crossingTime=1.5
|
||||||
|
vehicle.light.crossingTime=2.0
|
||||||
|
vehicle.heavy.crossingTime=4.0
|
||||||
|
|
||||||
|
statistics.update.interval=10.0
|
||||||
|
```
|
||||||
|
|
||||||
|
**Speed logic:**
|
||||||
|
`t_bike = 0.5×t_car`, `t_heavy = 2×t_car`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Topology
|
||||||
|
|
||||||
|
```
|
||||||
|
E1→Cr1→Cr4→Cr5→S
|
||||||
|
E2→Cr2→Cr5→S
|
||||||
|
E3→Cr3→S
|
||||||
|
Bi-dir: Cr1↔Cr2, Cr2↔Cr3
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Results
|
||||||
|
|
||||||
|
**Unit Tests:** 7/7 ✅
|
||||||
|
**60-Second Simulation:**
|
||||||
|
|
||||||
|
* Generated: 22 vehicles
|
||||||
|
* Completed: 5 (22.7%)
|
||||||
|
* Avg system time: 15.47 s
|
||||||
|
* Throughput: 0.08 veh/s
|
||||||
|
* All lights & intersections operational
|
||||||
|
|
||||||
|
**Performance:**
|
||||||
|
~0.03 s real-time run (≈2000× speed-up), < 50 MB RAM.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Code Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
sd/
|
||||||
|
├── engine/SimulationEngine.java
|
||||||
|
├── model/{Vehicle,Intersection,TrafficLight,Event}.java
|
||||||
|
├── util/{VehicleGenerator,StatisticsCollector}.java
|
||||||
|
└── config/SimulationConfig.java
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Key Flow
|
||||||
|
|
||||||
|
1. Initialize intersections, lights, first events.
|
||||||
|
2. Process events chronologically.
|
||||||
|
3. Vehicles follow routes → queue → cross → exit.
|
||||||
|
4. Lights toggle, queues drain, stats update.
|
||||||
|
5. Print summary and performance metrics.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Next Steps — Phase 3
|
||||||
|
|
||||||
|
* Split intersections into independent **processes**.
|
||||||
|
* Add **socket-based communication**.
|
||||||
|
* Run **traffic lights as threads**.
|
||||||
|
* Enable **distributed synchronization** and fault handling.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## TL;DR
|
||||||
|
|
||||||
|
Solid single-process DES ✅
|
||||||
|
Everything’s working — traffic lights, routing, vehicles, stats.
|
||||||
|
Ready to go distributed next.
|
||||||
23
TODO.md
23
TODO.md
@@ -1,3 +1,26 @@
|
|||||||
|
## ✅ SINGLE-PROCESS PROTOTYPE - COMPLETED
|
||||||
|
|
||||||
|
### Phase 2 Status: DONE ✅
|
||||||
|
|
||||||
|
All components for the single-process prototype have been successfully implemented and tested:
|
||||||
|
|
||||||
|
- ✅ **SimulationEngine** - Priority queue-based discrete event simulation
|
||||||
|
- ✅ **VehicleGenerator** - Poisson and Fixed arrival models
|
||||||
|
- ✅ **StatisticsCollector** - Comprehensive metrics tracking
|
||||||
|
- ✅ **Entry point** - Main simulation runner
|
||||||
|
- ✅ **60s test simulation** - Successfully validated event processing and routing
|
||||||
|
|
||||||
|
### Test Results:
|
||||||
|
- All 7 unit tests passing
|
||||||
|
- 60-second simulation completed successfully
|
||||||
|
- Generated 22 vehicles with 5 completing their routes
|
||||||
|
- Traffic light state changes working correctly
|
||||||
|
- Vehicle routing through intersections validated
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## NEXT: Distributed Architecture Implementation
|
||||||
|
|
||||||
### Compreender os Conceitos Fundamentais
|
### Compreender os Conceitos Fundamentais
|
||||||
|
|
||||||
Primeiro, as tecnologias e paradigmas chave necessários para este projeto devem ser totalmente compreendidos.
|
Primeiro, as tecnologias e paradigmas chave necessários para este projeto devem ser totalmente compreendidos.
|
||||||
|
|||||||
Reference in New Issue
Block a user