Giorno: 11/09/2014, 18:19:50 | |
User
Elo: 1400/1400
Membro dal 11/02/2012
Messaggi: 143
|
Lucaschess: come giocare senza libro? Ciao,
![]() ho creato una sorta di engine-stub in Python che al comando UCI "go" risponde "bestmove h7h5"; l'ho importato in LC 9_step_2 e ci ho giocato contro. Mi aspettavo che dopo aver eseguito una qualsivoglia prima mossa, l'engine mi rispondesse con la predeterminata "h7h5". Invece la sequenza è rimasta sui binari di una variante d'apertura "e2e4 e7e6 d2d4 d7d5 b1c3 g8f6 a2a4" fino a quell'"a2a4" fatta a bella posta per uscire dal libro. Analizzando la log prodotta dal mio stub, o notato che il primo comando UCI di LC è un "position startpos" con tutta la variante di apertura, quando mi aspettavo un più logico "position startpos moves e2e4" e ciò nonostante abbia dichiarato il mio engine-stub con l'opzione OwnBook=true e abbia altresì deselezionato l'opzione libro dall'interfaccia di LC. Questa è la sequenza dei comandi UCI impartiti da LC: uci setoption name OwnBook value true isready position startpos moves e2e4 e7e6 d2d4 d7d5 b1c3 g8f6 a2a4 isready go depth 3 stop quit Insomma, per farla breve: siamo sicuri che sia possibile disabilitare l'opening book di default? ![]() Stolcius |
Giorno: 06/07/2022, 11:36:04 | |
Link sponsorizzati
|
Giorno: 12/09/2014, 08:47:21 | |
User
Elo: 1382/1400
Membro dal 18/02/2011
Messaggi: 401
|
Fallo più terra terra.
Crea un libro.bin vuoto e selezionalo. Dovrebbe potersi giocare una partita senza libro d'apertura; cmq le primissime mosse saranno teoriche, anche se magari robe tipo difesa nimzowitsch o amenità del genere. |
Giorno: 12/09/2014, 15:04:40 | |
User
Elo: 1400/1400
Membro dal 11/02/2012
Messaggi: 143
|
Il mistero del libro fantasma orcodituapse ha scritto:
Crea un libro.bin vuoto e selezionalo. Dovrebbe potersi giocare una partita senza libro d'apertura Grazie della risposta Orco(ti ho inviato un mp). ![]() Guarda, avevo già eseguito il workaround che mi hai consigliato(libro vuoto "fake_book.bin" - vedi immagine in calce al post), ma l'unica cosa che ho ottenuto è una scacchiera semi-frizzata(con i pezzi non selezionabili). ![]() La cosa che mi perplime è che a rigor di logica deflaggando la checkbox "LIBRO"(immagine - ibidem), l'engine dovrebbe giocare dalla prima mossa. Invece ciò non avviene punto. ![]() Nel test che avevo innanzi condotto, il primo comando position startpos moves(impartito dall'interfaccia di LC) non conteneva la mia prima mossa, ma una lista di mosse e, dato che non era stato ancora impartito GO(cmd UCI che, come sai, avvia la "mente pensante" dell'engine), significa che quella lista l'ha prodotta LC basandosi su un suo non meglio identificato opening book. cmq le primissime mosse saranno teoriche, anche se magari robe tipo difesa nimzowitsch o amenità del genere. Scusami, ma non ho capito. ![]() Come è possibile che le prime mosse siano teoriche se il motore non accede a un libro? Ti ricordo che l'engine è uno stub "Stolcius-made" in Python che esegue una sola mossa "h7h5" indipendentemente dalla prima mossa sottopostagli dal bianco(l'umano, o quasi...Io) ![]() Un salutone, ![]() Stolcius |
Giorno: 12/09/2014, 15:43:35 | |
User
Elo: 1382/1400
Membro dal 18/02/2011
Messaggi: 401
|
Questa cosa comincia ad incuriosirmi.
Purtroppo, o per fortuna, per adesso ho ragazzi cui faccio lezioni private (chimica generale e organica) quindi ho dovuto ridurre quasi a zero il tempo da dedicare a lucaschess. Cioè creando un libro.bin con nessuna poiszione, cmq ottieni sempre 1...h5??? Strana sta cosa, cioè intendo dire se la gui scandaglia il libro e non trova niente, il GO all'engine dovrebbe seguire immediatamente (cioè come succede normalmente quando il libro esaurisce le sue mosse). Attenzione però: hai provato a cambiare motore? Per esempio, a memoria, ricordo che con libro nullo tutti gli SHREDDER giocano la scandinava contro e4, mentre tutti i FRITZ giocano la difesa nimzowitsch o talvolta la alekhine. In effetti però quell' OWNBOOK true mi fa pensare. Perchè non provi a scrivere a lucas, quella parte di codice l'ha scritta lui (il 99.9% a dire il vero, hihihihi). |
Giorno: 12/09/2014, 17:31:06 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
User
Elo: 1400/1400
Membro dal 11/02/2012
Messaggi: 143
|
Equivoco orcodituapse ha scritto:
Strana sta cosa, cioè intendo dire se la gui scandaglia il libro e non trova niente, il GO all'engine dovrebbe seguire immediatamente (cioè come succede normalmente quando il libro esaurisce le sue mosse). Orco, penso di essermi spiegato male. Mi scuso e riformulo. Ho implementato un programma stupidissimo che simula il comportamento di un engine(più avanti posterò il codice). Questo programma intercetta il comando GO, impartito da qualsivoglia chessboard uci e risponde "bestmove h7h5". Inoltre, logga tutti i comandi impartiti dall'interfaccia UCI su un file di log. Tutto qui. Ho importato questo engine in LC e ci ho giocato una partita. Comportamento atteso: - eseguo una qualsiasi mossa(e.g. 'e2e4') - il programma comunica alla scacchiera "h7h5" - posizione finale:
Fen: rnbqkbnr/ppppppp1/8/7p/4P3/8/PPPP1PPP/RNBQKBNR w - - 0 1 Invece, dopo "e2e4" LC è andato avanti con una serie di mosse teoriche fino a quando sono uscito dal libro. Solo allora l'interfaccia di LC ha impartito GO e il mio engine ha risposto con la preconfezionata 'h7h5'. Ciò dimostra che LC ha giocato la variante pre-GO affidandosi un suo libro anche con l'opzione libro disabilitata. ![]() Eccoti il codice Python del mio programmino ![]() ------------------------------------ import os import sys app_path = os.path.dirname(os.path.abspath(__file__)) engine_log = os.path.join(app_path, 'Engine_Stub.log') class UciInfo(object): ____ id_name = 'id name Engine_Stub ver 1.0' ____ id_author = 'id author Stolcius' ____ own_book = 'true' def write_uci_response(msg): ____ msg += '\n' ____ sys.stdout.write(msg) ____ sys.stdout.flush() def main(): ____ f = open(engine_log,'w') ____ response = '' ____ while not response.lower().strip()=='quit': ________ response = raw_input('') ________ f.write(response + '\n') ____ ___ if response == 'uci': ____ ________write_uci_response(UciInfo.id_name) ____ ________write_uci_response(UciInfo.id_author) ____ ________write_uci_response("option name OwnBook type check default {}" ______________________________.format(UciInfo.own_book)) ________ ____write_uci_response('uciok') ________ elif response == 'isready': ________ ____write_uci_response('readyok') ________elif 'go' in response: ________ ____write_uci_response("bestmove h7h5") ________ elif "position startpos moves" in response: ____ ________ pass ____ f.close() ____ sys.exit('\nSi vis pacem para...cerebellum!\n') if __name__ == '__main__': ____ main() |
Giorno: 12/09/2014, 19:40:50 | |
User
Elo: 1382/1400
Membro dal 18/02/2011
Messaggi: 401
|
Ho capito.
Beh allora il motore non è importante. Si comporterebbe uguale, la gui, con qualsiasi cosa tu carichi. Siceramente faccio ammenda, e pubblica ammissione d'ignoranza. Potrebbe essere che semplicemente lucaschess ,originariamente, non fosse pensato per usare altri libri se non il suo; per cui la gui scandaglia il suo ownbook, sempre e cmq. Cmq non saprei, veramente non ho idea ![]() |
Giorno: 12/09/2014, 19:53:18 | |
User
Elo: 1400/1400
Membro dal 11/02/2012
Messaggi: 143
|
orcodituapse ha scritto:
Potrebbe essere che semplicemente lucaschess ,originariamente, non fosse pensato per usare altri libri se non il suo; per cui la gui scandaglia il suo ownbook, sempre e cmq. Ma se così fosse, nel caso si giocasse contro una personalità GM, andrebbe in vacca la quota di personalità legata alla suite di aperture utilizzate da quel GM, o no? ![]() Per inciso e a proposito di GM, ci sarebbe da far correggere Gran Maestro (in tutte le voci - e.g. "Gioca come un Gran Maestro") con Grande Maestro: il titolo corretto. Un salutone, ![]() Stolcius |
Giorno: 13/09/2014, 09:37:35 | |
User
Elo: 1382/1400
Membro dal 18/02/2011
Messaggi: 401
|
Le labels le ho corrette due minuti fà.
Ed anzi mi hai dato lo spunto per correggere altra roba. Per quanto riguarda l'uso del libro, invece, sono arcisicuro che quel problema si verifica solo in modalità "gioca contro un motore a tua scelta" perchè in altri ambiti ho verificato personalmente che il tutto funziona. Però ripeto, io non mi occupo di questa cosa. Puoi scrivere a lucas, già ho visto che l'hai fatto altre volte; lui di sicuro sa se ci sono problemi. |
Giorno: 13/09/2014, 10:47:44 | |
User
Elo: 1400/1400
Membro dal 11/02/2012
Messaggi: 143
|
Puoi scrivere a lucas, già ho visto che l'hai fatto altre volte; lui di sicuro sa se ci sono problemi.
Buona idea: fatto! ![]() Buon week end, ![]() Stolcius P.S. Secondo me LC, per le sue caratteristiche "sui generis", meriterebbe più visibilità di quella che già possiede; comunque, penso che a poco a poco, e, soprattutto, grazie al passaparola degli utilizzatori, aumenterà il suo credito in modo più che significativo. ![]() |
Giorno: 13/09/2014, 11:16:10 | |
User
Elo: 1382/1400
Membro dal 18/02/2011
Messaggi: 401
|
Appena uscirà la versione 9 ufficiale, come l'anno scorso verso natale, avremo di nuovo la possibilità di contare i downloads.
Le versioni 8.x secondo me hanno toccato gli 80.000 downloads di sicuro. Non male direi ![]() |