Certains liens materiel peuvent etre affilies, sans surcout. Prix et disponibilites a verifier sur le site marchand.

← Blog OutilsIA

Les 3 patterns qui gagnent au Dragon — extraits de 5000 parties IA

Par — passionné IA, développeur (Python/FastAPI), tests sur banc réel

Transparence affiliés. Cet article contient des liens affiliés Amazon. En achetant via ces liens, OutilsIA peut percevoir une commission, sans surcoût pour vous. Nos recommandations restent éditorialement indépendantes — aucun constructeur ne sponsorise ce contenu. Voir mentions légales.
22 avril 2026 · OutilsIA.fr · ~7 min de lecture · Article 8 de la série Dragon Labyrinth

On a logué 5000 parties Oracle-X1 sur Dragon Labyrinth. Puis on a fait tourner un n-gram miner sur les séquences de mouvements. Le résultat est plus brutal que prévu : les mouvements répétés gagnent, attendre tue. Une leçon universelle pour les agents en observabilité partielle.

Le setup

Pour chaque partie loguée, on enregistre la séquence des mouvements du chevalier : up, down, left, right, pass. Sur 5000 parties, ça donne environ 400 000 mouvements en tout, répartis par cluster de labyrinthe (voir l'article précédent sur les 8 clusters topologiques).

On compte tous les trigrammes (triplets de mouvements consécutifs) et on mesure leur win rate : proportion de fois où ce triplet apparaît dans une partie gagnante vs perdante. Seuils : trigramme doit apparaître au moins 5 fois pour être comptabilisé.

Top 5 des patterns qui gagnent

TrigrammeWin rateObservations
up → up → up29 %939
left → left → left28 %582
up → left → left31 %198
up → up → left24 %887
down → down → left21 %1150

Baseline Oracle-X1 : 14 % WR sur l'ensemble. Ces patterns gagnent 1.5× à 2× la moyenne. Ce n'est pas subtil — c'est deux fois plus.

29 % WR — foncer tout droit, 3 fois de suite

Top 3 des patterns qui tuent

TrigrammeWin rateObservations
down → pass → right0 %20
down → up → down0 %21
left → down → pass0 %10
pass → left → left0 %8
right → up → pass0 %8
Deux patterns universellement mortels : tout trigramme contenant pass, et les oscillations down-up-down ou left-right-left. 0 victoire sur des dizaines d'observations. Le chevalier qui hésite ou attend meurt.
0 % WR — hésiter et changer de direction

Pourquoi les patterns répétés gagnent

Deux explications coexistent :

Le pass est particulièrement catastrophique parce qu'il donne un tour au dragon sans rien accomplir. Le dragon se rapproche. Le chevalier n'a gagné que du temps — qu'il n'a pas.

Différence entre clusters de labyrinthes

Tous les clusters ne se ressemblent pas. Le cluster 3 (labyrinthes denses, trésor proche du camp) a des patterns top à 30-32 % WR. Le cluster 6 (très fragmenté, dead-ends) plafonne à 8-10 % WR sur les mêmes patterns.

ClusterTopologieWR baselineMeilleur patternWR pattern
0Ouvert, trésor loin~20 %up-up-up20 %
1Modéré, ouvert~29 %up-up-up29 %
3Dense, trésor proche~25 %up-left-left32 %
6Fragmenté, dead-ends~8 %down-left-down10 %

L'environnement domine la tactique. Même les meilleurs patterns ne sauvent pas un agent dans un labyrinthe mal foutu. Réciproquement, les mauvais patterns (avec pass) sont universellement mortels — aucun cluster ne les rend viables.

La leçon qui dépasse le Dragon

Persévérance directionnelle > tactique fine.

Un agent qui s'engage dans une direction et la tient 3 coups de suite gagne 2× plus qu'un agent qui hésite ou attend. Ce résultat n'est pas spécifique à Dragon — il se retrouve dans tout POMDP avec un adversaire qui avance pendant que vous réfléchissez.

Applications immédiates :

Et maintenant ? Intégrer ces patterns dans Oracle-X1

Maintenant qu'on connaît les patterns gagnants, on peut biaiser Oracle-X1 pour les privilégier :

Hypothèse : Oracle-X3 devrait gagner 2-4 points de WR supplémentaires. Si l'ensemble X1+X2+X3 se comporte comme X1+X2 (21.5 % en ensemble), on pourrait atteindre 25-28 % WR — largement au-dessus du plafond humain expert.

Reproduire l'analyse

Le code est dans le repo Dragon Labyrinth. pattern_miner.py prend en entrée le log des parties (dlb_games_log.jsonl) et les clusters (wiki_clusters.json), et sort wiki_patterns.json. Environ 30 secondes sur un CPU moyen pour 5000 parties.

Formule du score :

score = win_rate × sqrt(total_observations)

C'est un compromis entre qualité (win rate) et robustesse statistique (nombre d'observations). Un pattern avec 80 % WR sur 3 observations passe loin derrière un pattern à 25 % WR sur 1000 observations.

Hardware pour scaler à 50 000 parties

CPU multi-core
Ryzen 9 7950X
16 cœurs = 16 parties Oracle-X1 en parallèle, logging inclus.
GPU brute force
RTX 4080 Super 16 Go
Scaler à 50K parties = 10 minutes en CUDA.
Stockage
SSD NVMe 4 To
50K parties avec trajectoires complètes = ~8 Go de logs.
Théorie
Livres POMDP & théorie des jeux
Fondements pour comprendre pourquoi persévérer bat hésiter.

Verdict

Le pass est mortel à 0 % WR. Les mouvements répétés gagnent 2× la moyenne. Sur Dragon Labyrinth comme dans beaucoup de POMDP avec adversaire actif, la persévérance directionnelle bat la tactique fine. Oracle-X1 à 14 % peut probablement passer à 16-18 % en intégrant ces patterns comme biais explicite.

FAQ

Pourquoi les n-grammes de taille 3 et pas 2 ou 4 ?

On a testé n=2 : signal trop bruité (beaucoup de patterns communs, peu différenciants). n=4 : pas assez d'occurrences par pattern unique pour avoir de la significativité. n=3 est le sweet spot : assez riche pour capturer des tactiques cohérentes, assez fréquent pour être fiable.

Est-ce qu'un humain expert utilise ces patterns ?

Informellement oui. Observé sur 30 parties jouées par un humain expert : proportion de pass proche de 0, streaks de 3+ mouvements dans la même direction fréquents. L'intuition humaine converge naturellement vers ce que les données prouvent.

Le pattern miner marche-t-il sur Pac-Man ?

Oui. On va l'appliquer à Pac-Man Symmetric dès qu'on aura logué 5000 parties. Hypothèse : les patterns gagnants seront probablement "rester mobile" (up-up-up, left-left-left) et les patterns perdants "oscillation" et "longue pause en intersection".

Peut-on reproduire le résultat ?

Oui, le code pattern_miner.py est minimal (87 lignes) et les 5000 parties d'entraînement sont reproductibles avec les seeds 0 à 4999. Lancez python3 pattern_miner.py dlb_games_log.jsonl wiki_clusters.json wiki_patterns.json 3.

Articles liés de la série

Publié le 22 avril 2026 par OutilsIA. Source : wiki_patterns.json (5000 parties Oracle-X1, 8 clusters k-means, ~400 000 mouvements). Code : pattern_miner.py, 87 lignes.