Soluzioni informatiche per l'impresa
Principale Servizi Soluzioni Supporto & Download Chi siamo Contatta
 
Gli scacchi sono al 99% tattica.

Richard Teichmann
Quando il gioco si fa tattico, i computer iniziano a giocare.

Robert Hyatt

JOKER

Joker è un giocatore artificiale, risultato di una grande passione per gli scacchi. Rappresenta un utilissimo "laboratorio" per la sperimentazione di algoritmi di intelligenza artificiale e delle tecniche per l'ottimizzazione del codice.

Non è un programma commerciale e, almeno per ora, non è disponibile al pubblico. Siamo comunque pronti a rispondere a qualsiasi domanda o curiosità in merito al suo funzionamento, interessati a scambiare esperienze ed opinioni circa i giocatori artificiali e pronti a renderlo disponibile per tornei/eventi via internet.

Scacchi ed intelligenza artificiale

Da sempre è vivo l'interesse per macchine capaci di giocare a scacchi: la creazione di un sistema in grado di competere con successo contro l'uomo, in un'attività che richiede notevoli capacità strategiche, fu subito percepita come la pietra miliare sulla strada verso l'intelligenza artificiale.

Gli scacchi sono un gioco ad informazione perfetta: al contrario del poker o del backgammon, tutte le informazioni riguardanti lo stato della partita sono note ai partecipanti e non si riscontrano elementi legati al caso. Entrambi i giocatori possono osservare la posizione e conoscono le mosse effettuate dall'avversario; per questo gli scacchi sono un gioco puramente intellettuale ed un sistema "perfetto" per sperimentare tecniche di intelligenza artificiale.

Il principale punto di forza del computer risiede nella velocità di calcolo. Generalmente i programmi scacchistici adottano un algoritmo brute force strettamente legato alla velocità di generazione / ricerca / analisi delle mosse. Nel tempo le tecniche di ricerca si sono evolute rimanendo però legate, in un modo o nell'altro, all'albero di gioco minmax (una delle idee più note e di successo dell'IA).

Considerata la sconfitta, a metà degli anni '90, del campione del mondo Gary Kasparov ad opera di Deep Blue, si potrebbe pensare che la ricerca in questo campo sia ormai esaurita. In realtà non è così. Esistono numerose altre idee che possono essere realizzate e sperimentate in un programma scacchistico (reti neurali, algoritmi genetici, calcolo in collaborazione…). Gli scacchi sono un ambiente controllato che permette di sottoporre al computer una situazione ed un obiettivo da raggiungere decidendo quali possibilità preferire. Gli algoritmi di decision making devono molto agli scacchi ma è sicuro che anche molte altre branche dell'IA abbiano avuto ricadute positive.

La programmazione scacchistica è simile ad un capolavoro di letteratura, anche dopo averlo ponderato nei dettagli, continua a produrre tesori.

Caratteristiche

Interfaccia di gioco XBoard

Tecniche

  • motore di gioco realizzato in assembler/C++ per la massima velocità. Basato sull'algoritmo di ricerca MTD(f) con tecniche per l'accelerazione della convergenza, approfondimento iterativo, null moves forward pruning, null move verification, internal iterative deepening, ricerca di quiescenza, ricerca selettiva con estensioni dinamiche e fractional ply increment.
  • funzioni di valutazione diversificate in base alla fase di gioco. Sfruttamento di tecniche quali lazy eval, Pawn hash table estesa con informazioni relative a struttura pedonale e Re.
  • ordinamento mosse specifico in base alla situazione della ricerca con ricorso a tabella delle trasposizioni, mosse killer, euristica storica ed MVT/LVA (durante la ricerca di quiescenza).
  • bitboard per la massima efficienza su architetture a 64bit;
  • learning function per la libreria di apertura;

Di gioco

  • Supporto per le tabelle dei finali EGTB (Eugene Nalimov).
  • Interfaccia di gioco Arena / Xboard / Winboard (con supporto della seconda versione del Chess Engine Communication Protocol).
  • Libreria di apertura creabile dall'utente.
  • Disponibile per BSD, Linux e Windows.
  • Analisi delle partite giocate.
  • Supporto per connessione a FICS (Free Internet Chess Server).

Risultati

Segue un breve riepilogo dei risultati ottenuti dal programma nell'analisi di alcune note raccolte di test.
Il sistema di riferimento è un elaboratore con microprocessore AMD Athlon XP 2500+, 256MB di Ram, sistema operativo Linux v2.6.10; ultima versione di Joker con impostazioni di gioco "da torneo".
Test suiteTempo limiteTempo medioProfondità mediaNPSRisultato
WAC 2s0.16s5ply1318K296/300
ECM 30s3.26s7ply1338K738/879
GCP 60s10.54s9ply1344K167/183
LCT 180s12.75s10ply1319K24/35

Con tempo limite si intende il tempo massimo di analisi per posizione concesso al programma. Il tempo medio è la media dei tempi necessari a Joker per scoprire la mossa corretta e confermarla per due ply (profondità di ricerca in semimosse) consecutivi. La profondità media è la media delle profondità di analisi raggiunte dal programma alla seconda conferma consecutiva della mossa corretta. Gli NPS sono le posizioni al secondo elaborate da Joker durante l'analisi (in migliaia).

WAC

Uno dei test più noti. Si tratta di trecento posizioni tattiche tratte dal libro "Win at Chess", di Fred Reinfeld (1958).

ECM

Corposa raccolta tratta dall'Enciclopedia Scacchistica del Mediogioco. Alcune soluzioni vengono reputate dubbie.

GCP

Un sottoinsieme di posizioni tattiche tratte da ECM e selezionate da Gian Carlo Pascutto ed altri. Vari livelli di difficoltà, ma tutte le posizioni sono verificate.

LCT

Una raccolta di complessi problemi selezionati da Frederic Louguet e pubblicata per la prima volta sulla rivista "La Puce Echiqueenne". Per il 40% si tratta di posizioni a carattere posizionale/strategico, 34% tattico, 26% finali.
 
Mappa del sitoOpportunitàCollegamentiRiservatezzaNote legaliAccessibilitàW3C
Tutti i marchi ed i copyright in questa pagina sono di proprietà dei rispettivi proprietari. Per il resto © EOS (Pisa). Ultimo aggiornamento: 2011-2-26.