-
Notifications
You must be signed in to change notification settings - Fork 1
Development
Axiom uses a bitboard board representation. This means that for every chess piece (white pawns, black knights, etc.) the board stores a single 64 bit integer, where the active bits represent the locations of the pieces.
Attack generation is done via magic bitboards. We precompute attack tables at engine start to avoid any on-the-fly calculation of attacks during search or performance testing. There are many resources that can explain the workings of magic bitboards, such as this page on the Chess Programming Wiki.
We use an alpha-beta Negamax framework for search.
We employ statically-sized transposition table to memoize evaluated positions. The table itself is a 3-way associative container, with each slot consisting of 3 entries. Our cache replacement strategy is based on the depth of calculation for the entry and it's last visit time, penalizing entries that were visited longer ago than others, and the weakest entry is replaced. The current cache size is 16MB, however it will become resizable once UCI is fully implemented.
Development