Stockfish

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search
Stockfish
software
Logo
Droidfish, applicazione Android che implementa una GUI per Stockfish
Droidfish, applicazione Android che implementa una GUI per Stockfish
GenereMotore scacchistico
SviluppatoreTord Romstad
Joona Kiiski
Marco Costalba
Data prima versione2 novembre 2008
Ultima versione10 (29 novembre 2018)
Sistema operativoMultipiattaforma
LinguaggioC++
LicenzaGNU General Public License
(licenza libera)
Sito web

Stockfish (inglese per stoccafisso) è un motore scacchistico UCI open source multipiattaforma, sviluppato originariamente da Tord Romstad e Marco Costalba come fork di Glaurung, altro motore open-source precedentemente sviluppato dallo stesso Romstad, ed è correntemente mantenuto da una comunità di programmatori open-source.

Da circa metà degli anni 2010 Stockfish ha occupato ripetutamente la prima posizione nelle principali graduatorie di motori scacchistici e (al 2018) è considerato il più forte motore scacchistico open source e uno dei più forti motori in assoluto insieme a Houdini e Komodo.[1][2][3] Ha vinto tre edizioni (stagioni 6, 9 e 11) e si è classificato tre volte secondo (stagioni 5, 7 e 8) nel Top Chess Engine Championship, considerato il campionato del mondo non ufficiale di scacchi per computer.

Per via della sua forza di gioco e della licenza libera sotto la quale è distribuito, Stockfish è diventato un motore molto popolare su svariate piattaforme. Può essere utilizzato su una generica interfaccia utente con supporto per il protocollo UCI[4][5], è il motore predefinito delle interfacce desktop BlitzIn e Dasher per Internet Chess Club e di applicazioni mobile come SmallFish e Droidfish, e a partire dal marzo 2017 è usato nel backend di Lichess.[6]

Caratteristiche[modifica | modifica wikitesto]

Stockfish usa una rappresentazione della posizione tramite bitboard, supporta fino a 512 thread e ha una dimensione massima della hash table di trasposizione pari a 1 TB. Implementa una sofisticata ricerca ad albero con potatura alfa-beta e, in confronto con altri motori, ha una profondità di ricerca relativamente elevata, dovuta in parte alla potatura aggressiva e alla late move reduction.[7][8] Supporta gli scacchi960, eredità di Glaurung e, dal 2014, integra il supporto per le tablebase Syzygy.[9]

Le versioni stabili e beta sono disponibili sotto forma di codice sorgente C++ e di binari precompilati per Microsoft Windows, macOS, Linux 32-bit/64-bit e Android.

Storia[modifica | modifica wikitesto]

Il software è nato come fork di Glaurung, motore scacchistico open source sviluppato da Romstad e distribuito inizialmente nel 2004. Quattro anni dopo Marco Costalba sviluppò Stockfish come fork di Glaurung, e il nome è dovuto al fatto che il programma fosse "prodotto in Norvegia e cucinato in Italia", in riferimento alle nazionalità dei due sviluppatori. La versione 1.0 è stata distribuita nel novembre 2008.[10][11] Per un certo periodo diverse idee e modifiche sono state trasferite bidirezionalmente tra i due progetti, fino a quando Romstad decise di abbandonare lo sviluppo di Glaurung (l'ultima versione è stata distribuita nel dicembre 2008) a favore dello sviluppo di Stockfish, che era il più avanzato tra i due progetti.[12]

Nel 2011 Romstad ha abbandonato lo sviluppo di Stockfish, e nel 2014 anche Costalba ha abbandonato il progetto, che è stato successivamente mantenuto da una comunità di programmatori[13] in un nuovo repository gestito da un gruppo di volontari.[14]

Fishtest[modifica | modifica wikitesto]

A partire dal 2013 Stockfish ha fatto uso nello sviluppo di un framework di test distribuito chiamato Fishtest, sostenuto da volontari i quali donano tempo CPU per l'esecuzione dei test.[15][16][17] Le modifiche alla logica del motore vengono accettate se introducono un miglioramento statisticamente significativo della performance di gioco, misurata tramite test del rapporto di probabilità sequenziale giocando decine di migliaia di partite contro una precedente istanza di riferimento del software.

Al giugno 2017 Fishtest ha impiegato oltre 745 anni di tempo CPU per giocare oltre 485 milioni di partite.[18] L'introduzione di Fishtest ha rapidamente aumentato la forza di gioco di Stockfish di circa 120 punti Elo in 12 mesi, rendendolo uno dei motori più forti al mondo,[19][20] motivo per il quale Gary Linscott, autore di Fishtest, è stato aggiunto alla lista degli autori del progetto a partire da Stockfish 7.

Risultati[modifica | modifica wikitesto]

Top Chess Engine Championship[modifica | modifica wikitesto]

Nel 2013 Stockfish è arrivato secondo nella quarta e quinta stagione del Top Chess Engine Championship (TCEC), comunemente riferito come il campionato del mondo non ufficiale di scacchi per computer, con un punteggio superfinal di 23–25 contro Houdini 3 e contro Komodo 1142. Il team di Komodo ha accettato il titolo postumo, in quanto Don Dailey, autore principale del motore, è morto a seguito di una malattia durante la fase finale dell'evento. In suo onore, la successiva versione di Stockfish è stata chiamata "Stockfish DD".[21]

Il 30 maggio 2014 Stockfish 170514 (versione di sviluppo di Stockfish 5, con supporto per le tablebase) ha vinto nettamente la sesta stagione del TCEC Season 6, battendo Komodo 7x per 35.5-28.5 nel superfinal.[22] Il giorno successivo alla vittoria è stato distribuito Stockfish 5.[23] Nella settima stagione del TCEC Stockfish ha raggiunto la fase superfinal, dove è stato sconfitto da Komodo per 30.5-33.5.[22] Nell'ottava stagione Stockfish è stato sconfitto in superfinal da Komodo per 46.5-53.5.[22]

Nel 2016 Stockfish ha vinto la nona stagione del TCEC, battendo Houdini 5 per 54.5-45.5.[24] Nella decima stagione, Stockfish si è classificato terzo.

Nel 2018 il motore vince di gran lunga l'11 stagione del TCEC classificandosi al primo posto della Premier Division e battendo Houdini realizzando 20 vittorie, 78 pareggi e solo 2 sconfitte (entrambe giocando con il nero).

Stockfish - Nakamura[modifica | modifica wikitesto]

Nell'agosto 2014 Stockfish ha affrontato il grande maestro Hikaru Nakamura (all'epoca con un Elo di 2798, quinto nella classifica mondiale) in un match di quattro partite. Nelle prime due partite Nakamura ha giocato con l'ausilio di Rybka, e nelle successive due partite ha giocato con il bianco e con handicap di un pedone. Stockfish ha giocato senza libro di apertura e tablebase. Il motore ha vinto entrambe le fasi del match per 1.5–0.5.[25]

Confronto tra grandi giocatori[modifica | modifica wikitesto]

In uno studio pubblicato nell'aprile del 2017, curato da Jean-Marc Alliot presso l'Institut de recherche en informatique de Toulouse, Stockfish è stato usato come riferimento per confrontare il gioco dei più grandi campioni umani della storia, ed è risultato che Magnus Carlsen è il giocatore che ha la più alta probabilità di giocare mosse che aderiscono alle analisi di Stockfish.[26]

Torneo su chess.com[modifica | modifica wikitesto]

Nel novembre 2017 chess.com ha organizzato un torneo tra i dieci più forti motori, con una finale tra i due più forti, nella quale Stockfish ha battuto Houdini per 10.5-9.5, ottenendo tre vittorie con il nero e due sconfitte con il bianco.[27][28] L'evento ha impiegato varie cadenze di gioco, e i motori sono stati eseguiti su un host virtuale (Intel Xeon 2.90 GHz, due processori con 18 core e hyperthreading, 60 GB RAM, Windows) su AWS.[27]

Stockfish - AlphaZero[modifica | modifica wikitesto]

Il 5 dicembre 2017 DeepMind ha pubblicato un preprint su arXiv nel quale ha presentato AlphaZero, un nuovo algoritmo di intelligenza artificiale che supporta una varietà di giochi da tavolo. Stockfish 8 è stato usato come benchmark per valutare la performance di AlphaZero nel gioco degli scacchi. Poiché entrambi i software girano solo su piattaforme hardware mutuamente incompatibili, AlphaZero è stato eseguito su un computer equipaggiato con quattro TPU, mentre Stockfish è stato eseguito su un computer in un'istanza con 64 thread e 1 GB di hash table. I software hanno disputato un match di 100 partite con un minuto per mossa (scelta criticata da Tord Romstad)[29] e il risultato finale è stato di 25 vittorie di AlphaZero con il bianco, 3 vittorie di AlphaZero con il nero, e patta nelle 72 rimanenti partite.[30] In altri 12 match di 100 partite, giocati usando come posizione iniziale le 12 aperture più comuni nel gioco umano, AlphaZero ha totalizzato in totale 290 vittorie, 886 patte e 24 sconfitte, con un punteggio finale di 733-467.[31][32][33][30]

AlphaZero è un algoritmo di apprendimento automatico ed è stato addestrato unicamente per rinforzo nel corso di 9 ore su un cluster di TPU. Gli autori stimano che abbia superato la forza di gioco di Stockfish dopo le prime quattro ore di addestramento.[34][35]

Note[modifica | modifica wikitesto]

  1. ^ CEGT Best Versions 40/20 (AMD 4200+), Chess Engines Grand Tournament, 29 giugno 2014. URL consultato il 1º luglio 2014 (archiviato dall'url originale l'8 settembre 2012).
  2. ^ CCRL 40/40, Computer Chess Rating Lists, 29 giugno 2014. URL consultato il 1º luglio 2014 (archiviato dall'url originale il 2 ottobre 2011).
  3. ^ IPON Rating List, su inwoba.de, 6 giugno 2014. URL consultato il 1º luglio 2014 (archiviato dall'url originale il 29 maggio 2014).
  4. ^ Using the Stockfish Engine Archiviato il 9 gennaio 2018 in Internet Archive., Stockfish Support.
  5. ^ ChessEngines, PyChess Github.
  6. ^ [1]
  7. ^ Larry Kaufman, Stockfish depth vs. others; challenge, in talkchess.com, 24 novembre 2013. URL consultato l'8 marzo 2014.
  8. ^ Erik Kislik, IM Erik Kislik analyzes the TCEC Superfinal in-depth, in susanpolgar.blogspot.hu, 6 giugno 2014. URL consultato il 7 giugno 2014.
  9. ^ Stockfish development versions, in abrok.eu. URL consultato il 1º febbraio 2015 (archiviato dall'url originale l'11 novembre 2014).
  10. ^ About, in stockfishchess.org. URL consultato il 5 marzo 2014.
  11. ^ Marco Costalba, Stockfish 1.0, in talkchess.com, 2 novembre 2008. URL consultato il 6 marzo 2014.
  12. ^ Tord Romstad, Re: Stockfish - Glaurung, in wbec-ridderkerk.forumotion.com, 5 settembre 2009. URL consultato il 5 marzo 2014.
  13. ^ Marco Costalba, Step down, in groups.google.com, 18 giugno 2014. URL consultato il 19 giugno 2014.
  14. ^ Gary Linscott, New official repository, in groups.google.com, 18 giugno 2014. URL consultato il 19 giugno 2014.
  15. ^ Stockfish Testing Framework, in tests.stockfishchess.org. URL consultato il 7 marzo 2014.
  16. ^ Get Involved, in stockfishchess.org. URL consultato l'8 marzo 2014.
  17. ^ Marco Costalba, Fishtest Distributed Testing Framework, in talkchess.com, 1º maggio 2013. URL consultato il 18 aprile 2014.
  18. ^ Stockfish Testing Framework - Users, in test.stockfishchess.org. URL consultato il 17 giugno 2017.
  19. ^ Fast GM Rating List, su fastgm.de.
  20. ^ CCRL Rating List, su computerchess.org.uk (archiviato dall'url originale il 30 maggio 2014).
  21. ^ Stockfish Blog on Stockfish DD.
  22. ^ a b c TCEC Season Archive, in tcec.chessdom.com. URL consultato il 9 gennaio 2015.
  23. ^ Marco Costalba, Stockfish 5, in talkchess.com, 31 maggio 2014. URL consultato il 19 giugno 2014.
  24. ^ Stockfish is the TCEC Season 9 Grand Champion, su Chessdom. URL consultato il 5 dicembre 2016.
  25. ^ https://www.chess.com/news/stockfish-outlasts-nakamura-3634.
  26. ^ When artificial intelligence evaluates chess champions, su Science Daily (CNRS), 25 aprile 2017.
  27. ^ a b https://www.chess.com Chess.com announces computer chess championship.
  28. ^ https://www.chess.com Stockfish wins chess.com computer championship.
  29. ^ AlphaZero: Reactions From Top GMs, Stockfish Author, chess.com, 8 dicembre 2017. URL consultato il 13 dicembre 2017.
    «The match results by themselves are not particularly meaningful because of the rather strange choice of time controls and Stockfish parameter settings: The games were played at a fixed time of 1 minute/move, which means that Stockfish has no use of its time management heuristics (lot of effort has been put into making Stockfish identify critical points in the game and decide when to spend some extra time on a move; at a fixed time per move, the strength will suffer significantly). The version of Stockfish used is one year old, was playing with far more search threads than has ever received any significant amount of testing, and had way too small hash tables for the number of threads. I believe the percentage of draws would have been much higher in a match with more normal conditions.».
  30. ^ a b 'Superhuman' Google AI claims chess crown, in BBC News, 6 dicembre 2017. URL consultato il 7 dicembre 2017.
  31. ^ DeepMind’s AlphaZero crushes chess, chess.com, 6 dicembre 2017. URL consultato il 13 dicembre 2017.
  32. ^ David Silver, Thomas Hubert, Julian Schrittwieser, Ioannis Antonoglou, Matthew Lai, Arthur Guez, Marc Lanctot, Laurent Sifre, Dharshan Kumaran, Thore Graepel, Timothy Lillicrap, Karen Simonyan, Demis Hassabis, Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm, 5 dicembre 2017.
  33. ^ DeepMind’s AI became a superhuman chess player in a few hours, just for fun, in The Verge. URL consultato il 6 dicembre 2017.
  34. ^ (EN) Sarah Knapton e Leon Watson, Entire human chess knowledge learned and surpassed by DeepMind's AlphaZero in four hours (Telegraph.co.uk), 6 dicembre 2017. URL consultato il 6 dicembre 2017.
  35. ^ James Vincent, DeepMind’s AI became a superhuman chess player in a few hours, just for fun (The Verge), 6 dicembre 2017. URL consultato il 6 dicembre 2017.

Collegamenti esterni[modifica | modifica wikitesto]