Moteur : classement de l'analyse d'un coup, comme gnubg de bureau
engine_analyse_move rend les dix premiers coups de la liste de l'analyse, chacun au niveau où gnubg l'a évalué, et refait d'abord l'analyse de la chance comme AnalyzeMove : son cache change les coups restés à 0 pli. Les références d'analyse gagnent le niveau de chaque coup du classement, comparé par compare.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
c42316d9d8
commit
1d21ac15d2
+21
-1
@@ -207,6 +207,10 @@ typedef struct {
|
||||
* (double_take <= double_pass) */
|
||||
} engine_cube;
|
||||
|
||||
/* Coups gardés dans le classement d'une analyse : les dix premiers, comme
|
||||
* les positions de référence (tests/reference/README.md). */
|
||||
#define ENGINE_ANALYSIS_RANKING 10
|
||||
|
||||
/* Analyse d'un coup joué, comme l'analyse de partie de gnubg. */
|
||||
typedef struct {
|
||||
int move_count; /* nombre de coups légaux (0 : aucun coup
|
||||
@@ -218,6 +222,14 @@ typedef struct {
|
||||
float equity_loss; /* équité du coup joué moins celle du meilleur :
|
||||
* 0 ou négative */
|
||||
engine_skill skill; /* appréciation de gnubg pour cette perte */
|
||||
/* Le classement de l'analyse, du meilleur au moins bon : les premiers
|
||||
* coups de la liste que gnubg garde pour l'analyse de partie (ce que
|
||||
* montre son panneau d'analyse), chacun au niveau où gnubg l'a
|
||||
* évalué. Le meilleur coup et le coup joué y ont les mêmes évaluations
|
||||
* que best et played ; le coup joué n'y figure que s'il est parmi les
|
||||
* premiers. */
|
||||
engine_move ranking[ENGINE_ANALYSIS_RANKING];
|
||||
int ranking_count;
|
||||
} engine_move_analysis;
|
||||
|
||||
/* Analyse d'une décision de videau, comme l'analyse de partie de gnubg. */
|
||||
@@ -452,7 +464,15 @@ engine_luck_rating engine_luck_rating_of(float luck);
|
||||
* Analyse le coup joué par le joueur au trait avec le jet die1, die2, au
|
||||
* niveau ply, comme l'analyse de partie de gnubg (AnalyzeMove dans
|
||||
* analysis.c : FindnSaveBestMoves avec le coup joué, seuil « douteux »,
|
||||
* filtre « Normal », sans RefreshMoveList). played_position_id est la
|
||||
* filtre « Normal », sans RefreshMoveList), classement compris.
|
||||
*
|
||||
* Niveaux : gnubg n'évalue au niveau ply que les coups retenus par ses
|
||||
* filtres ; les autres gardent l'évaluation d'un niveau inférieur (champ
|
||||
* ply de chaque coup, même convention que gnubg de bureau : 0 = statique).
|
||||
* Si un seul coup passe le filtre du niveau ply - 1, gnubg s'arrête là, et
|
||||
* tout le classement reste à ce niveau, sauf quand le coup joué est une
|
||||
* erreur (écart au meilleur supérieur au seuil « douteux ») : le meilleur
|
||||
* coup et le coup joué sont alors réévalués au niveau ply. played_position_id est la
|
||||
* position après le coup, vue du joueur qui vient de le jouer (champ
|
||||
* position_id d'engine_move). ENGINE_ERROR_MOVE si ce n'est pas un coup
|
||||
* légal ; si aucun coup n'est possible, move_count vaut 0.
|
||||
|
||||
Reference in New Issue
Block a user