Progetto e Sviluppo di un Sistema per il Gioco degli Scacchi Tridimensionali Tesi di Laurea di: Marco Bresciani matricola Relatore: Prof. Marco Colombetti Dipartimento di Elettronica e Informazione
Sommario ● Il Gioco ● Analisi del Problema & Metodologia ● Lavoro Svolto & Contributi ● Risultati, Conclusioni
Problema ● Realizzare un'applicazione in grado di giocare al gioco degli Scacchi Tridimensionali valutando e confrontando l'applicabilità di algoritmi di IA standard.
Analisi del Problema ● Le tecniche di IA tradizionali, valgono ancora per questo gioco? Si possono separare nettamente le regole? ● Insiemi multipli di regole, si possono adattare ad una sola tipologia di algoritmi di IA? ● L'utente vuole applicazioni semplici: come conciliare i tradizionali “motori” di IA scacchistica con questo gioco?
Obiettivi ● Caratteristiche e funzionalità obiettivo della Tesi: XMLX3D Grammatica EBNF Connettività Modularità & I18N Algoritmi di IA “puri” Funzioni Valutazione Ad Hoc Regole di Gioco Multiple
Struttura Generale
Metodologia ● Ingegneria del Software e programmazione orientata agli oggetti; ● Sfruttamento di Standard Internazionali disponibili; ● Software Libero, modulare ed espandibile; ● Notazione Algebrica Standard delle Federation Standard Rules; ● Regole (generazione delle mosse) e Funzioni di Valutazione (valore dei pezzi e delle posizioni) ad hoc; ● Comparazione di Algoritmi di IA.
Indice di Classificazione ● L'indice di classificazione ELO, pur essendo un buono specchio della realtà, è di uso complesso e non completamente definito. ● L'indice Elo3D che ho ideato: – contempla l'esistenza del pareggio (patta) come risultato a sé stante; – prevede un intervallo percentuale [0;1] per i risultati; – evita i casi tipici da “scalata Ricca” limitando il vantaggio dei giocatori più forti; – si basa solo sul risultato e sui valori dei giocatori; (1 di 2)
Indice di Classificazione (2 di 2)
Algoritmi di IA ● E' possibile usare gli algoritmi tradizionali? ● Ho implementato questi algoritmi: – NegaMax (con potatura AlfaBeta); – NegaMax Principal Variation; – NegaScout ( Prof. A. Reinefeld, Zuse Institute Berlin ); – MTD(n,f) ( Dr. A. Plaat, Vrije Universiteit Amsterdam ); ● Dai risultati sperimentali, il migliore risulta essere l'algoritmo NegaScout...
Funzione di Valutazione ● Si basa sull'articolo di Shannon del 1949 (valori dei pezzi e loro differenze); ● Prevede una funzione posizionale per ciascuna coordinata, per i pedoni; ● Valuta i Livelli d'Attacco in base ai pezzi presenti su di essi; ● Usa un indice di mobilità che valuta le mosse disponibili; ● Tiene in considerazione catture e promozioni. (1 di 2)
Funzione di Valutazione (2 di 2)
Risultati ● Per la richiesta di connettività ho generato un'infrastruttura di rete “punto–punto” a partire dalle API client–server di Java RMI: – struttura altamente espandibile e personalizzabile; – utilizzabile per trasmettere informazioni o comandi tra le applicazioni. ● L'indice Elo3D che ho definito è attualmente in uso e rispecchia il comportamento dei giocatori. (1 di 3)
Risultati ● Risultati ottenuti dalla modularizzazione: – regole di gioco multiple, completamente scollegate dalla IA; – funzioni di valutazione ad hoc per ciascuna regola; – algoritmi di IA multipli e intercambiabili; – possibilità di espansione per i dati I18N; – interfacce di gioco per giocatori e spettatori. (2 di 3)
Risultati ● Il Fattore di Ramificazione degli Scacchi 3D è superiore del 10% rispetto quello tradizionale; ● Gli algoritmi di IA stile MiniMax sono adeguati anche per questo gioco; ● Le Funzioni di Valutazione degli Scacchi 3D non sono completamente comparabili con quelle tradizionali; (3 di 3)
Conclusione Standard Internazionali Infrastruttura di Rete OOP & SE Algoritmi IA Multipli Regole Multiple Indice Elo3D Notazione di Gioco Novità recent e Uso di Java Prospettiva a Giocatori & Spettatori