Soluzioni informatiche per l'impresa

Joker

1997-2003
CHIUSO
Questa pagina riguarda un progetto terminato e non più supportato od un articolo non più aggiornato.

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.

Richard Teichmann

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

Robert Hyatt