Cahier de vérification

Chaque chiffre avancé, sa méthode, son script, son contrôle — et les trois conclusions que le calcul a renversées.
Objet de ce cahier. Chaque chiffre avancé dans le dossier, la méthode qui l'a produit, le script qui le calcule et le contrôle qui a été passé. Y compris — et surtout — les trois conclusions que le calcul a renversées. Un dossier qui présente des résultats sans montrer ses vérifications se lit comme une plaquette.

1. Les trois conclusions renversées

Annoncé puis démenti

« Un camion-pompe sur un sous-passage vaut plus que toute autre action »

Affirmé à partir de la seule structure du graphe, après avoir constaté que couper les six franchissements ferroviaires à la main sépare le nord du sud. Faux. Le balayage des 463 emplacements donne aux six ouvrages un gain de zéro personne, aux rangs 159 à 210, et cela sous trois variantes successives de modèle. Deux choses avaient été manquées : la crue ne coupe jamais les six franchissements — les trois ponts tiennent — et les dix-huit abris sont répartis des deux côtés du faisceau, si bien qu'aucun civil n'a besoin de traverser. Un résultat de connectivité avait été présenté comme un résultat de sauvetage.

Corrigé en cours de route

Le réseau piéton et le réseau véhicule étaient confondus

Un piéton est arrêté par 30 cm d'eau, un poids lourd passe jusqu'à 50. Tant que les deux étaient traités comme un seul graphe, le nombre de personnes coupées était sous-estimé et les conclusions sur le corridor mélangeaient deux questions distinctes.

Corrigé deux fois

Un sous-passage ne se noie pas comme son hexagone

Premier calcul : gain nul pour les ouvrages — mais parce que l'emprise ferroviaire est le point haut de la carte, si bien qu'ils ne pouvaient pas se noyer. Deuxième tentative : un décalage de classe constant, qui rendait un sous-passage sec infranchissable. Troisième : un facteur multiplicatif sur la lame (×3,5 pour un sous-passage, ×0,4 pour un pont), qui traite correctement le cas sec. Les trois variantes donnent le même résultat sur les ouvrages, ce qui rend la conclusion du §1 robuste plutôt qu'accidentelle.

2. Les unités de la Table 2 de l'article

Affirmation

Les valeurs de la Table 2 sont en mm par minute, alors que l'article ne l'indique nulle part.

Méthode

Sommation de chaque colonne, multiplication par la durée d'un tour, comparaison à l'événement réel que les auteurs déclarent simuler.

Contrôle

P (ans)somme des 18 tours× 10 min ratio à P=11 + 0,9·log Pécart
0,54,2342,3 mm0,71450,7291−2,0 %
15,9359,3 mm1,00001,00000,0 %
27,6076,0 mm1,28231,2709+0,9 %
38,5985,9 mm1,44891,4294+1,4 %
59,8398,3 mm1,65911,6291+1,8 %
Double confirmation. La colonne quinquennale donne 98,3 mm sur trois heures, ce qui recolle à l'événement du 10 août 2011 à Harbin — « plus de 100 mm » — que les auteurs déclarent simuler. Et les rapports entre colonnes suivent la loi 1 + 0,9·log₁₀(P) de leur propre formule d'intensité à moins de 2 %. Interprétées en millimètres par tour, ces valeurs donneraient 9,8 mm au total : physiquement absurde. Toute réimplémentation qui rate ce point se trompe d'un facteur 10.

Deux découvertes annexes

03_moteur_alea.py --check-table2

3. Les scores publiés

Affirmation

Les équations (1) et (2) de l'article sont corrompues, et les scores publiés ne se reproduisent pas depuis les tables.

Contrôle

Ligne de l'articlet départt attenduh calculépublié
Météo — alerte aux résidents234 0,750,75concorde
Police — contrôle du trafic875 0,800,88écart
Police armée — consolidation16144 0,500,60écart
Assainissement26255 0,800,83interverti ?
Propagande20216 0,830,80interverti ?
Ce qui est sain, en revanche. Les vingt poids AHP somment exactement à 1,000 et la somme pondérée des scores moyens donne 0,9640, soit le 96,40 publié. Le problème est en amont, au niveau des scores élémentaires — pas dans l'agrégation.

4. La géométrie du pavage

ContrôleAttenduMesuré
Surface d'un hexagone de 260 m58 543,317 m²58 543,317 m²
Recouvrement entre cellules0 %0,000000 %
Trous dans le pavage06,2 × 10⁻¹⁰ m² au total
Distance entre voisins, sur 802 paires260 m0 écart > 1 m

Les trous détectés représentent 7 × 10⁻¹⁵ % de la grille : du bruit de virgule flottante, pas un défaut de maille. 01_build_hexgrid.py

5. Le plateau de l'article, mesuré sur ses figures

GrandeurMéthodeRésultat
Orientation de la mailleautocorrélation du réseau, rapport des pas vertical et horizontal 0,842 contre 0,866 théorique → pointy-top
Nombre de cellulescomposantes connexes du complémentaire du réseau vert 4 453 comptées
Pas de la mailleplus proches voisins entre centroïdes11,3 px
Emprise4 453 × 5,854 ha~260 km², env. 23 × 11 km

Le comptage est un plancher — des cellules sont masquées par les pions. L'estimation par le pas de maille monte à ~5 600. Ordre de grandeur retenu : 4 500 à 5 600 hexagones.

6. Le moteur d'aléa

Calage

P (ans)cumullame max hexagones coupéspersonnes coupées1re coupure
159,3 mm47 cm312 595T13
276,2 mm68 cm21411 458T12
386,1 mm83 cm33716 969T11
598,6 mm98 cm51224 453T11

Sensibilité

Balayage de la capacité du réseau, averse quinquennale : de 14 à 30 mm/h, la part du territoire au-dessus de 30 cm passe de 49 % à 15 %. Balayage du coefficient de routage : de 0,10 à 0,40, elle passe de 24,7 % à 27,2 %.

La capacité du réseau domine tout, le routage ne change presque rien. C'est la justification chiffrée du niveau de fidélité retenu : inutile de raffiner l'hydraulique.

Contradiction avec l'article

Les auteurs affirment un drainage complet au dix-huitième tour. Le moteur donne le tour 18 comme maximum de la crise — 63 % du territoire actif au-dessus de 15 cm, pointe à 87 cm — et laisse des cuvettes fermées à 48 cm au tour 36. La gravité ne les vide pas.

7. Le balayage des emplacements de pompage

Méthode

Pour chacun des 457 hexagones atteignant la classe d'eau bloquante, plus les six ouvrages : recalcul complet de la carte d'accessibilité avec un camion-pompe posé là, et différence de population coupée. Puis sélection gloutonne des six meilleurs emplacements simultanés.

Résultat

RangHexagoneTissuPersonnes sauvées
14206barres danwei+574
21909barres danwei+410
32308vieille ville+358
4 à 7—barres danwei+328
8 à 14—village urbain+296
159 à 210les six ouvrages ferroviaires ponts et sous-passages0

113 emplacements sur 463 donnent un gain non nul. Six camions bien placés sauvent 2 200 personnes sur 24 453, soit 9,0 %. Modeste, et honnête : le pompage ne renverse pas une crue, il préserve trois ou quatre passages.

8. L'équilibrage du jeu

Méthode

Parties automatisées sous jsdom, sept stratégies × trois sévérités, en pilotant l'état du jeu directement plutôt qu'en simulant des clics.

Résultat, barème à trois termes

Stratégierappelprécisionsuperflusnote
Averse biennale
Tout alerter au tour 188 %34 %21 5201 %
Ciblage serré au tour 187 %41 %15 31425 %
Ciblage parfait, oracle100 %100 %0100 %
Averse quinquennale
Tout alerter au tour 180 %63 %12 11856 %
Ciblage serré au tour 174 %71 %7 47459 %
Alerter au tour 54 %6 %16 300−28 %
Ne rien faire0 %0 %0−5 %
Ce que ce tableau valide. Aucune stratégie ne domine : le ciblage serré gagne largement sur une averse faible et perd sur une forte. La bonne largeur d'alerte dépend d'une sévérité que le joueur ne peut pas encore connaître, et le seul moyen de trancher — le bulletin — arrive après la fenêtre utile. C'est la condition pour que le jeu ait un objet.
Ce que ce tableau a corrigé. Au barème global de la première version, « tout alerter au tour 1 » plafonnait à 78 % sans contrepartie et rendait la décision inutile. C'est cette mesure qui a imposé le barème à trois termes.

9. La planche

ContrôleRésultat
Composantes connexes du réseau ouvert1
Hexagones actifs isolés0
Distance piétonne à l'abrimédiane 4, 90ᵉ percentile 6, maximum 9
Population totale379 845
Non abritables41 791, soit 11,0 %
Capacité d'abri32 400, soit 78 % du besoin
Liaisons3 553, dont 870 barrières et 24 arêtes d'ouvrage
Un résultat non anticipé. Le placement des abris pèse plus que l'hydrologie. Sur l'ancienne grille sans réseau, 37 216 personnes étaient coupées ; sur la planche réelle, 24 453 pour la même averse. L'écart ne vient pas de l'eau mais de dix-huit sites placés par k-centres sur le réseau. C'est une décision de temps de paix.

10. Contrôles logiciels

ObjetContrôleRésultat
Pages HTML interactivesexécution sous jsdom, capture des erreursaucune erreur
Simulateur de décisionles cinq préréglages reproduisent le tableau de calageexact
Gestes tactilespincement progressif, pinceau au doigt, mode mainconformes
Mise en place des pompesen route → mise en place → en posteun tour plein
Déplacement d'unitétrajet, contournement, blocage sur objectif inatteignableconformes
Un défaut trouvé par ce contrôle. Le premier simulateur ne réagissait pas du tout : une constante nommée top entrait en collision avec window.top, propriété native en lecture seule, ce qui tuait le script entier au chargement. La page s'affichait, rien ne fonctionnait. C'est le genre de panne qu'une relecture ne trouve pas et qu'une exécution automatisée trouve en une seconde.

11. Le calage de la situation de départ

Méthode

Répartition de la population résidentielle selon l'heure — part en déplacement, au travail, à l'école — puis parties automatisées sous jsdom, quatre stratégies × deux situations.

Situationà mettre à l'abrialerte générale T1 ciblage serré T1ciblage parfait
3 h, nuit48 10072 % de rappel 57 %100 %
8 h, pointe122 900 24 %42 %49 %
Deux résultats à retenir. L'ordre des stratégies s'inverse entre la nuit et l'heure de pointe : ce ne sont pas deux difficultés d'un même jeu, ce sont deux problèmes. Et même le ciblage parfait plafonne à 49 % en pointe, parce que la capacité d'hébergement devient le facteur limitant absolu — 32 400 places pour plus de 66 000 personnes menacées.

12. Un défaut trouvé par le test, et non par la relecture

La phase de pronostic alertait au lieu de désigner. Le joueur croyait marquer sa prédiction ; il donnait en réalité des ordres d'évacuation. Pire : un premier correctif avait été écrit et déclaré appliqué sans vérification — la fonction visée n'avait pas changé d'une ligne, la substitution ayant échoué en silence sur une différence d'espaces.

Le test qui l'a révélé

1 clic  -> pronostic 0 | alerte 7      (avant correction)
1 clic  -> pronostic 7 | alerte 0      (après)
glisser -> pronostic 25 | alerte 0
budget d'ordres : 3 sur 3, intact
Leçon de méthode. Une substitution de texte qui échoue sans bruit est plus dangereuse qu'une erreur qui plante : elle laisse croire que le correctif est en place. Tous les remplacements sont désormais suivis d'une assertion, et tout correctif d'interface est vérifié par une exécution automatisée qui rejoue le geste de l'utilisateur.

13. Limites de validité

  1. La planche est une reconstruction plausible, pas un relevé. Aucune rue n'est à sa vraie place. Le modèle numérique de terrain est synthétique.
  2. La population est reconstruite à partir des typologies de tissu, et calée sur un total plausible, pas sur un recensement à l'hexagone.
  3. Les abris sont placés par algorithme — k-centres sur le réseau — et non relevés.
  4. Les stations de pompage sont posées aux points bas raccordés : l'article ne publie pas leur emplacement et OpenStreetMap les couvre mal en Chine.
  5. Le comportement des résidents repose sur des taux plausibles, non calibrés sur des retours d'expérience d'évacuation réels.
Ce qui est robuste malgré tout. Les structures — la fenêtre d'évacuation, la hiérarchie des leviers, l'écart entre carte des eaux et carte d'accessibilité, la domination du placement des abris — se retrouvent sous toutes les variantes de modèle testées. Les valeurs absolues ne sont pas des prévisions pour Daoli et ne doivent pas être citées comme telles.