Moteur pour l'analyse et les niveaux (étape 1a) #32
@@ -57,4 +57,40 @@ chemins explicites ; ne pas pousser, pas de MR.
|
||||
|
||||
## Résultat
|
||||
|
||||
À remplir à la clôture.
|
||||
Réalisé le 2026-11-03, branche `moteur-analyse`. Critères tenus : nouvelles
|
||||
commandes d'`engine-cli` en JSON, références concordantes en natif et en
|
||||
WebAssembly, `make lint` et `make test` au vert.
|
||||
|
||||
- **Niveaux** : les neuf réglages prédéfinis de gnubg 1.08 (`aecSettings`) :
|
||||
`beginner`, `casual`, `intermediate`, `advanced` (0 pli, bruit 0,06 / 0,05 /
|
||||
0,04 / 0,015, déterministe), puis `0ply` à `4ply` sans bruit (anciens noms
|
||||
gnubg : « expert » = 0 pli, « world class » = 2 plis). Coup choisi comme
|
||||
l'ordinateur de gnubg (`ComputerTurn` : sans analyse, puis
|
||||
`RefreshMoveList`). `engine.h` (`engine_level_*`), `engine-cli --level` et
|
||||
`levels`, `Engine.levelMove` et `levelCubeDecision`.
|
||||
- **Analyses** : `engine_analyse_move` (comme `AnalyzeMove` : coup joué
|
||||
évalué au niveau le plus profond, rang, perte, appréciation),
|
||||
`engine_analyse_cube` (pas de double, double, prendre, passer ; pertes de
|
||||
`AnalyzeMove`), `engine_luck_of` (portage de `LuckNormal` et `LuckFirst`
|
||||
d'`analysis.c`, fichier non repris dans `engine/gnubg/`). Commandes
|
||||
`analysemove`, `analysecube`, `luck` ; `Engine.analyseMove`, `analyseCube`,
|
||||
`luck`.
|
||||
- **Seuils** : ceux de gnubg, `gnubg.c` : appréciation 0,03 / 0,06 / 0,12
|
||||
(et non 0,04 / 0,08 / 0,16 comme proposé dans `docs/etape-1.md`) ; chance
|
||||
0,3 / 0,6. Constantes dans `engine.h` et `SKILL_THRESHOLDS`,
|
||||
`LUCK_THRESHOLDS` dans `engine.ts`, vérifiées égales par un test.
|
||||
- **Références** : `tests/reference/analyses.json` (16 coups joués, 14
|
||||
décisions de videau, 7 cas de niveaux), résultats dans `analysis/`, produits
|
||||
par l'analyse de partie de gnubg de bureau (« analyse game ») ; comparés par
|
||||
`compare.py`. Écart maximal 1,64e-3 (`move-jacoby`, 2 plis), tolérance
|
||||
inchangée (0,002).
|
||||
- **Écart au plan, décision à valider** : le moteur vide le cache
|
||||
d'évaluation de gnubg à chaque calcul. Une recherche à 2 plis avec élagage
|
||||
y laisse des évaluations à 0 pli des réseaux d'élagage, que les calculs à
|
||||
0 pli suivants reprennent (même défaut dans gnubg de bureau : jusqu'à
|
||||
2,5e-2 d'écart sur la chance). Coût : environ 3 ms par appel sur le PC.
|
||||
- **Mesure** (`make bench`, Node 18, i5-2450M) : analyse du coup joué à
|
||||
2 plis, médiane 76 ms, maximum 451 ms (`opening-21`) ; seuil 3 s. Aussi
|
||||
dans `bench.html` pour le téléphone.
|
||||
- **Glossaire** : Niveau de jeu (`Level`), Appréciation (`Skill`), Chance
|
||||
(`Luck`).
|
||||
|
||||
Reference in New Issue
Block a user