Aller au contenu

01 · Méthode de modélisation

Intuition

Un problème réel n'est jamais posé en langage mathématique. Il arrive sous forme de phrases, de données bruitées, d'objectifs contradictoires et de contraintes implicites.

Modéliser, c'est décider ce qu'on garde et ce qu'on jette. Un modèle n'est pas vrai ou faux — il est utile ou inutile pour la question posée. Toute la compétence tient à savoir quelles simplifications sont acceptables, et à le dire.

1. Le protocole en six étapes

Les six étapes

  1. Reformuler la question en une phrase précise et quantifiée.
  2. Poser les notations : que représente chaque symbole, dans quelle unité.
  3. Expliciter les hypothèses, y compris celles qui semblent évidentes.
  4. Écrire le modèle mathématique.
  5. Résoudre, à la main ou par l'ordinateur.
  6. Critiquer : validité, précision, coût, cas d'échec.

1.1 Reformuler

La question posée n'est presque jamais la bonne

« Combien de serveurs faut-il ? » n'est pas une question mathématique. Elle le devient quand on écrit :

« Quel est le plus petit \(n\) tel que la probabilité de saturation, sur une journée de 8 h avec un trafic poissonnien d'intensité 120 requêtes/h, reste inférieure à 1 % ? »

Le passage de la première à la seconde formulation est le travail de modélisation. Tout le reste est du calcul.

Trois questions à se poser :

  • Qu'est-ce qu'on cherche exactement — un nombre, une fonction, une décision ?
  • Avec quelle précision ? À 10 % près ou à \(10^{-6}\) ?
  • Sous quelles contraintes — temps de calcul, mémoire, données disponibles ?

1.2 Poser les notations

Chaque symbole doit être défini, avec son type et son unité.

n     : nombre de serveurs                   (entier, sans unite)
lambda: intensite du trafic                  (requetes / minute)
T     : duree d'observation                  (minutes)
X     : nombre de requetes sur [0, T]        (variable aleatoire, entier)

L'erreur d'unité est la plus coûteuse

Elle ne produit pas un résultat faux mais un résultat plausible et faux, donc indétectable. La sonde Mars Climate Orbiter a été perdue en 1999 pour une confusion livres-force / newtons.

Vérification systématique : l'équation finale doit être homogène. Si l'on ajoute des secondes à des mètres, il y a une erreur.

1.3 Expliciter les hypothèses

C'est l'étape la plus souvent bâclée, et celle qui rapporte le plus de points.

Les hypothèses à toujours interroger

Hypothèse Question à se poser
Indépendance Les événements peuvent-ils s'influencer ?
Stationnarité Le phénomène change-t-il au cours du temps ?
Homogénéité Tous les individus sont-ils comparables ?
Linéarité L'effet est-il proportionnel à la cause ?
Continuité Les grandeurs discrètes sont-elles assez nombreuses ?
Absence de mémoire Le passé influence-t-il l'avenir ?

Exemple. Modéliser un trafic web par un processus de Poisson suppose l'indépendance des arrivées et la stationnarité. La seconde est manifestement fausse — il y a un pic à midi. Le modèle reste utile pour dimensionner l'heure creuse, pas pour l'heure de pointe.

Dire cela vaut plus de points que de faire semblant de ne pas le voir.

1.4 Écrire le modèle

Trois grandes familles couvrent l'essentiel de ce qu'on rencontre au S1.

Famille Outil Chapitres
Déterministe linéaire Systèmes, matrices Algèbre 05-10
Continu Fonctions, dérivées, intégrales Analyse
Aléatoire Variables aléatoires, lois Probabilités

Le réflexe de reconnaissance

Le probleme porte sur...
├─ des quantites liees par des equations lineaires ... systeme / matrice
├─ une evolution continue ......................... fonction / integrale
├─ un comptage ou un tirage ....................... denombrement
├─ une incertitude ................................ variable aleatoire
├─ une structure de connexions .................... graphe / matrice d'adjacence
└─ un optimum a trouver ........................... derivee / optimisation

1.5 Résoudre

Analytiquement si possible, numériquement sinon.

Toujours chercher une solution exacte d'abord

Même approximative, une formule close donne :

  • un ordre de grandeur immédiat ;
  • une dépendance aux paramètres (que se passe-t-il si \(n\) double ?) ;
  • un moyen de valider le code numérique.

Un cas particulier résoluble à la main est le meilleur test unitaire qui soit.

1.6 Critiquer

C'est l'objet du chapitre 05. En résumé, trois questions :

  1. Le résultat est-il numériquement fiable ?
  2. Le calcul est-il assez rapide pour l'usage visé ?
  3. Le modèle est-il pertinent — et où cesse-t-il de l'être ?

2. La grille de compte rendu

Structure d'un compte rendu de TP noté

1. Problème (5 lignes) Question reformulée précisément, avec la précision visée.

2. Modélisation (15 lignes) Notations et unités. Hypothèses, avec leur justification et leurs limites. Équations ou lois du modèle.

3. Résolution (le code) Code commenté. Au moins un cas test dont la réponse est connue indépendamment.

4. Résultats (tableau ou figure) Valeurs obtenues, avec leur incertitude. Temps de calcul mesuré.

5. Critique (15 lignes) Précision réelle obtenue. Coût et passage à l'échelle. Au moins une limite du modèle explicitement nommée, avec ce qu'il faudrait faire pour la lever.

Les trois fautes qui coûtent le plus

  1. Donner un résultat sans incertitude. « \(\pi \approx 3{,}1416\) » est inutile sans « à \(10^{-4}\) près, sur \(10^8\) tirages ».
  2. Ne pas tester le code. Un programme qui tourne n'est pas un programme juste.
  3. Omettre la critique. C'est un tiers de l'attendu du module.

3. Erreurs de modélisation classiques

Les six pièges

Piège Exemple Symptôme
Sur-modélisation 15 paramètres pour 20 points Le modèle colle aux données mais ne prédit rien
Sous-modélisation Droite sur des données courbes Résidus structurés
Hypothèse cachée Supposer l'indépendance sans le dire Résultat faux sans qu'on sache pourquoi
Unités incohérentes Mélanger heures et minutes Résultat plausible et faux
Extrapolation Prédire hors du domaine des données Absurdités
Confondre corrélation et cause « Les glaces causent les noyades » Décision aberrante

Le test de plausibilité

Avant de rendre un résultat, posez-vous :

  • Le signe est-il correct ?
  • L'ordre de grandeur est-il crédible ? (Une probabilité de 3, une durée négative, une population de \(10^{18}\) personnes…)
  • Le cas limite fonctionne-t-il ? Que donne la formule pour \(n=1\) ? Pour \(p=0\) ? Pour \(t\to\infty\) ?

Ces trois questions prennent une minute et attrapent la majorité des erreurs.

Exemples traités

Exemple 1 — Modélisation complète d'un problème simple

« Une file d'attente à un guichet. Combien de temps attend-on ? »

1. Reformuler. Quel est le temps d'attente moyen d'un client, si les clients arrivent au rythme de \(\lambda\) par heure et que le guichetier en traite \(\mu\) par heure ?

2. Notations.

lambda : taux d'arrivee            (clients / heure)
mu     : taux de service           (clients / heure)
rho    : taux d'occupation = lambda/mu   (sans unite)
W      : temps d'attente moyen     (heures)

3. Hypothèses.

  • arrivées poissonniennes d'intensité \(\lambda\) — donc indépendantes et stationnaires ;
  • temps de service exponentiels de paramètre \(\mu\) — donc sans mémoire ;
  • un seul guichet, file d'attente infinie, service dans l'ordre d'arrivée.

Limites déjà visibles : les arrivées ne sont pas stationnaires (heures de pointe), et un client qui voit une longue file part — ce que le modèle interdit.

4. Modèle. C'est une file M/M/1. Le résultat classique donne

\[ W = \frac{\rho}{\mu(1-\rho)} \qquad\text{avec } \rho = \frac\lambda\mu < 1 \]

5. Application. \(\lambda = 20\)/h, \(\mu = 25\)/h, donc \(\rho = 0{,}8\) :

\[ W = \frac{0{,}8}{25\times0{,}2} = 0{,}16 \text{ h} = 9{,}6 \text{ minutes} \]

6. Critique.

  • Cas limite : quand \(\rho\to1\), \(W\to+\infty\) ✓ cohérent — un guichet saturé produit une file explosive.
  • Sensibilité : passer \(\mu\) de 25 à 22 fait bondir \(W\) à \(\frac{0{,}909}{22\times0{,}0909} = 0{,}455\) h \(= 27\) min. Une dégradation de 12 % du service triple l'attente.
  • Limite du modèle : la non-stationnarité rend le résultat inutilisable aux heures de pointe. Il faudrait un modèle à taux variable, ou simuler.

Ce qui fait la valeur de ce compte rendu

Ce n'est pas la formule — elle est tabulée. C'est le calcul de sensibilité (12 % → ×3) et la nomination explicite de la limite. Les deux tiennent en trois lignes et changent la note.

Exemple 2 — Un modèle qu'il faut refuser

« Les ventes de crème glacée sont corrélées aux noyades. Faut-il interdire la crème glacée ? »

Modèle naïf : régresser le nombre de noyades sur les ventes de glaces. On trouvera un \(R^2\) élevé et une pente positive significative.

Ce qui cloche : la température est une cause commune. Elle augmente à la fois les ventes de glaces et la fréquentation des plages.

Le bon modèle doit inclure la température comme variable de contrôle. Une fois qu'elle est incluse, l'effet des glaces s'effondre.

Le test à appliquer systématiquement

Devant toute corrélation, chercher : existe-t-il une variable qui pourrait causer les deux ?

S'il en existe une et qu'on ne l'a pas mesurée, la conclusion causale est indéfendable — quel que soit le \(R^2\).

Exercices

★ Exercice 1. Pour chaque situation, identifier la famille de modèle appropriée et lister au moins deux hypothèses à expliciter.

a) Prédire la consommation électrique d'un bâtiment b) Déterminer le plus court trajet dans un réseau de métro c) Estimer le nombre de bugs restants dans un logiciel d) Répartir 5 tâches sur 3 processeurs

★★ Exercice 2. Un énoncé propose : « On modélise le temps de réponse d'un serveur par une loi normale de moyenne 200 ms et d'écart-type 80 ms. »

a) Quelle est l'objection immédiate ? b) Quelle proportion de temps de réponse ce modèle prédit-il comme négatifs ? c) Proposer un modèle plus adapté et justifier.

★★ Exercice 3. « Le nombre de fautes de frappe par page d'un livre suit une loi de Poisson de paramètre 0,5. »

a) Expliciter les hypothèses de ce modèle. b) Laquelle est la plus discutable ? c) Quel test simple permettrait de la vérifier sur des données réelles ?

★★★ Exercice 4. On veut estimer le nombre total de taxis d'une ville. On en observe \(n\) au hasard, dont le plus grand numéro est \(m\).

a) Modéliser : quelle hypothèse fait-on sur la numérotation ? b) Proposer deux estimateurs du nombre total \(N\). c) Lequel est le meilleur, et selon quel critère ? d) Quelle hypothèse rend ce modèle fragile en pratique ?

C'est le « problème des chars allemands », utilisé par les Alliés en 1943 pour estimer la production de blindés à partir des numéros de série.

★★★ Exercice 5. Rédiger un compte rendu complet (les cinq sections de la grille) pour le problème suivant :

Un disque dur tombe en panne avec une probabilité de 2 % par an. Un serveur en contient 12. Combien de pannes par an, et quelle est la probabilité d'en avoir au moins deux la même année ?

★★★★ Exercice 6. Un collègue propose de dimensionner un serveur ainsi :

« Le temps de traitement moyen est de 50 ms. On reçoit 1000 requêtes par seconde. Il faut donc \(1000\times0{,}05 = 50\) processus. »

a) Quelle hypothèse implicite ce raisonnement fait-il ? b) Pourquoi 50 processus seront-ils insuffisants en pratique ? c) Quel modèle proposer, et que donne-t-il ? d) Quelle information manque-t-il pour trancher ?


Corrigés

Corrigé — Exercice 1

a) Consommation électrique. Famille : continue (série temporelle) ou statistique (régression sur température, jour de la semaine…).

Hypothèses à expliciter : stationnarité (le bâtiment n'a pas changé d'usage) ; linéarité de l'effet de la température (fausse en réalité — chauffage et climatisation créent une courbe en U).

b) Plus court trajet. Famille : graphe pondéré (algorithme de Dijkstra).

Hypothèses : les temps de trajet sont déterministes et additifs ; les correspondances ont un coût nul ou constant. Toutes deux fausses en heure de pointe.

c) Bugs restants. Famille : probabiliste (loi de Poisson, ou modèle de capture-recapture).

Hypothèses : les bugs sont détectés indépendamment ; le taux de détection est constant. La seconde est très douteuse — les bugs faciles sortent en premier.

d) Répartition de tâches. Famille : optimisation combinatoire (problème de bin packing ou d'ordonnancement).

Hypothèses : les durées sont connues à l'avance ; les tâches sont indépendantes (pas de précédence) ; les processeurs sont identiques.

Corrigé — Exercice 2

a) Objection immédiate. Une loi normale est définie sur \(\mathbb{R}\) tout entier : elle attribue une probabilité non nulle à des temps de réponse négatifs, ce qui n'a aucun sens physique.

b)

\[ z = \frac{0-200}{80} = -2{,}5 \implies P(X<0) = \Phi(-2{,}5) \approx 0{,}0062 \]

0,62 % des temps prédits sont négatifs — soit environ 6 requêtes sur 1000. Ce n'est pas négligeable.

c) Modèle plus adapté. Les temps de réponse sont :

  • positifs ;
  • asymétriques à droite (queue lourde : quelques requêtes très lentes) ;
  • de médiane inférieure à la moyenne.

Une loi log-normale (le logarithme suit une normale) ou une loi gamma conviennent bien. Pour des queues très lourdes, une loi de Pareto.

Justification empirique : sur des données réelles, on trace l'histogramme des logarithmes. S'il est approximativement symétrique et en cloche, la log-normale convient.

Corrigé — Exercice 3

a) Hypothèses.

  1. Les fautes surviennent indépendamment les unes des autres.
  2. Le taux de faute est constant d'une page à l'autre (homogénéité).
  3. Deux fautes ne peuvent pas se produire « au même endroit » (le processus est ponctuel).

b) La plus discutable : l'homogénéité.

Un livre contient des pages denses (tableaux, formules, code) et des pages aérées. Une page de code source a bien plus de risques de coquille qu'une page de dialogue.

L'indépendance est également douteuse : un relecteur fatigué laisse passer des fautes groupées.

c) Test simple : comparer moyenne et variance.

Pour une loi de Poisson, \(\mathbb{E}[X]=\operatorname{V}(X)=\lambda\). Sur un échantillon de pages, on calcule la moyenne et la variance empiriques du nombre de fautes.

  • Si \(\frac{s^2}{\bar x} \approx 1\) : compatible avec Poisson.
  • Si \(\frac{s^2}{\bar x} \gg 1\) : surdispersion — les hypothèses d'homogénéité ou d'indépendance sont violées. On passe alors à une loi binomiale négative.

C'est un test que l'on peut faire en trois lignes de code, et qui vaut beaucoup mieux qu'une affirmation non vérifiée.

Corrigé — Exercice 4

a) Hypothèse de numérotation. Les taxis sont numérotés \(1, 2, \dots, N\) sans trou et sans répétition, et l'échantillon observé est un tirage uniforme sans remise.

b) Deux estimateurs.

Estimateur 1 — le maximum. \(\hat N_1 = m\). Il est biaisé par défaut : on ne peut jamais dépasser le vrai \(N\), donc \(\mathbb{E}[\hat N_1] < N\).

Estimateur 2 — le maximum corrigé.

\[ \hat N_2 = m + \frac{m}{n} - 1 = m\left(1+\frac1n\right)-1 \]

Idée : les \(n\) taxis observés découpent \([1;N]\) en \(n+1\) intervalles de longueur moyenne \(\frac{N}{n+1}\). Il « manque » donc en moyenne un intervalle au-dessus de \(m\), d'où la correction.

c) Comparaison. \(\hat N_2\) est sans biais : \(\mathbb{E}[\hat N_2] = N\). C'est le meilleur estimateur sans biais possible (de variance minimale).

Exemple. On observe 5 taxis, de numéros \(\{12, 44, 67, 91, 103\}\).

\[ \hat N_1 = 103 \qquad \hat N_2 = 103 + \frac{103}{5}-1 = 103+20{,}6-1 = 122{,}6 \approx 123 \]

d) Fragilité du modèle. L'hypothèse de numérotation sans trou est presque toujours fausse : véhicules réformés, numéros réservés, séries parallèles.

C'est exactement ce qui s'est passé en 1943 : les Allemands ont commencé à randomiser les numéros de série précisément pour casser cette estimation. Le modèle est donc fragile face à un adversaire qui le connaît.

L'estimation historique

Pour la production de chars Panther en 1944, la méthode statistique estimait 246 chars par mois. Les archives allemandes, retrouvées après guerre, donnent 245. Les estimations du renseignement classique étaient de 1400 — cinq fois trop.

Corrigé — Exercice 5

1. Problème. Un serveur contient 12 disques, chacun tombant en panne avec probabilité \(p=0{,}02\) par an. On cherche (a) le nombre moyen de pannes par an et (b) la probabilité d'au moins deux pannes la même année.

2. Modélisation.

n = 12    : nombre de disques      (entier)
p = 0.02  : probabilite de panne annuelle d'un disque
X         : nombre de pannes dans l'annee (variable aleatoire)

Hypothèses.

  • Les pannes sont indépendantes d'un disque à l'autre.
  • La probabilité \(p\) est identique pour tous les disques.
  • On observe exactement une année.

Limite déjà visible. L'indépendance est douteuse : les disques d'un même serveur partagent l'alimentation, la température et souvent le même lot de fabrication. Une surtension ou un défaut de série les frappe ensemble.

Sous ces hypothèses, \(X\sim\mathcal{B}(12\,;0{,}02)\).

3. Résolution.

from math import comb

n, p = 12, 0.02

def P(k):
    return comb(n, k) * p**k * (1 - p)**(n - k)

esperance = n * p
p0, p1 = P(0), P(1)
p_au_moins_2 = 1 - p0 - p1

# verification : la somme des probabilites vaut 1
assert abs(sum(P(k) for k in range(n + 1)) - 1) < 1e-12
# verification independante de l'esperance
assert abs(sum(k * P(k) for k in range(n + 1)) - esperance) < 1e-12

print(f"E[X]        = {esperance:.4f}")
print(f"P(X=0)      = {p0:.4f}")
print(f"P(X=1)      = {p1:.4f}")
print(f"P(X>=2)     = {p_au_moins_2:.4f}")

4. Résultats.

Grandeur Valeur
\(\mathbb{E}[X]\) 0,24 panne/an
\(P(X=0)\) 0,7847
\(P(X=1)\) 0,1922
\(P(X\geqslant2)\) 0,0231

Soit 2,3 % de risque d'au moins deux pannes la même année.

Temps de calcul : négligeable (calcul exact, 13 termes).

5. Critique.

  • Précision. Le calcul est exact — aucune approximation. L'incertitude porte entièrement sur \(p = 0{,}02\), valeur qui provient elle-même d'une estimation constructeur souvent optimiste.
  • Sensibilité. Si \(p\) vaut en réalité 4 % (fréquent après 3 ans de service), \(P(X\geqslant2)\) passe à 8,1 % — plus du triple. Le résultat est très sensible à un paramètre mal connu.
  • Limite principale — l'indépendance. Sur un RAID 5, deux pannes simultanées détruisent les données. Or les études de terrain (Schroeder & Gibson, 2007) montrent que les pannes de disques sont fortement corrélées : la probabilité d'une seconde panne dans les heures suivant la première est plusieurs fois supérieure au taux de base.

Le modèle sous-estime donc le risque réel. Un RAID 6 (tolérant deux pannes) ou une réplication sur des lots différents est justifié — et ce n'est pas le calcul ci-dessus qui le montre, c'est sa critique.

La leçon

Le résultat de 2,3 % est correct sous les hypothèses et trompeusement rassurant en réalité. Un compte rendu qui s'arrête au tableau de résultats manque l'essentiel.

Corrigé — Exercice 6

a) Hypothèse implicite : l'absence totale de variabilité.

Le raisonnement suppose que chaque requête prend exactement 50 ms et qu'elles arrivent régulièrement, à intervalle constant de 1 ms.

C'est un modèle déterministe appliqué à un phénomène aléatoire.

b) Pourquoi 50 processus ne suffiront pas.

Les arrivées sont irrégulières : parfois 3 requêtes en 1 ms, parfois aucune pendant 5 ms. Les temps de traitement varient également.

Avec exactement 50 processus, le système fonctionne à 100 % de charge (\(\rho=1\)). Or, d'après la formule des files d'attente rappelée à l'exemple 1, le temps d'attente diverge quand \(\rho\to1\) :

\[ W = \frac{\rho}{\mu(1-\rho)} \xrightarrow[\rho\to1]{} +\infty \]

Un système dimensionné exactement à sa charge moyenne sature.

c) Modèle proposé. File M/M/c : \(c\) serveurs, arrivées poissonniennes d'intensité \(\lambda = 1000\)/s, service exponentiel de taux \(\mu = 20\)/s par processus.

Charge offerte : \(a = \frac\lambda\mu = 50\). Il faut \(c > 50\), et la formule d'Erlang C donne la probabilité d'attente en fonction de \(c\).

Ordre de grandeur usuel : viser \(\rho = \frac{a}{c} \leqslant 0{,}7\), soit

\[ c \geqslant \frac{50}{0{,}7} \approx 72 \text{ processus} \]

Il faut environ 50 % de capacité en plus que le calcul naïf.

d) Information manquante.

  1. La variabilité du temps de traitement. Si tous les traitements durent exactement 50 ms (file M/D/c au lieu de M/M/c), l'attente est deux fois plus faible et 60 processus suffiraient. Si la distribution est à queue lourde, il en faudrait bien davantage.
  2. L'objectif de service. Quel p99 vise-t-on ? 100 ms ou 1 s ? La réponse change le dimensionnement d'un facteur 2.
  3. Le profil temporel de la charge. 1000 req/s en moyenne peut cacher 3000 req/s à midi.

La formule à retenir

\(\displaystyle \text{capacité} = \frac{\text{charge moyenne}}{\text{taux d'occupation cible}}\)

avec un taux cible de 0,6 à 0,8. Dimensionner à la charge moyenne exacte garantit la saturation — c'est le résultat le plus contre-intuitif et le plus utile de la théorie des files d'attente.


Chapitre suivant : Séance type — simulation Monte-Carlo.