Move Generator specifici


Questa pagina ha una gerarchia - Pagina madre:Programmazione

Home Forum Programmazione Move Generator specifici

Questo argomento contiene 3 risposte, ha 4 partecipanti, ed è stato aggiornato da Andrea Andrea 4 anni, 7 mesi fa.

Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #5349

    Nei vostri engine avete implementato move generator specifici, come la generazione degli scacchi e delle evasioni?
    Sull’engine che sto sviluppando utilizzo solo due move generator differenti: uno per le catture/promozioni e uno per le altre mosse.
    Mi chiedevo se ci sono grossi vantaggi nel sviluppare move generator più specializzati.

    #5350

    Ciao, anchio ho solo catture/promozioni e altre mosse. il vantaggio di generare separatamente le evasioni è puramente in termini di velocità. se il tuo engine perde un sacco di tempo nella generazione delle mosse, potrebbe essere un miglioramento significativo, ma non avendolo mai fatto non ho dati specifici. Generare gli scacchi serve nella quiescenza per trovare qualche matto forzato (solo nelle prime ply, se no l’albero esplode!), ma di nuovo in ProChess non lo faccio perché con le strutture dati che ho sarebbe terribilmente inefficiente.

    #5353

    Nei vostri engine avete implementato move generator specifici, come la generazione degli scacchi e delle evasioni?

    Si’, ho un generatore…generico, uno per le catture (o promozioni), uno per le evasioni e uno per gli scacchi. Quello per catture e quello per gli scacchi li uso in quiescenza – genero solo gli scacchi quieti, visto che gli altri sono gia’ generati prima tra le catture (in effetti tutte le funzioni seguono il modello di aspettarsi un argomento con le case di destinazione possibili, quindi basta passare la negazione bitwise dell’occupazione dei pezzi avversari per generare solo scacchi quieti).
    Invece le evasioni vengono generate sempre in caso di scacco, sia nella ricerca normale che in quiescenza.

    Mi chiedevo se ci sono grossi vantaggi nel sviluppare move generator più specializzati.

    Vantaggi secondo me ce ne sono, anche perche’ puoi tunare le funzioni specializzate piu’ di quanto tu possa fare con le funzioni generiche. E poi ci sarebbe un’altra considerazione: in un nodo cut non devi necessariamente generare tutte le mosse, in effetti sarebbe l’ideale generare solo le mosse sufficienti per ottenere un taglio; generare le mosse “a fette” puo’ aiutare a evitare del lavoro in piu’ in questi casi. Lo puoi fare se hai generatori specifici, non lo puoi fare altrimenti. Ad esempio potresti prima provare la mossa dellahash (quindi senza generare niente) poi provi le catture “superficialmente buone”, poi le killer moves (che non devi generare, solo testarne la validita’), poi tutte le altre. Sperabilmente risparmi molto lavoro che sarebbe buttato nell’eventualita’ di un taglio.

    Cosi’, giusto qualche spunto di riflessione 🙂

    bye^2, mr

    #5355
    Andrea
    Andrea
    Moderatore

    Utilizzo 4 generatori di mosse solo legali: catture, mosse tranquille, evasioni e scacchi che non siano catture. Il controllo della legalità in fase di generazione causa un rallentamento trascurabile. Il generatore degli scacchi è utilizzato solo nella quiescenza nei primi X plies (attualmente mi pare solo nel primo, ma in passato il valore è stato anche dinamico e dipendeva dal numero di evasioni generate per lo scacco precedente, un po’ come descritto da Ed Schroeder). Uso le bitboard (magic) ma c’è anche il codice per la move table. Al contrario di quanti mi aspettassi la generazione con bitboard è risultata per me, se ricordo bene, il 5-10% circa più veloce di quella con move table.

Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)

Devi essere loggato per rispondere a questa discussione.

© 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