Fabio Gobbato


Questa pagina ha una gerarchia - Pagine discendenti: 12′ Campionato Italiano, Faqs, Engine Testing, Engines alternativi, Engine Testing – All games

Risposte al Forum Create

Stai vedendo 15 articoli - dal 1 a 15 (di 87 totali)
  • Autore
    Articoli
  • in risposta a: Alternative move #12403

    Dalla documentezione uci:

    
    * go
    	start calculating on the current position set up with the "position" command.
    	There are a number of commands that can follow this command, all will be sent in the same string.
    	If one command is not send its value should be interpreted as it would not influence the search.
    	* searchmoves  .... 
    		restrict search to this moves only
    		Example: After "position startpos" and "go infinite searchmoves e2e4 d2d4"
    		the engine should only search the two moves e2e4 and d2d4 in the initial position.
    

    In sintesi l’engine dovrà eliminare dalle mosse generate alla radice tutte le mosse diverse da quelle passate dalla gui.

    in risposta a: IGT 2018: sede e data #12293

    A me sta bene tutto. Sabato la sede di gioco da che ora è aperta? Penso che arriverò con comodo prima delle 14.00

    in risposta a: IGT 2018: sede e data #12281

    Per la cena di Sabato, in quanti siamo? Dove si va? Conviene prenotare per tempo visto che si tratta di un Sabato sera

    in risposta a: AAAAAAAA Aiuto cercasi :-) #12251

    In genere se devo cercare qualche problema procedo così:
    Genero l’eseguibile del mio engine con gli assert attivi e sotto linux con gcc compilo senza ottimizzazioni con -fsanitize=address -fsanitize=leak -fsanitize=undefined . Queste opzioni attivano in esecuzione i messaggi sullo stderr del sanitizer che ti possono indicare possibili problemi con la memoria o eventuali undefined behavior (se usi clang ci dovrebbero essere opzioni simili).
    Una volta creato l’eseguibile lancio un test con cutechess con un tc molto elevato e con tutti i core a disposizione (non sono sicuro che il quantitativo di ram possa essere un problema, potresti provare anche utilizzando il massimo che hai a disposizione) indirizzando su file stderr con l’aggiunta di questa opzione da riga di comando: stderr=errori.txt
    A me è capitato che un test possa durare dei giorni senza nessun problema ma alla lunga se effettivamente c’è un problema qualcosa viene fuori, ovviamente devi aver inserito nel codice più assert possibili in modo da individuare il maggior numero di problemi possibili.
    Un altro controllo che faccio sotto linux è con valgrind per verificare l’utilizzo della memoria e la ricerca multithread e tool come cppcheck per un analisi statica dei sorgenti, quest’ultimo se si stà particolarmente attenti non dovrebbe essere utile, ma non si sa mai, meglio un controllo in più che uno in meno.

    in risposta a: I miei errori #12140

    Manca anche il tratto nel calcolo della chiave.

    in risposta a: I miei errori #12138

    Per usare un puntatore in quel modo bisognerebbe definire i pezzi su di un array.

    in risposta a: Perft #12126

    Ricordo che anch’io all’inizio ho speso diverso tempo per cercare di ottimizzare i generatori e l’esecuzione delle mosse. Oggi però il mio engine impiega il 40% del tempo nella valutazione e il 15% nell’ordinamento delle mosse.
    Tutti i generatori impiegano circa il 5%, altro 5% speso nell’eseguire le mosse e sempre un 5% per verificare la legalità di una mossa. Il resto è diviso tra altre funzioni della ricerca e della quiescenza.
    Se anche avessi dei generatori ed un esecuzione delle mosse ancora più veloci non cambierebbe molto.

    in risposta a: Test syzygy probe #12098

    Ho aggiornato la unit test per le syzygy aggiungendo anche le mosse che il root_probe dovrebbe filtrare.
    Il formato del file csv è: fen,dtz,wdl,numero mosse,mossa1, mossa2,…
    Se il campo numero mosse fosse ad esempio 10 ci saranno 10 campi successivi contenenti la mosse in formato LAN.
    Mentre i valori dtz e wdl li avevo verificati anche con python chess le mosse filtrate non le ho confrontate con altri engine ma mi sono limitato a controllare la correttezza del codice.

    Ecco il link al file: https://drive.google.com/file/d/1Nud1CnuK9lHrvuPHW3PqkOYGt3oNkt53/view?usp=sharing

    in risposta a: Lista bugs di Arena #12063

    Altro problema di Arena che bisogna gestire se si vuole che l’engine funzioni anche sotto questa gui, è quello che (almeno con uci) l’interfaccia lancia l’engine in ponder anche su una posizione di scacco matto quindi con 0 mosse legali. Nel mio engine ho del codice specifico per verificare che la posizione ricevuta dalla gui abbia delle mosse legali, altrimenti invia alla gui “bestmove 0000”

    in risposta a: Ancora su queste statistiche… #12040

    Ok, penso di aver capito il perchè poi gestisci la cosa come è meglio per te.
    Nel caso di Pedone 1.6 le 6 partite entro le 30 mosse sono tutte terminate in patta per triplice ripetizione, quindi in quella fascia per un engine forte ricadono molte patte per ripetizione. La patta per un engine forte non è un buon risultato, quindi lo score che ottiene è più basso. Penso sia questo il motivo.

    in risposta a: Ancora su queste statistiche… #12038

    Effettivamente 30 mosse per gli engine più forti sono poche infatti la maggior parte delle partite sono più lunghe.
    In realtà però se vai a vedere lo score entro le 30 mosse, ossia (vittorie+patte/2)/totpartite senza andare a vedere l’elo dell’engine contro il quale si è scontrato si nota comunque che lo score sotto le 30 mosse è inferiore rispetto alle altre fasi.

    Ad esempio gli score di Pedone 1.6
    Mosse <= 30 Partite: 6 Score: 0.500
    Mosse <= 50 Partite: 13 Score: 0.654
    Mosse > 50 Partite: 141 Score: 0.681

    Le partite sono poche e questo è un dato di fatto, ma vedendo la stessa cosa per gli altri engine dello stesso livello sembra che engine più forti possano commettere maggiori errori (anche rispetto agli engine più deboli) nelle prime mosse mentre è più difficile che commettano errori nel tardo mediogioco o nel finale.

    in risposta a: IGT 2018 #11997

    Non credo di essere la persona più adatta per organizzare l’IGT ma se volete a Mestre c’è questa associazione http://www.mestrescacchi.it/ se lo ritenete opportuno posso provare a informarmi se sono disponibili. A Mestre c’è l’aereoporto Marco Polo ed è collegata anche dalla rete ferroviaria.

    in risposta a: Shield chess engine #11773

    Il programma era pensato per funzionare con il pgn generato da cutechess-cli. I dati sulle aperture e sul numero di mosse vengono calcolati considerando i tag del pgn, se qualche tag non fosse presente ovviamente il programma non riesce a caricare i dati. Per quanto riguarda i dati su quante patte per ripetizione, matto, aggiudicazione ecc. ogni programma che genera i pgn usa dei commenti differenti al termine della serie di mosse, quindi eventualmente dovresti adattare il programma per ricercare il relativo commento. Ripeto, era pensato esclusivamente per ricavare dei dati a partire dal pgn generato da cutechess-cli.

    in risposta a: Shield chess engine #11757

    Ho usato un programma che ho fatto io, si basa sui tag inseriti nel pgn, è pensato per il pgn generato da cutechess-cli, se vi serve ve lo posso passare.

    in risposta a: Shield chess engine #11755

    Ecco alcune statistiche ricavate dal test di shield 2.0, con * sono segnati i valori sotto la media, essendo il numero di partite ridotto alcuni valori non sono troppo indicativi.

    
    Partite 100 Punteggio: 0.575000 Elo: 52.5 Errore 59.2
    
    Mosse <= 40 Partite:     2 Elo: 190.8 Errore 340.5   
    Mosse <= 60 Partite:    21 Elo: 311.3 Errore 95.7   
    Mosse <= 80 Partite:    32 Elo: 32.7 Errore 115.9  *
    Mosse <=100 Partite:    24 Elo: -43.7 Errore 125.1  *
    Mosse <=120 Partite:     8 Elo: -88.7 Errore 249.2  *
    Mosse <=140 Partite:     4 Elo: -0.0 Errore 0.0  *
    Mosse <=160 Partite:     5 Elo: -0.0 Errore 0.0  *
    Mosse > 160 Partite:     4 Elo: 88.7 Errore 170.2   
    
    ECO: A08 Partite:     1 Elo: -inf Errore -nan  *
    ECO: A11 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: A12 Partite:     1 Elo: inf Errore -nan   
    ECO: A28 Partite:     2 Elo: -190.8 Errore 340.5  *
    ECO: A29 Partite:     5 Elo: 147.2 Errore 272.4   
    ECO: A30 Partite:     1 Elo: inf Errore -nan   
    ECO: A52 Partite:     1 Elo: inf Errore -nan   
    ECO: A54 Partite:     1 Elo: inf Errore -nan   
    ECO: A57 Partite:     1 Elo: inf Errore -nan   
    ECO: B01 Partite:     1 Elo: inf Errore -nan   
    ECO: B10 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: B12 Partite:     2 Elo: -0.0 Errore 681.0  *
    ECO: B15 Partite:     2 Elo: -0.0 Errore 681.0  *
    ECO: B22 Partite:     1 Elo: -inf Errore -nan  *
    ECO: B33 Partite:     1 Elo: -inf Errore -nan  *
    ECO: B38 Partite:     2 Elo: -inf Errore 0.0  *
    ECO: B44 Partite:     1 Elo: inf Errore -nan   
    ECO: B49 Partite:     3 Elo: -0.0 Errore 393.2  *
    ECO: B51 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: B56 Partite:     2 Elo: 190.8 Errore 340.5   
    ECO: B66 Partite:     1 Elo: inf Errore -nan   
    ECO: B81 Partite:     1 Elo: inf Errore -nan   
    ECO: B90 Partite:     2 Elo: -inf Errore 0.0  *
    ECO: B92 Partite:     2 Elo: -inf Errore 0.0  *
    ECO: B97 Partite:     1 Elo: inf Errore -nan   
    ECO: C00 Partite:     1 Elo: inf Errore -nan   
    ECO: C01 Partite:     1 Elo: -inf Errore -nan  *
    ECO: C07 Partite:     1 Elo: inf Errore -nan   
    ECO: C08 Partite:     2 Elo: 190.8 Errore 340.5   
    ECO: C10 Partite:     1 Elo: -inf Errore -nan  *
    ECO: C11 Partite:     2 Elo: 190.8 Errore 340.5   
    ECO: C42 Partite:     3 Elo: -0.0 Errore 393.2  *
    ECO: C48 Partite:     1 Elo: inf Errore -nan   
    ECO: C58 Partite:     1 Elo: -inf Errore -nan  *
    ECO: C66 Partite:     1 Elo: inf Errore -nan   
    ECO: C67 Partite:     1 Elo: -inf Errore -nan  *
    ECO: C92 Partite:     1 Elo: inf Errore -nan   
    ECO: C93 Partite:     2 Elo: -0.0 Errore 681.0  *
    ECO: C95 Partite:     1 Elo: -inf Errore -nan  *
    ECO: C96 Partite:     1 Elo: -inf Errore -nan  *
    ECO: C97 Partite:     1 Elo: -inf Errore -nan  *
    ECO: C99 Partite:     1 Elo: inf Errore -nan   
    ECO: D05 Partite:     1 Elo: inf Errore -nan   
    ECO: D11 Partite:     2 Elo: -0.0 Errore 681.0  *
    ECO: D12 Partite:     1 Elo: inf Errore -nan   
    ECO: D18 Partite:     1 Elo: -inf Errore -nan  *
    ECO: D35 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: D36 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: D37 Partite:     1 Elo: -inf Errore -nan  *
    ECO: D40 Partite:     1 Elo: inf Errore -nan   
    ECO: D43 Partite:     2 Elo: inf Errore 0.0   
    ECO: D45 Partite:     2 Elo: -190.8 Errore 340.5  *
    ECO: D46 Partite:     2 Elo: -190.8 Errore 340.5  *
    ECO: D48 Partite:     3 Elo: 279.6 Errore 227.0   
    ECO: D55 Partite:     1 Elo: inf Errore -nan   
    ECO: D58 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: D90 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: D94 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: E01 Partite:     1 Elo: inf Errore -nan   
    ECO: E07 Partite:     1 Elo: inf Errore -nan   
    ECO: E11 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: E13 Partite:     1 Elo: inf Errore -nan   
    ECO: E14 Partite:     3 Elo: inf Errore 0.0   
    ECO: E15 Partite:     3 Elo: -120.4 Errore 454.0  *
    ECO: E18 Partite:     1 Elo: -inf Errore -nan  *
    ECO: E24 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: E32 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: E43 Partite:     1 Elo: inf Errore -nan   
    ECO: E57 Partite:     1 Elo: inf Errore -nan   
    ECO: E61 Partite:     1 Elo: inf Errore -nan   
    ECO: E84 Partite:     1 Elo: -0.0 Errore -nan  *
    ECO: E92 Partite:     1 Elo: -0.0 Errore -nan  *
    
    ECO: A Partite:    14 Elo: 129.8 Errore 153.2   
    ECO: B Partite:    24 Elo: -29.0 Errore 129.1  *
    ECO: C Partite:    22 Elo: 15.8 Errore 137.9  *
    ECO: D Partite:    22 Elo: 63.9 Errore 115.4   
    ECO: E Partite:    18 Elo: 142.6 Errore 124.8   
    
Stai vedendo 15 articoli - dal 1 a 15 (di 87 totali)
© 2018 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