Author: Chris Bolt Rating CEDR=2375
v.2.20
Features
Futility pruning. After searching tactical moves, a node is pruned at depth remaining equal to 1, if static evaluation is 160 centipawns less than alpha (limit set at 3-sigma average improvement of a generic quiet move, by tuning through data logging)
Tuning / Optimisation / Tweaks
Changed to use Pseudo-legal move generation and therefore only check validity when performing move on the board. Previously Eubos only generated valid moves, which required a validity check at the time of move generation, and therefore wasted time if a beta cut or futility pruning of the node occured. This is actually a significant optimisation.
Disabled Piece lists. I have determined that Eubos is better off iterating through set bits on a bitboard rather than maintaining piece at position lists during perform/unperform move routines.
In the evaluation function, switched to non-linear coefficients for determining king safety 'exposure', according to the number of enemy pieces
Optimised pawn attack mask calculation to do it in parallel using an accumulation bitboard. Previously this was done by iterating on individual pawns.
Compute a static evaluation, not including quiescence, at all depth equal to 1 nodes, once we generate the first quiet move. Needed for futility pruning.
Count killer moves as quiet moves. This is useful for promoting the decision about whether to run LMR / futility pruning.
Optimised move update function so if a move is invalid, we don't waste time updating iterative material and position values.
Fixes
Fixed a defect where a best move could be counted as a regular quiet move for determining when to run the LMR and futility pruning algorithms. This was likely to cause premature alpha cuts (before all tactical moves were searched). I am not certain of the impact of this defect in previous releases.
Fixed an issue where if the best move was a capture, it could be inserted into the move list twice, in some circumstances
Quality
Refactored King Safety evaluation into its own file with own set of unit tests
Extended the Fine Endgame test suite to include more positions
Refactored the MoveList class to use structures for internal state at ply, rather than horrible, individual primitive arrays. This change removed obfuscation and allowed some optimisations and simplifications of the staged move generation state machine.
To install Eubos as an engine in Arena:
1. Select Engines > Install New Engine
2. In the file browser dialog that appears, change the drop down to *.bat
3. Navigate to the Eubos binary location, select the Eubos.bat
4. Select UCI protocol to communicate with Eubos
5. That's it!
Eubos 2.20 download
1. Select Engines > Install New Engine
2. In the file browser dialog that appears, change the drop down to *.bat
3. Navigate to the Eubos binary location, select the Eubos.bat
4. Select UCI protocol to communicate with Eubos
5. That's it!
Eubos 2.20 download
Comments
Post a Comment