12/04/2012

AdaChess

di Alessandro — Categorie: AdaChess — Tag:, , , 14 commenti
Nome ufficiale AdaChess
Ultima versione 2016.11.09
Ispirato da
Autore Alessandro Iavicoli
Protocollo Xboard
Elo 1624*
Ponder No, previsto in sviluppi futuri
Data primo rilascio  21 Gennaio 2013
Data ultima release Settembre 2016
Linguaggio di programmazione Ada
Sorgenti rilasciati Si, GPL
Download www.adachess.com
Note

(*) Elo versione 2.1

AdaChess è un motore di scacchi scritto in linguaggio Ada. Sviluppato per puro diletto, la prima versione si ispira a LaMoSca e TSCP sebbene l’implementazione sia in buona parte indipendente.

AdaChess si interfaccia tramite protocollo Winboard per comunicare con GUI quali Winboard/Xboard e Arena.

Da qui puoi scaricare la versione più recente di AdaChess.

14 commenti »

  1. admin ha detto:

    Non vedo l’ora di veder rilasciato questo progetto; prima di tutto per via del linguaggio col quale è stato sviluppato e poi perchè (soprattutto all’inizio) potrà essere un buon avversario x il mio Neurone.

    In realtà qualunque avversario che conosce le regole di base degli scacchi è un buon avversario x Neuro 😉

    Bye!
    LL

  2. Alessandro ha detto:

    Sono sicuro che i nostri motori giocheranno molte partite che ci faranno divertire!

  3. Lissandrello Luca Lissandrello Luca ha detto:

    Complimenti per il programma!
    Per ora lo sto facendo giocare su Arena e i comandi di base (winboard) sembra già riconoscerli!
    Ho modificato l’adachess.conf con:
    Verbose=2
    Thinking_Time=600 (sto facendo partite a 15′)

    Ma non ho capito il Depth=4… è un limitatore?

    Bye!
    LL

  4. Alessandro ha detto:

    La partita non è stata male, nella loro semplicità hanno giocato una sfida divertente!

    No il Depth viene usato in sostituzione al tempo. In realtà, non è possibile (per ora) giocare a profondità senza fare una piccola modifica al codice e ricompilare tutto, quindi quel parametro viene di fatto ignorato.
    Una limitazione assurda, me ne rendo conto, che non ho mai sistemato per dimenticanze o per fare altro.

    PS: 600 secondi sono 10 minuti, non 15, ma immagino che hai impostato quel valore tenendo conto che quello è il tempo di gioco per 40 mosse e non per tutta la partita.

  5. Lissandrello Luca Lissandrello Luca ha detto:

    Ciao!

    rispondo qui anche alla email…

    1) Nooo! Non è vero che hanno pareggiato! Quella che vedi attualmente sulla scacchiera di test è solo l’ultima delle sei partite di prova che ho fatto; i risultati sono a fondo della stessa pagina
    Engine Score Ne Ad S-B
    1: Neurone_XX 3.5/6 …… 10101= 8.75
    2: Adachess 2.5/6 01010= …… 8.75

    😀 Comunque siamo lì.

    2) Non ho provato a compilarlo, avevo poco tempo, ma stasera ci provo… è comunque molto basico come linguaggio.

    3) Ho già avvisato Leo Dijksman (tra un po’ vedrai salire l’indicatore dei download sul tuo sito)

    4) Il motore che utilizza degli algoritmi genetici è Satana, di Stefano Gemma; parte dell’elaborazione la fa geneticamente e parte la fa in maniera normale… il geniaccio è lui 🙂

    5) In questo momento sto cercando di implementare il machine learning su Neurone, ma ancora non ho rilasciato la versione perché il lavoro è incompleto; tralaltro, devo ancora capire perché, proprio contro il tuo programma, Neuro non ha ‘capito’ certe cose.

    Ma il tuo quanti nodi al secondo sviluppa?

    Bye!
    LL

  6. Alessandro ha detto:

    Ah quindi se le sono date di santa ragione! Molto bene, mi piacciono le partite in cui la violenza fra motori fa da padrona 😉
    Ada è un linguaggio con sintassi molto simile al Pascal, quindi il codice è generalmente molto leggibile. Tuttavia non è proprio basico, anzi, è piuttosto corposo! Supporta praticamente tutto e nelle versioni più recenti hanno finalmente introdotto alcune librerie che ormai tutti i linguaggi forniscono (Vettori, Stack, hashmap, …).

    Tuttavia, AdaChess non è esattamente il primo motore di scacchi scritto in Ada. E’ il terzo. Ma è l’unico che supporta tutte le regole del gioco, in particolare en-passant, arrocco, promozione a qualsiasi pezzo, patta per ripetizione di 3 volte la stessa mossa.

    3) Ottimo, e ti ringrazio tanto per questo!
    4,5) Eccezionale e interessantissima la programmazione genetica, che non ho mai approfondito. In bocca al lupo per gli sviluppi!

    Il numero di nodi è in po’ un mistero perché non ho capito bene qual è il metodo “standard” per calcolarli… però dovrei essere fra i 100 e i 300 mila al secondo. La lentezza è dovuta chiaramente al generatore di mosse legali (non pseudo-legali, ma solo quelle realmente giocabili), che è pesantino, e alle sue “varianti” cioè generazione di sole catture e di sole non-catture.
    Nella versione che sto sviluppando aggiungo in quiescenza anche le mosse di scacco al re che pure sono molto pesanti.
    Uno dei prossimi passi quindi sarà proprio quello di alleggerire il generatore e farlo respirare un po’ di più!
    Certo è che il limite non è di Ada, che in quanto a velocità è paragonabilissimo (mediamente) al C/Cpp, almeno secondo Hammer Principle che fa dei paragoni interessanti.

  7. Lissandrello Luca Lissandrello Luca ha detto:

    Ciao,

    ho corretto l’errore sul linguaggio di programmazione nell’announcer del sito, grazie!
    Perdonami la mia ignoranza, ADA non lo conosco proprio 😛

    Fino ad oggi la programmazione genetica è una strada che non ha portato miglioramenti sensibili nei chess engines, ma la voglia di sfatare questo tabù c’è… dai un’occhiata qua

    Adesso posto la domanda sui n/sec sul forum; vediamo se qualcuno ci illumina 🙂

    Bye!
    LL

  8. mauro.riccardi mauro.riccardi ha detto:

    @Alessandro: Occhio, la triplice ripetizione riguarda 3 ripetizioni della *posizione* non la ripetizione di *mosse*.

    bye^2, mr

  9. Alessandro ha detto:

    Grazie Mauro!! Fortunatamente si tratta solo di un errore nel commento (la fretta di scrivere…), mentre nel motore la regola è interpretata correttamente. Fiuuu!

  10. Edoardo Manino ha detto:

    è nato! è nato!
    complimenti al genitore!

  11. Alessandro ha detto:

    Grazie Edoardo!
    Grazie a tutti, e grazie anche a Luca che sta pubblicizzando il motore!
    Ieri ho avuto oltre 200 visite al sito e più di 80 download!

  12. mauro.riccardi mauro.riccardi ha detto:

    @Alessandro:
    Un paio di rapide osservazioni riguardo al protocollo xboard.
    La PV dovrebbe (dico dovrebbe perche’ il formato e’ libero, ma tutte le GUI se l’aspettano cosi’) iniziare con la mossa analizzata per la posizione attuale. Per cui nella posizione iniziale non e’ possibile avere una PV che inizia con d7d5 🙂
    Per la precisione fa cosi’ in modalita’ analisi, ma potrebbe essere che non l’hai implementata del tutto, quindi non dico di piu’.
    Inoltre ogni riga che mandi *deve* terminare con un ‘\n’ (carattere di newline, non sono sicuro di come lo implementi Ada), altrimenti l’interfaccia e’ autorizzata a fare finta di niente (salvo fare casini dopo). Ho intervettato alcune righe senza ‘\n’.
    La linea di post contenente la PV deve avere il seguente formato (vedi http://home.hccnet.nl/h.g.muller/engine-intf.html):

    ply score time nodes pv

    pv e’ una stringa freestyle (ma meglio seguire certe convenzioni, cosi’ le GUI non si ingrippano);
    ply, score time e nodes sono degli interi, ply ovviamente la profondita’ in semimosse, score il punteggio in centipedone, e time il tempo in centesimi di secondo (ho notato che qui scrivi due float). Questo credo che sia il motivo per cui la GUI rileva dei punteggi assurdi (almeno arena lo fa, non ho controllato winboard).

    Altra cosa: se vuoi essere sicuro che xboard non faccia casini con tue righe di commento, prependile con ‘#’ (e terminale con ‘\n’); da umano le leggi lo stesso, la GUI li ignora e quindi puoi scrivere quello che vuoi senza preoccupazioni.

    bye^2, mr

  13. Alessandro ha detto:

    Grazie mille Mauro, cerco di sistemare questi punti per la prossima versione. Ti chiedo un piacere, se mi mandi l’output delle linee che non terminano con il carattere di ‘\n’ quando ti capita nuovamente di individuarne qualcuna.
    Comunque mi leggerò quel documento che sembra fatto bene, perché voglio implementare una gran parte delle funzionalità del protocollo.

  14. mauro.riccardi mauro.riccardi ha detto:

    Quel documento e’ in effetti la descrizione ufficiale del protocollo, ed e’ mantenuta dalla stessa persona che sviluppa attualmente il suddetto (e le versioni di winboard/xboard dalla 4.4.1 in poi).

    Puo’ essere utile anche questo http://www.ascotti.org/programming/chess/xboard.htm
    Continuo a segnalarlo, in effetti, forse si potrebbe inserire tra i “link caldi” del sito.
    Per me e’ estremamente utile (un grazie ad Alessandro Scotti).

    bye^2, mr

Lascia un commento

© 2017 G 6 Tutti i diritti riservati - Buon divertimento!

By continuing to use the site, you agree to the use of cookies. more information

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi