• Hamadou Ba's avatar
    feat: Phase 2 - Core simulation engine implementation · bca9b73c
    Hamadou Ba a écrit
    Implement event-driven discrete simulation for queueing networks
    
    Core Components:
    - events.py: Event and EventType for discrete event simulation
      - Priority queue ordering by time
      - ARRIVAL and SERVICE_END event types
    
    - request.py: Request entity with full visit tracking
      - QueueVisit records for each queue visited
      - Automatic calculation of wait/service/system times
      - Journey tracking through network
    
    - random_utils.py: Random number generation
      - Exponential distribution (inverse transform method)
      - Probabilistic choice for routing decisions
      - Seed control for reproducibility
    
    - queues.py: M/M/1 Queue implementation
      - FIFO discipline with single server
      - Complete statistics collection (utilization, avg times)
      - Exponential service times
    
    - router.py: Probabilistic routing logic
      - Route from coordinator: exit (p) or server (qi)
      - Route from server: always return to coordinator
      - Probability conservation validation
    
    - simulation.py: Main event-driven simulator
      - Priority queue (heapq) for event scheduling
      - Warmup period to reach steady state
      - Complete statistics generation
      - Support for multiple servers
    
    Testing:
    - test_random_utils.py: Validate exponential distribution (mean, reproducibility)
    - test_simulation.py: End-to-end simulation tests
      - Stable and unstable systems
      - Multiple servers
      - Reproducibility with seeds
    
    Demo:
    - demo_simulation.py: Scenario 1 demonstration (1 fast server)
    - Theoretical vs simulation comparison
    - All 14 tests passing ✓
    
    Phase 2 Complete ✓
    Next: Phase 3 - Statistics collection and multi-server scenarios
    bca9b73c