\section{Analyse et Discussion}

Cette section approfondit l'interprétation des résultats et explore les implications théoriques et pratiques.

\subsection{Validation du Théorème de Jackson}

\subsubsection{Convergence des Résultats}

L'analyse comparative entre simulation et théorie analytique révèle une concordance remarquable:

\begin{itemize}
    \item \textbf{Utilisation}: Écart moyen de 0.15\% sur tous les scénarios
    \item \textbf{Temps moyen}: Écart moyen de 1.12\% sur tous les scénarios
    \item \textbf{Nombre de clients}: Écart moyen de 0.87\% sur tous les scénarios
\end{itemize}

Ces écarts minimes (< 2\%) s'expliquent par:
\begin{enumerate}
    \item \textbf{Variabilité stochastique}: Simulation basée sur génération aléatoire
    \item \textbf{Échantillonnage fini}: 100,000 unités vs limite théorique $t \to \infty$
    \item \textbf{Période d'échauffement}: Nécessaire pour atteindre le régime permanent
\end{enumerate}

\textbf{Conclusion}: Le théorème de Jackson est \textbf{pleinement validé} par la simulation.

\subsubsection{Indépendance des Files}

Le théorème de Jackson affirme que chaque station se comporte comme une file M/M/1 \textbf{indépendante}.

\textbf{Test d'indépendance}: Corrélation entre les longueurs de files

\begin{table}[H]
\centering
\caption{Corrélations entre files (Scénario 2)}
\label{tab:correlation}
\begin{tabular}{lcc}
\toprule
\textbf{Paire de files} & \textbf{Corrélation observée} & \textbf{Théorique} \\
\midrule
Coordinateur -- Serveur 1 & 0.037 & 0 \\
Coordinateur -- Serveur 2 & 0.042 & 0 \\
Serveur 1 -- Serveur 2 & -0.021 & 0 \\
\bottomrule
\end{tabular}
\end{table}

\textbf{Interprétation}: Corrélations négligeables ($< 0.05$) confirment l'indépendance statistique des files.

\subsection{Impact de la Configuration}

\subsubsection{Nombre de Serveurs}

Comparaison scénarios 1 vs 3 (même charge totale):

\begin{table}[H]
\centering
\caption{Impact du nombre de serveurs}
\label{tab:impact-servers}
\begin{tabular}{lccc}
\toprule
\textbf{Configuration} & \textbf{Serveurs} & \textbf{$W$ (unités)} & \textbf{Gain} \\
\midrule
Scénario 1 & 1 rapide & 5,762 & --- \\
Scénario 3 & 3 lents & 2,944 & \textbf{-48.9\%} \\
\bottomrule
\end{tabular}
\end{table}

\textbf{Explication}: Multiplier les serveurs réduit $\rho_i$ de chaque file, diminuant ainsi les temps d'attente selon:
\begin{equation}
    W_q = \frac{\rho}{\mu(1-\rho)} \quad \text{(décroît rapidement quand } \rho \text{ diminue)}
\end{equation}

\subsubsection{Hétérogénéité des Serveurs}

Scénarios 2, 3, 4 avec 2-3 serveurs:

\begin{table}[H]
\centering
\caption{Impact de l'hétérogénéité}
\label{tab:impact-heterogeneity}
\begin{tabular}{lcccc}
\toprule
\textbf{Scénario} & \textbf{Config} & \textbf{$W$ (unités)} & \textbf{$\rho_{\max}$} & \textbf{Goulot} \\
\midrule
2 & Rapide + Lent & 12,496 & 0.96 & Serveur lent \\
4 & Rapide + Moyen & 4,134 & 0.76 & Serveur moyen \\
3 & 3 Lents & 2,944 & 0.48 & Équilibré \\
\bottomrule
\end{tabular}
\end{table}

\textbf{Principe}: Le serveur le plus lent crée un goulot d'étranglement. Configuration homogène préférable.

\subsubsection{Probabilité de Sortie $p$}

Effet de $p$ sur le taux de circulation interne:

\begin{equation}
    \lambda_c = \frac{\lambda}{p} \quad \Rightarrow \quad p \downarrow \implies \lambda_c \uparrow
\end{equation}

\begin{itemize}
    \item $p$ faible ($0.3$): Nombreuses boucles coordinateur $\to$ serveur $\to$ coordinateur
    \item $p$ élevé ($0.8$): Sortie rapide, moins de charge interne
\end{itemize}

\textbf{Trade-off}: $p$ trop élevé = sous-utilisation des serveurs; $p$ trop faible = surcharge du coordinateur.

\subsection{Comportement en Régime Critique}

\subsubsection{Approche de l'Instabilité}

Pour $\rho \to 1$, la formule M/M/1 prédit:
\begin{equation}
    W = \frac{1}{\mu - \lambda} = \frac{1}{\mu(1-\rho)} \to \infty
\end{equation}

Observations empiriques (Scénario 5, variation de $\lambda$):

\begin{table}[H]
\centering
\caption{Comportement critique}
\label{tab:critical-behavior}
\begin{tabular}{cccc}
\toprule
\textbf{$\rho$} & \textbf{$W$ théorique} & \textbf{$W$ simulation} & \textbf{Écart (\%)} \\
\midrule
0.60 & 1,875 & 1,862 & 0.69\% \\
0.80 & 3,750 & 3,789 & 1.04\% \\
0.90 & 7,500 & 7,621 & 1.61\% \\
0.95 & 15,000 & 15,487 & 3.25\% \\
0.98 & 37,500 & 39,214 & 4.57\% \\
\bottomrule
\end{tabular}
\end{table}

\textbf{Observation}: L'écart augmente légèrement pour $\rho > 0.95$ en raison de la sensibilité accrue aux fluctuations aléatoires.

\subsubsection{Détection d'Instabilité}

Critère implémenté:
\begin{equation}
    \text{Système instable} \iff \exists i : \rho_i \geq 1
\end{equation}

Dans ce cas:
\begin{itemize}
    \item Simulation limitée à durée maximale (100,000 unités)
    \item Croissance linéaire de $L(t)$ observée
    \item Interface affiche alerte avec identification du goulot
\end{itemize}

\subsection{Validation des Hypothèses}

\subsubsection{Processus de Poisson}

Vérification: Inter-arrivées suivent distribution exponentielle

\begin{table}[H]
\centering
\caption{Test Kolmogorov-Smirnov sur inter-arrivées}
\label{tab:ks-test}
\begin{tabular}{lcc}
\toprule
\textbf{Scénario} & \textbf{Statistique KS} & \textbf{p-value} \\
\midrule
1 & 0.0087 & 0.89 \\
2 & 0.0092 & 0.85 \\
3 & 0.0081 & 0.91 \\
\bottomrule
\end{tabular}
\end{table}

\textbf{Conclusion}: p-values élevées ($> 0.05$) $\Rightarrow$ hypothèse exponentielle non rejetée.

\subsubsection{Temps de Service Exponentiels}

Vérification du coefficient de variation:
\begin{equation}
    CV = \frac{\sigma}{\mu} \approx 1 \quad \text{pour distribution exponentielle}
\end{equation}

Résultats observés: $CV \in [0.98, 1.04]$ pour toutes les stations $\Rightarrow$ \textbf{validé}.

\subsection{Comparaison avec Systèmes Réels}

\subsubsection{Application aux Bases de Données Distribuées}

Notre modèle simplifie la réalité mais capture l'essentiel:

\begin{table}[H]
\centering
\caption{Modèle vs réalité}
\label{tab:model-reality}
\begin{tabular}{lll}
\toprule
\textbf{Aspect} & \textbf{Modèle} & \textbf{Réalité} \\
\midrule
Distribution arrivées & Exponentielle & Bursty (pics de charge) \\
Temps de service & Exponentiel & Dépend de la requête \\
Routage & Probabiliste & Basé sur charge réelle \\
Capacité files & Infinie & Limitée (mémoire) \\
\bottomrule
\end{tabular}
\end{table}

\textbf{Extensions possibles}:
\begin{itemize}
    \item M/G/1 pour distributions de service générales
    \item Files avec capacité limitée (M/M/1/K)
    \item Routage adaptatif (Join-Shortest-Queue)
    \item Priorités de requêtes
\end{itemize}

\subsubsection{Insights pour l'Architecture}

Les résultats suggèrent des principes de conception:

\begin{enumerate}
    \item \textbf{Homogénéité}: Préférer serveurs de capacité similaire
    \item \textbf{Nombre > puissance}: Multiplier serveurs modestes plutôt qu'un serveur ultra-rapide
    \item \textbf{Équilibrage de charge}: Routage uniforme ($q_i$ égaux) optimal si serveurs homogènes
    \item \textbf{Surveillance}: Alerter si $\rho > 0.8$ sur une station (marge de sécurité)
\end{enumerate}

\subsection{Limites de l'Étude}

\subsubsection{Hypothèses Simplificatrices}

\begin{itemize}
    \item \textbf{Mémoire markovienne}: Distributions exponentielles restrictives
    \item \textbf{Indépendance}: Requêtes réelles peuvent être corrélées
    \item \textbf{Stationnaire}: Trafic constant (pas de variation jour/nuit)
    \item \textbf{Pas de pannes}: Serveurs toujours disponibles
\end{itemize}

\subsubsection{Durée de Simulation}

100,000 unités de temps suffisantes pour $\rho < 0.95$, mais pour $\rho \to 1$:
\begin{itemize}
    \item Convergence plus lente vers régime permanent
    \item Variance des estimateurs augmente
    \item Simulations plus longues nécessaires (ex: 1,000,000 unités)
\end{itemize}

\subsection{Perspectives d'Amélioration}

\subsubsection{Extensions Théoriques}

\begin{itemize}
    \item \textbf{BCMP Theorem}: Généraliser à files M/M/c (plusieurs serveurs par station)
    \item \textbf{Réseaux fermés}: Nombre fixe de clients circulant dans le système
    \item \textbf{Vacances de serveurs}: Périodes d'indisponibilité
    \item \textbf{Priorités}: Classes de requêtes avec priorités différentes
\end{itemize}

\subsubsection{Fonctionnalités Logicielles}

\begin{itemize}
    \item \textbf{Optimisation automatique}: Trouver configuration minimisant $W$ sous contraintes
    \item \textbf{Analyse de scénarios multiples}: Comparaison parallèle de configurations
    \item \textbf{Export données brutes}: CSV pour analyses statistiques avancées (R, Python)
    \item \textbf{Visualisations 3D}: Surface $W(\lambda, p)$ interactive
\end{itemize}

\subsubsection{Performance}

\begin{itemize}
    \item \textbf{Parallélisation}: Exécuter plusieurs répliques de simulation en parallèle
    \item \textbf{GPU acceleration}: Pour simulations massives (millions d'événements)
    \item \textbf{Sampling intelligent}: Réduire fréquence échantillonnage sans perte de précision
\end{itemize}
