• Hamadou Ba's avatar
    feat: Phase 4 - Jackson's theorem analytical module · 92152fa2
    Hamadou Ba a écrit
    Implement analytical analysis using Jackson's theorem for open networks
    
    Jackson's Theorem Implementation:
    - analytics/jackson.py: Complete Jackson theorem analyzer
      - Calculate effective arrival rates (λᵢ)
      - Calculate utilizations (ρᵢ = λᵢ/μᵢ)
      - Stability check (ρᵢ < 1 for all queues)
      - M/M/1 formulas: L = ρ/(1-ρ), W = L/λ
      - System-wide metrics using Little's Law
      - Handles both stable and unstable queues
    
    Mathematical Formulas:
    - Effective arrival rates for network topology
    - Utilization: ρᵢ = λᵢ / μᵢ
    - Average customers: Lᵢ = ρᵢ / (1 - ρᵢ)
    - Average time: Wᵢ = Lᵢ / λᵢ (Little's Law)
    - Average wait: Wq = W - 1/μ
    - Total system: L_total = Σ Lᵢ, W_total = L_total / λ₀
    
    Comparison Module:
    - analytics/comparison.py: Compare analytical vs simulation
      - QueueComparison for per-queue metrics
      - NetworkComparison for system-wide comparison
      - Percentage difference calculations
      - Formatted comparison reports
    
    Testing & Validation:
    - tests/test_analytics.py: 7 tests validating Jackson's theorem
      - Simple M/M/1 queue (analytical vs theory)
      - Unstable queue detection (ρ > 1)
      - Network with multiple servers
      - Little's Law validation (L = λW)
      - Probability conservation
      - Effective arrival rates
      - Multi-server stability
    
    Demo & Examples:
    - demo_analytical.py: Compare analytical vs simulation for scenarios
      - Runs scenarios 1-3
      - Shows theoretical predictions
      - Shows simulation results
      - Detailed comparison tables
      - Percentage differences
    
    Results:
    -  All 7 analytical tests pass
    -  Little's Law validated for all queues
    -  Stability detection working correctly
    -  Comparison reveals expected statistical variation
    
    Observations:
    - Analytical predictions are accurate for stable systems
    - Simulation shows statistical variation (finite sample)
    - Unstable queues detected correctly (ρ ≥ 1)
    - Differences increase with higher utilization
    
    Phase 4 Complete ✓
    Next: Phase 5 - Backend API implementation
    92152fa2