Author: Chris Bolt Rating CEDR=2342
v.2.19
In the evaluation, use a non-linear scale as the penalty for having no pawns
Use an array for looking up the castling flag contribution to the Zobrist hash code, don't make and unmake the change for each transition according to translation to only 4 values. This saves the conversion occurring on every single move made.
Clear the DrawChecker on every pawn move or capture in the game tree, either in received moves from a prior fen, or in the forward search. The previous DrawChecker index to check from is stored in the PositionManager stack
Optimise the MoveTracker stack used by the PositionManager. It now has a single stack of objects, rather than using several individual stacks of primitive data types. This is faster because the stack is allocated statically and therefore there is no dynamic allocation overhead and only one indexed look-up.
Made the ply count the definitive move counteer, and derive the move number from the ply count, instead of vice versa (simplifies perform/unperform move routines)
Simplify the processing conducted after an anayse command but before go is received. No longer creates a duplicate PositionManager to get the root position for the forward search.
Update the hash code when making the move (previously some code was duplicated in the Zobrist hash code to do this separately, resulting in some operations running twice for a position in the search). Stripped all duplicated state from the Zobrist hash class.
Don't unmake the Zobrist hash changes on an unperform move, just retrieve the old hash from the MoveTracker stack.
Optimised the three-fold check when receiving a hash move and refactored the routine for clarity and simplicity.
Simplified the evaluation of transpositions received from the hash table.
Refactored to use bitboard iteration when generating attack masks, king tropism and other functions that were using iteration through PieceList callback functions. It was a nice idea, but less efficient than the simple set bit iteration.
Simplified and optimised the pinned piece check and the IllegalCheckHelper routine.
Don't compute King Safety in the endgame, at all (previously it was included as part of the middlegame tapered evaluation term).
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.19 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.19 download
Comments
Post a Comment