Since you’re here...

We hope you will consider supporting us today. We need your support to continue to exist, because good entries are more and more work time. Every reader contribution, however big or small, is so valuable. Support "Chess Engines Diary" even a small amount– and it only takes a minute. Thank you.
============================== My email: jotes@go2.pl



Chess engine: Eubos 2.20 (java engine)



Eubos
- a
 basic Java chess engine, written for kicks. Uses jcpi for the UCI protocol parts. Kind of weak, doesn't evaluate for king safety, for example. Now uses transpostion hashing, but because it runs in the Java VM on a bog standard PC, doesn't search very deeply (around 100K Nodes/s, though this is actually quite hard to evaluate due to the hashing). 
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


Twitter
Facebook
Instagram
Pinterest
Reddit
Tumblr

Comments