Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

8
voti

L'esapedone

Indice

Cos'è

Esapedone è un minigioco a livello del "filetto" (o tris o tic-tac-toe) che si gioca su 9 caselle (3x3), con 3 pedoni bianchi e 3 neri, utilizzando le stesse regole che valgono per i pedoni nel gioco degli scacchi.

E' quindi un gioco elementare, che si esaurisce in poche mosse, che non richiede particolari abilità, ma solo un semplice ragionamento sullle possibili contromosse dell'avversario.

Appresi la sua esistenza una trentina d'anni fa dai libri di Martin Gardner e ne feci allora un'edizione per computer sul mio primo "personal" (il mitico Apple II  !), assegnando al calcolatore le mosse dei pedoni neri.

Tale programma, più tardi riscritto in VisualBasic3, è tuttora valido ed in appendice verranno fornite la modalità per il suo utilizzo.


Di per sè il gioco non varrebbe una citazione se non fosse per una particolarità introdotta nel programma: la possibilità da parte del computer di "imparare a giocare".


Era allora l'epoca delle grandi aspettative sull'uso dei grandi calcolatori e l'inizio della diffusione dei PC (che molti consideravano poco più che costosi giocattoli).

Fra le varie aspettative vi era quella della soluzione matematica dei modelli di grossi impianti, attraverso una sistematica raccolta dati che, una volta elaborati, avrebbero permesso un controllo automatico ottimizzato.

Il recente articolo in ElectroYou sulle reti neurali, mi ha fatto ricordare una delle forme su cui questi raffinati controlli avrebbero dovuto basarsi.

In generale tutte queste metodologie matematiche cercavano, anche se in forme diverse, di mettere la macchina in grado di "apprendere", in modo tale da poter prendere decisioni autonome nella condotta (ovviamente ottimizzata) dell'impianto stesso.

Regole e strategie

Tornando al nostro gioco, è innanzitutto importante capire la differenza che c'è tra le regole, cioè quali sono le operazioni permesse dal gioco, e l'utilità delle singole azioni rispetto al fine di vincere il gioco, cioè le migliori strategie da mettere in atto.

L'abilità di un giocatore sta appunto nel scegliere fra le varie possibilità che le regole del giuoco gli consentono, quella più idonea alla vittoria.


Ora, mentre normalmente è semplice trasformare le regole di un gioco in un corrispondente programma di calcolatore, non è per niente semplice tentare di programmarne la strategia vincente.

In questo caso si è aggirato tale ostacolo programmando solo le regole di base ma tenendo poi conto delle mosse che portavano alla sconfitta il calcolatore, in modo da non ripeterle più.

Partendo quindi da un comportamento di gioco apparentemente stupido da parte del calcolatore (mosse scelte a caso fra la varie possibili) si passa ben presto, in poche partite, ad un comportamento praticamente sempre vincente.

Fu per me un'autentica sorpresa constatare come l'applicazione di questo semplice principio portasse a risultati così evidenti.


Dopo queta esperienza non ebbi più occasione di applicare nella mia attività professionale (l'automaziione industriale) principi di apprendimento, salvo in un caso di regolazione completamente atipica, che descriverò più avanti.

Per la verità provai ad utilizzare le reti neurali per lo sviluppo di un sistema appunto a neuroni che avrebbe dovuto apprendere il comportamento logico mediante addestramento, anzichè usare elementii booleani. Lo studio rimase a livello di programma di calcolatore per l'indisponibilità di elementi neuronali, annunciati ma che non mi risulta siano poi stati messi in commercio.

Regolazione non convenzionale

Vale forse la pena di fare una parentesi per raccontare il caso della regolazione di spessore in particolari laminatoi per lavorazione a freddo di nastri d'acciaio (Sendzimir).

L'impianto consiste in una gabbia di vari cilindri che comprimono la lamiera (in rotoli da diverse tonnellate), in modo da ridurne lo spessore (ed aumentanre proporzionalmente la lunghezza), in diverse "passate" (cioè altenando la direzione di marcia) fino al valore di spessore prestabilito.


La difficoltà era data dall'impossibilità fisica di introdurre nella gabbia un misuratore di spessore per poter applicare un classico regolatore a retroazione (feed-back) alla forza di laminazione.

L'unica possibilita' era quella di disporre un misuratore di spessore a monte ed un altro a valle (ovviamente rispetto al senso di laminazione), distanziati però alcuni metri dalla gabbia del laminatoio stesso.

Chiaramente le misure corrispondevano a sezioni diverse a quella effettivamente in lavorazione e non potevano così essere direttamente utilizzate come "retroazione".


La soluzione fu un controllo "predittivo" (feed-forward), basato cioè sulla misura dello spessore entrante (ovviamente sincronizzata in base alla velocità di laminazione) e su un modello matematico di laminazione.

In questo controllo (chiaramente a "ciclo aperto") , la maggior incognita era la "durezza" del materiale che variava di passata in passata.

Ecco qui allora che la misura dello spessore in uscita, poteva permettere di ricavare questo valore (conoscendo lo spessore d'entrata, lo sforzo applicato e l'effettivo spessore risultante, si può risalire alla durezza) e aggiornare il modello matematico di laminazione. Quindi una forma di "apprendimento" da parte del laminatoio sulle reali caratteristiche del nastro laminato. Sta di fatto che ottenemmo anche in questo caso prestazioni insperate, contribuendo fondamentalmente al miglioramento della produzione.


Non è certo questo un esempio epocale, ma credo si siano ottenuti più risultati concreti in approcci di questo tipo che non con le sofisticate teorie di ottimizzazione.

Appendice

Chi volesse cimentarsi con l'esapedone, può scaricare il programma ESAP.exe, dopo però essere certo che risulti istallato nel file System di Windows, l'interprete di VisualBasic3 (VBRUN300.DLL)

Le modalitài del gioco sono ottenibili col tasto ISTRUZIONI.

Il gioco viene avviato col tasto INIZIO TORNEO e proseguito per le successive partite col tasto INIZIO PARTITA.

(l'INIZIO TORNEO azzera l'addestramento del calcolatore, riportandolo alla sola conoscenza delle regole di gioco)



Nella figura è rappresentata una tipica situazione dopo le prime 10 partite: il bianco è avvantaggiato dall' inesperienza del calcolatore (ma non è detto che riesca a vincere il torneo!) Si lascia ovviamente al giocatore scoprire quale strategia gli consente di superare un calcolatore che "impara" molto rapidamente.

8

Commenti e note

Inserisci un commento

di ,

(x ian27177) La logica fuzzy è ancora un'altra cosa (rispetto alle reti neurali). Non sono molto aggiornato sui recenti sviluppi (mi ero molto interessato al loro apparire, ma poi non mi sembra che queste tecniche abbiano raggiunto risultati concreti, salvo casi specifici). Rimane l'interesse concettuale per le novita' (penso alla robotica)ma, come accennato nell'articolo, penso che spesso non sfruttiamo in pieno nemmeno le tecniche consolidate.

Rispondi

di ,

mi perdoni... Schgor

Rispondi

di ,

Buongiorno sig. Scghor, ho trovato interessante il suo articolo, come del resto succede sempre. Ho cercato informazioni riguardo a logiche programmabili con architettura orientata alle reti neurali, per curiosità, ma l'unica cosa che ho trovato che ci si avvicina è il ST52x301 , che integra un processore di logica Fuzzy e un unità Aritmetico-Logica per operazioni Booleane. Ha per caso qualche indizio in + da fornire? Saluti, Flavio

Rispondi

di ,

Ok, grazie. Quindi se non ho capito male si tratta di un MIN-MAX con tagli ALFA-BETA effettuati però a posteriori, dopo che il gioco si è ultimato, e non a priori come accade ad esempio negli scacchi per calcolare la prossima mossa.

Rispondi

di ,

(x c1b8) Non avrei difficolta' a presentare il programma, ma temo che sarebbe incomprensibile. Meglio svelare i criteri su cu si basa: Il calcolatore, in base alla situazione ed alle regole del gioco deve scegliere una delle mosse possibili e lo fa "a caso" (funzione random). Se pero' alla mossa segue la sconfitta, quella viene cancellata dalle possibili e quindi non piu' ripetuta. Tutto qui. (x rusty)In realta' il gioco non e' "alla pari" (e' favorito chi muove per secondo): se il calcolatore giocasse la prima mossa contro un esperto, imparerebbe, ma non potrebbe mai vincere il torneo.

Rispondi

di ,

Pardon, era feedforward non feedback ;)

Rispondi

di ,

Interessante applicazione di una rete feedback error propagation (credo), ma sarebbe interessante anche far fare a "lui" la prima mossa, per essere veramente "alla pari". Mi rendo conto però che da qualcosa deve pure partire per il learning, ma dopo un paio di sessioni di addestramento sarebbe carino vedere come imposta il suo gioco facendo la prima mossa, ossia elaborando una strategia di attacco invece che di difesa. Saluti

Rispondi

di ,

Egregio Ing. Schgör, giochino quello da Lei presentato interessante, sopratutto la parte del programma che apprende a giocare. Dal momento che ritengo non si finisca mai di imparare e lo studio di casi reali sia una buona scuola Le volevo chiedere se fosse possibile visionare il sorgente del programma. Saluti Fabio

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.