Older Version Newer Version

GerdIsenberg GerdIsenberg Sep 11, 2016

**[[Home]] * [[Engines]] * Floyd**
|| [[image:240px-Hurricane_Floyd_14_sept_1999_2030Z.jpg link="https://commons.wikimedia.org/wiki/File:Hurricane_Floyd_14_sept_1999_2030Z.jpg"]] ||~   || **Floyd**,
an [[UCI]] compliant [[Open Source Engines|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 <ref>[[http://www.talkchess.com/forum/viewtopic.php?t=57913|Floyd 0.5 released]] by [[Marcel van Kervinck]], [[CCC]], October 11, 2015</ref> with a permissive license <ref>[[https://github.com/kervinck/floyd/blob/master/LICENSE|floyd/LICENSE at master · kervinck/floyd · GitHub]]</ref> . 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. ||
|| Hurricane Floyd <ref>Hurricane Floyd near peak intensity on September 14, 1999 at 2030 UTC. This image was produced from data from [[https://en.wikipedia.org/wiki/Television_Infrared_Observation_Satellite#Advanced_TIROS-N|NOAA-14]], provided by [[https://en.wikipedia.org/wiki/National_Oceanic_and_Atmospheric_Administration|NOAA]], [[https://en.wikipedia.org/wiki/Wikimedia_Commons|Wikimedia Commons]], [[https://en.wikipedia.org/wiki/Hurricane_Floyd|Hurricane Floyd from Wikipedia]]</ref> ||~   ||^   ||
[[toc]]
=Description= 
==Board Representation== 
Floyd uses an [[8x8 Board]], agnostic to [[Square Mapping Considerations|square indexing]], in the sense that it can be adapted to any of the eight possible board geometries with just a local change <ref>[[https://github.com/kervinck/floyd/blob/master/Source/geometry.h|floyd/geometry.h at master · kervinck/floyd · GitHub]]</ref> . It uses an [[Attack and Defend Maps|attack table]], for each side an array of 64 [[Byte|bytes]], with following one- or two-bit attack counters per square ...
[[code]]
+-----+-----+-----+-----+-----+-----+-----+-----+
|   Pawns   |   Minors  |   Rooks   |Queen|King |
+-----+-----+-----+-----+-----+-----+-----+-----+
     7..6        5..4        3..2      1     0
[[code]]
... as used in [[Move Generation|move generation]], [[Static Exchange Evaluation|SEE]] and [[Evaluation|evaluation]].

==Search== 
The [[Search|search]] is a classical [[Principal Variation Search|PVS]] [[Iterative Deepening|iterative deepening]] approach with [[Zobrist Hashing|Zobrist key]] [[Transposition Table|transposition table]], [[Quiescence Search|quiescence search]], [[Null Move Pruning|null move pruning]] and [[Mate Distance Pruning|mate distance pruning]]. [[Move Ordering|Move ordering]] considers [[Static Exchange Evaluation|SEE]] and a simple [[Killer Heuristic|killer heuristic]].

==Evaluation== 
Floyd's [[Evaluation|evaluation]] employs a vector of feature and weight pairs to calculate a [[Score|score]] as [[https://en.wikipedia.org/wiki/Weighted_sum_model|weighted sum]]. In conjunction with a draw model <ref>[[https://github.com/kervinck/floyd/blob/master/Docs/drawModel.txt|floyd/drawModel.txt at master · kervinck/floyd · GitHub]]</ref> using [[https://en.wikipedia.org/wiki/Sigmoid_function|sigmoid functions]], the score is mapped to [[Pawn Advantage, Win Percentage, and ELO|winning probabilities]], suited for [[Automated Tuning#LogisticRegression|logistic regression]] tuning.
[[code]]
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)
[[code]]

==Misc== 
Floyd provides a [[Python]] [[https://en.wikipedia.org/wiki/Application_programming_interface|API]] for search and evaluation functions <ref>[[https://github.com/kervinck/floyd/blob/master/README.md|floyd/README.md at master · kervinck/floyd · GitHub]]</ref> , i.e. for [[Automated Tuning|automated tuning]] <ref>[[https://github.com/kervinck/floyd/blob/master/Tools/tune.py|floyd/tune.py at master · kervinck/floyd · GitHub]]</ref> . It generates a compact [[KPK]] [[Endgame Tablebases|tablebase]] to deal with [[Knowledge#PerfectKnowledge|perfect knowledge]], also available as stand alone project <ref>[[http://www.talkchess.com/forum/viewtopic.php?t=57517|Yet another KPK endgame table generator: pfkpk]] by [[Marcel van Kervinck]], [[CCC]], September 05, 2015</ref> <ref>[[https://github.com/kervinck/pfkpk|kervinck/pfkpk · GitHub]]</ref> .

=See also= 
* [[Mathematician#RWFloyd|Mathematician - Robert W. Floyd (1936 - 2001)]]
* [[Various Classifications#Meteorology|Meteorology]]
* [[MSCP]]
* [[Rookie]]

=Forum Posts= 
* [[http://www.talkchess.com/forum/viewtopic.php?t=57913|Floyd 0.5 released]] by [[Marcel van Kervinck]], [[CCC]], October 11, 2015
* [[http://www.talkchess.com/forum/viewtopic.php?t=57973|Floyd 0.6 released]] by [[Marcel van Kervinck]], [[CCC]], October 17, 2015
* [[http://www.talkchess.com/forum/viewtopic.php?t=58259|Floyd 0.7 released]] by [[Marcel van Kervinck]], [[CCC]], November 15, 2015
* [[http://www.talkchess.com/forum/viewtopic.php?t=59695|Floyd 0.8 released]] by [[Marcel van Kervinck]], [[CCC]], March 31, 2016
* [[http://www.open-chess.org/viewtopic.php?f=3&t=3005|Floyd 0.9 released]] by [[Marcel van Kervinck]], [[Computer Chess Forums|OpenChess Forum]], August 20, 2016

=External Links= 
==Chess Engine== 
* [[https://github.com/kervinck/floyd|kervinck/floyd · GitHub]]
* [[https://marcelk.net/floyd/|Download page - Floyd chess engine - /etc/marcelk]]
* [[http://www.computerchess.org.uk/ccrl/404/cgi/engine_details.cgi?print=Details&each_game=1&eng=Floyd%200.7%2064-bit#Floyd_0_7_64-bit|Floyd 0.6 64-bit]] in [[CCRL|CCRL 40/4]]
==Misc== 
* [[https://en.wikipedia.org/wiki/Floyd|Floyd from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Hurricane_Floyd|Hurricane Floyd from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Robert_W._Floyd|Robert W. Floyd from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare|Floyd's cycle-finding algorithm from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Hoare_logic|Floyd–Hoare logic from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dithering|Floyd–Steinberg dithering from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm|Floyd–Warshall algorithm from Wikipedia]]
* [[Videos#PinkFloyd|Pink Floyd]] - [[https://en.wikipedia.org/wiki/High_Hopes_%28Pink_Floyd_song%29|High Hopes]], [[https://en.wikipedia.org/wiki/The_Division_Bell|The Division Bell]], 1994, [[https://en.wikipedia.org/wiki/YouTube|YouTube]] Video
> [[media type="youtube" key="7jMlFXouPk8" width="560" height="315"]]

=References= 
<references />
=What links here?= 
[[include page="Floyd" component="backlinks" limit="40"]]
**[[Engines|Up one Level]]**