Nel caso degli articoli di approfondimento, le informazioni riportate, mantenute per integrità e riferimento storico, potrebbero risultare non più accurate.
Codice sorgente disponibile su GitHub
Un giocatore artificiale, risultato di una grande passione per gli scacchi. Ha rappresentato un utilissimo “laboratorio” per la sperimentazione di algoritmi di intelligenza artificiale e delle tecniche per l’ottimizzazione del codice.
Non è mai stato un programma commerciale disponibile al pubblico. Tuttavia siamo sempre stati 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.
Caratteristiche
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 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
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; impostazioni di gioco “da torneo”.
Test suite | Tempo limite | Tempo medio | Profondità media | NPS | Risultato |
WAC | 2s | 0.16s | 5ply | 1318K | 296/300 |
ECM | 30s | 3.26s | 7ply | 1338K | 738/879 |
GCP | 60s | 10.54s | 9ply | 1344K | 167/183 |
LCT | 180s | 12.75s | 10ply | 1319K | 24/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).
Gli scacchi sono al 99% tattica.
Quando il gioco si fa tattico, i computer iniziano a giocare.