Enhanced Crobots Auto Trainer


Indice
 

Introduzione
La 'teoria di base' di MENACE
Applicazione su crobots
Switch
Download
Conclusioni

Introduzione:

Qualcuno probabilmente si ricorderà di MENACE, un 'robot' costruito con palline colorate e scatoline di fiammiferi proposto da Martin Gardner.
Tramite una serie di 'sedute' di allenamento il marchingegno imparava a giocare all' esapedone, e lo faceva talmente tanto bene da risultare praticamente invicibile dopo un certo numero di partite.
Bene, ECAT è il tentativo di applicare questo metodo di training allo sviluppo dei crobot e dai primi risultati sembra proprio che la cosa, per quanto strana, funzioni.

La 'teoria di base':

Il robot di Gardner è costruito in modo molto semplice:
preso un numero di scatole di fiammiferi pari alla metà delle posizioni di gioco possibili (il robot inizia sempre per primo, quindi le mosse pari sono a carico del giocatore umano) si disegna su ognuna di esse una delle possibili configurazioni della scacchiera.
Ogni scatola va poi riempita con un certo numero di palline di colore diverso.
A questo punto l' automa è pronto ad essere addestrato.
Si inizia con la scatolina corrispondente alla scacchiera vuota: la si agita per mescolare le palline e quindi se ne estrae una a caso (ogni colore è associato ad una posizione sulla griglia). Quella è la mossa del robot: la scatolina viene lasciata aperta, con la biglia corrispondente appoggiata di fianco.
Il gocatore umano fa a questo punto la sua mossa, controlla la configurazione della scacchiera e ricerca la scatolina corrispondente, ripetendo il procedimento fino alla conclusione dell' incontro.

Al termine della partita inizia la fase di apprendimento, basata sulla tattica del bastone e della carota.
Se MENACE vince in ogni scatola aperta sono inserite due nuove palline dello stesso colore di quella uscita, corrispondente alla mossa vincente.
Se il robot perde si elimina la biglia fuori dalla scatola e quest' ultima viene richiusa.
In questo modo si premiano le strade vincenti e si penalizzano le soluzioni perdenti.
A lungo andare l' automa segue sempre la strategia migliore.

Applicazione su crobots:

Come si può applicare tutto questo allo sviluppo di un robot?

Supponiamo di voler trovare il valore migliore per un parametro di una funzione, per esempio per il tempo che deve trascorrere prima che si inneschi la routine di attacco:

main()
{
tempo=$mem;
while (--tempo)
    {
        ...........
    }

Attacca();
}

Basta inserire la variabile $mem al posto del valore cercato, salvare il programma come .pr e poi preparare un file di memoria di questo tipo:

10
11
12
13
14
15
16
17
18
...

A questo punto l' unica cosa da fare è lanciare Ecat che esegue un torneo completo con i robot indicati nel file *.rob.
Il programma provvede a estrarre un valore a caso dalla memoria, eseguire PPC per trasformare il *.pr in *.r, eseguire una partita e controllare il log del risultato.
Se il nostro robot vince nel file di memoria è aggiunto un numero N (impostabile) di valori uguali a quello impiegato, se perde tale valore viene sottratto un numero Z di volte (a meno che non sia l' ultimo rimasto).
A questo punto Ecat esegue un' altra partita. Ogni X incontri Ecat estrae un nuovo valore per il parametro.

Alla fine del torneo avremo un file di memoria contenente solo i valori più appropriati della variabile in esame.

Switch:

-w=xxx        punti assegnati ad un valore vincente
-p=xxx        punti assegnati ad un valore neutro
-l=xxx        punizione per la sconfitta

Versioni:

Ecat è disponibile in due versioni:
E.C.A.T. standard con file di memoria dinamico e parametri a probabilità variabile
E.C.A.T. NT con file di memoria fisso e parametri equiprobabili

Conclusioni:

Ecat è basato su Torneo2k1, per cui ulteriori informazioni sull' uso sono rintracciabili nel manuale di quest' ultimo.
Abbiamo finito. Il programma è a vostra disposizione. Per quanto assurda possa sembrare la cosa a noi sembra che funzioni.
Fateci sapere che ve ne pare.

Simone Ascheri
Michelangelo Messina