ROBOTICA EVOLUTIVA: METODOLOGIA E PROSPETTIVE

ROBOTICA EVOLUTIVA: METODOLOGIA E PROSPETTIVE
Stefano Nolfi*, Dario Floreano**, Orazio Miglino***, Francesco Mondada****
*Istituto di Psicologia, C.N.R.
15, Viale Marx - 00187 - Roma
e-mail: [email protected]
**Laboratorio di Tecnologie Cognitive,
AREA Science Park - Trieste
e-mail: [email protected]
***Dipartimento di Psicologia, Universita' di Palermo
Viale delle Scienze, Palermo
e-mail: [email protected]
****Laboratorio di Microinformatica
Politecnico Federale, Lausanne, Svizzera
e-mail: [email protected]
1. INTRODUZIONE
Negli ultimi anni sono stati proposti nuovi approcci basati su una forma di evoluzione
simulata per costruire robot autonomi (Brooks, 1992; Cliff, Husband e Harvey, 1993). Il
grande interesse suscitato da questi nuovi approcci e' sicuramente attribuibile alla disaffezione
sia verso la robotica tradizionale che verso l'Intelligenza Artificiale ed al convincimento che
robot realmente autonomi sono troppo difficili da realizzare. Le ragioni per cui la
progettazione di sistemi di controllo per robot autonomi presenta serie difficolta' sono
sostanzialmente le seguenti:
a) E' estremamente difficile coordinare le parti di un robot autonomo, sia a livello della
meccanica sia per quanto riguarda il sistema di controllo. Tale complessita', come e' stato
sottolineato da Cliff, Harvey e Husbands (1993), cresce in modo esponenziale con l'aumento
del numero di parti e di moduli che costituiscono il sistema.
b) I robot autonomi interagiscono con un ambiente esterno ed e' estremamente difficile
modellare questa interazione (Parisi, Cecconi e Nolfi, 1990; Gaglio, Esposito e Nolfi, 1994).
In sistemi di questo tipo ogni azione motoria ha due differenti effetti (si veda Nolfi e Parisi,
1993): (1) determina l'efficienza dell'intero sistema rispetto ad un compito dato; (2) determina
gli stimoli che saranno successivamente percepiti dal robot (questo ultimo punto ha un ruolo
importante nel successo o fallimento di una sequenza di azioni). Poiche' ogni azione ha effetti
anche a lungo termine e' estremamente difficile stabilire quale sia la migliore azione possibile
in un dato momento.
La robotica evolutiva supera questo tipo di problemi cercando di ottenere sistemi di
controllo robotici attraverso un processo evolutivo e adattivo piuttosto che attraverso un
processo di progettazione ingegneristica. Cio' non implica che i processi di adattamento e
apprendimento siano prerogativa assoluta della Robotica Evolutiva. Meccanismi di
apprendimento sono stati e sono utilizzati e studiati anche all'interno della Robotica
"classica". Tuttavia il fatto che i processi di apprendimento ed evoluzione siano considerati
centrali e fondamentali all'interno della Robotica Evolutiva ha come conseguenza il fatto che
il modo di operare, le prospettive e i problemi che si incontrano all'interno di questo nuovo
approccio sono spesso profondamente diversi da quelli tradizionali.
2. EVOLUZIONE VERSUS DESIGN
I sistemi naturali sono sistemi che si autoorganizzano sviluppando una serie di strategie
che permettono la sopravvivenza e la riproduzione. Al contrario, il modo in cui i sistemi
artificiali devono svolgere il proprio compito e' di norma determinato da chi sviluppa il
sistema. Il ricercatore o l'ingegnere che costruisce un sistema che debba svolgere un certo
compito si preoccupa di determinare innanzitutto le risposte che il sistema deve produrre per
ciascun possibile stimolo sensoriale e cerca quindi di disegnare il sistema in modo tale che
esso produca effettivamente la risposta desiderata per ciascun possibile stimolo. Questa
procedura implica che il modo in cui il sistema deve svolgere il compito e' determinato in
anticipo.
2.1 Sistemi che interagiscono con un ambiente esterno.
Nel caso di sistemi passivi (cioe' sistemi che ricevono passivamente gli stimoli sensoriali e
non interagiscono con un ambiente esterno) puo' essere possibile determinare le risposte
corrette che il sistema deve fornire. Nel caso di sistemi che interagiscono attivamente con un
ambiente esterno invece (per es. nel caso di sistemi che possono modificare la propria
posizione relativa rispetto agli oggetti esterni) e' estremamente difficile e probabilmente
impossibile determinare le risposte corrette che il sistema deve produrre per ogni possibile
stimolo.
La ragione fondamentale per cui e' difficile determinare le risposte desiderate corrette per
un sistema che interagisce con un ambiente esterno consiste nel fatto che sistemi di questo
tipo determinano attraverso il loro comportamento gli stimoli sensoriali che ricevono in
ingresso (se un robot autonomo decide di girare in una certa direzione percepira' un
determinato stimolo, mentre se gira nella direzione opposta percepira' uno stimolo di tipo
diverso). Non e' possibile sapere a priori quale tipo di stimoli il sistema incontrera' se non
conosciamo le risposte che il sistema produce per ciascuno stimolo e anche se conoscessimo
tali risposte potremmo non essere in grado di prevedere il tipo di stimoli che il sistema
incontrera'. Come sottolineato sopra, e' importante considerare che ciascuna azione compiuta
dal sistema ha due effetti diversi: (a) determina in che misura il sistema e' in grado di svolgere
il proprio compito relativamente a quel particolare stimolo; (b) determina il tipo di stimoli
che il sistema incontrera' successivamente. Entrambi questi effetti sono importanti per poter
soddisfare adeguatamente il compito finale.
Determinare la risposta motoria che il sistema deve dare in modo tale da essere esposto a
stimoli utili successivamente (e quindi in modo tale da essere efficiente) e' estremamente
difficile per diverse ragioni: (a) ciascuna risposta motoria del sistema puo' avere conseguenze
a lungo termine; (b) gli effetti di ciascuna risposta del sistema sono funzione anche delle
risposte motorie precedenti e successive che a loro volta possono avere effetti a lungo
termine; (c) l'ambiente e il risultato dell'interazione tra il sistema e l'ambiente possono non
essere completamente noti. In aggiunta a questo e' necessario notare che i due criteri usati per
determinare la risposta desiderata (dare la migliore risposta possibile per lo stimolo
contingente e dare una risposta che sia in grado di assicurare una buona successione di
stimoli) a volte possono essere in contrasto e necessitano una soluzione di compromesso.
Per queste ragioni pensiamo che la strada migliore per sviluppare sistemi che
interagiscono con un ambiente esterno non sia quella di disegnare il sistema manualmente,
bensi' di lasciare che il sistema progressivamente si adatti a svolgere il compito in questione
attraverso un processo di auto-organizzazione.
2.2 La decomposizione funzionale.
2
Un'altra caratteristica distintiva dell'approccio "classico" alla robotica consiste nel fatto
che la struttura interna del sistema, analogamente alle risposte desiderate, viene
predeterminata. Il compito che il sistema deve svolgere viene scomposto in componenti
funzionali (di norma tali componenti funzionali sono almeno tre: percezione, pianificazione e
azione) e a ciascuna componente viene associato un diverso modulo del sistema.
Questo tipo di approccio presenta il problema di modellare l'interazione tra le varie
componenti del sistema; infatti, siccome ciascuna componente interagisce con le altre, in un
approccio basato sulla progettazione, tali interazioni devono essere previste e controllate.
Questo tipo di difficolta' ha spinto Brooks (Brooks, 1991) ad abbandonare l'idea della
decomposizione funzionale e a proporre un approccio basato sulla decomposizione del
comportamento desiderato. L'idea e' quella di identificare dei comportamenti indipendenti e
di far corrispondere a ciascun comportamento un modulo del sistema di controllo. In questo
modo il sistema di controllo puo' essere costruito progressivamente giustapponendo moduli
capaci di produrre ciascuno il comportamento corrispondente. Tuttavia, sebbene l'idea di
costruire gradualmente comportamenti piu' complessi sia interessante, non si vede come
decomporre il sistema in strutture che corrispondono a comportamenti elementari - invece che
a moduli funzionali - possa risolvere il problema della difficolta' di modellizzare l'interazione
tra le componenti.
L'approccio evolutivo si basa invece sull'auto-organizzazione e si pone come obiettivo
quello di lasciare scegliere al sistema stesso non solo il modo in cui risolvere il compito dato,
ma anche la struttura interna adatta a tale fine. Del resto occorre considerare che se non si
conosce in anticipo il tipo di soluzione che il sistema trovera' non si puo' certamente
determinare quale e' l'architettura interna piu' adatta ad implementare tale soluzione.
Abbandonare la strada della progettazione non lascia altra via se non quella della completa
auto-organizzazione del sistema.
3. COSA EVOLVERE E COME EVOLVERLO
Per superare i problemi relativi alla progettazione di questo tipo di sistemi appare dunque
ragionevole usare una procedura automatica come un algoritmo genetico (Holland, 1975), che
gradualmente costruisce il sistema di controllo di un agente autonomo sfruttando le variazioni
presenti all'interno di una popolazione di soluzioni durante il processo di interazione tra
l'agente e il suo ambiente.
L'idea sottostante l'algoritmo genetico e' semplice. Si genera una popolazione di individui
(in questo caso sistemi di controllo per robot autonomi) casualmente diversi tra di loro (si
crea cioe' una popolazione iniziale di individui) e si valuta l'efficienza di questi diversi sistemi
rispetto al compito dato. Naturalmente l'efficienza di questi individui sara' inizialmente bassa
in quanto i loro sistemi di controllo sono stati generati in modo casuale, ma proprio per
questo motivo vi saranno delle differenze tra le varie prestazioni. Gli individui migliori di
questa "generazione" iniziale (G0) hanno la possibilita' di riprodursi generando delle copie di
se stessi con l'aggiunta di "mutazioni", ovvero di cambiamenti casuali dei parametri che li
definiscono. L'insieme dei "figli" cosi' ottenuti dalla riproduzione degli individui migliori
costituisce la generazione successiva (G1). Il processo viene quindi ripetuto per un certo
numero di generazioni in modo da selezionare progressivamente individui che hanno ritenuto
delle mutazioni adattive, cioe' dei cambiamenti che hanno prodotto un miglioramento della
prestazione. Attraverso questo processo di selezione e mutazione (cioe' di introduzione di
cambiamenti) si possono ottenere individui progressivamente piu' efficienti.
Rimane tuttavia il problema di determinare " Cosa evolvere?" e "Come evolverlo?"
3
Per quanto riguarda la scelta di cosa evolvere sono state fatte proposte diverse. Alcuni
autori hanno proposto di evolvere sistemi di controllo nella forma di programmi espliciti
scritti in qualche linguaggio di alto livello. Brooks (1992) ad es., propone di usare
un'estensione della tecnica di programmazione genetica di Koza (Koza, 1992). Dorigo e
Schnepf propongono di usare una forma di "classifier system". Altri propongono di evolvere
sistemi di controllo basati su reti neurali (Cliff, Husbands e Harvey, 1993; Floreano e
Mondada, 1994a; Nolfi, Miglino e Parisi, 1994; Miglino, Nafasi, Taylor, in stampa). Noi
riteniamo che quest'ultima proposta sia la via piu' promettente per una serie di ragioni:
a) Le reti neurali possono facilmente sfruttare varie forme di apprendimento che possono
favorire il processo evolutivo (Ackley e Littmann, 1991; Nolfi, Elman e Parisi in press) o
possono migliorare il prodotto finale.
b) Le reti neurali sono resistenti al rumore che e' massivamente presente nell'interazione
robot/ambiente. Inoltre e' stato mostrato che introducendo rumore in una rete neurale si
possono avere effetti benefici sul corso del processo evolutivo (Miglino, Pedone e Parisi,
1993).
c) In accordo con Cliff, Harvey e Husbands (1993) riteniamo che le componenti primitive
su cui opera il processo evolutivo debbano essere al livello piu' basso possibile per evitare di
introdurre scelte non efficienti. Pesi sinaptici e nodi sono componenti primitivi di basso
livello in quanto sono in grado di interagire direttamente con sensori e motori del robot senza
richiedere alcuna interpretazione.
Il "come" evolvere un sistema di controllo per robot autonomi, vale a dire la metodologia
dettagliata da seguire durante il processo di evoluzione, e' invece un problema meno chiaro e
meno studiato. Nelle sezioni seguenti ci concentreremo proprio sul problema di come
evolvere agenti di controllo per robot autonomi. A questo scopo presenteremo tre diversi
esempi di applicazione della metodologia evolutiva per lo sviluppo di reti neurali che
controllino dei robot mobili e, nel far cio', discuteremo i vantaggi e gli svantaggi di ciascun
approccio. Infine cercheremo di affrontare alcune questioni generali di carattere
metodologico.
4. TRE ESEMPI DI ROBOTICA EVOLUTIVA REALIZZATI CON METODOLOGIE
DIVERSE
In questo paragrafo presentiamo tre diversi esempi di applicazione della metodologia
evolutiva per lo sviluppo di sistemi di controllo per robot autonomi. Tutti e tre i casi
riguardano l'evoluzione di un sistema di controllo basato su reti neurali con architettura fissa,
ovvero non soggetta a cambiamenti durante il processo evolutivo (per esempi di modelli in
cui sia l'architettura che i pesi della rete neurale sono soggetti ad evoluzione si veda Nolfi,
Miglino e Parisi, in stampa). In tutti gli esperimenti le reti neurali sono costituite da uno strato
di neuroni di ingresso che vengono attivati in base allo stato dei sensori del robot, uno strato
di neuroni di uscita che determinano lo stato di attivazione dei motori del robot ed
eventualmente uno strato di neuroni interni. In alcuni degli esperimenti esistono poi delle
connessioni ricorrenti, ovvero delle connessioni fra neuroni dello stesso livello. Di
conseguenza in alcuni casi lo stato di attivazione dei neuroni al tempo t puo' dipendere anche
dallo stato di attivazione dei neuroni stessi al tempo t-1.
In tutti gli esperimenti viene realizzato un processo evolutivo attraverso il quale vengono
selezionati i pesi delle reti neurali. Viene creata una generazione iniziale di "genotipi" con
valori generati casualmente che codificano i pesi delle corrispondenti reti neurali. Vengono
quindi valutati i comportamenti generati da ciascuna rete neurale in base ad un criterio di
efficienza detto "fitness". Infine vengono riprodotti i genotipi degli individui migliori. Il
processo di riproduzione viene effettuato in due diverse modalita'. In un primo caso viene
4
simulato un tipo di riproduzione agamica in cui la riproduzione consiste nella "clonazione"
del genotipo dell'individuo con l'aggiunta di mutazioni generate casualmente. In un secondo
caso viene simulato un processo di riproduzione sessuata in cui, oltre alla presenza delle
mutazioni, la variabilita' tra genitori e figlio e' dovuta anche al fatto che i genotipi dei genitori
vengono incrociati mediante un operatore di ricombinazione (crossover).
I vari esperimenti differiscono invece per la metodologia utilizzata. Nel primo
esperimento il processo evolutivo e' condotto interamente sul robot reale. Nel secondo
esperimento il processo evolutivo e' condotto interamente con una simulazione su computer e
poi le reti neurali evolute vengono trasferite e osservate sul robot reale. Nel terzo esperimento
il processo evolutivo e' condotto invece parte in reale e parte in simulato. Un'altra differenza
importante riguarda il modo in cui sono stati realizzati i simulatori del secondo e del terzo
esperimento. Nel secondo esperimento e' stato utilizzato un simulatore cha catturava in modo
volutamente approssimativo le caratteristiche dell'ambiente mentre nel terzo esperimento il
simulatore e' stato realizzato "campionando" l'ambiente reale attraverso i sensori e gli
attuatori del robot fisico.
4.1 L'evoluzione di una abilita' di navigazione usando un robot fisico
Floreano e Mondada (1994a) hanno addestrato delle reti neurali per il controllo di un
robot autonomo che deve svolgere un compito di navigazione ed evitamento di ostacoli. Per
questo esperimento gli autori si sono serviti di un micro-robot di fabbricazione svizzera
chiamato Khepera. Il robot (Mondada, Franzi e Ienne, 1993) possiede una forma circolare con
un diametro di 55 mm, un'altezza di 30 mm ed un peso di 70 g; esso si poggia su due ruote e
su due piccoli supporti di Teflon. Le ruote, controllate da due motori DC, possono muoversi
in entrambe le direzioni. Il robot dispone di 8 sensori di prossimita' all'infrarosso (sei
posizionati sulla parte frontale del robot e due nella parte posteriore). Il microprocessore
motorola 68331 con 256 Kbytes di RAM e di 512 Kbytes di ROM elabora tutte le routine
input-output e puo' comunicare con un computer attraverso uno speciale cavo con contatti
rotanti. Questa configurazione permette di sfruttare le capacita' di memoria del computer
esterno che puo' essere usato per registrare e analizzare il comportamento del robot e nel
contempo per fornire energia elettrica al robot evitando tutti i problemi di ricarica delle
batterie.
Figura 1. Khepera, il micro-robot mobile usato negli esperimenti di robotica evolutiva.
L'ambiente in cui il robot agisce e' costituito da uno spazio piano delimitato da mura di
forma irregolare. Le dimensione esterne di tale spazio sono approssimativamente 80x50 cm.
Le mura sono state realizzate con del polistirolo celeste e il pavimento con un cartoncino
grigio. Una lampadina di 60 watt e' stata usata per illuminare costantemente l'ambiente.
5
L'obiettivo degli autori e' quello di sviluppare un sistema di controllo per Khepera in
grado di evitare ostacoli mantendo la traiettoria piu' lineare possibile e la velocita' piu' alta
possibile. L'addestramento evolutivo e' stato realizzato implementando un algoritmo genetico
standard (Goldberg, 1989) con generazioni composte da 80 individui ognuno dei quali puo'
compiere 80 azioni. L'architettura della rete neurale e' fissa ed e' formata da un solo strato di
pesi sinaptici che connettono gli otto sensori di Khepera con due unita' di uscita. Le unita' di
uscita, direttamente collegate ai due motori di Khepera, hanno una soglia di attivazione
adattiva, una funzione di attivazione sigmoide e connessioni ricorrenti. I pesi sinaptici e le
soglie sono stati codificati nel genotipo come numeri reali. Ogni azione motoria dura 300 ms.
La riproduzione degli individui e' sessuata e di conseguenza sono stati usati entrambi gli
operatori genetici, mutazioni e crossover. Il criterio di fitness utilizzato (F) e' una funzione
della velocita' di rotazione delle due ruote e dei valori di attivazione dei sensori di prossimita'
con attivita' massima (I):
F = V * (1 - sqrt ( DV ) ) * ( 1 - I )
F ha tre componenti: la prima e' massimizzata dalla velocita' (V), la seconda dal
movimento in direzione rettilinea (DV indica la differenza di rotazione delle ruote) e la terza
dall'evitamento di ostacoli (I e' tanto piu' grande quanto piu' il robot e' vicino a un ostacolo).
E' importante notare che l'intero processo evolutivo viene realizzato interamente sul robot
reale. Cio' significa che ogni rete di ogni generazione viene valutata lasciando il robot agire
nell'ambiente reale per 80 passi (il "sistema nervoso" di ogni individuo viene sequenzialmente
iniettato nel medesimo robot fisico).
0.3
fitness
0.2
0.1
0
0
10
20
30
40
50
60
70
80
90
100
generazioni
Figura 2. Fitness del migliore individuo di ogni generazione. Il grafico mostra i valori medi e lo scarto
quadratico medio di tre simulazioni (cioe' di tre processi evolutivi condotti partendo da generazioni iniziali
casualmente diverse).
In meno di 100 generazioni, Khepera evolve la capacita' di muoversi evitando gli ostacoli
(figura 2). Comunque, gia' in prossimita' della 50-esima generazione i migliori individui
esibiscono un comportamento quasi ottimale. Le loro traiettorie sono prive di punti spigolosi,
gli ostacoli vengono evitati aggirandoli dolcemente senza urtare con le mura o incastrarsi
negli angoli (per maggiori informazioni si veda Floreano e Mondada, 1994a). Ciascuna delle
tre simulazioni richiede circa 60 ore.
4.2. L'evoluzione di un'abilita' di esplorazione usando un approccio simulato
6
Miglino, Nafasi, Taylor (in stampa) usando un programma software abbastanza semplice
hanno addestrato delle reti neurali ricorsive a controllare un robot Lego che deve esplorare un
determinato ambiente. La struttura del robot e' stata costruita con componenti Lego progettati
per esperimenti di micro-robotica. Inoltre il sistema e' stato equipaggiato con un computer di
bordo, un Miniboard 2.0 prodotto dal MIT Media Laboratory, (Cambridge, Massachusetts)
che riceve dati da due sensori ottici collocati sulla struttura portante e controlla due piccoli
motori. Il microprocessore e' un Motorola 6811 con 256 bytes di RAM e 12 Kbytes di ROM.
Per ogni ingresso sensoriale il robot puo' compiere una delle seguenti quattro azioni: a)
andare avanti di 10 cm.; b) andare indietro di 10 cm; c) girare a destra di 45 gradi; d) girare a
sinistra di 45 gradi. Naturalmente, a causa di fattori perturbanti e imprevedibili (attrito, usura
dei motori, piccoli problemi meccanici, ecc.), le risposte emesse possono variare di una certa
misura rispetto all'azione programmata.
Il compito del robot e' quello di esplorare la maggiore percentuale possibile di un'area
rettangolare in un determinato numero di passi. Le dimensioni dell'area sono di 2,6 x 2,6 m.
L'area non e' circondata da mura, ma la parte centrale (2 x 2 m) ha il pavimento di colore
bianco mentre le fasce perimetrali sono di colore nero. Il livello di luminosita' dell'ambiente,
non controllato, e' quello di una stanza normalmente illuminata. Il robot ha la possibilita' di
compiere 400 passi per un totale di circa 10 minuti.
Come sistema di controllo per tale robot e' stata scelta una rete neurale ricorsiva (Elman,
1990) con 2 unita' sensoriali, 2 unita' nascoste, 2 unita' di uscita ed 1 unita' di memoria.
L'architettura di tale rete, a differenza dei pesi, e' fissa nel senso che non e' sottoposta a
cambiamenti durante il processo evolutivo.
L'intero processo di evoluzione e' stato condotto mediante simulazioni su computer. Di
consegueza e' stato sviluppato un modello simulato che catturava in modo volutamente non
molto preciso le caratteristiche del robot e dell'ambiente. L'ambiente e' stato modellizzato da
una griglia di 26 x 26 celle dove ogni cella corrisponde a 10 cm quadrati e dove vengono
conservate le relazioni di colorazione tra zona centrale e le fasce periferiche presenti
nell'ambiente reale. Tuttavia in simulato, al contrario che nel mondo reale, il robot puo'
occupare esclusivamente il centro di una cella (non puo' cioe' occupare due celle
contemporaneamente). Di conseguenza, le azioni motorie dell'agente sono rappresentate in
simulato come salti da una cella ad un'altra e i due sensori ottici percepiscono sempre il colore
(bianco o nero) delle celle poste davanti e dietro al robot.
Il genotipo di ogni individuo e' stato rappresentato da un vettore di 17 numeri interi ove
ciascun numero codifica il valore del peso corrispondente. Ogni individuo viene posizionato
10 volte in modo casuale nell'ambiente simulato e per ogni riposizionamento ha la possibilita'
di eseguire 400 passi. Gli individui vengono valutati in funzione di quante celle visitano per
la prima volta in ognuno di queste 10 nuove partenze. Ogni generazione e' costituita da 100
individui di cui i migliori 20 (cioe' gli individui che visitano piu' celle nell'ambiente simulato)
hanno la possibilita' di riprodursi generando ciascuno 5 figli. Il tipo di riproduzione e'
agamico e di conseguenza le differenze tra padri e figli sono dovute esclusivamente alla
presenza delle mutazioni (in particolare il 10% dei geni, cioe' dei valori dei pesi di ciascuna
rete, vengono mutati in modo casuale durante il processo riproduttivo). Ciascuna simulazione
e' stata interrotta dopo 600 generazioni e ha richiesto circa 3 ore di calcolo usando una SUN
SparcStation 2.
Le simulazioni hanno mostrato che il processo di evoluzione artificiale produce un
comportamento esplorativo efficiente. Tre differenti individui rappresentativi di diverse fasi
di una particolare simulazione sono poi stati trasferiti nel robot fisico e testati nell'ambiente
reale. Malgrado le traiettorie del robot reale differiscano significatimente da quelle dello
stesso sistema simulato, gli autori mostrano che la correlazione tra i valori di fitness osservati
7
nelle due condizioni sono abbastanza alti (0.73). Per maggiori informazioni si veda Miglino,
Nafasi e Taylor (in stampa).
4.3 L'evoluzione di un'abilita' di navigazione usando un approccio ibrido (simulato/reale)
Nolfi, Miglino e Parisi (1994) hanno sviluppato un sistema di controllo per robot mobili
usando un approccio ibrido. Parte del processo evolutivo e' stato condotto mediante un
modello simulato su computer e parte e' stato realizzato con il robot reale nell'ambiente fisico.
Gli autori si sono serviti di Khepera, il robot descritto nella sezione 4.1. L'ambiente usato e'
costituito da un recinto rettangolare di 60 x 35 cm circondato da mura di legno e con un
ostacolo di 30 x 5 cm, sempre di legno, collocato al centro.
Il modello simulato dell'interazione Khepera/ambiente e' stato realizzato campionando
l'ambiente reale. In pratica si e' posto Khepera nel suo ambiente di fronte a un muro e si e'
registrata l'attivazione dei sensori facendo compiere al robot dei giri di 360 gradi a distanze
diverse rispetto al muro. Il livello di attivazione di ognuno degli otto sensori all'infrarosso
sono stati campionati per 180 diversi orientamenti e per 20 diverse distanze. Analogamente e'
stata campionata la variazione di angolo e la distanza percorsa da Khepera per ciascuno dei
20x20 stati possibili dei 2 motori. In sostanza, dunque, il simulatore e' stato basato
esclusivamente sul campionamento del sistema senso-motorio di Khepera senza ricorrere a
nessuna rappresentazione formale. Le informazioni ottenute con il campionamento vengono
usate dal simulatore per determinare il livello di attivazione delle unita' di input della rete
neurale a seconda della posizione corrente del robot simulato e per calcolare lo spostamento
dello stesso robot in base all'attivazione dei motori durante la fase del processo evolutivo
condotto in simulato. La forma fisica di Khepera, la struttura dell'ambiente e la posizione del
robot sono stati riprodotti accuratamente nel simulatore.
Anche in questo caso, l'architettura delle reti neurali e' fissa e consiste in una rete neurale
feed-forward con 8 unita' di ingresso (che codificano lo stato degli 8 sensori all'infrarosso), 2
unita' nascoste e 2 unita' di uscita (che codificano lo stato dei due motori). I pesi delle
connessioni sono stati rappresentati nel genotipo con dei numero reali. Ogni individuo e' stato
valutato riposizionandolo due volte in modo casuale e lasciandolo libero di muoversi per 500
cicli o passi (ove ciascun passo passo corrisponde a 100 ms). La stessa funzione di fitness
descritta del paragrafo 4.1 e' stata utilizzata in questo esperimento. Infine, durante il processo
di evoluzione condotto nel computer e' stato aggiunto rumore (sotto forma di una variazione
casuale aggiunta al valore di attivazione dei sensori).
Sono state effettuate 3 diverse simulazioni. La prima parte di ogni esperimento, che e'
stata interrotta dopo 300 generazioni, e' stata realizzata in simulato e ha richiesto circa 1 ora
di calcolo su un IBM-RISC/6000. La popolazione di reti ottenuta in questo modo e' stata poi
trasferita nell'ambiente reale dove il processo evolutivo e' stato proseguito per altre 30
generazioni (che hanno richiesto circa 30 ore per ciascuna simulazione). La figura 3 mostra le
prestazioni della migliore rete di ogni generazione nell'ambiente simulato. La figura 4 mostra
invece le prestazioni delle stesse reti evolute in simulato testate in reale e delle reti delle
ultime 30 generazioni durante le quali il processo evolutivo e' stato condotto nell'ambiente
reale. Come si puo' vedere, le prestazioni delle reti evolute decrescono significativamente se
testate nell'ambiente reale. Tuttavia prestazioni simili a quelle ottenute nel modello simulato
vengono ottenute continuando il processo evolutivo nell'ambiente reale per poche
generazioni. Questo risultato mostra come nonostance non ci sia una corrispondenza perfetta
tra modello simulato e ambiente reale, le reti neurali evolute in ambiente simulato riescono ad
adattarsi facilmente (in poche generazioni) all'ambiente reale.
8
0.7
0.6
fitness
0.5
0.4
0.3
0.2
0.1
0
0
100
200
300
generazioni
Figura 3. Prestazioni degli individui migliori per ogni generazione testati nell'ambiente simulato e scarto
quadratico medio tra le diverse prove.
0.7
0.6
fitness
0.5
0.4
0.3
0.2
0.1
0
0
100
200
300
generazioni
Figura 4. Prestazioni e scarto quadratico medio del migliore individuo di ogni generazione testato
nell'ambiente reale. Le prime 300 generazioni sono state evolute nell'ambiente simulato, le ultime 30
generazioni rappresentano il risultato della continuazione del processo evolutivo nell'ambiente reale.
5. EVOLUZIONE IN SIMULATO O REALE
L'esperimento descritto nel paragrafo 4.1 dimostra come sia possibile evolvere sistemi di
controllo in reale, almeno nel caso di un compito semplice, anche se certamente cio' richiede
dei tempi non contenuti. D'altro canto i due esperimenti successivi mostrano come
l'evoluzione in simulato ha comunque una sua validita'.
Come e' stato affermato da alcuni ricercatori (Brooks, 1992; Floreano e Mondada, 1994a)
i modelli di robotica autonoma pubblicati in letteratura presentano una serie di problemi:
a) L'attivazione dei sensori non dovrebbe essere confusa, come accade in molti modelli
simulati, con la descrizione dell'ambiente. I sensori reali non separano gli oggetti dallo
sfondo, non operano in sistemi di coordinate stabili, non ricevono informazioni relative alla
posizione assoluta degli oggetti.
b) Le simulazioni numeriche, generalmente, non considerano tutte le leggi fisiche di
interazione di un agente reale con l'ambiente esterno come la massa, il peso, lo attrito,
l'inerzia, ecc.
9
c) I sensori fisici forniscono valori imprecisi e i commandi degli attuatori hanno effetti
incerti mentre, al contrario, i modelli simulati usano spesso ambienti a griglia e utilizzano dei
sensori non affetti da rumore.
d) Piccole differenze nell'elettronica e nella meccanica e piccole asimmetrie e irregolarita'
nella struttura fisica dei robot possono produrre differenze nel comportamento di sensori e
attuatori difficili da catturare nel modello simulato.
Alcuni di questi problemi possono essere superati progettando il modello simulato in
modo diverso. Per esempio, si dovrebbe evitare l'uso di sensori e funzioni di fitness che non
possono essere implementati su un robot reale (vedi la sezione successiva). Inoltre, progettare
i simulatori utilizzando un campionamento dell'ambiente reale, come mostrato nella sezione
4.3, puo' aiutare a catturare delle irregolarita' difficilmente rappresentabili con metodi formali
(come ad es. il fatto che sensori uguali possono rispondere in modo diverso a causa della
tolleranza dei componenti elettronici o a causa della posizione sul robot). Infine, nelle
simulazioni e' opportuno aggiungere rumore sui sensori e sulla risposta generata dagli
attuatori per tener conto del fatto che i sensori fisici e gli attuatori non sono perfetti. Miglino,
Nafasi, Taylor (in stampa) hanno mostrato peraltro che e' possibile stimare la quantita'
opportuna di rumore da introdurre in simulato confrontando il comportamento del robot in
simulato con l'aggiunta di diversi livelli di rumore con il comportamento dello stesso robot in
reale. Gli esperimenti descritti nelle sezioni 4.2 e 4.3 mostrano come questo tipo di
accorgimenti possano essere utilizzati con successo in modelli simulati e di conseguenza
come molte delle difficolta' descritte sopra possano essere attenuate.
In ogni caso non ci si puo' aspettare che i modelli simulati possano essere sofisticati al
punto da eliminare completamente la discrepanza tra ambiente simulato e reale e, d'altra
parte, questo non appare necessario. E' sufficiente che vi sia una correlazione significativa tra
le prestazioni dello stesso sistema nei due ambienti (simulato e reale). Se cio' si verifica ci si
puo' aspettare che, continuando il processo di evoluzione in reale, sia necessario un numero
limitato di generazioni per ottenere sistemi perfettamente adattati (come abbiamo mostrato
nella sezione 4.3). Da questo punto di vista l'evoluzione in ambienti simulati puo' essere
interpretata come una selezione per caratteri correlati e il trasferimento dall'ambiente simulato
all'ambiente reale puo' essere visto come una modifica ambientale alla quale e' possibile
adattarsi (Prof. Charles Taylor, comunicazione personale; ma si veda anche Falconer, 1981).
E' possibile perseguire anche altri tipi di approcci ibridi: per esempio, gli individui
maggiormente promettenti di una popolazione che si evolve in un ambiente simulato possono
essere testati negli ambienti reali, oppure si possono effettuare test negli ambienti reali a
intervalli di tempo prestabiliti durante il processo evolutivo.
Un'altra importante ragione che giustifica l'uso di modelli simulati e' il fatto che la
simulazione permette lo svolgimento di test preliminari per verificare se le scelte effettuate
nella preparazione di un esperimento evolutivo (quali la formula di fitness, il numero di
tempo a disposizione di ciascun individuo ecc) siano appropriate, riducendo
significativamente il tempo richiesto per il processo evolutivo. E' noto infatti che gli algoritmi
genetici sono molto sensibili alle condizioni iniziali e di conseguenza la ripetizione dello
stesso esperimento con parametri di partenza casualmente diversi puo' portare a risultati
significativamente diversi. L'evoluzione in ambienti simulati puo' permettere di indagare quali
insiemi di parametri e condizioni iniziali producono risultati robusti ed efficaci. In questo
modo l'esperimento puo' essere condotto in reale una sola volta utilizzando i parametri che
sono risultati migliori in simulato con una speranza ragionevole di ottenere buoni risultati.
E' probabile che man mano che i problemi studiati diventaranno piu' complessi sara'
sempre piu' difficile costruire simulatori che producano comportamenti correlati nella
simulazione e nel reale. Nonostante cio' noi pensiamo che, almeno per il momento, l'uso della
simulazione puo' svolgere un ruolo importante nella robotica evolutiva.
10
6. LA VALUTAZIONE AUTOMATICA DEGLI INDIVIDUI
Lo sviluppo di un sistema di controllo per agenti autonomi implica la valutazione di un
numero molto alto di individui. Cio' spinge ad adottare una via automatica alla valutazione
degli individui. Il criterio di fitness, quindi, deve basarsi esclusivamente su informazioni che
il robot puo' ricavare dai suoi sensori interni o esterni. La funzione di fitness usata nelle
sezioni 4.1 e 4.3 e' un buon esempio di criterio di valutazione che puo' essere determinato
automaticamente poiche' usa informazioni disponibili al robot (in particolare il livello di
attivazione dei sensori all'infrarosso e lo stato di attivazione dei due motori). Viceversa, la
funzione di fitness usata nelle simulazioni descritte nella sezione 4.2 e' di difficile
applicazione in ambienti reali a meno che non si abbia a disposizione uno strumento che
registri la posizione esatta del robot. Nelle simulazioni tutte le informazioni sono utilizzabili e
percio' il criterio di fitness puo' essere stabilito arbitrariamente. D'altra parte occorre
considerare che anche se ci si propene di realizzare l'intero processo evolutivo in un ambiente
simulato, la scelta di una formula di fitness calcolabile solo in simulato puo' rendere difficile,
se non impossibile, la valutazione delle prestazioni del robot nell'ambiente reale.
Per ovviare a questo tipo di problema si possono utilizzare dei sensori dedicati
esclusivamente alla valutazione della fitness. In alcuni esperimenti che stiamo conducendo, ad
esempio, cerchiamo di addestrare un robot a fermarsi davanti ad un oggetto di piccole
dimensioni e a ignorare oggetti di grandi dimensioni. In questo caso, per consentire la
valutazione automatica della fitness degli individui, abbiamo dipinto di nero la porzione di
pavimento circostante agli ostacoli di piccole dimensioni. Inoltre, abbiamo collocato nella
parte inferiore del robot un sensore all'infrarosso in modo che fosse possibile registrare il
colore del pavimento nella posizione corrente al fine di determinare se il robot sia posizionato
o meno vicino ad un oggetto di piccole dimenzioni. E' importante osservare che questo
sensore non e' accessibile alla rete neurale che controlla il comportamento del robot, ma serve
esclusivamente per calcolare la fitness dell'individuo. Di conseguenza, una volta terminato il
processo evolutivo, le zone nere sul pavimento possono essere romosse senza che il
comportamento del robot ne risenta in alcun modo.
7. VINCOLI HARDWARE
L'approccio evolutivo pone dei vincoli sulla costruzione del robot fisico assai diversi
rispetto all'approccio classico. Negli approcci piu' tradizionali, nei quali la progettazione
passa obbligatoriamente attraverso una fase di modellizzazione, si pongono delle condizioni
importanti e molto restrittive a chi deve sviluppare l'hardware del sistema. In effetti, nella
modellizzazione dell'interazione tra macchina e mondo esterno, la modellizzazione del robot
stesso e' un punto importante di cui occorre tenere conto al momento della progettazione
affinche' la modelizzazione sia non solo fattibile, ma possibilmente semplificata. Ne
conseguono scelte di sensori con caratteristiche il piu' lineari possibile, di attuatori con gradi
di liberta' minimi ma geometricamente ottimali, di schemi elettronici in grado di fornire
misure estremamente precise e con un livello di rumore ridotto al minimo ecc. Purtoppo, in
un mondo reale fatto di non linearita', di imprecisioni, di geometrie bizzarre e di rumore su
molte grandezze fisiche, questi sistemi possono rivelarsi inefficienti.
L'approccio evolutivo, rimandando la scelta della struttura di controllo al processo di
selezione e mutazione, pone unicamente delle condizioni generali di sufficienza funzionale
dei sensori e attuatori utilizzati. Queste condizioni devono essere anch'esse valutate, ma
questa valutazione puo' essere semplificata in modo considerevole con l'aumento del numero
di dispositivi. I sistemi robotici appropriati per questo approccio dovranno dunque essere
11
dotati di sensori numerosi ed eventualmente ridondanti ma fondamentalmente semplici, senza
correzioni di linearita', protezioni contro i rumori o sistemi di misura sofisticati. E' compito
del meccanismo evolutivo fare buon uso delle non linearita' o correggerle e di combinare
varie misure per ricavarne le informazioni necessarie al funzionamento del sistema. Infine
occorre notare che anche i mezzi di lavoro vengono modificati. Nell'approccio classico la
modellizzazione svolge un ruolo fondamentale e l'analisi del comportamento si riduce ad una
verifica del modello. Nell'approccio evolutivo la parte di modellizzazione si riduce
drasticamente per lasciare piu' spazio all'analisi, punto chiave dell'approccio. E' dunque
necessario dotarsi di mezzi che permettano una migliore osservazione del comportamento del
robot, affinche' la valutazione automatizzata e il controllo del risultato siano facilitati.
Il robot Khepera e' un tentativo di sviluppo in questa direzione. I suoi dispositivi sensoriali
sono in effetti molto semplici, pur coprendo in modo sufficiente una gamma interessante di
esperimenti. Come abbiamo mostrato piu' sopra, nella versione di base Khepera e' dotato di
otto sensori di prossimita' basati sull'emissione e sulla ricezione di luce infrarossa. Questi
sensori permettono sia una misura della luce infrarossa ambientale che una misura di
prossimita' di ostacoli basata sulla riflessione della luce emessa dal robot. Queste misure non
sono molto precise, non hanno caratteristiche lineari e dipendono fortemente da fattori esterni
come il materiale con cui sono realizzati gli ostacoli, il loro colore, il tipo di illuminazione
ecc. Inoltre si possono aggiungere facilmente sensori addizionali grazie a una buona
modularita' hardware e software del sistema. Infine, i mezzi di lavoro sviluppati attorno a
questa piattaforma sperimentale e la sua stessa miniaturizzazione sono rivolti in modo chiaro
nella direzione dell'analisi, piuttosto che in quella della progettazione classica. Khepera e'
infatti stato progettato per poter essere facilmente utilizzato su un tavolo, di fianco a una
stazione di lavoro e collegato con quest'ultima tramite una linea seriale che permette nello
stesso tempo l'alimentazione del robot. Questo tipo di configurazione facilita fortemente la
sperimentazione e l'osservazione dei comportamenti risultanti. Inoltre la robustezza di
Khepera lo rende ideale per lo svolgimento di simulazioni di lunga durata durante le quali il
robot puo' avere comportamenti patologici (dovute alla variazione intrinseca nelle popolazioni
di individui), andando a urtare violentemente contro le pareti o spingendo contro di esse.
Grazie a qualche accorgimento molto semplice (pareti in poliuretano espanso) e alle leggi
fisiche che danno maggior resistenza meccanica relativa a oggetti ridotti omoteticamente,
questi esperimenti possono svolgersi senza alcun problema.
8. CONCLUSIONI
L'approccio evolutivo alla robotica autonoma presenta certamente delle potenzialita'
interessanti. Tuttavia a causa della novita' dell'approccio e del cambiamento radicale di
prospettiva che esso implica rispetto alla robotica classica, appare necessario cercare di
formalizzare una metodologia appropriata per l'uso di questo approccio in robotica. In questo
articolo abbiamo cercato di evidenziare i problemi metodologici piu' importanti e abbiamo
cercato di fornire alcune risposte a questi problemi presentando e comparando tra loro tre
esempi diversi di applicazione di tecniche evolutive a robot reali.
I risultati dei nostri esperimenti mostrano che l'evoluzione di sistemi di controllo per
agenti autonomi in reale e' possibile anche se richiede tempi considerevoli (si veda la sezione
4.1). Abbiamo discusso il ruolo della simulazione mostrando modi diversi in cui essa puo'
essere usata. In particolare abbiamo mostrato come in alcuni casi anche un modello molto
approssimativo del robot e dell'ambiente reale puo' essere sufficiente per evolvere sistemi di
controllo che possono successivamente essere trasferiti al robot fisico (sezione 4.2). Inoltre
abbiamo discusso alcuni accorgimenti che possono ridurre significativamente la discrepanza
tra l'ambiente reale e quello simulato. In particolare, abbiamo mostrato come progettare il
12
simulatore campionando l'ambiente reale attraverso i sensori e gli attuatori del robot fisico
puo' produrre un modello che cattura in modo piu' accurato l'interazione tra un particolare
robot e l'ambiente relativo (si veda la sezione 4.3). Infine abbiamo mostrato come un
approccio ibrido in cui parte dell'evoluzione viene condotta in simulato e parte in reale possa
superare il fatto che non e' comunque possibile aspettarsi una completa identita' tra ambiente
simulato e reale (si veda la sezione 4.3).
Oltre a questo tipo di problemi metodologici, un problema importante e' verificare se
questo tipo di approccio possa essere applicato a compiti significativamente piu' complicati di
quelli descritti in questo articolo. In particolare appare opportuno cercare di identificare quali
tipi di compiti si adattano meglio all'approccio evolutivo. Riguardo a questo punto ci stiamo
muovendo in piu' direzioni. In un recente esperimento Floreano e Mondada (1994b) hanno
dotato l'ambiente di una zona, segnalata da una sorgente luminosa, dove il robot puo' caricare
autonomamente le sue batterie. Il robot e' equipaggiato con alcuni sensori di intensita'
luminosa, il criterio di fitness e' esattamente il medesimo di quello utilizzato per il compito di
evitamento di ostacoli. La differenza rispetto agli esperimenti descritti nelle sezioni 4.1 e 4.3
e' che, se il robot attraversa la zona di ricarica-batteria, esso puo' aumentare la propria
autonomia e conseguentemente prolungare la propria vita. Il robot apprende a svolgere questo
compito perfettamente, ritornando periodicamente nella zona di ricarica e sfruttando prima al
massimo la propria riserva energetica. Questo comportamento emergente di homing (ritorno
al nido) appare basato sullo sviluppo di una mappa topografica interna che permette al robot
di scegliere la traiettoria appropriata in funzione della sua posizione e della suo livello di
energia. In un altro esperimento recente gli autori hanno affrontato il problema del
riconoscimento di oggetti e della coordinazione sensomotoria per il raccoglimento utilizzando
un Khepera equipaggiato con un sistema di bracci meccanici (Floreano e Mondada, 1994c).
Nell'ambiente di azione del robot sono distribuiti degli oggetti e degli ostacoli. Gli oggetti,
come accade in situazioni naturali, hanno diverse forme e dimensioni. Il robot dovrebbe
apprendere autonomamente ad approcciare solo gli oggetti che possono essere catturati e
rimossi con il suo braccio meccanico.
RINGRAZIAMENTI
Ringaziamo Domenico Parisi e Charles Taylor per i loro commenti e suggerimenti. Dario
Floreano ha potuto fare questa ricerca grazie al Progetto Finalizzato C.N.R. grant n.
93.01065.PF67 (nell'ambito dell'unita' operativa coordinata dal prof. Walter Gerbino),
Francesco Mondada grazie alla Fondazione per la Ricerca Scientifica Svizzera (project n.
PNR23) e Stefano Nolfi e Orazio Miglino grazie al Progetto Finalizzato "ROBOTICA",
C.N.R (nell'ambito dell'unita' operativa coordinata dal prof. Domenico Parisi).
RIFERIMENTI BIBLIOGRAFICI
Ackley D. H., Littman M. L. (1991), Interactions between learning and evolution, in C. G.
Langton, J. D. Farmer, S. Rasmussen, C. E. Taylor (a cura di), Artificial Life II, AddisonWesley. Reading, Mass.
Brooks R. A. (1991), New approaches to robotics. Science 253:1227-1232.
Brooks R. A. (1992), Artificial life and real robots, in F. J. Varela, P. Bourgine (a cura di),
Toward a Practice of Autonomous Systems: Proceedings of the First European Conference
on Artificial Life, Cambridge, MA: MIT Press/Bradford Books.
13
Cliff D. T., Harvey I., Husbands P. (1993), Explorations in Evolutionary Robotics. Adaptive
Behavior 2: 73-110.
Dorigo M., Schnepf U. (1993), Genetis-based machine learning and behavior based robotics:
a new syntesys. IEEE Transaction on Systems, Man and Cybernetics, 23:141,153.
Elman J. L. (1990), Finding structure in time. Cognitive Science, 2: 179-211.
Falconer D. S. (1981), Introduction to Quantitative Genetics, Longman, London.
Floreano D., Mondada F. (1994a), Automatic Creation of an Autonomous Agent: Genetic
Evolution of a Neural-Network Driven Robot, in D. Cliff, P. Husbands, J. Meyer, S. W.
Wilson (a cura di), From Animals to Animats 3: Proceedings of Third Conference on
Simulation of Adaptive Behavior, MIT Press, Bradford Books.
Floreano D., Mondada F. (1994b), Emergent homing behaviour in a mobile robot. Rapporto
Tecnico LAMI n. DF94.14I, Swiss Federal Institute of Technology, Lausanne.
Floreano D., Mondada F. (1994c), Active Perception: Navigation, Homing, and Grasping: An
Autonomous Perspective, in P. Gaussier, J.-D. Nicoud (a cura di), Proceedings of the
International Conference From Perception to Action, IEEE Computer Society Press, Los
Alamitos, CA.
Gaglio, Esposito F., Nolfi S. (1994), Perceptual Learning and Discovering, in V. Cantoni (a
cura di), Human and Machine Vision. Analogies and Differencies, New York, Plenum Press,
pp. 371-383.
Goldberg D. E. (1989), Genetic Algorithms in Search, Optimization and Machine Learning.
Reading, Mass.: Addison Wesley.
Holland J. H. (1975), Adaptation in Natural and Artificial Systems. University of Michigan
Press, Ann Arbor.
Koza J. R. (1992), Genetic Programming: the programming of computers by means of natural
selection. Cambridge, MA, MIT Press.
Miglino O., Pedone R., Parisi D. (1993), A noise Gene for Econets. In Proceedings of
Genetic Algorithms and Neural Networks, Reading, Mass.: Addison Wesley.
Miglino O., Nafasi K., Taylor C. (in stampa), Selection for Wandering Behavior in a Small
Robot. Artificial Life.
Mondada F., Franzi E., Ienne P. (1993), Mobile Robot miniaturisation: A tool for
investigation in control algorithms. In Proceedings of the third International Symposium on
Experimental Robotics, Kyoto, Japan.
Nolfi, S., Elman J. L., Parisi D. (in stampa), Learning and Evolution in Neural Networks.
Adaptive Behavior.
14
Nolfi, S., Miglino O., Parisi D. (1994), Phenotypic Plasticity in Evolving Neural Networks, in
D. P. Gaussier e J-D. Nicoud (a cura di), Proceedings of the International Conference From
Perception to Action, Los Alamitos, CA: IEEE Press
Nolfi, S., Parisi D. (1993), Self-selection of input stimuli for improving performance, in G.
A. Bekey (a cura di), Neural Networks and Robotics, Kluwer Academic Publisher.
Parisi, D., Cecconi F., Nolfi S. (1990), Econets: Neural networks that learn in an
environment. Network 1:149-168.
Parisi, D., Nolfi S. (in press), How learning can influence evolution within a non-Lamarckian
framework, in R. K. Belew, M. Mitchell (a cura di), In Plastic Individuals in Evolving
Populations, SFI Series, Addison-Wesley
15