Releases: bctboi23/CeeChess
CeeChess 1.4 - The tuning update
+150 ELO self-play (1s / move)
- Increased Futility and Reverse Futility Pruning Depths
- Tweaked LMR
- Cleaner, easier to understand code
- Researches null window first before searching full window
- Added Second Set of Killer Moves
- Added King Safety in the form of King Tropism
- Extra bonus to diagonals in line with the king
- Extra bonus to attack if enemy king is near semi-open files
- Weighted by attacker's material
- Evaluation tuned using a logistic regression over a custom constructed dataset, similar to the Texel Method
- Black box tuning was done using Simulated annealing + local search, using a pseudo-huber loss
- pseudo-huber loss was used here since there are likely outliers that would unfavorably skew the relatively simple evaluation function. This was a choice I made based on what I understood about the dataset, and made a marginal improvement to the evaluation quality as opposed to the traditional MSE loss (+10ish elo from 2000 games). If my evaluation were more complex, I might be more tempted to stay with MSE loss, as long as on-board checkmates are removed from the dataset
- Black box tuning was done using Simulated annealing + local search, using a pseudo-huber loss
- Fixed some timeout bugs
- Increased hash table stability
(95)
Gauntlet run for test ratings (1 min, 0.5sec inc), with elo centered around the v1.4 release (ratings from bayeselo):
Rank | Name | Elo | + | - | Games | Score | Oppo. | Draws |
---|---|---|---|---|---|---|---|---|
1 | Barbarossa-0.6.0 | 38 | 34 | 33 | 240 | 55% | 95 | 23% |
2 | CeeChess-v1.4 | 0 | 13 | 13 | 1664 | 65% | -13 | 26% |
3 | Barbarossa-0.5.0-win10-64 | -34 | 33 | 33 | 240 | 45% | 95 | 28% |
4 | Kingfisher.v1.1.1 | -107 | 32 | 33 | 240 | 34% | 95 | 36% |
5 | gopher_check | -146 | 34 | 35 | 238 | 29% | 95 | 26% |
6 | CeeChess 1.3.2 | -149 | 34 | 36 | 238 | 29% | 95 | 25% |
... |
Since CCRL ratings got adjusted down recently (stockfish went from 3900 CCRL to ~3630 afaik), this no longer breaks the CCRL 2400 barrier, but comparing the results here to the old ratings of Barbarossa-0.6.0(2468), Barbarossa-0.5.0(~2375ish i believe?) and the others suggests that this release would have broken that barrier. I now expect the engine to land in the range of 2300-2350, given Barbarossa-0.6.0 has a new rating of 2355
More agressive pruning
(+15 ELO)
- Increased Agressiveness of LMR
- Search less moves fully
- Increased Reverse Futility Depth
Search tuning is over for now, will be moving on to write a king safety evaluation, to hopefully make my engine play much more aggressive and sacrificial chess (while gaining elo of course).
Futility pruning + code cleanup
+5 ELO
- Reduced Razoring to depth 2
- Added Futility Pruning (to depth 6)
- if a node is marked futile, only search checks, captures, and promotions
- Rewrote LMR
- Cleaner, easier to understand code
- Precomputes LMR tables for speed (idea from Ethereal)
Elo was tested with 15"+0.3" games, expect a little more elo in longer time controls
CeeChess v1.3
(+100 ELO)
- added tapered evaluation and game phase interpolation (using the 24 value for game phase calculation)
- added new piece square tables for midgame and endgame (Lyudmils tables in the PSQT challenge)
- changed values for passed pawns in the midgame and endgame
- value the bishop pair more in the endgame
- more aggressive static null move pruning
I changed the name from SeeChess to CeeChess this release to remove the ambiguity of names, as there is already an engine named SEEchess. This release performs about ~2310 ELO according to self play, and I am currently running tests against a new suite of engines to confirm this rating increase.
Check extension fix (2200!)
(+20 ELO)
- Extends checks before qSearch (predicting less elo gain if I had a king safety evaluation).
- Fixed Null Move Pruning constraints to play better in the endgame
- More comments (to help me and others to understand the magnitude of improvements certain code added)
This should bring us over the 2200 hump! Therefore, I am making the version number v1.2 (instead of v1.1.x, as would be normal with this size of change)
More pruning!
( + 15 ELO)
- added static null move pruning (reverse futility pruning)
- cleaned up evaluation constants (added eval.h)
- corrected LMR constraints
Preparing for the move on to rewriting the evaluation. I will begin working on tapered evaluation, with new PSQTs to hopefully play better transitioning to the endgame. After that, the next plans are mobility, and king safety. Once the evaluation function is much more robust, I will feel better about adding more pruning techniques and increasing the aggressiveness of the pruning techniques I already use
Razoring Fix (Final)
(+15 ELO)
New Razoring Scheme:
- More tactically effective
- resolved bugs from old scheme
- increased razoring depth to 3 (with new margins)
Bugfix update
(+10 ELO)
- Fixed bugs in razoring scheme, and implemented safer razoring.
- Increased razoring depth to 2
- New LMR scheme
SeeChess pruning improvement release
(+80 ELO)
Heavy pruning update
Lossless Pruning:
- Mate Distance Pruning (MDP) (Only really helps in mate situations)
Lossy Pruning:
- Razoring (Directly enters into qSearch (to resolve the position) if position eval + cutoff breaks alpha)
- Simple LMR (Late Move Reductions)
SeeChess Full Prototype
(~2060 ELO)
Initial engine, with basic features. A little stronger than Vice, due to better Null Move Pruning