Evaluating Knowledge Transferability in Chess Endgames Using Deep Neural Networks

Total Page:16

File Type:pdf, Size:1020Kb

Evaluating Knowledge Transferability in Chess Endgames Using Deep Neural Networks Evaluating Knowledge Transferability in Chess Endgames using Deep Neural Networks by Frímann Kjerúlf Thesis of 30 ECTS credits submitted to the School of Computer Science at Reykjavík University in partial fulfillment of the requirements for the degree of Master of Science (M.Sc.) in Computer Science June 2019 Examining Committee: Yngvi Bjornsson, Supervisor Professor, Reykjavík University, Iceland Stephan Schiffel, Assistant Professor, Reykjavík University, Iceland David Thue, Assistant Professor, Reykjavík University, Iceland i Copyright Frímann Kjerúlf June 2019 ii Evaluating Knowledge Transferability in Chess Endgames using Deep Neural Networks Frímann Kjerúlf June 2019 Abstract Transfer learning is becoming an essential part of modern machine learning, especially in the field of deep neural networks. In the domain of image recognition there are known methods to evaluate the transferability of features which are based on evaluating to what degree a feature extractor can be considered general to the domain, or specific to the task at hand. This is of high importance when aiming for a successful knowledge transfer since one typically wants to transfer only the general feature extractors and leave the specific ones behind. The general features in the case of image classification can be considered local with respect to each pixel, since the feature extractors in early layers activate on simple features like edges, which are localized within a certain radius from a given pixel. One might then ask the question, whether similar methods are also applicable in other domains than image classification, and of special interest are domains characterized by non-local features. Chess is as excellent example of such a domain since a square’s locality can not be defined by the adjacent pixels alone. One needs to take into account that a single piece can traverse the whole board in a single move. We show that this method is applicable in the case of chess endgame tablebases, in spite of structural differences in the feature space, and that the distribution of the learned information within the network is similar as in the case of image classification. iii Titill Frímann Kjerúlf júní 2019 Útdráttur Yfirfærslunám er orðið nauðsynlegur hluti af nútíma vélnámi, sérstaklega á sviði djúp- tauganeta. Á sviði myndgreiningar eru til þekktar aðferðir til að meta flytjanleika eiginleika í yfirfærslunámi sem byggjast á því að meta hvaða hlutar tauganetsinns finna almenna eiginleika á borð við línur og litaskil, og hvað hlutar finna sértæka eig- inleika á borð við andlit eða hús. Þetta er mikilvægt þegar framkvæma á árangursríkt yfirfærslunám því oft reynist best að flytja einungis þá hluta netsinns sem eru almenn- ir. Í myndgreiningu þá teljast þessir almennu eiginleikar vera staðbundnir með tilliti til hvers díls því hægt er að skilgreina hvort díll sé hluti af línu eða ekki með því að skoða einungis þá díla sem eru innan vissrar fjárlægðar frá dílnum. Þá er hægt að spyrja sig hvort þessar sömu aðferðir eigi við í öðrum óðölum sem einkennast af óstaðbundnum almennum eiginleikum. Skák er mjög gott dæmi um slíkt óðal þar sem ekki er hægt að skilgreina nánd hvers reits með því að horfa einungis á nágranna hans. Taka þarf tillit til þess að sumir taflmenn geta farið þvert yfir borðið í einum leik. Niðurstaða okkar er að áðurnefndar aðferðir úr óðali myndgreiningar til þess að meta flytjanleika eiginleika, eiga vel við í óðali endatafla í skák þrátt fyrir þennann mun á eiginleikum óðalanna, og að lögun og dreyfing upplýsinga innan tauganetsinns er áþekk. iv Evaluating Knowledge Transferability in Chess Endgames using Deep Neural Networks Frímann Kjerúlf Thesis of 30 ECTS credits submitted to the School of Computer Science at Reykjavík University in partial fulfillment of the requirements for the degree of Master of Science (M.Sc.) in Computer Science June 2019 Student: Frímann Kjerúlf Examining Committee: Yngvi Bjornsson Stephan Schiffel David Thue v The undersigned hereby grants permission to the Reykjavík University Library to re- produce single copies of this Thesis entitled Evaluating Knowledge Transferability in Chess Endgames using Deep Neural Networks and to lend or sell such copies for private, scholarly or scientific research purposes only. The author reserves all other publication and other rights in association with the copyright in the Thesis, and except as herein before provided, neither the Thesis nor any substantial portion thereof may be printed or otherwise reproduced in any material form whatsoever without the author’s prior written permission. date Frímann Kjerúlf Master of Science vi - Dedicated to Loki - vii Acknowledgements I want to thank my supervisor Dr. Yngvi Björnsson for all the support and goodwill throughout this project. This work was funded by 2014 RANNIS grant “Hermi- og brjóstvitstrjáleit í alhliða leikjaspilun og öðrum flóknum ákvörðunartökuvandamálum”. viii Contents Acknowledgements viii Contents ix List of Figures xi List of Tables xii List of Abbreviations xiii List of Symbols xiv 1 Introduction 1 2 Background 3 2.1 Convolutional Neural Networks . 3 2.2 Transfer Learning . 3 2.3 Transferability . 5 2.4 Endgame Tablebases . 6 3 Methods 8 3.1 Board State Representation . 8 3.2 WDL Values . 10 3.3 Transferability . 11 3.4 Network Design . 14 3.5 Transfer Learning . 16 3.6 Expansion Learning . 16 4 Results and Discussions 18 4.1 Tuning Hyperparameters . 18 4.1.1 Final Hyperparamters . 24 4.2 Experimental Setup . 24 4.3 Transferability . 25 4.3.1 Performance Loss Due to Co-Adaption . 25 4.3.2 Performance Loss Due to Specification . 26 4.4 Transfer Learning . 29 4.5 Expansion Learning . 31 ix 5 Conclusion 33 5.1 Summary . 33 5.2 Future Work . 34 Bibliography 35 x List of Figures 2.1 An example of a Convolutional Neural Network (CNN) with 4 convolutional layers (Conv) and one fully connected layer (FC) (from Medium.com [3]) . 4 2.2 Difference between traditional ML (left) and transfer learning ML (right). (from Pan and Yang, 2010 [4]) . 4 3.1 Chess table with numbering of squares, where a1 is mapped to 0 and h8 to 63......................................... 8 3.2 Example board state with 7 pieces . 8 3.3 Example from Figure 3.2 in vector state representation............ 9 3.4 For full state representation. Each piece type has its own 8 × 8 bit-array. 9 3.5 Example from Figure 3.2 in full state representation. Each piece has its own 8 × 8 bit-array, resulting in a 8 × 8 × 4 tensor. 9 3.6 Image classification performance after knowledge transfer between domain A to B (AnB) and B to B (BnB) as a function of n, the number of trans- ferred layers. Transferred weights of AnB and BnB are kept frozen while transferred weights of AnB+ and BnB+ are allowed to fine-tune (from Yosinski et al. [1]). 11 3.7 Comparing accuracy of 2x2 and 3x3 filters . 14 3.8 Evaluating optimal number of convolutional layers . 15 4.1 Comparing performance of Adam vs Adadelta . 19 4.2 Evaluating effect of batch normalization on accuracy . 19 4.3 Comparing accuracy of 16 and 32 bit floating point precision . 20 4.4 Evaluating the number of epochs needed for convergence . 21 4.5 Evaluating the possibility of overfitting . 21 4.6 Evaluating effect of batch size on accuracy and training speed . 22 4.7 Co-adaption splitting at layers 3, 4 and 5 . 25 4.8 Performance drop due to co-adaption and specification . 27 4.9 Knowledge transfer seeds better initial accuracy . 28 xi List of Tables 2.1 Definition of WDL values in the Syzygy tablebase, giving the game theo- retical values for a given board state. 7 2.2 Syzygy endgame tablebase information, showing both All possible states and states with only Pawns and Kings..................... 7 3.1 Breakdown by WDL values showing the number of states for each WDL value and the corresponding ratio of the whole dataset. 11 3.2 Evaluating optimal number of convolutional layers . 15 3.3 Evaluating optimal network size (250 epochs) . 15 4.1 Evaluating effect of batch size on accuracy after 100 epochs . 23 4.2 Evaluating effect of batch size on accuracy and training time for 10 epochs 23 4.3 Evaluating effect of batch size on accuracy after 30 minute training time . 23 4.4 Chosen hyperparameters and network information . 24 4.5 Network model showing layer type, filter size and number of parameters . 24 4.6 Final label prediction accuracy. 30 4.7 Final accuracy of φ3 on D3 by WDL values. 30 4.8 Final accuracy of φ3!4 on D4 by WDL values. 30 xii List of Abbreviations ANN Artificial Neural Network CNN Convolutional Neural Network Conv Convolutional DL Deep Learning DTM Depth to Mate Value DTZ Depth to Zeroing-Move Value EL Expansion Learning FC Fully Connected ML Machine Learning TL Transfer Learning WDL Win Draw Loss xiii List of Symbols Symbol Description m Number of pieces in a given state mp Number of piece types in a given state X The feature space of all possible board states Xm The feature space of all m piece board states Y WDL value label space Dm Domain of all m piece board states X Board state random variable x A given board state y A given WDL value Pm(X) The probability of sampling an m-piece board state from X Dm Dataset of m-piece board states dm;i = (xi; yi) Datapoint i in Dm Tm Training task fm(·) The objective predictive function mapping states in Xm to labels φ(x) = y A neural net with input x and output y φm A network trained on Dm φm!k A network trained on Dk with transfer from φm φrnd An untrained network initialized with random weights ceil(z) Rounds z 2 R up to next integer Prnd(y) Probability of φrnd outputting label y given a random input PXm (y) The probability of sampling a state with label y from Xm n Number of transferred layers φAnB A network trained on DB with n transferred layers from φA AnB Same as φAnB.
Recommended publications
  • Yale Yechiel N. Robinson, Patent Attorney Email: [email protected]
    December 16, 2019 From: Yale Yechiel N. Robinson, Patent Attorney Email: [email protected] To: United States Patent and Trademark Office (USPTO) Email: [email protected] Re: Request for Comments on Intellectual Property Protection for Artificial Intelligence Innovation, Docket number: PTO-C-2019-0038 To the USPTO and Members of the Public: My name is Yale Robinson. In addition to my professional work as a patent attorney and in other legal matters, I have for years enjoyed the intergenerational conversation within the game of chess, which originated many centuries ago and spread across Europe and North America around the middle of the 19th century, and has since reached every major country in the world. I will direct my comments regarding issues of intellectual property for artificial intelligence innovations based on the history of traditional western chess. Early innovators in computing, including Alan Turing and Claude Shannon, tried to calculate the value of certain chess positions using the 1950-era equivalent of a present-day handheld calculator. Their work launched the age of computer chess, where the strongest present-day computers can consistently (but not always) defeat or draw elite human grandmasters. The quality of human-versus-human play has increased in part because of computer analysis of opening and middle-game positions that strong players can analyze and practice playing on their home computer device before trying the idea against a human player in competition. In addition to the development of chess theory for the benefit of chess players (human and electronic alike), the impact of chess computing has arguably extended beyond the limits of the game itself.
    [Show full text]
  • Shredder User Manual
    Shredder User Manual Shredder User Manual ........................................................................................................................1 Shredder by Stefan Meyer•Kahlen ......................................................................................................4 Note ................................................................................................................................................4 Registration.....................................................................................................................................4 Contact ...........................................................................................................................................5 Stefan Meyer•Kahlen.......................................................................................................................5 Using Shredder...................................................................................................................................6 Menus .............................................................................................................................................6 File Menu.....................................................................................................................................6 Commands Menu.........................................................................................................................8 Levels Menu ................................................................................................................................9
    [Show full text]
  • A Case Study of a Chess Conjecture
    Logical Methods in Computer Science Volume 15, Issue 1, 2019, pp. 34:1–34:37 Submitted Jan. 24, 2018 https://lmcs.episciences.org/ Published Mar. 29, 2019 COMPUTER-ASSISTED PROVING OF COMBINATORIAL CONJECTURES OVER FINITE DOMAINS: A CASE STUDY OF A CHESS CONJECTURE PREDRAG JANICIˇ C´ a, FILIP MARIC´ a, AND MARKO MALIKOVIC´ b a Faculty of Mathematics, University of Belgrade, Serbia e-mail address: fjanicic,fi[email protected] b Faculty of Humanities and Social Sciences, University of Rijeka, Croatia e-mail address: marko@ffri.hr Abstract. There are several approaches for using computers in deriving mathematical proofs. For their illustration, we provide an in-depth study of using computer support for proving one complex combinatorial conjecture { correctness of a strategy for the chess KRK endgame. The final, machine verifiable result presented in this paper is that there is a winning strategy for white in the KRK endgame generalized to n × n board (for natural n greater than 3). We demonstrate that different approaches for computer-based theorem proving work best together and in synergy and that the technology currently available is powerful enough for providing significant help to humans deriving some complex proofs. 1. Introduction Over the last several decades, automated and interactive theorem provers have made huge advances which changed the mathematical landscape significantly. Theorem provers are already widely used in many areas of mathematics and computer science, and there are already proofs of many extremely complex theorems developed within proof assistants and with many lemmas proved or checked automatically [25, 31, 33]. We believe there are changes still to come, changes that would make new common mathematical practices and proving process will be more widely supported by tools that automatically and reliably prove some conjectures and even discover new theorems.
    [Show full text]
  • Glossary of Chess
    Glossary of chess See also: Glossary of chess problems, Index of chess • X articles and Outline of chess • This page explains commonly used terms in chess in al- • Z phabetical order. Some of these have their own pages, • References like fork and pin. For a list of unorthodox chess pieces, see Fairy chess piece; for a list of terms specific to chess problems, see Glossary of chess problems; for a list of chess-related games, see Chess variants. 1 A Contents : absolute pin A pin against the king is called absolute since the pinned piece cannot legally move (as mov- ing it would expose the king to check). Cf. relative • A pin. • B active 1. Describes a piece that controls a number of • C squares, or a piece that has a number of squares available for its next move. • D 2. An “active defense” is a defense employing threat(s) • E or counterattack(s). Antonym: passive. • F • G • H • I • J • K • L • M • N • O • P Envelope used for the adjournment of a match game Efim Geller • Q vs. Bent Larsen, Copenhagen 1966 • R adjournment Suspension of a chess game with the in- • S tention to finish it later. It was once very common in high-level competition, often occurring soon af- • T ter the first time control, but the practice has been • U abandoned due to the advent of computer analysis. See sealed move. • V adjudication Decision by a strong chess player (the ad- • W judicator) on the outcome of an unfinished game. 1 2 2 B This practice is now uncommon in over-the-board are often pawn moves; since pawns cannot move events, but does happen in online chess when one backwards to return to squares they have left, their player refuses to continue after an adjournment.
    [Show full text]
  • Python-Chess Release 0.23.6
    python-chess Release 0.23.6 May 25, 2018 Contents 1 Introduction 3 2 Documentation 5 3 Features 7 4 Installing 13 5 Selected use cases 15 6 Acknowledgements 17 7 License 19 8 Contents 21 8.1 Core................................................... 21 8.2 PGN parsing and writing......................................... 34 8.3 Polyglot opening book reading...................................... 41 8.4 Gaviota endgame tablebase probing................................... 43 8.5 Syzygy endgame tablebase probing................................... 44 8.6 UCI engine communication....................................... 46 8.7 SVG rendering.............................................. 53 8.8 Variants.................................................. 54 8.9 Changelog for python-chess....................................... 56 9 Indices and tables 77 i ii python-chess, Release 0.23.6 Contents 1 python-chess, Release 0.23.6 2 Contents CHAPTER 1 Introduction python-chess is a pure Python chess library with move generation, move validation and support for common formats. This is the Scholar’s mate in python-chess: >>> import chess >>> board= chess.Board() >>> board.legal_moves <LegalMoveGenerator at ... (Nh3, Nf3, Nc3, Na3, h3, g3, f3, e3, d3, c3, ...)> >>> chess.Move.from_uci("a8a1") in board.legal_moves False >>> board.push_san("e4") Move.from_uci('e2e4') >>> board.push_san("e5") Move.from_uci('e7e5') >>> board.push_san("Qh5") Move.from_uci('d1h5') >>> board.push_san("Nc6") Move.from_uci('b8c6') >>> board.push_san("Bc4") Move.from_uci('f1c4') >>> board.push_san("Nf6") Move.from_uci('g8f6') >>> board.push_san("Qxf7") Move.from_uci('h5f7') >>> board.is_checkmate() True >>> board Board('r1bqkb1r/pppp1Qpp/2n2n2/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 0 4') 3 python-chess, Release 0.23.6 4 Chapter 1. Introduction CHAPTER 2 Documentation • Core • PGN parsing and writing • Polyglot opening book reading • Gaviota endgame tablebase probing • Syzygy endgame tablebase probing • UCI engine communication • Variants • Changelog 5 python-chess, Release 0.23.6 6 Chapter 2.
    [Show full text]
  • A Complete Chess Engine Parallelized Using Lazy SMP
    A Complete Chess Engine Parallelized Using Lazy SMP Emil Fredrik Østensen Thesis submitted for the degree of Master in programming and networks 60 credits Department of informatics Faculty of mathematics and natural sciences UNIVERSITY OF OSLO Autumn 2016 A Complete Chess Engine Parallelized Using Lazy SMP Emil Fredrik Østensen © 2016 Emil Fredrik Østensen A Complete Chess Engine Parallelized Using Lazy SMP http://www.duo.uio.no/ Printed: Reprosentralen, University of Oslo Abstract The aim of the thesis was to build a complete chess engine and parallelize it using the lazy SMP algorithm. The chess engine implemented in the thesis ended up with an estimated ELO rating of 2238. The lazy SMP algorithm was successfully implemented, doubling the engines search speed using 4 threads on a multicore processor. Another aim of this thesis was to act as a starting compendium for aspiring chess programmers. In chapter 2 Components of a Chess Engine many of the techniques and algorithms used in modern chess engines are discussed and presented in a digestible way, in a try to make the topics understandable. The information there is presented in chronological order in relation to how a chess engine can be programmed. i ii Contents 1 Introduction 1 1.1 The History of Chess Computers . .2 1.1.1 The Beginning of Chess Playing Machines . .2 1.1.2 The Age of Computers . .3 1.1.3 The First Chess Computer . .5 1.1.4 The Interest in Chess Computers Grow . .6 1.1.5 Man versus Machine . .6 1.1.6 Shannon’s Type A versus Shannon’s Type B Chess Computers .
    [Show full text]
  • Python-Chess Release 1.6.1
    python-chess Release 1.6.1 unknown Sep 16, 2021 CONTENTS 1 Introduction 3 2 Installing 5 3 Documentation 7 4 Features 9 5 Selected projects 13 6 Acknowledgements 15 7 License 17 8 Contents 19 8.1 Core................................................... 19 8.2 PGN parsing and writing......................................... 36 8.3 Polyglot opening book reading...................................... 44 8.4 Gaviota endgame tablebase probing................................... 45 8.5 Syzygy endgame tablebase probing................................... 47 8.6 UCI/XBoard engine communication................................... 49 8.7 SVG rendering.............................................. 61 8.8 Variants.................................................. 63 8.9 Changelog for python-chess....................................... 65 9 Indices and tables 71 Index 73 i ii python-chess, Release 1.6.1 CONTENTS 1 python-chess, Release 1.6.1 2 CONTENTS CHAPTER ONE INTRODUCTION python-chess is a chess library for Python, with move generation, move validation, and support for common formats. This is the Scholar’s mate in python-chess: >>> import chess >>> board= chess.Board() >>> board.legal_moves <LegalMoveGenerator at ... (Nh3, Nf3, Nc3, Na3, h3, g3, f3, e3, d3, c3, ...)> >>> chess.Move.from_uci("a8a1") in board.legal_moves False >>> board.push_san("e4") Move.from_uci('e2e4') >>> board.push_san("e5") Move.from_uci('e7e5') >>> board.push_san("Qh5") Move.from_uci('d1h5') >>> board.push_san("Nc6") Move.from_uci('b8c6') >>> board.push_san("Bc4") Move.from_uci('f1c4') >>> board.push_san("Nf6") Move.from_uci('g8f6') >>> board.push_san("Qxf7") Move.from_uci('h5f7') >>> board.is_checkmate() True >>> board Board('r1bqkb1r/pppp1Qpp/2n2n2/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 0 4') 3 python-chess, Release 1.6.1 4 Chapter 1. Introduction CHAPTER TWO INSTALLING Download and install the latest release: pip install chess 5 python-chess, Release 1.6.1 6 Chapter 2.
    [Show full text]
  • Estimating Total Search Space Size for Specific Piece Sets in Chess
    Estimating Total Search Space Size for Specific Piece Sets in Chess Azlan Iqbal1 ABSTRACT Automatic chess problem or puzzle composition typically involves generating and testing various different positions, sometimes using particular piece sets. Once a position has been generated, it is then usually tested for positional legality based on the game rules. However, it is useful to be able to estimate what the search space size for particular piece combinations is to begin with. So if a desirable chess problem was successfully generated by examining ‘merely’ 100,000 or so positions in a theoretical search space of about 100 billion, this would imply the composing approach used was quite viable and perhaps even impressive. In this article, I explain a method of calculating the size of this search space using a combinatorics and permutations approach. While the mathematics itself may already be established, a precise method and justification of applying it with regard to the chessboard and chess pieces has not been documented, to the best of our knowledge. Additionally, the method could serve as a useful starting point for further estimations of search space size which filter out positions for legality and rotation, depending on how the automatic composer is allowed to place pieces on the board (because this affects its total search space size). 1 INTRODUCTION Automatic chess problem composition is a relatively unexplored area of artificial intelligence compared to actual chess-playing. The primary reason for this is likely that playing chess can be done quite well using a combination of well-designed heuristics and relatively high computational processing speed and memory.
    [Show full text]
  • Playing the Perfect Kriegspiel Endgame
    View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by Elsevier - Publisher Connector Theoretical Computer Science 411 (2010) 3563–3577 Contents lists available at ScienceDirect Theoretical Computer Science journal homepage: www.elsevier.com/locate/tcs Playing the perfect Kriegspiel endgame Paolo Ciancarini ∗, Gian Piero Favini Dipartimento di Scienze dell'Informazione, University of Bologna, Italy article info a b s t r a c t Article history: Retrograde analysis is an algorithmic technique for reconstructing a game tree starting Received 16 August 2009 from its leaves; it is useful to solve some specific subsets of a complex game, for example Received in revised form 9 May 2010 a Chess endgame, achieving optimal play in these situations. Position values can then be Accepted 19 May 2010 stored in ``tablebases'' for instant access, in order to save analysis time, as is the norm Communicated by H.J. Van den Herik in professional chess programs. This paper shows that a similar approach can be used to solve subsets of certain imperfect information games such as Kriegspiel (invisible Chess) Keywords: endgames. Using a brute force retrograde analysis algorithm, a suitable data representation Game theory Kriegspiel and a special lookup algorithm, one can achieve perfect play, with perfection meaning Retrograde analysis fastest checkmate in the worst case and without making any assumptions on the opponent. Chess We investigate some Kriegspiel endgames (KRK, KQK, KBBK and KBNK), building the corresponding tablebases and casting light on some long standing open problems. ' 2010 Elsevier B.V. All rights reserved. 1. Introduction In a zero-sum game of perfect information, Zermelo's theorem [1] ensures that there is a perfect strategy allowing either player to obtain a guaranteed minimum reward.
    [Show full text]
  • 101 Tactical Tips
    0 | P a g e 101 Tactical Tips By Tim Brennan http://tacticstime.com Version 1.00 March, 2012 This material contains elements protected under International and Federal Copyright laws and treaties. Any unauthorized reprint or use of this material is prohibited 101 Tactical Tips Table of Contents Introduction ............................................................................................................................................................ 1 101 Tactical Tips Openings and Tactics ............................................................................................................. 2 Books and Tactics .................................................................................................................. 4 Computers and Tactics .......................................................................................................... 6 Quotes about Tactics ............................................................................................................. 9 Tactics Improvement ............................................................................................................ 12 Tactics and Psychology ........................................................................................................ 14 Tactics Problems .................................................................................................................. 16 Tactical Motifs ..................................................................................................................... 17 Tactics
    [Show full text]
  • The Lasker Method to Improve in Chess
    Gerard Welling and Steve Giddins The Lasker Method to Improve in Chess A Manual for Modern-Day Club Players New In Chess 2021 Contents Explanation of symbols...........................................6 Introduction....................................................7 Chapter 1 General chess philosophy and common sense.........11 Chapter 2 Chess strategy and the principles of positional play....14 Chapter 3 Endgame play .....................................19 Chapter 4 Attack ............................................36 Chapter 5 Defence...........................................58 Chapter 6 Knights versus bishops .............................71 Chapter 7 Amorphous positions ..............................75 Chapter 8 An approach to the openings....................... 90 Chapter 9 Games for study and analysis.......................128 Chapter 11 Combinations and tactics ..........................199 Chapter 12 Solutions.........................................215 Index of openings .............................................233 Index of names ............................................... 234 Bibliography ..................................................238 5 Introduction The game of chess is in a constant state of flux, and already has been for a long time. Several books have been written about the advances made in chess, about Wilhelm Steinitz, who is traditionally regarded as having laid the foundation of positional play (although Willy Hendriks expresses his doubts about this in his latest revolutionary book On the Origin of good
    [Show full text]
  • Python-Chess Release 0.31.3 Unknown
    python-chess Release 0.31.3 unknown Jul 18, 2020 CONTENTS 1 Introduction 3 2 Documentation 5 3 Features 7 4 Installing 11 5 Selected use cases 13 6 Acknowledgements 15 7 License 17 8 Contents 19 8.1 Core................................................... 19 8.2 PGN parsing and writing......................................... 34 8.3 Polyglot opening book reading...................................... 42 8.4 Gaviota endgame tablebase probing................................... 43 8.5 Syzygy endgame tablebase probing................................... 45 8.6 UCI/XBoard engine communication................................... 47 8.7 SVG rendering.............................................. 58 8.8 Variants.................................................. 59 8.9 Changelog for python-chess....................................... 61 9 Indices and tables 91 Index 93 i ii python-chess, Release 0.31.3 CONTENTS 1 python-chess, Release 0.31.3 2 CONTENTS CHAPTER ONE INTRODUCTION python-chess is a pure Python chess library with move generation, move validation and support for common formats. This is the Scholar’s mate in python-chess: >>> import chess >>> board= chess.Board() >>> board.legal_moves <LegalMoveGenerator at ... (Nh3, Nf3, Nc3, Na3, h3, g3, f3, e3, d3, c3, ...)> >>> chess.Move.from_uci("a8a1") in board.legal_moves False >>> board.push_san("e4") Move.from_uci('e2e4') >>> board.push_san("e5") Move.from_uci('e7e5') >>> board.push_san("Qh5") Move.from_uci('d1h5') >>> board.push_san("Nc6") Move.from_uci('b8c6') >>> board.push_san("Bc4") Move.from_uci('f1c4')
    [Show full text]