diff options
| author | Scott Gasch <[email protected]> | 2026-10-24 09:07:03 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2026-10-24 09:07:03 -0700 |
| commit | 5f901d737b17c5f99b6e456d6c0c7d5e3c093dc4 (patch) | |
| tree | 6601dadbd36c8f45991c5dd821a3dbb2059baafe /src/chess.h | |
| parent | 69525eb2f42ea9cca8255f6cc3b85e6b1312fd05 (diff) | |
More aggressive move reductions; Wilson bound overrides static signal when available
SPRT playtest (2000 games, sd/depth matched): -535 =875 +590, score=0.514,
llr=+1.04 (floated around +1.0 the whole run, never went negative) toward
H1=+2.94. Not a confirmed win, but searches meaningfully deeper (avg depth
14.35 vs 13.50, EBF 3.131 vs 3.305) at no measurable strength cost -- worth
banking and continuing to accumulate games against.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
Diffstat (limited to 'src/chess.h')
| -rwxr-xr-x | src/chess.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/chess.h b/src/chess.h index 189e0a4..05052c6 100755 --- a/src/chess.h +++ b/src/chess.h @@ -1187,6 +1187,18 @@ typedef struct _COUNTERS UINT64 u64LeftoverTries; // leftover (sub-GOOD_MOVE) move tried UINT64 u64LeftoverAlpha; // ...raised alpha (didn't fail high) UINT64 u64LeftoverFH; // ...failed high +#ifdef HASHCAP_COLLECTION + // 2026-10-23, one-off measurement: P(leftover move fails high | + // hash move at this node was a capture, node type guess). See + // GNUmakefile's HASHCAP_COLLECTION comment for what's being + // measured and why -- not a permanent production signal, this + // is purely to find out whether IS_CAPTURE(mvHash) (optionally + // && eNodeType==NODE_CUT) is worth baking into the joint table + // as a real axis before building anything around it. + // Indexed [fHashMoveIsCapture][eNodeType==NODE_CUT]. + UINT64 u64HashCapTries[2][2]; + UINT64 u64HashCapFH[2][2]; +#endif UINT64 u64CMEvidenceTries[CM_EVIDENCE_BUCKETS]; UINT64 u64CMEvidenceFH[CM_EVIDENCE_BUCKETS]; UINT64 u64HangEstimateTries[HANG_CP_BUCKETS]; @@ -1759,6 +1771,16 @@ typedef struct _PLY_INFO MOVE mvBest; MOVE PV[MAX_PLY_PER_SEARCH]; + // 2026-10-23, one-off diagnostic support: was the hash move at + // THIS node a capture/promotion? Set once per node, right after + // mvHash is established (search.c), read back by SearchOneMove + // (searchsup.c) to bucket the HASHCAP_COLLECTION measurement -- + // see that macro's own comment (GNUmakefile) for what it's + // measuring and why. FALSE (not just unset) whenever there was no + // hash move at all, same as IS_CAPTURE_OR_PROMOTION on a null move + // would read. + FLAG fHashMoveIsCapture; + // Stamped with (pos->u64NonPawnSig ^ pos->u64PawnSig) the instant a // full (not lazy/super-lazy) Eval() call finishes for the position // currently sitting at this ply -- see Eval()'s own comment near @@ -2229,6 +2251,10 @@ typedef struct _GAME_OPTIONS UINT64 u64LeftoverTries; UINT64 u64LeftoverAlpha; UINT64 u64LeftoverFH; +#ifdef HASHCAP_COLLECTION + UINT64 u64HashCapTries[2][2]; + UINT64 u64HashCapFH[2][2]; +#endif UINT64 u64CMEvidenceTries[CM_EVIDENCE_BUCKETS]; UINT64 u64CMEvidenceFH[CM_EVIDENCE_BUCKETS]; UINT64 u64HangEstimateTries[HANG_CP_BUCKETS]; @@ -4338,6 +4364,12 @@ extern SCORE g_iLMRQuietReduction[MAX_PLY_PER_SEARCH + 1][LMR_TABLE_MAX_MOVES + void InitializeLMRTable(void); +void +InitializeWilsonBoundTable(void); + +ULONG +GetMoveFailHighWilsonUpperBoundThousandths(MOVE mv); + FLAG CanWeReduceOrPruneMove(IN SEARCHER_THREAD_CONTEXT *ctx, IN MOVE mv, |
