Petrel, about the engine:
This engine is not strong, fast, or simple. It is relatively stable enough to serve as a sparring opponent for a weak engine.
The source code may be interesting for chess programmers due to several novel chess data structures.
The engine uses neither mailbox nor bitboard board representations. The fundamental data structure is a 16-byte vector: a vector of bytes for each chess piece on one side of the chessboard.
The engine incrementally updates the attack table using a unique data structure— a matrix of pieces and bitboards. Each bitboard rank is stored separately in one of 8 piece vectors. This allows a very fast implementation of the attackTo() function and relatively fast updates of the attack table state. The engine uses the so-called Reversed BitBoard (aka Hyperbola Quintessence) method for generating attacks of sliding pieces (bishops, rooks, queens).
Fully legal moves are generated in bulk from the attack matrix.
During the chess tree search, the engine does not distinguish between white and black playing sides. The PositionSide class represents a chess side without color specificity. Internally, squares are relative to each side's base rank, so all pawns push from RANK_2 and promote at RANK_8, both kings start at E1 square, etc.
Zobrist hashing uses only a few keys per piece type, which rotate to generate a key for each square. Changing the position's move side to move (null move) is a byte-reversed operation. This Zobrist implementation allows hash transpositions with color changes.
Author: Aleks Peshkov
Petrel 1.3 what's new?
Milestone.
The last release of full-width search without search extensions and reductions.
Full TT support (previously only hash move used).
PVS instead of vanilla alpha-beta.
Fixed stability issues on supershort time controls.
Fixed ponder mode.
Linux 64-bit static binary.
UCI options:
option name Debug Log File type string default <empty>
option name Hash type spin min 2 max 16384 default 2
option name Move Overhead type spin min 0 max 10000 default 0
option name Ponder type check default false
option name UCI_Chess960 type check default false
Jim Ablett compiles:
Comments
Post a Comment