Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Sjakk Matt Sjakk Programmering Javazone 2014, Per S Digre.

Liknende presentasjoner


Presentasjon om: "Sjakk Matt Sjakk Programmering Javazone 2014, Per S Digre."— Utskrift av presentasjonen:

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)Alan Turing 1952 Baron Bowden’s bok, “Faster than thought” (Turing beskriver sjakk) 1956 Los Alamos Chess, første kjørende program på Maniac ELO Rating System utviklet av USCF (Arpad Elo)Arpad Elo 1983 David Horne skriver sjakk program for Sinclair ZX81 (781 bytes)Sinclair ZX ELO test system for sjakkmotorer (Bednorz & Tönissen, BT2450) Alan TuringArpad Elo

4 Sjakk Matt - Maskin vinner 1997 Deep Thought slår Garry Kasparov (ELO 2851)Garry Kasparov 2000 Kasparov spiller uavgjort mot Deep Thought 2004 Magnus Carlsen, 13 år gammel stormesterMagnus Carlsen 2007 Kasparov slår Turing’s sjakk motor på 16 trekk 2013 Carlsen blir World Chess Champion (ELO 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 motorer Vinnere: Crafty Rybka 2011 Rybka blir diskvalifisert for kopiering av Crafty og Fruit Houdini - ELO 3336 (Athlon 64 X GHz) > Stockfish - ELO 3370 (fra Glarung av Tord Romstad) Java: Amyan - ELO plass Cuckoo Chess - ELO plass ←- (anbefales å kikke på) Carballo Chess Engine - ELO plass Tord Romstad (Stockfish)

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

7 Generere trekk 1. Enkle: Hest og konge 2. Sliders: Løper, tårn og dronning 3. Bonde: Flytt, slå, forvandling 4. Spesial-trekk: Rokade, En-passant 5. Kongen kan ikke stå i sjakk Forhåndskalkulere låste (“pinned”) brikker - Bitboards 6. Halvtrekk og uavgjort situasjoner Teknikker A. Enkle sjakk motorer: 10*12 brett B. Bitboards: 64-bit maps (Magic-number, pawn-hashing, etc)

8 Testing: Perft / Divide DybdeTrekkSlåEn passantRokadeForvandlingSjakkMatt 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 DybdeTrekkSlåEn passantRokadeForvandlingSjakkMatt

11 Det er mulig... Dagbladet Sjakksjokk i OL - sattt i matt etter tre (!) 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= 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 Stockfish Startspill (Hest = 817)Stockfish Sluttspill (Hest = 846)Klassisk (Hest = 320) (base = 198) (base = 100) (base= 258)

14 Eksempel PSQT: Konge Stockfish StartspillStockfish SluttspillKlassisk Startspill (base = 198) (base = 100) (base = 258)

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 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,


Laste ned ppt "Sjakk Matt Sjakk Programmering Javazone 2014, Per S Digre."

Liknende presentasjoner


Annonser fra Google