From Chessprogramming wiki
Jump to: navigation, search

Home * Engines * Floyd

Hurricane Floyd [1]

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.


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.


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.


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)


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

External Links

Chess Engine



Up one Level