Thanks for the folks who pointed out the name I chose at the time was already taken by a well known chess related library, so I went back to drawing board and settled on the name Eques, Latin for knight. I've taken many years of Latin, and the knight is my favorite piece, so it seemed like a fitting name. And hopefully it's not taken!
In those past few weeks, development has gone very well, and I'm pleased with my progress.
The most interesting challenge so far has been figuring out how to develop the piece-square table values. Currently Eques contains just one set of tables for each piece, so no tapered evaluation.
The strategy I ended up settling on was to initialize the tables with the standard values for each piece (100 cp for pawns, 300 cp for knights, etc.) and add or subtract a number uniformly chosen in the range [-50, 50]. These initial table values allowed the self-play games I generated to be interesting enough to use for tuning. I played about 60k games with this version, and used the games to tune the next set of piece-square tables. I repeated this process for a few iterations and actually ended up getting decently solid values.
I'm not convinced I've squeezed as much Elo as I can out of iterative tuning process, but I'll continue experimenting with the process. And I'm not sure how much effort I want to invest into tuning before I switch to tapered eval, since I can tell part of the reason the tables aren't optimal is because they're playing double duty for the middle/endgame. For example, here's the king PSQT:
Code: Select all
{
// King PST
1, 0, 0, 1, 2, 1, -1, 0,
2, 6, 6, 4, 1, 7, 12, -1,
4, 18, 18, 13, 11, 14, 17, 0,
1, 16, 17, 17, 20, 11, 16, -5,
-4, 2, 12, 7, 10, 6, 1, -5,
-4, 5, 4, 2, -1, -3, 1, -16,
-12, -12, -2, -15, -17, -10, -1, -4,
-23, -9, -14, -34, -14, -27, -1, -14,
}
From my preliminary testing it's ~1700 Elo, and given the current feature list (standard negamax + alpha/beta + qsearch, MVV-LVA and PV move ordering, check extensions, and the single set of piece square tables for the middle and endgame), I'm pretty happy with the performance. I did some more testing yesterday and this current version of Eques was convincingly beating Blunder 4.0.0 (120 Elo +/- 25 Elo after ~150 games), and Blunder 4.0.0 is rated 1621 on the CCRL.
Of course these results aren't completely decisive, but I'm satisfied enough with them to be releasing the first version, 1.0.0, in the next few days.