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
@@ -210,6 +210,36 @@ def compare_move_analysis(report, cli, case):
|
||||
report.number(where, "equity_loss", expected["equity_loss"], actual["equity_loss"])
|
||||
same_label(report, where, "skill", expected["skill"], actual["skill"],
|
||||
expected["equity_loss"], SKILL_THRESHOLDS)
|
||||
compare_analysis_ranking(report, where, expected, actual)
|
||||
|
||||
|
||||
def compare_analysis_ranking(report, where, expected, actual):
|
||||
"""Classement de l'analyse : les dix premiers coups de gnubg (le moteur
|
||||
n'en rend pas plus), au même niveau et à la même équité, à la tolérance
|
||||
près ; le meilleur coup et le coup joué y ont exactement les évaluations
|
||||
de best et played."""
|
||||
engine = actual["ranking"]
|
||||
reference = expected["ranking"][:10]
|
||||
report.same(where, "taille du classement", len(reference), len(engine))
|
||||
by_move = {m["move"]: m for m in engine}
|
||||
for m in reference:
|
||||
other = by_move.get(m["move"])
|
||||
here = "%s classement %s" % (where, m["move"])
|
||||
if other is None:
|
||||
# Un coup à égalité avec le dixième peut changer de côté.
|
||||
tied = abs(m["equity"] - reference[-1]["equity"]) <= report.tolerance
|
||||
if not tied:
|
||||
report.same(here, "présent", True, False)
|
||||
continue
|
||||
report.same(here, "ply", m["ply"], other["ply"])
|
||||
report.number(here, "equity", m["equity"], other["equity"])
|
||||
if engine:
|
||||
report.same(where, "classement, meilleur coup", actual["best"], engine[0])
|
||||
for m in engine:
|
||||
if m["move"] == actual["played"]["move"]:
|
||||
report.same(where, "classement, coup joué", actual["played"], m)
|
||||
report.same(where, "classement, rang du coup joué", actual["rank"],
|
||||
engine.index(m) + 1)
|
||||
|
||||
|
||||
def compare_cube_analysis(report, cli, case):
|
||||
|
||||
Reference in New Issue
Block a user