Skip to content

Tetrarch v2

Choose a tag to compare

@IchNukeDichWeg IchNukeDichWeg released this 31 Jul 17:50

v2 -- late move reductions. Quiet moves tried late are searched shallower
with a null window, at full depth only if one raises alpha. It is the first
feature to attack the branching factor rather than assume the ordering is
already good, and that is why it paid where two others did not.

Elo   | +35.07 +- 6.51 (95%)
SPRT  | none -- sprt.py not built yet; fixed-N campaign
Conf  | FIXED NODES 20000, Hash=256MB, classic/Teams, 111 workers
Games | N: 10000 (2500 openings x 4 rotations)   score 5503.0 (55.03%)
Dist  | 88, 12, 415, 39, 1002, 45, 681, 16, 202
Null  | -2.64 +- 6.24 on the same harness, 10000 games
Base  | vs v1
Bench | 93,846,865 perft nodes (unchanged; the bench is perft, not search)
Pins  | classic d5: 83,805 -> 17,772 search nodes (21.2%)

Screened +24.53 +- 14.19 over 2000 first. Reduction table
0.75 + log(depth)*log(move)/2.25, with LMRMinDepth and LMRMinMove exposed
so the recipe is tunable without a rebuild.

Not exact -- it can miss a line the full search would find -- which is why it
needed games rather than a node count. selftest's minimax oracle turns it off
for its comparison, since the oracle would otherwise be checking plain
alpha-beta against a search deliberately allowed to differ.

Search

  • LMR -- depth >= 3, after 3 moves, quiet moves only, never in check.
    Mean depth at 20,000 nodes: 3.73 -> 4.25 over 40 positions.

Rejected in the same window, kept dormant with their verdicts

  • History heuristic -- 16% fewer nodes at depth 7-8 and nothing at 5-6, but
    the engine reaches median depth 4 at the campaign instrument. Screening it
    there would have measured noise and returned a confident null about a feature
    that never engaged. Not screened; gate closed before spending games.
  • Principal variation search -- 118.9% of baseline nodes at depth 4, 115.3%
    at 5. It makes the tree BIGGER where this engine searches, because it pays a
    re-search whenever a later move beats alpha. Not screened; it would lose, and
    the loss would be a statement about the ordering rather than about PVS.