After ~2 month of work i feel like i`m ready to publish Drofa 2.0.0.
https://github.com/justNo4b/Drofa/releases/tag/2.0.0
There were ~30 of elo-gaining patches since than. And if the first of them were quickly tested (with ~1000 games), some of the final patches were tested with up to ~20k games ( as you can imagine, my PC was working almost non-stop).
List of the major changes added to the Drofa:
- Fixed two major bugs regarding repetition and pawnHash
- More efficient MovePicker and Evaluation
- Added Queen promotions in the QSearch
- LMR implemented
- Razoring implemented
- LMP implemented
- Reverse futility pruning implemented
- Extended futility pruning
- Un-hashed reduction
- More agressive time management (maybe too agressive )
- Implemented Countermoves (both for Quiets move ordering and for LMR-reductions)
- PassedPawn extention on the nodes that are close to leafs
- Fixed many move ordering issues
- Piece values are tuned
Drofa 2.0.0 is ~400 elo stronger than Drofa 1.0.0 and 50-90 elo stronger than Drofa 1.3.1 (2402 elo in CCRL blitz)
Code: Select all
TC 2`+1``:
Score of Drofa_1.3.8 vs Drofa_1.3.1: 180 - 75 - 231 [0.608] 486
Elo difference: 76.27 +/- 22.41
SPRT: llr 2.96, lbound -2.94, ubound 2.94 - H1 was accepted
Finished match
Terje - because i took LMR and LMP formulas from Weiss (while i rewrote LMR to be pow() based instead of log() based, curve is still very close, if not the same. I tried to tweak and tune both formulas, but with 0 success. I also took general logic for mingling LMR code with PVS (but with my own implementation) and about what pruning techniques good engine must use.
I must admit at some point i was worried that Drofa search is too similar to the Weiss, but (especially after latest patches) i feel content that my LMR and some other stuff are divergent enough.
Ferdy - for his great tuning tool. I was able to tune my piece values for ~20 elo without knowing anything about tuning.
Guenther Simon - for helping me with Windows Drofa compiles, because i still was not able to resolve speed drop issue while using cross-compilers.
Future directions:
I think that Drofa search is now decent enough.
Next i want to use Drofa as a tool to learn some machine learning techniques.
Firstly i want to add some more eval parameters and then tune them, but using strictly my own implementation.
Then I want to train NN for a time management (it maybe stupid, but i just think it would be a decent practice)
And finally implement NN pawn eval (this probably will be also elo-gainer )
As you can imagine, this will take a lot of time, and i want to concentrate on my other projects for now soo.....