- 31 déc., 2025 1 validation
-
-
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
-
- 30 déc., 2025 5 validations
-
-
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 -
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)
-
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
-
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
-
Hamadou Ba a écrit
-