Questa Tesi di Laurea presenta le modalità con cui ho progettato e realizzato un'applicazione dotata di intelligenza artificiale in grado di giocare al gioco degli Scacchi Tridimensionali, gioco noto dai telefilm e film di Star Trek (Cfr. [Star Trek]). Le regole cui ho fatto riferimento sono le Federation Standard Rules 5.0 di A. R. Bartmess (Cfr. [Bartmess, 1977], [Bartmess, 2003]).
Partendo da tali regole, ho codificato la notazione algebrica di scrittura delle mosse con una grammatica Extended Bakus-Naur Form (EBNF) e, successivamente, ho ideato un indice di classificazione (che ho chiamato Elo3D) per dare una valutazione al comportamento dei giocatori durante le partite.
La prima parte sviluppata è un'infrastruttura di rete, basata su Remote Method Invocation (RMI), che trasforma l'impalcatura client-server di questa componente del linguaggio Java in una struttura di comunicazione "quasi" punto-punto. Questa consente il gioco sia in locale sia in remoto, in modo assolutamente trasparente per l'utente, fatta salva la conoscenza dell’eventuale indirizzo di rete remoto.
Per l'impostazione di lavoro che ho scelto, l'applicazione fa uso di dati e formati aperti, con un'alta modularità e consentendo una facile espandibilità delle componenti esistenti. A questo scopo ho infatti sviluppato due linguaggi eXtensible Markup Language (XML) per definire i messaggi che le varie componenti l'applicazione si sarebbero scambiati tra loro e per definire una modalità di memorizzazione dello stato di una partita e i dati di un giocatore.
In quest'applicazione ho messo a disposizione diversi algoritmi di Intelligenza Artificiale (IA), tra i quali (e con i quali) ho eseguito numerose partite e confronti per valutarne le prestazioni. Ho sviluppato un'applicazione in grado di utilizzare anche molteplici insiemi di regole di gioco, facilmente selezionabili dall'utente senza alcuna necessità di configurazione o pre-impostazione.
Progetto e Sviluppo di un Sistema per il Gioco degli Scacchi Tridimensionali
1. Progetto e Sviluppo di un Sistema
per il Gioco degli Scacchi
Tridimensionali
Tesi di Laurea di: Marco Bresciani
matricola 619821
Relatore: Prof. Marco Colombetti
Dipartimento di Elettronica e Informazione
4. 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?
5. Obiettivi
●
Caratteristiche e funzionalità obiettivo della
Tesi:
Algoritmi di IA
“puri”
XML
Funzioni Valutazione
Ad Hoc
X3D
Grammatica EBNF
Connettività
Modularità
&
I18N
Regole di Gioco Multiple
Java
7. 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.
8. Indice di Classificazione
●
●
(1 di 2)
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;
9. Indice di Classificazione
(2 di 2)
B−N 1
R B−
2
N −B
'
B =B
39
3950
∣B '∣
B−
''
B = '
=ram B'
∣B ' −1∣
B 1
'
B , N ∈[ 0 ; 1 ]
{
}
1
R B ∈ 0, ,1 ; R N =1−R B
2
10. Algoritmi di IA
●
E' possibile usare gli algoritmi tradizionali?
●
Ho implementato questi algoritmi:
–
–
NegaMax Principal Variation;
–
NegaScout (Prof. A. Reinefeld, Zuse Institute Berlin);
–
●
NegaMax (con potatura AlfaBeta);
MTD(n,f) (Dr. A. Plaat, Vrije Universiteit Amsterdam);
Dai risultati sperimentali, il migliore risulta
essere l'algoritmo NegaScout...
11. Funzione di Valutazione
●
(1 di 2)
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.
13. Risultati
●
Per la richiesta di connettività ho generato
un'infrastruttura di rete “punto–punto” a
partire dalle API client–server di Java RMI:
–
–
●
(1 di 3)
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.
14. Risultati
●
(2 di 3)
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.
15. Risultati
●
(3 di 3)
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;