Il progetto che voglio descrivere si chiama: Terra Genetica.
Terra Genetica è un sistema che permette l'evoluzione
di una comunità di agenti interagenti, guidati da reti
neurali ed algoritmi genetici in un ambiente distribuito.
Scopo principale di questo progetto è divertire gli ideatori
;-), scopo secondario è realizzare un generatore di risolutori
neurali (RN) ottimi, dove per risolutore neurale ottimo si intende
la rete neurale di tipo, topologia, parametri e training set,
che meglio "fitta" ovvero risolve, il problema di sopravvivere
in Terra Genetica.
Terra genetica quindi è un mondo virtuale, costituito
di terra, acqua, voragini ed erba.

Fig 1. Una vista dall'alto di Terra Genetica
I suoi abitanti sono i Cromosotteri, individui a sei zampe
erbivori e pacifici, i cui unici nemici sono i
 |
 |
Fig 2. Cromosottero Maschio |
Fig 3. Cromosottero Femmina |
Cromopredator, esseri malvagi che divorano i Cromosotteri.
I Cromosotteri possono mangiare erba, bere, spostarsi nelle otto
direzioni, emettere versi, udire suoni, vedere cosa capita di
fronte a loro, e riprodursi accoppiandosi con esemplari della
stessa specie; ma devono fare molta attenzione, e imparare a
non morire di fame o di sete, a non affogare nell'acqua alta,
ed a fuggire dai Cromopredator.
Fig 4. Cromopredator
Terra Genetica è quindi il microcosmo in cui i cromosotteri
nascono, fanno esperienza, imparano, si riproducono, trasmettono
parte della loro esperienza alla progenie ed in fine muoiono.
Ciascun cromosottero dispone di un Genoma, che indica il tipo,
la topologia, ed i parametri della sua rete neurale, il sesso,
l'età massima, ecc.
Alla nascita, ciascun individuo apprende una quota parte delle
esperienze dei genitori, e durante la sua vita effettua delle
esperienze e apprende da esse.
Solo la progenie degli individui con il migliore mix fra tipo
di rete, topologia di rete, esperienze, parametri di apprendimento,
ecc, sopravviverà alla selezione naturale indotta dalla
limitatezza delle risorse e dalla presenza dei predatori.
 |
 |
Fig 5. il cono visivo dei cromosotteri |
Fig 6. Il campo auditivo |
A questo punto rimangono solo alcune domande aperte:
- Perché realizzare questo sistema?
- Come puo essere realizzato tutto ciò?
- Ma non è difficile?
- Con quale modello organizzativo?
- In quali tempi?
- Chi può partecipare?
- Beh sul perché realizzare questo sistema posso dire
che programmare ed imparare è bello! oppure perché
dobbiamo fare la tesina del corso di informatica!
- Sul come possa essere realizzato credo che data la cospicua
dimensione del progetto, sia utile suddividere Terra Genetica
in diversi sottoprogetti "chiusi", ciascuno con un
senso compiuto se preso singolarmente. Ad esempio una suddivisione
può essere la realizzazione di 8 sottosistemi:
- sistema di distribuzione del carico: l'idea è, di
distribuire N processi (leggi cromosotteri) su M macchine scegliendo
le macchine più scariche
- sistema di gestione del mondo: è il sistema che determina
le "leggi della fisica" valide nel nostro mondo simulato.
(Es lo scorrere del tempo, la "morte" di un agente
per mancanza, d'erba,
)
- sistema di comunicazione: consiste in una serie di code di
messaggi mediante le quali i diversi sottosistemi possono scambiarsi
informazioni.
- sistema di gestione della genetica: è il sistema mediante
il quale si combinano i genomi che daranno luogo ai nuovi individui,
con il loro genotipo e fenotipo.
- sistema di gestione dell'apprendimento: è il sistema
di generazione delle reti neurali, a partire dal "genoma"
di ciascun agente.
- sistema agente: consiste nella realizzazione delle azioni
(operatori) proprie di ciascun agente.
- sistema di visualizzazione: consiste nella realizzazione
delle interfacce grafiche di tutti gli oggetti presenti in Terra
Genetica
- sistema di gestione delle esperienze: consiste nel realizzare
il sistema di valutazione delle esperienze e il DB che tenga
traccia dei legami stato precedente, azione, "vantaggi ottenuti",
utilizzato per effettuare il training delle reti neurali.
- Si. In effetti è difficile. La realizzazione completa
del progetto implica l'uso di reti neurali, database, librerie
grafiche, programmazione di sistema, algoritmi genetici, di un'accurata
progettazione,
insomma, non è una passeggiata. Bisogna
d'altra parte dire che è un progetto altamente stimolante
e soprattutto si impara molto!
- Come modello organizzativo organizzeremo diversi gruppi di
lavoro che procedano in parallelo. Scelte tecniche ed architetturali
saranno discusse e votate.
- Per quanto riguarda i tempi
dipende dalla numerosità
dei team! Ma credo che in un mesetto si potrebbe già aver
concluso il punto 1.
- Chi può partecipare: Beh questo punto mi sta particolarmente
a cuore: in linea di massima possono partecipare
Tutti!
Studenti, comunità virtuali, giornalisti, haker, professori,
classi intere, centri sociali, professionisti, impiegati,
e chi più ne ha più ne metta, bastano entusiasmo
e familiarità con il C++!!!
Bene Gente, per cominciare utilizzeremo il sistema di distribuzione
del carico come banco di prova.
Spero di avervi incuriosito e che vogliate partecipare numerosi.
Fatevi sotto!!
Per far parte del gruppo scrivete a Livio@McLink.it |
Livio Crestini, già
diplomato in informatica, si è laureato in Ingegneria
Informatica, con una tesi sulle reti neurali.
Le sue esperienze di lavoro comprendono consulenze per diverse
società, principalmente nel campo dello sviluppo Software.
Attualmente si occupa di architetture modelli e metodologie nel
reparto IT di una società di Telecomunicazioni.
Nel tempo libero ama fare sport, ritrovarsi con gli amici e ballare
la salsa. |