View Full Version : programma di scacchi
Sapete per caso se ci sono delle risorse in Internet che spieghino come si scriva un programma di scacchi basilare? Ho provato delle idee mie, ma sono uscite fuori delle mezze schifezze, batto nettamente il programma che ho scritto e sono una 3N :p (che per chi non lo sapesse, una Terza Nazionale sarebbe la categoria più schiappa)
Marco Giunio Silano
09-10-2006, 11:12
Devi aumentare la profondità dell'albero delle possibili mosse e contromosse. Più scende il profondità più è imbattibile.
Esiste un sacco di roba in rete, basta che tu cerchi "Computer Chess"
In Italia esiste anche un gruppo chiamato G6 (Gruppo Scacchi E Informatica) che si occupa di Computer Chess. Prima il nostro sito era www.gsei.org poi non abbiamo più rinnovato il dominio e lo abbiamo perso :doh: però è rimasta la cosa più importante che è la mailing list alla quale ti puoi iscrivere da qui (http://groups.yahoo.com/groups/g_6)
Abbiamo anche un Campionato Italiano Programmi di Scacchi (CIPS) che si tiene ogni anno (quest'anno si dovrebbe giocare a Dicembre).
Ti do qualche link:
- www.brucemo.com trovi delle ottime spiegazioni degli algoritmi base utilizzato per l'esplorazione e il pruning dell'albero
- talkchess.com un forum dedicato alla computer chess
Puoi anche non scrivere il codice per l'interfaccia grafica del tuo programma, basta che implementi il protocollo WinBoard o UCI in modo che il programma possa comunicare le mosse a delle interfacce esterne.
Per quanto riguarda la forza, ti dico che utilizzando gli algoritmi base ti dovresti trovare già con un programma da 1900-2000 punti ELO o giù di li :D
Devi aumentare la profondità dell'albero delle possibili mosse e contromosse. Più scende il profondità più è imbattibile.
ehm...il fatto è che io non esploravo l'albero, ma usavo dei criteri per dire se una mossa era buona o meno senza profondità :muro:
Esiste un sacco di roba in rete, basta che tu cerchi "Computer Chess"
In Italia esiste anche un gruppo chiamato G6 (Gruppo Scacchi E Informatica) che si occupa di Computer Chess. Prima il nostro sito era www.gsei.org poi non abbiamo più rinnovato il dominio e lo abbiamo perso :doh: però è rimasta la cosa più importante che è la mailing list alla quale ti puoi iscrivere da qui (http://groups.yahoo.com/groups/g_6)
Abbiamo anche un Campionato Italiano Programmi di Scacchi (CIPS) che si tiene ogni anno (quest'anno si dovrebbe giocare a Dicembre).
Ti do qualche link:
- www.brucemo.com trovi delle ottime spiegazioni degli algoritmi base utilizzato per l'esplorazione e il pruning dell'albero
- talkchess.com un forum dedicato alla computer chess
Puoi anche non scrivere il codice per l'interfaccia grafica del tuo programma, basta che implementi il protocollo WinBoard o UCI in modo che il programma possa comunicare le mosse a delle interfacce esterne.
Per quanto riguarda la forza, ti dico che utilizzando gli algoritmi base ti dovresti trovare già con un programma da 1900-2000 punti ELO o giù di li :D
Grazie mille, non immaginavo ci fossero così tante persone che se ne interessavano e così tanti programmi di scacchi in giro. C'è addirittura un campionato italiano! Credo di aver trovato il mio nuovo hobby :D
qualcuno qui ha scritto un programma di scacchi?
trallallero
10-10-2006, 14:00
ehm...il fatto è che io non esploravo l'albero, ma usavo dei criteri per dire se una mossa era buona o meno senza profondità :muro:
:eekk:
qualcuno qui ha scritto un programma di scacchi?
visto il post di cui sopra temo tu ti stia imbattendo in una strada senza uscita ;)
non é semplice, anzi, veramente difficile perché c'é di mezzo l'intelligenza artificiale ...
se vuoi ti posso fare il complicatissimo algoritmo che disegna la scacchiera :D
Marco Giunio Silano
10-10-2006, 14:03
:eekk:
visto il post di cui sopra temo tu ti stia imbattendo in una strada senza uscita ;)
non é semplice, anzi, veramente difficile perché c'é di mezzo l'intelligenza artificiale ...
se vuoi ti posso fare il complicatissimo algoritmo che disegna la scacchiera :D
:sbonk:
Per la cronaca: Cmq con uno schema ad albero che valuta mosse e contromosse si ottiene un risultato buono, e migliora più si fa crescere l'albero.
Per Trallallero: ma la sai quella dei chicci di riso e la scacchiera?
trallallero
10-10-2006, 14:16
Per Trallallero: ma la sai quella dei chicci di riso e la scacchiera?
no. Dimmi :D (come al solito si ot :fagiano: )
Marco Giunio Silano
10-10-2006, 14:24
no. Dimmi :D (come al solito si ot :fagiano: )
Come OT? si parla di scacchiera :D
Cercherò d'essere breve e rapido come l'avvio di windows... :uh: meglio del dos.
L'imperatore cinese aveva la figlia malata e promette qualunque ricompensa a chi la cura, certo che essendo il padrone assoluto di ogni cosa poteva pagare.
Un contadino si presenta e cura la figlia. Parte la ricompensa (nel periodo inc ina se giocava a scacchi): "chiedo un chicco di riso nella prima casella della scacchiera, e il doppio nella seconda e nella terza il doppio della seconda e così fino alla fine.
L'imperatore ride, ma alla fine non è stato capace di pagare.
La morale ve la lascio intuire.
Però ora potete fare due righe in C per calcolare il risultato. :D
qualcuno qui ha scritto un programma di scacchi?
Eccomi. E' il mio hobby da 4 anni oramai. Il mio programma è il secondo più forte in Italia, ma per Dicembre le cose dovrebbero cambiare ;)
Ci sono circa 40 programmi di scacchi italiani, mi pare, e nel mondo in totale i programmi amatoriali sono sui 300.
Visto che ti interessa tanto, sappi che quest'anno in Italia si è anche tenuto il Campionato Mondiale dei Programmi di Scacchi a Torino, in parallelo con le Olimpiadi di Scacchi :)
trallallero
10-10-2006, 14:38
Come OT? si parla di scacchiera :D
Cercherò d'essere breve e rapido come l'avvio di windows... :uh: meglio del dos.
L'imperatore cinese aveva la figlia malata e promette qualunque ricompensa a chi la cura, certo che essendo il padrone assoluto di ogni cosa poteva pagare.
Un contadino si presenta e cura la figlia. Parte la ricompensa (nel periodo inc ina se giocava a scacchi): "chiedo un chicco di riso nella prima casella della scacchiera, e il doppio nella seconda e nella terza il doppio della seconda e così fino alla fine.
L'imperatore ride, ma alla fine non è stato capace di pagare.
La morale ve la lascio intuire.
Però ora potete fare due righe in C per calcolare il risultato. :D
pensavo a una barzelletta :doh:
cmq basta una piccola shell per calcolare ;)
Marco Giunio Silano
10-10-2006, 14:40
pensavo a una barzelletta :doh:
cmq basta una piccola shell per calcolare ;)
però è carina... detta così non è molto, ho tagliato l'imperatore che se la tirava e il contadino e glielo metteva in "puffo".
Proponetelo come stipendio Annuo! Un centesimo qui, due li, 4 dopo... :D
Marco Giunio Silano
10-10-2006, 14:41
pensavo a una barzelletta :doh:
cmq basta una piccola shell per calcolare ;)
la shell calcola sono gli euro/litro ed è cara! :D
Marco Giunio Silano
10-10-2006, 14:44
Eccomi. E' il mio hobby da 4 anni oramai. Il mio programma è il secondo più forte in Italia, ma per Dicembre le cose dovrebbero cambiare ;)
Ci sono circa 40 programmi di scacchi italiani, mi pare, e nel mondo in totale i programmi amatoriali sono sui 300.
Visto che ti interessa tanto, sappi che quest'anno in Italia si è anche tenuto il Campionato Mondiale dei Programmi di Scacchi a Torino, in parallelo con le Olimpiadi di Scacchi :)
Wow. ma i numeri sono reali o un po... ;) cmq complimenti, ero passato a Torino per i vari mondiali olimpiadi, ora ci sono quelli di schema... ma nelle piazze dietro c'eranoa ncora i tavolini e giocavano a scacchi, questo sabato pom.
Ma ci dai qualche link Tuo per curiosare?
non é semplice, anzi, veramente difficile perché c'é di mezzo l'intelligenza artificiale ...
Veramente di Intelligenza Artificiale c'è pochissimo o niente. Sostanzialmente un programma di scacchi è costituito da una funzione di ricerca che esplora le varianti, una funzione che genera le mosse e una funzione di valutazione che analizza una posizione al termine di una variante nei nodi foglia.
L'algoritmo più semplice per visitare l'albero è il MiniMax: analizzi una mossa per te cercando di massimizzare la tua funzione di valutazione, poi analizzi la mossa di risposta dell'avversario scegliendo quella che minimizza di più la tua valutazione, poi scegli da capo una mossa per te ecc ecc fino a quando non hai completato la variante a profondità X.
Il MiniMax però è inefficiente perchè esplora esaustivamente l'albero, il che diventa impossibile visto che per raggiungere profondita' X bisogna analizzare mediamente 35^X posizioni (35 è il numero medio di mosse legali che ci sono in una posizione negli scacchi). Così si utilizzando degli algoritmi e delle tecniche per tagliare l'albero, cercando di perdere il meno possibile in qualità di gioco. Essenzialmente quindi di Intelligenza Artificiale c'è poco o niente.
In passato sono stati fatti dei test per il tuning della funzione di valutazione utilizzando gli algoritmi genetici. Ma poichè una buona funzione di valutazione ha centinaia di parametri, ci voleva un numero enorme di partite giocate per poter raggiungere risultati sufficienti.
Cmq gli scacchi sono un giochetto rispetto al Go :p
Wow. ma i numeri sono reali o un po... ;) cmq complimenti, ero passato a Torino per i vari mondiali olimpiadi, ora ci sono quelli di schema... ma nelle piazze dietro c'eranoa ncora i tavolini e giocavano a scacchi, questo sabato pom.
Ma ci dai qualche link Tuo per curiosare?
No, i numeri sono veri, puoi controllare qui (http://vigo.altervista.org/participants.htm) tutti i programmi di scacchi esistenti.
I mondiali dei programmi di scacchi si sono tenuti dal 24 maggio al 1 giugno. Le olimpiadi sono iniziate il 20 e finite il 4 mi pare.
Questa (http://www.cs.unimaas.nl/wccc2006/index.htm) è la pagina ufficiale della manifestazione. Tra l'altro noi italiani ci dobbiamo fare sempre riconoscere......a Torino stava partecipando un programma italiano che poi si è rilevato essere il clone di un forte programma open source :(
Con qualche link mio cosa intendi? Cosa ti interesserebbe in particolare?
trallallero
10-10-2006, 14:55
Veramente di Intelligenza Artificiale c'è pochissimo o niente.
l'ho scritto per sentito dire, non conosco il mondo ma so che é complesso.
Ma in effetti, a pensarci bene, ci sarei potuto arrivare da solo che non c'entra l'intelligenza artificiale ... sembra solo una ricerca della mossa migliore.
Cmq gli scacchi sono un giochetto rispetto al Go :p
go ??? :what:
EDIT: complimenti anche da parte mia per il II posto :D
A proposito del mondiale: a Torino c'era un americano che giocava con il suo programma Zappa che girava in remoto su un cluster di 512 processori Itanium2 da 1.6 ghz.
Io ho partecipato con il mio portatile Athlon64 3400+ :D
Marco Giunio Silano
10-10-2006, 14:59
Veramente di Intelligenza Artificiale c'è pochissimo o niente. Sostanzialmente un programma di scacchi è costituito da una funzione di ricerca che esplora le varianti, una funzione che genera le mosse e una funzione di valutazione che analizza una posizione al termine di una variante nei nodi foglia.
L'algoritmo più semplice per visitare l'albero è il MiniMax: analizzi una mossa per te cercando di massimizzare la tua funzione di valutazione, poi analizzi la mossa di risposta dell'avversario scegliendo quella che minimizza di più la tua valutazione, poi scegli da capo una mossa per te ecc ecc fino a quando non hai completato la variante a profondità X.
Il MiniMax però è inefficiente perchè esplora esaustivamente l'albero, il che diventa impossibile visto che per raggiungere profondita' X bisogna analizzare mediamente 35^X posizioni (35 è il numero medio di mosse legali che ci sono in una posizione negli scacchi). Così si utilizzando degli algoritmi e delle tecniche per tagliare l'albero, cercando di perdere il meno possibile in qualità di gioco. Essenzialmente quindi di Intelligenza Artificiale c'è poco o niente.
In passato sono stati fatti dei test per il tuning della funzione di valutazione utilizzando gli algoritmi genetici. Ma poichè una buona funzione di valutazione ha centinaia di parametri, ci voleva un numero enorme di partite giocate per poter raggiungere risultati sufficienti.
Cmq gli scacchi sono un giochetto rispetto al Go :p
non ho sbagliato di molto quando parlavo di "albero" :cool:
go ??? :what:
http://it.wikipedia.org/wiki/Go_%28gioco%29
Marco Giunio Silano
10-10-2006, 15:01
No, i numeri sono veri, puoi controllare qui (http://vigo.altervista.org/participants.htm) tutti i programmi di scacchi esistenti.
I mondiali dei programmi di scacchi si sono tenuti dal 24 maggio al 1 giugno. Le olimpiadi sono iniziate il 20 e finite il 4 mi pare.
Questa (http://www.cs.unimaas.nl/wccc2006/index.htm) è la pagina ufficiale della manifestazione. Tra l'altro noi italiani ci dobbiamo fare sempre riconoscere......a Torino stava partecipando un programma italiano che poi si è rilevato essere il clone di un forte programma open source :(
Con qualche link mio cosa intendi? Cosa ti interesserebbe in particolare?
Tu hai scritto che il tuo pgm di scacchi è uno dei più potenti d'Italia, il secondo se ricordo bene, per link Tuoi intendo: c'è qualcosa in rete che parla di questo pgm? E' pura curiosità. Se non vuoi non importa.
Tu hai scritto che il tuo pgm di scacchi è uno dei più potenti d'Italia, il secondo se ricordo bene, per link Tuoi intendo: c'è qualcosa in rete che parla di questo pgm? E' pura curiosità. Se non vuoi non importa.
Chiron (il mio programma) è privato, cioè non è scaricabile. Lo abbiamo solo io, l'autore dei libro delle aperture ed alcuni tester. Non c'è un motivo particolare per il quale lo mantengo privato, probabilmente un giorno sarà pubblico.
Il programma più forte italiano si chiama Delfi ed è appunto scritto in Delphi. Questo (http://www.msbsoftware.it/delfi/) è il suo sito.
L'ultimo torneo tra italiani si è giocato a Bologna nel settembre 2005 nella libreria di scacchi "Le Due Torri".
Qui (http://www.accademiascacchistica.it/ita/CCC.htm) e qui (http://www.ascotti.org/programming/chess/ccc2005.htm) potete leggerne a proposito.
Se poi volete vedere come è un po' la gente che ha questo hobby :) potete vedere le foto fatte da me al mondiale di Torino e al torneo precedente:
www.chironchess.com/wccc2006
www.chironchess.com/ccc2005
Marco Giunio Silano
10-10-2006, 15:19
grazie.
trallallero
10-10-2006, 15:25
http://it.wikipedia.org/wiki/Go_%28gioco%29
grazie. Da quí non posso vederlo ma lo guarderó da casa :)
Per chi è interessato, oggi è cominciato il match uomo-macchina tra il neo Campione del Mondo Vladimir Kramnik e Deep Fritz 10. La prima partita è finita patta. Sul sito della Chessbase (che produce Fritz) www.chessbase.com potete trovare tutti i report con foto e risultati.
Eccomi. E' il mio hobby da 4 anni oramai. Il mio programma è il secondo più forte in Italia, ma per Dicembre le cose dovrebbero cambiare ;)
Ci sono circa 40 programmi di scacchi italiani, mi pare, e nel mondo in totale i programmi amatoriali sono sui 300.
E scusa come si fa a scegliere qual'è il migliore? vengono fatti girare sullo stesso hardware? perchè su hardware diversi non avrebbe senso.
E come si gestiscono i tempi a disposizione per scegliere una mossa?
E scusa come si fa a scegliere qual'è il migliore? vengono fatti girare sullo stesso hardware? perchè su hardware diversi non avrebbe senso.
E come si gestiscono i tempi a disposizione per scegliere una mossa?
Ci sono molte persone che fanno dei tornei tra programmi disponibili e pubblicano delle rating list. La più "importante" è quella della SSDF http://web.telia.com/~u85924109/ssdf/
Però nei tornei veri nei quali vengono assegnati i titoli, l'hardware è libero, ognuno usa quello che ha. Può sembrare scorretto, ma io credo che, se uno ha investito del tempo per rendere il proprio programma parallelo, è giusto che possa utilizzare delle macchine multiprocessore.
Si potrebbe obiettare che almeno quelli monoprocessore dovrebbero girare sullo stesso hardware. Su questo sono daccordo anche io.
L'argomento della gestione del tempo è molto interessante. Di solito si fa una prima allocazione del tempo che si prevede di utilizzare prima che la ricerca inizi (c'è chi cerca di prevedere quante mosse più o meno la partita durerà ancora basandosi sul materiale in campo e chi divide semplicemente il tempo totale rimasto per un numero tipo 30 o 25). Poi, il tempo allocato può essere esteso o ridotto dinamicamente durante la ricerca a seconda della stabilità dello score da iterazione a iterazione e alla stabilità della variante principale.
Il tempo può essere per esempio ridotto quando c'è una ricattura semplice sulla quale non vale la pena perdere tempo. Ma bisogna trovare delle giuste regole, affinchè il programma ricatturando immediatamente non commetta degli errori tralasciando altro.
Come dicevo, la gestione del tempo è un argomento interessante. Sofisticati algoritmi per l'allocazione del tempo fanno quasi sembrare che il programma "capisca" quando la posizione è complessa e che debba quindi pensare di più.
Per esempio, può capitare che un programma utilizzi per esempio 15 minuti in una posizione per muovere quando per tutte le altre ha usato al massimo, chesso', 3 minuti.
A chi è di Firenze o di quelle parti potrebbe interessare sapere che il 3 dicembre ci sarà una partita tra Deep Junior (campione del mondo 2006) e il giovane Teimour Radjabov in occasione del Festival della Creatività
http://www.festivaldellacreativita.it/
A Como, l'8-9-10 dicembre si giocherà invece il Campionato Italiano Programmi di Scacchi.
cos'è il Go?? :D
[edit] nn avevo letto la seconda pagina... scusate :mc:
l'ho scritto per sentito dire, non conosco il mondo ma so che é complesso.
E' vero in parte, nel senso che giochi di questo tipo sono un classico campo di ricerca per algoritmi di apprendimento automatico. Nel caso specifico degli scacchi non so quanto queste tecniche siano utilizzate, di piu' nel caso del Go, dove un'analisi approfondita delle possibili mosse e' improponibile.
copio e incollo l'annuncio del CIPS su it.hobby.scacchi nel caso qualcuno fosse interessato.
-------------------------------------
Si scontreranno a Como, da Venerdì 8 a Domenica 10 dicembre, i finalisti del
CIPS, il Campionato Italiano Programmi Saccchi. Giunto alla sua sesta
edizione, il torneo vede confrontarsi sulle sessantaquattro caselle le opere
di alcuni dei migliori programmatori italiani. Non sarà presente il
ravennate Fabio Cavicchio, autore di Delfi, campione in carica e vincitore
delle ultime 4 edizioni, ma altri otto agguerriti programmi daranno
l'assalto al titolo. La manifestazione avrà luogo nella sala gentilmente
resa disponibile dalla Coop Lombardia, presso il Bar...Collante, in Via
Lissi 8, nel quartiere Rebbio (raggiungibile con l'autobus 1), a partire
dalle 15:00 di Venerdì. Al termine del torneo, Domenica alle 12:30, pranzo
al Bar...Collante e cerimonia di premiazione, con breve conferenza. E'
consentito, e benvenuto, l'accesso al pubblico durante lo svolgimento
dell'intera manifestazione.
Il bando della manifestazione è disponibile su: http://e4e6.com/cips2006
Alex Brunetti
Presidente G.S.E.I.
http://e4e6.com/g6
-------------------------------------
Attualmete, per quanto sono aggiornato, le ultime versioni di Shredder, Junior e Rybka detengono le prime posizioni in termini di prestazioni, specie se in versione deep. Quale hardware per sfruttarle al meglio tenendo conto anche della spesa?
Dual Core (magari overcloccato) o Quad Core? 1 o più giga di RAM?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.