Yesterday, I got staged move generation to work for the first time! The previous attempts that I have made, were all centered around the following stages:
- Hash move, if one is found.
- Generation and scoring of captures.
- Good and equal captures.
- Generation and scoring of quiets.
- Quiets
- Bad captures
Now, this time I decided to do something similar to Erik Madsen (MadChess author) with the following stages:
- Hash move if one is found.
- Generation and scoring of captures
- All captures, good and bad.
- Generation and scoring of quiets.
- All quiets.
I ran an SPRT test on this implementation yesterday, and this was the results (elo0 = 0, elo1 = 10):
Code: Select all
Score of Lokidev vs Loki350: 309 - 232 - 321 [0.545] 862
... Lokidev playing White: 164 - 105 - 162 [0.568] 431
... Lokidev playing Black: 145 - 127 - 159 [0.521] 431
... White vs Black: 291 - 250 - 321 [0.524] 862
Elo difference: 31.1 +/- 18.4, LOS: 100.0 %, DrawRatio: 37.2 %
SPRT: llr 2.98 (101.2%), lbound -2.94, ubound 2.94 - H1 was accepted
The implementation can be found in movestager.h and movestager.cpp in the staged-move-generation branch of Loki's repository. In the future these files will of course be in the master branch.
The only thing I need to do before merging this into master is to clean up my search_root method. I would like to add a derived class of MoveStager called RootMoveStager which will work exactly as search_root does at the moment. The only reason for this is the easier maintainability from not having two entirely different move ordering implementations.
The future of Loki
As a last thing, I feel like I should mention what Loki's future holds... I just graduated high-school in June (celebrations of this is also the reason I haven't worked much on Loki the last weeks) and because of that, I will have to start working. This in turn means that I probably won't have as much time for developing Loki as I have had previously Although it is exciting to not be in school anymore, it really saddens me that I can't work as much on Loki as I used to. Chess engine development has really become addicting
But fear not, despite of slower progress, Loki 4.0 will be released some day; And it will be a lot stronger than version 3.5