PDA

View Full Version : Scacchi e "intelligenza"


atragon
28-11-2004, 18:43
Giusto per fare qualche test, senza necessità commerciali di alcun genere, volevo fare un tentativo, meglio un abbozzo, di realizzazione di un programma che giochi a scacchi, tra l'altro uno dei miei passatempo preferiti che mi ha dato delle belle soddisfazioni in passato. :D
So che esiste molto materiale su questo argomento così come del codice sorgente già pronto. Il fatto è che la programmazione scacchistica realizzata fino ad oggi ha perso completamente la sfida che aveva affrontato: creare un giocatore artificiale. In pratica ciò che esiste oggi è per lo più la dimostrazione che anche un perfetto "idiota" può giocare a scacchi, purchè sia dotato di smisurate capacità di calcolo.
Ovviamente, specialmente per la base tattica del gioco è irrinunciabile il ricorso ad algoritmi già pronti.
L'idea che intenderei testare, anche senza arrivare ad un prodotto finito, anzi sicuramente senza arrivarvi, è partire da un programma base, con i rudimenti base del gioco, che "apprenda" dai propri errori, ovvero sia in grado di modificare il proprio comportamento in posizioni uguali sulla base dell'andamento del gioco.
Esistono già tentativi in questo senso: una prima idea era consentire al programma la modifica di determinati parametri valutativi, col rischio però di cadere in una serie di correzioni "circolari". Oppure memorizzare quelle posizioni critiche in una sorta di database da cui attingere informazioni. Con questo approccio però si rischia di tentare di svuotare il mare con un cucchiaino.
Non ho l'ambizione , nè il tempo, di creare qualche cosa di geniale, solo mi piacerebbe testare qualche approccio, qualche modello, originale a questo tipo di problema.
Può darsi non se ne faccia nulla ma se avete qualche spunto provate a farmelo sapere, visto che, nel tempo morto, potrei lavorarci un po'.

AnonimoVeneziano
28-11-2004, 20:50
Non hai il tempo di fare qualcosa di ambizioso, ma sicuramente ti stai addentrando in qualcosa di ambizioso :p

Hai ragione , i computer sono perfetti idioti , ma riescono a giocare a scacchi solo perchè possono fare calcoli sulle possibili nuove mosse del giocatore in breve tempo .

Fare quello che vuoi fare tu significa creare l'abbozzo di una vera Intelligenza artificiale , e può essere parecchio difficoltosa come cosa .

Ciao

bizzu
28-11-2004, 21:47
Non so che capacità/conoscenze tu abbia, ma il tuo progetto è sicuramente ambizioso.
Credo cmq che per creare un programma del genere servano delle conoscenze fondamentali nel campo informatico (algoritmi e strutture dati), oltre che conoscenze specifiche nel campo dell'intelligenza artificiale.
Io all'università ho seguito un corso di intelligenza artificiale, che sicuramente non insegna a costruire applicativi così complicati, ma permette di conoscere le "tecniche" di solito impiegate in questo tipo di programmi.
Di solito, programmi del genere si basano su alberi decisionali, nei quali possiamo riconoscere degli stati (che nel nostro caso corrispondono alle disposizioni possibili degli scacchi). Da ogni nodo se ne diramano altri, che rappresentano le mosse legali che potrebbero essere effettuate. Ovviamente le possibilità di azione crescono molto velocemente, all'aumentare delle mosse "future" da considerare.
La sfida sta quindi nel creare un algoritmo di potatura, che elimini quei nodi dell'albero i quali portino a mosse che non porterebbero vantaggio (detto in termini semplicistici). Ovviamente maggiore è la potenza di calcolo a disposizione, più mosse future si potranno valutare e migliori saranno le strategie utilizzate.
Tieni conto anche dell'utilizzo di strategie precostituite, che già esistono negli scacchi (se sei un buon giocatore le conoscerai di certo); un buon programma dovrebbe accorgersi se l'avversario sta utilizzando una di esse, e rispondere con le contromosse efficaci.

Non so se conosci Chessmaster (http://chessmaster10.ubi.com/us/) , uno dei migliori giochi di scacchi esistenti (io ho imparato a giocare con quello!).

Cmq se ti vuoi cimentare in questa impresa ti consiglierei di partire dalla più semplice dama, che ad ogni modo è un buon punto di partenza... ;)

atragon
28-11-2004, 22:47
--Non so se conosci Chessmaster , uno dei migliori giochi di scacchi esistenti (io ho imparato a giocare con quello!).

Ho giocato qualche partita stasera con Chessmaster e anche con ChessTiger.... con esiti piuttosto negativi :mc: ;)
Cmq non è che voglio fare chissà che, e consideriamo che pur non avendo tempo non ho neanche scadenze e che non me ne frega nulla di fare qualche cosa di commerciale o commercializzabile. Se la cosa andrà avanti per 10 anni è lo stesso. Voglio capire le vie possibili, se esistono, per implementare una sorta di apprendimento partendo da una problematica come quella descritta. Poi magari resta tutto su di un pezzo di carta, come un gioco, ma secondo me è anche estremamente interessante, magari solo come spunto di riflessione.
Anni fa uno scacchista-ingegnere russo, Botvinnik, che fu campione del mondo per molti anni, analizzò il problema da questo punto di vista, il progetto si chiamava Sapiens, e non approdò a nulla, o meglio partorì un programma soggetto a sviste grossolane. E alla fine la cosa abortì.
Cerco qualche idea su come affrontare l'argomento