1. 31 déc., 2025 1 validation
    • Hamadou Ba's avatar
      feat: Phase 5 - Backend API implementation · 0190fc49
      Hamadou Ba a écrit
      Complete REST API with FastAPI for simulation, scenarios, and analytics
      
      API Endpoints - Simulation (/api/simulation):
      - POST /start: Start new simulation with custom config
        - Accepts SimulationConfigModel (Pydantic validation)
        - Returns session_id for result retrieval
        - Runs simulation synchronously
      
      - GET /results/{session_id}: Get simulation results
        - Returns complete SimulationResultsModel
        - Includes coordinator and server statistics
        - Stability assessment
      
      - DELETE /results/{session_id}: Clean up session
      - GET /sessions: List all active sessions
      
      API Endpoints - Scenarios (/api/scenarios):
      - GET /: List all 5 predefined scenarios
        - Returns scenario metadata (id, name, description)
      
      - GET /{scenario_id}: Get scenario configuration
        - Returns full SimulationConfigModel
        - Ready to use or modify
      
      - GET /scenario_5/variations: Get parameter sensitivity variations
        - Returns all variations for scenario 5
      
      - POST /{scenario_id}/run: Execute predefined scenario
        - Runs scenario and stores results
        - Returns session_id for retrieval
      
      API Endpoints - Analytics (/api/analytics):
      - POST /jackson: Analyze with Jackson's theorem
        - Input: SimulationConfigModel
        - Output: Analytical results (L, W, ρ, stability)
        - No simulation required
      
      - GET /compare/{session_id}: Compare analytical vs simulation
        - Requires existing simulation session
        - Returns detailed comparison with percentage differences
        - Per-queue and system-wide metrics
      
      - POST /stability: Quick stability check
        - Input: Configuration
        - Output: Stability conditions for all queues
        - Utilization calculations
      
      Architecture:
      - Modular router design (simulation, scenarios, analytics)
      - Pydantic models for validation and serialization
      - In-memory session storage (could use Redis in production)
      - Comprehensive error handling
      - CORS enabled for frontend integration
      
      Testing:
      - test_api.py: Complete API test suite
        - Tests all endpoints
        - End-to-end workflow
        - Includes examples of usage
      
      Documentation:
      - Auto-generated OpenAPI docs at /docs
      - ReDoc documentation at /redoc
      - Comprehensive endpoint descriptions
      
      Features:
      - Type-safe API with Pydantic validation
      - Automatic request/response serialization
      - Built-in API documentation
      - CORS support for React frontend
      - Session management for results
      
      Phase 5 Complete ✓
      Next: Phase 6 - Frontend React dashboard
      0190fc49
  2. 30 déc., 2025 5 validations
    • 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
    • Hamadou Ba's avatar
      feat: Phase 3 - Pydantic models and predefined scenarios · d861a273
      Hamadou Ba a écrit
      Add Pydantic models for API validation and 5 project scenarios
      
      Pydantic Models:
      - models/config.py: SimulationConfigModel with full validation
        - ServerConfig for each server in the network
        - Probability conservation validation
        - Conversion to internal SimulationConfig
      
      - models/results.py: Complete results models for API responses
        - QueueStatisticsModel per queue
        - TimeSeriesDataModel for evolution tracking
        - HistogramDataModel for processing time distribution
        - SimulationResultsModel with all metrics
      
      Predefined Scenarios:
      - scenarios.py: 5 scenarios from project requirements
        - Scenario 1: 1 fast server (120ms) - instability test
        - Scenario 2: 1 fast + 1 slow server (120ms/240ms)
        - Scenario 3: 3 slow servers (240ms each)
        - Scenario 4: 1 fast + 1 medium (120ms/190ms) - compare with scenario 3
        - Scenario 5: Parameter sensitivity (vary λ and p)
      
      - Theoretical utilization calculations for each scenario
      - Scenario registry for easy access
      - list_scenarios() function for API
      
      Testing:
      - test_all_scenarios.py: Comprehensive test of all scenarios
      - Runs all 5 scenarios with variations
      - Compares theoretical vs simulation results
      - Summary table for performance comparison
      
      Results Analysis:
      - All scenarios execute successfully
      - Stable systems show ρ < 1 as expected
      - Some scenarios show slight instability (ρ ≈ 1.0) due to high load
      - Parameter sensitivity variations demonstrate impact of λ and p
      
      Phase 3 Complete ✓
      Next: Phase 4 - Analytical module (Jackson's theorem)
      d861a273
    • 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
    • Hamadou Ba's avatar
      feat: Phase 1 - Project setup and infrastructure · 5568088c
      Hamadou Ba a écrit
      Initialize Turborepo monorepo with Python backend and React frontend
      
      - Setup Turborepo configuration with workspaces
      - Configure Python FastAPI backend
        - Create project structure (core, analytics, api, models)
        - Add requirements.txt with FastAPI, Uvicorn, Pydantic, etc.
        - Basic FastAPI app with health endpoints
        - CORS middleware for frontend integration
      - Configure React + TypeScript + Vite frontend
        - Install dependencies (Chart.js, D3.js, Zustand, Axios)
        - Setup Tailwind CSS with PostCSS
        - Create component directory structure
        - Basic landing page with Tailwind styling
      - Add comprehensive README files
      - Configure .gitignore for Python and Node.js
      
      Phase 1 Complete ✓
      Next: Phase 2 - Core simulation engine implementation
      5568088c
    • Hamadou Ba's avatar
      Initial commit · 818c345a
      Hamadou Ba a écrit
      818c345a