Luciano79

Risposte al Forum Create

Stai vedendo 13 articoli - dal 1 a 13 (di 13 totali)
  • Autore
    Articoli
  • in risposta a: Conteggio nodi al secondo #10829
    Luciano79
    Luciano79
    Membro

    Ok grazie, ora sono ufficialmente depresso 😀
    Sono sceso quindi a 180.000 NPS se abilito la mobilità basata sulle mosse possibili, pezzi attaccati e pezzi indifesi. Con questa modalità batto TSCP a parità di MAXPLY, ma perdo sul tempo.
    Se invece non guardo le mosse possibili, i pezzi attaccati e i pezzi indifesi, ma valuto la mobilità in base alla posizione dei pezzi sulla scacchiera, allora faccio 500.000 NPS e TSCP mi batte (ed è ancora più veloce di me).
    Direi che ho ancora tanto su cui lavorare!

    in risposta a: E adesso? #10826
    Luciano79
    Luciano79
    Membro

    Ciao, se hai voglia di fare qualche partita su lichess aggiungimi tra gli amici. Il mio account è merdina!

    in risposta a: Due risate :) #10742
    Luciano79
    Luciano79
    Membro

    bel gruppo ragazzi XD

    in risposta a: Metodi per giocare contro il PC #10660
    Luciano79
    Luciano79
    Membro

    Ciao,
    forse non fa parte della categoria di quello che cerchi, non si tratta di un personal computer, ma di un computer con installato un chess engine: quando giocavo da ragazzo esistevano scacchiere elettroniche con pezzi reali, non so se esistono ancora.

    C’erano due tipologie:
    – quella in cui dovevi premere sulle caselle per muovere il pezzo (per esempio per fare a3 dovevi sollevare il pedone, premere sulla casella di partenza a2, premere sulla casella di arrivo a3 e lasciare il pedone).
    – quella in cui bastava muovere il pezzo grazie al supporto di sensori posizionati nei pezzi.

    Il computer per indicarti la risposta ti dava le coordinate del pezzo mosso utilizzava dei led posizionati a bordo scacchiera o in ogni casella.

    Raggiungeva anche degli ottimi livelli, ma i tempi di risposta erano piuttosto scarsi.

    Nostalgia…

    Ciao
    Luciano

    in risposta a: Velocità generazine nodi #10657
    Luciano79
    Luciano79
    Membro

    Quello che si usa fare è di creare 2 generatori: uno per le catture/promozioni e uno per le mosse quiete.
    In questa maniera allegerisci la generazione e migliori l’ordinamento visto che le mosse che causano tagli in ricerca

    Grazie Fabio,
    con questo accorgimento son passato da 10M al secondo a 14M!!!
    Scusate se spammo con i post, mi sta tornando molto utile la vostra esperienza!

    Ciao
    Luciano

    in risposta a: Velocità generazine nodi #10656
    Luciano79
    Luciano79
    Membro

    Ottimo, per ora ordinavo solo le mosse per “guadagno”, non avevo pensato a fare in due step.
    Altra info:
    fino ad oggi ho sempre lavorato sul pc dell’azienda, anche da casa mi collegavo in remoto. E’ un Intel i7 3.40GHz e con le ultime modifiche sono arrivato ad una media di 10M di nodi al secondo.
    Mi sono fatto una copia sul mio portatile, uno dei primi AMD a 64bit di qualche anno fa e i tempi medi di analisi sono aumentati di 10 volte, 1M di nodi al secondo.
    Immagino quindi che nei tornei tutti i programmi debbano essere installati su uno stesso pc, altrimenti a parità di forza software vince chi spende più soldi per il computer. Corretto?

    in risposta a: Mi presento #10651
    Luciano79
    Luciano79
    Membro

    Per evitare di utilizzare l’engine da console, può esserti utile implementare un protocollo di comunicazione per utilizzarlo con una GUI.

    Grazie, lo farò di sicuro!

    in risposta a: Mi presento #10648
    Luciano79
    Luciano79
    Membro

    Perchè?

    Utilizzo C# per lavoro, non uso il C da anni, ormai sono framework dipendente.

    Ti ho creato una paginetta tutta tua, che quando vuoi, potrai personalizzare (adesso hai i privilegi di autore).

    Grazie!

    in risposta a: Mi presento #10640
    Luciano79
    Luciano79
    Membro

    Ieri sera ho letto qua e là qualche pagina del gruppo g-sei, mi piace davvero molto… Belli i tornei, spero di poter partecipare il prossimo anno!
    Intanto sto riscrivendo il programma in C perchè mi sembra di aver capito che lavorando sui bit è molto più performante. Con le ultime modifiche fatte su quello in C# (ho introdotto il concetto di Takeback, nella versione precedente istanziavo le bitboard ad ogni iterazione) ora ho la media di 2 secondi per fare da 6 a 11 ply, ma conto di poter fare di meglio rivedendo l’algoritmo di ricerca e cercando di eliminare i pesanti e inutili rami giocati con il re sotto scacco (ancora non riesco a sapere in maniera snella se il re è sotto scacco).
    Una volta finita e consolidata la versione C lo rifarò ancora in C# utilizzando dll scritte in C (compilate con GCC) per essere performante sulle ricerche binarie. Ho la sensazione di complicarmi molto la vita con le bitboard, in compenso sto imparando molte cose sulla programmazione che prima non conoscevo, quindi continuerò così.
    Purtroppo non ho molto tempo, solo un’ora al giorno in pausa pranzo, la sera devo fare i conti con una bimba di 20 mesi che ha capito da poco che il papà può essere usato come un giocattolo, quindi vado un po’ a rilento.
    Ho partorito il nome: Sofia (la mia pupetta)

    Ciaoooo

    in risposta a: Mi presento #10604
    Luciano79
    Luciano79
    Membro

    Intanto prendendo spunto da tcsp ho già fatto un passo da gigante in avanti. Con una modifica banale ho più che dimezzato i tempi, passando da circa 4 secondi di media per ply5 (variabile da 5 a 10) a 1 o 2 secondi: ho modificato il valore della posizione da Double a Int (moltiplicando tutti i valori x 100).

    Per i curiosi, questa è una partita di test. Scusate se non è in png, devo ancora adattarmi allo standard:

    Cc3 – d5
    d4 – e6
    Cf3 – c5
    e4 – d:e
    C:e4 – c:d
    C:d4 – Ae7
    Af4 – a6
    Cf3 – Db6
    Dd4 – Cd7 //cerca di scambiare le donne perchè la mia ha troppo movimento
    D:b6 – C:b6
    Ad3 – Cf6
    0-0 – Cbd5
    Ae5 – 0-0
    Te1 – Ad7
    b2b3 – Tfd8
    C:f6 – A:f6
    c4 – A:e5
    T:e5 // errore, sembra quasi un bug – Ce7
    Td1 – Ac6
    Cg5 //la forchetta non funziona – h6
    Ah7+ – Rf8
    C:e6 // il crollo. Qui si è dato un vantaggio di un pezzo leggero. Chissà cosa ha visto. Credo che l’errore sia nel non vedere il matto in d1. Non esiste ancora il concetto di matto, per ora ho solo dato valore 1000 al re. Si accorge chè è matto solo dopo che ha perso il re, quindi con 2 semimosse in più rispetto al matto vero e proprio – f:e
    Tde1 – Td6
    T:e6 – T:e6
    T:e6 – Rf7
    Te5 – g6
    b4 – Th8
    A:g6+ – C:g6
    Ta5 – Th8
    h3 – Td4
    b5 – a:d
    c:d – Td5
    a4 – Ce5
    Ta7 – A:b5
    a:b – T:b5
    Ta1 – Tb2
    Tc1 – b5
    Tc7+ – Rg6
    f3 – b4
    Ta7 – b3
    Tb7 – Cd3
    Tb5 – Cc1
    Tb4 – Td2
    Tb6+ – Rg5
    Tb5+ – Rf4
    Tb4+ – Re3
    Te4+ – Rd3
    Tb4 – b2
    T:b2 – T:b2
    Rf1 – Re3
    Rg1 – Rf4
    Rf1 – Rg3
    Re1 – R:g2
    f4 – Cd3+ abbandona (valore inferiore a -100)

    in risposta a: Mi presento #10602
    Luciano79
    Luciano79
    Membro

    In realtà mi interessa tanto il tempo di risposta, poi la forza si può incrementare man mano aggiungendo corrette regole di valutazioni e database di posizioni simili, corretto?
    Vedo che non utilizza le bitboard, ma una sola (furba) scacchiera di dimensione 10×12 fatta di int. Pensavo di aver capito che le bitboard fossero l’evoluzione delle scacchiere fatte di char o int e che queste ultime fossero superate. E’ realmente così? Oggi qual’è la tendenza?

    in risposta a: Mi presento #10599
    Luciano79
    Luciano79
    Membro

    Mi son scaricato Tscp e ho dato una sbirciatina, bello e semplice da capire!
    Mi fermo qui col programma, studio ancora e riparto nuovamente da zero…
    Sicuramente avrò bisogno ancora di vostri consigli.
    Grazie!!!

    in risposta a: Mi presento #10597
    Luciano79
    Luciano79
    Membro

    Grazie a tutti!
    @MArco, mi hai buttato giù di morale, ho dormito male dopo aver letto il tuo messaggio 🙂
    Spero che tu parli di programmi top tipo Fritz o altri e che profondità 10 intendi “profondità massima” e non minima… altrimenti sono ancora lontano anni luce dal fare qualcosa di decente.

    @Calimero, ho dato un occhio al tuo sito, bello, complimenti!

    @Luca, ancora non ho pensato ad un nome. Inoltre questa è la prima versione “debole” perchè l’intenzione è quella di creare una pagina web per poterci giocare contro, quindi non potrò sfruttare il tempo avversario per pensare, dovrò sempre ripartire da una posizione come se fosse sempre una nuova partita (perdendo quindi i calcoli pregressi) e resterà mono task, quindi la considero una versione “temporanea” che userò per fare esperienza, ma che non ho intenzione di portare troppo avanti. Appena mi viene in mente un nome te lo comunico!

    Intanto vorrei sottoporvi alcuni punti sui quali son perplesso e sui quali spero di poter migliorare.

    Sto cercando di renderlo più veloce, ho eliminato ogni calcolo (son rimaste poche somme) sostituendolo con array di costanti o operazione binarie.
    Per esempio:
    avevo bisogno di avere N bit a 1 consecutivi con N che va da 1 a 7. Inizialmente facevo 2^(N-1), poi ho sostituito il calcolo con array popolato all’avvio del programma, ovvero: da 1 a 7 => b[N-1]=2^[N-1]. Con questa semplice operazione i tempi si sono ridotti di un quarto.

    Per trovare il primo bit di una bitboard utilizzo questo (trovato sul web):

    public int GetFirst1Bit(ulong ul)
            {
                ulong n = ul;
                int result = -1;
                if ((n & (ulong)18446744069414584320) > 0) { result += 32; n >>= 32; };
                if ((n & (ulong)4294901760) > 0) { result += 16; n >>= 16; };
                if ((n & (ulong)65280) > 0) { result += 8; n >>= 8; };
                if ((n & (ulong)240) > 0) { result += 4; n >>= 4; };
                if ((n & (ulong)12) > 0) { result += 2; n >>= 2; };
                if ((n & (ulong)2) > 0) { result += 1; n >>= 1; };
                return 63 - (result + (int)n);
            }

    Sempre meglio che un ciclo… conoscete di meglio? La uso tante volte, sarebbe bello trovare qualcosa di più veloce. Peraltro ho il sospetto che per i pedoni (soprattutto per i bianchi a inizio partita) sia meglio un ciclo, sia perchè son tanti, sia perchè sono in una zona più ristretta.

    In oltre, su quali “grossi” punti si può velocizzare la ricerca? Per ora mi sono limitato a:
    – CutOff
    – Ordine mosse per Presa e TipoPezzoMosso

    Un’idea che ho, ma che non so se può funzionare davvero, è quella di arrotondare il risultato del calcolo del valore di ogni posizione alla prima cifra decimale, in modo da avere più valori uguali e sfruttare meglio il cutOff. Bhooo…

Stai vedendo 13 articoli - dal 1 a 13 (di 13 totali)
© 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