♟️ Chess Evaluation Optimizer

A depth-2 minimax bot plays real chess, scoring positions with material + piece-square tables (the classic Simplified Evaluation), so it develops pieces and actually delivers checkmates. HumpDay's optimisers tune 8 numbers — the 4 piece values plus a positional "emphasis" for each — to beat a bot using the standard evaluation. Each game starts from a few random opening moves, so the win rate is a noisy sample; train on too few games and the optimiser overfits, which we expose by scoring on held-out games.

🧠 Human Raphson

Set all 8 by hand — piece values and how hard each piece weights its piece-square table — then play the suite.

Algorithm

n=8 search. Runs synchronously — the page pauses while it thinks. Fewer games = faster, noisier → more overfitting.

In-sample win %
Out-of-sample win %
Overfit gap
Candidates tried0
Values N/B/R/Q
PST scales N/B/R/Q

Leaderboard (this session)

Sorted by out-of-sample win rate — the honest number. Watch the gap to in-sample grow when you train on few games.

AlgorithmOut %In %CandsValues · scales (N/B/R/Q)
— no runs yet —

What's happening

The bot is a self-contained, perft-verified chess engine running a depth-2 alpha-beta minimax. Its evaluation is material plus piece-square tables — per-square bonuses that make knights seek the centre, pawns advance, and the king stay tucked away. The optimiser tunes 8 numbers: the four piece values (knight, bishop, rook, queen; pawn fixed at 1) and a positional scale for each — how strongly that piece weights its table versus raw material.

Every game is a complete game — to checkmate, stalemate, threefold repetition, or the 50-move rule — played from the standard start but with its first few moves chosen at random, so no two games are identical. A candidate's score is its win rate (win 1, draw ½) over a handful of those random games against a bot using the standard evaluation. Because that's a small noisy sample, the optimiser overfits: with only 2–4 training games it finds values that crush the standard bot on those games, then sag on games it never saw. After the search we re-score the best values on a held-out set; the in-sample minus out-of-sample gap is the overfitting. Raise "games per candidate" and the gap shrinks — the universal sample-size lesson of noisy black-box tuning.

The right-hand bars show the tuned values and positional scales; green ticks mark the standard evaluation (N 3.2, B 3.3, R 5, Q 9; scales 1). After a run the board replays the best bot (White) vs the standard bot.


Vanilla-JS engine, full legal rules, validated with perft. Piece-square tables from the Simplified Evaluation Function. Depth-2 keeps it inside a browser; deeper search would change which values win.

🌱 Save the Planet

If your hyper-parameter searches are heating the Earth, drop this in Cursor or Claude:

Read https://raw.githubusercontent.com/microprediction/humpday/main/SKILL.md
and create a project skill from it.
View SKILL.md →