1 / 21

Sjakk Matt

Sjakk Matt. Sjakk Programmering. Javazone 2014, Per S Digre. Sjakk Programmering. 1. Historie 2. Hvordan. Mechanical Turk, 1771 Slo både Benjamin Franklin og Napoleon Bonaparte. Pioneerer. 1948 Alan Turing skriver program, simulert i 1952, (Turing testen)

vanig
Download Presentation

Sjakk Matt

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sjakk Matt Sjakk Programmering Javazone 2014, Per S Digre

  2. Sjakk Programmering 1. Historie 2. Hvordan Mechanical Turk, 1771 Slo både Benjamin Franklin og Napoleon Bonaparte

  3. Pioneerer 1948 Alan Turing skriver program, simulert i 1952, (Turing testen) 1952 Baron Bowden’s bok, “Faster than thought” (Turing beskriver sjakk) 1956 Los Alamos Chess, første kjørende program på Maniac1 1960 ELO Rating System utviklet av USCF (Arpad Elo) 1983 David Horne skriver sjakk program for Sinclair ZX81 (781 bytes) 1990 ELO test system for sjakkmotorer (Bednorz & Tönissen, BT2450) Alan Turing Arpad Elo

  4. Sjakk Matt - Maskin vinner 1997 Deep Thought slår Garry Kasparov (ELO 2851) 2000 Kasparov spiller uavgjort mot Deep Thought 2004 Magnus Carlsen, 13 år gammel stormester 2007 Kasparov slår Turing’s sjakk motor på 16 trekk 2013 Carlsen blir World Chess Champion (ELO 2882 - April 2014) 2014 Beste sjakk motor, Stockfish 5 (ELO 3370)

  5. Hva er beste sjakkmotor ? Utvikling: 1993 PGN - Portable Game Notation og FEN - Forsyth Edwards Notation 1994 Xboard - Chess Engine Communication Protocol, lar sjakk motorer konkurrere 2000 UCI - Universal Chess Interface, ny standard for sjakk motorer, rating lister 2006 CCRL - Computer Chess Rating List, offisiell sjakk motor rating - 500+ motorer Vinnere: 1986-1989 Crafty 2005-2010 Rybka 2011 Rybka blir diskvalifisert for kopiering av Crafty og Fruit 2011-2014 Houdini - ELO 3336 (Athlon 64 X2 4600+ 2.4 GHz) 2014 -> Stockfish - ELO 3370 (fra Glarung av Tord Romstad) Java: Amyan - ELO 2598 - 93 plass Cuckoo Chess - ELO 2589 - 96 plass ←- (anbefales å kikke på) Carballo Chess Engine - ELO 2167 - 277 plass Tord Romstad (Stockfish)

  6. Hva er en Sjakkmotor ? 1. Generere trekk 2. Evaluere 3. Iterere, søke dypere

  7. Genereretrekk 1. Enkle: Hestogkonge 2. Sliders: Løper, tårnogdronning 3. Bonde: Flytt, slå, forvandling 4. Spesial-trekk: Rokade, En-passant 5. Kongenkanikkeståisjakk Forhåndskalkulerelåste (“pinned”) brikker - Bitboards 6. Halvtrekkoguavgjortsituasjoner Teknikker A. Enklesjakkmotorer: 10*12 brett B. Bitboards: 64-bit maps (Magic-number, pawn-hashing, etc)

  8. Testing: Perft / Divide Svart matter på 2 trekk ???

  9. Sjakk matt på to trekk To mulige matt stillinger for svart To mulige matt stillinger for hvit Transposisjon ! Hvilken bonde først?

  10. Testing: Perft / Divide Bare 6% ulike stillinger pga transposisjon

  11. Det er mulig... Dagbladet 06.08.2014 Sjakksjokki OL - sattti matt ettertre (!) trekk Zimbabwe-Togo 1.e4 g5 2.d4 f6 3.Qh5 mate 1-0

  12. Evaluere 1. Material verdi: Bonde=100, Hest=320, Løper=330, Tårn=500, Dronning=900, Konge=20000 2. Posisjons verdier / Piece Square Tables 3. Spesial evaluering: Dobbel-bonde, alene-bonde, forsvar, rokade muligheter, mobilitet Teknikker: 1. Zobrist Key - hashcode 2. Polyglot åpningsdatabaser 3. Slutt-spill databaser (for 5,4,3 brikker igjen ca 2GB)

  13. Eksempel PSQT: Hest / Springer (base = 198) (base = 100) (base= 258) Klassisk (Hest = 320) Stockfish Startspill (Hest = 817) Stockfish Sluttspill (Hest = 846)

  14. Eksempel PSQT: Konge (base = 198) (base = 100) (base = 258) Klassisk Startspill Stockfish Startspill Stockfish Sluttspill

  15. Iterere, søke dypere 1. Mini-max 2. Alpha-Beta pruning - Principal Variation Search - Late Move Reductions 3. Quiescence 4. Iterative deepening Sortering A. Merge/Insertion-sort B. Killer-move slots Transposisjonstabeller -- Double-key / Cuckoo hashing

  16. Benchmark 1. Elo Rating: Elostat / Bayeselo 2. Arena: Teste mot andre motorer 3. Konkurrere: CCRL Arena Chess GUI 3.5

  17. CCRL Rating liste for Sjakkmotorer

  18. Fishtest Stockfish 5 Github - branches Contribution benchmark Distributed testing

  19. Teknologi 1. Multi-thread / multi-process 4 tråder (dual-core med hyperthreading) - 2 ganger bedre 8 tråder (quad-core med hyperthreading) - 3 ganger bedre (hva med Amdahl’s lov? burde hatt ca 4 & 6 ganger forbedring) 2. Java eller C mange starter med Java og skriver om senere C/C++ er 2-3 ganger raskere (mye raskere på nye processorer med POPCNT, LSB bitscan-instruksjoner)

  20. Norwegian Gambit http://www.norwegiangambit.com Sjakk motor • Prototypes i Java og testes med JUnit • Målet: Bli beste Java Sjakk motor • Plan: Generere C-kode/ASM med Xtext / Xtend • Plan: Generere C-kode kode med effektiv hard-koding Verktøysett for Eclipse • Diverse PERFT/DIVIDE Junit test utilities • GUI i FX/SWT som kjører direkte fra Eclipse • PSQT Editor • FEN Hover som gir et bilde av sjakk brett når musa går over en FEN notasjon

  21. Takk for meg Hvis interesse for sjakk programmering ta kontakt, per@digre.com http://www.norwegiangambit.com

More Related