Three days left until Autumn (well, here it's still summer for at least another 30 days). To celebrate it (...), I've been quite busy over the last month creating a much better (still amateur) chess engine.
The result is version 2.0, which I believe is quite an advanced version of a chess engine that still needs tuning (WIP).
So, what's new since 1.9?
Performance improvements everywhere (move generator, hash generator, Quiescence)
Improved SEE
Better king defense/attack
Lazy SMP with worker voting
Improvements in repetitions, threats, killer moves and move generator
In threat evaluation, reverse the order of the pieces (minor > major)
Better time management
Some values tuned
Added evasion pruning in Quiescence
New endgames: KQ vs KP, KP vs KP, KRB vs KR, KRN vs KR, KQ vs QRB
Added rook vs bishops in EvalUndeveloped()
Added singular extensions
New settings: CPU=0 // auto and Debug=0 // default
Added pondering
Fixed a long-standing bug where a move from a missed aspiration window could be used
Refactored cache code
LMR table is now dynamic rather than having only two entries
Improved outposts for bishops and knights
More use of bitboards in TEvaluation.EvalPassers() and TEvaluation.EvalPawnRace() instead of loops
Improved check extension performance
PawnOn7thExt extension on PV is now ONE ply (previously half a ply)
Scores are now returned rather than beta
GenerateAttacksDefends() is now fully implemented with bitboards
You can download it here: ChessKISS 2.0
No comments:
Post a Comment