Floyd

Floyd,
an UCI compliant open source chess engine for study purposes and prototyping of new ideas by Marcel van Kervinck, written in C, and first released in October 2015 [2] with a permissive license [3] . Floyd can be build to run under Windows, Linux and Mac OS. Floyd had its over the board tournament debut at the IGT 2016 with a 50% score.
Description
Board Representation
Floyd uses an 8x8 Board, agnostic to square indexing, in the sense that it can be adapted to any of the eight possible board geometries with just a local change [4] . It uses an attack table, for each side an array of 64 bytes, with following one- or two-bit attack counters per square ...
+-----+-----+-----+-----+-----+-----+-----+-----+ | Pawns | Minors | Rooks |Queen|King | +-----+-----+-----+-----+-----+-----+-----+-----+ 7..6 5..4 3..2 1 0
... as used in move generation, SEE and evaluation.
Search
The search is a classical PVS iterative deepening approach with Zobrist key transposition table, quiescence search, null move pruning and mate distance pruning. Move ordering considers SEE and a simple killer heuristic.
Evaluation
Floyd's evaluation employs a vector of feature and weight pairs to calculate a score as weighted sum. In conjunction with a draw model [5] using sigmoid functions, the score is mapped to winning probabilities, suited for logistic regression tuning.
def evaluate(board, wiloVector, drawVector): wiloScore = ...snip... // a weighted sum of board features drawScore = ...snip... // another weighted sum of board features return sigmoid(drawScore) * 0.5 + sigmoid(wiloScore) - sigmoid(wiloScore) * sigmoid(drawScore)
Misc
Floyd provides a Python API for search and evaluation functions [6] , i.e. for automated tuning [7] . It generates a compact KPK tablebase to deal with perfect knowledge, also available as stand alone project [8] [9] .
See also
Forum Posts
- Floyd 0.5 released by Marcel van Kervinck, CCC, October 11, 2015
- Floyd 0.6 released by Marcel van Kervinck, CCC, October 17, 2015
- Floyd 0.7 released by Marcel van Kervinck, CCC, November 15, 2015
- Floyd 0.8 released by Marcel van Kervinck, CCC, March 31, 2016
- Floyd 0.9 released by Marcel van Kervinck, OpenChess Forum, August 20, 2016
External Links
Chess Engine
- kervinck/floyd · GitHub
- Download page - Floyd chess engine - /etc/marcelk
- Floyd 0.6 64-bit in CCRL 40/4
Misc
- Floyd from Wikipedia
- Hurricane Floyd from Wikipedia
- Robert W. Floyd from Wikipedia
- Floyd's cycle-finding algorithm from Wikipedia
- Floyd–Hoare logic from Wikipedia
- Floyd–Steinberg dithering from Wikipedia
- Floyd–Warshall algorithm from Wikipedia
- Pink Floyd - High Hopes, The Division Bell, 1994, YouTube Video
References
- ↑ Hurricane Floyd near peak intensity on September 14, 1999 at 2030 UTC. This image was produced from data from NOAA-14, provided by NOAA, Wikimedia Commons, Hurricane Floyd from Wikipedia
- ↑ Floyd 0.5 released by Marcel van Kervinck, CCC, October 11, 2015
- ↑ floyd/LICENSE at master · kervinck/floyd · GitHub
- ↑ floyd/geometry.h at master · kervinck/floyd · GitHub
- ↑ floyd/drawModel.txt at master · kervinck/floyd · GitHub
- ↑ floyd/README.md at master · kervinck/floyd · GitHub
- ↑ floyd/tune.py at master · kervinck/floyd · GitHub
- ↑ Yet another KPK endgame table generator: pfkpk by Marcel van Kervinck, CCC, September 05, 2015
- ↑ kervinck/pfkpk · GitHub