75
Simulazioni evolutive Francesco Zanlungo Universit ` a di Bologna, Dipartimento di Fisica Laboratorio di Fisica dei Sistemi Complessi Prof. Bruno Giorgini Simulazioni evolutive – p.1/21

Francesco Zanlungo Universita di Bologna, Dipartimento di ... · attività complesse in comunità di insetti sociali, Guerra e pace. Simulazioni evolutive – p.2/21. Dal semplice

Embed Size (px)

Citation preview

Simulazioni evolutiveFrancesco Zanlungo

Universita di Bologna, Dipartimento di Fisica

Laboratorio di Fisica dei Sistemi Complessi

Prof. Bruno Giorgini

Simulazioni evolutive – p.1/21

Complessità ed emergenza

Una delle caratteristiche di un sistema complesso è il possedere

delle caratteristiche “emergenti” ovvero che non risultano

presenti nei componenti fondamentali ma che emergono dalla

loro interazione.

Simulazioni evolutive – p.2/21

Complessità ed emergenza

Una delle caratteristiche di un sistema complesso è il possedere

delle caratteristiche “emergenti” ovvero che non risultano

presenti nei componenti fondamentali ma che emergono dalla

loro interazione.

Esempi: Vita da particelle elementari, pensiero da neuroni,attività complesse in comunità di insetti sociali, Guerra epace.

Simulazioni evolutive – p.2/21

Dal semplice al complesso e viceversa

Le simulazioni al computer ci permettono di verificare un

modello semplice (a livello di componenti) che giustifichi il

comportamento emergente.

Simulazioni evolutive – p.3/21

Dal semplice al complesso e viceversa

Le simulazioni al computer ci permettono di verificare un

modello semplice (a livello di componenti) che giustifichi il

comportamento emergente.

Ma è possibile o contraddittorio usare un modello con unitàsemplici per risolvere in maniera emergente un problemacomplesso?

Simulazioni evolutive – p.3/21

Evoluzione simulata

La strategia può essere quella di definire una classe di modelli

(soluzioni) e provare a vedere quali risolvono il nostro

problema.

Simulazioni evolutive – p.4/21

Evoluzione simulata

La strategia può essere quella di definire una classe di modelli

(soluzioni) e provare a vedere quali risolvono il nostro

problema.

Provarli tutti potrebbe essere impossibile e comunque

dispendioso (ottimizzazione).

Simulazioni evolutive – p.4/21

Evoluzione simulata

La strategia può essere quella di definire una classe di modelli

(soluzioni) e provare a vedere quali risolvono il nostro

problema.

Provarli tutti potrebbe essere impossibile e comunque

dispendioso (ottimizzazione).

In alcune situazioni la soluzione migliore è imitare la natura edusare un processo evolutivo.

Simulazioni evolutive – p.4/21

Evoluzione naturale

“Segreti della vita”: riproduzione, sopravvivenza dei migliori,

ricerca (e mescolamento) casuale di nuove soluzioni.

Simulazioni evolutive – p.5/21

Evoluzione naturale

“Segreti della vita”: riproduzione, sopravvivenza dei migliori,

ricerca (e mescolamento) casuale di nuove soluzioni.

Le caratteristiche di un individuo codificate nel suo DNA,individui con migliori caratteristiche si riproducono di più,mutazione e accoppiamento (crossover) producono individuidiversi.

Simulazioni evolutive – p.5/21

Algoritmi genetici

Si codifica un’opportuna soluzione di un problema in una

stringa di bit.

Simulazioni evolutive – p.6/21

Algoritmi genetici

Si codifica un’opportuna soluzione di un problema in una

stringa di bit.

Si crea una popolazione diN soluzioni.

Simulazioni evolutive – p.6/21

Algoritmi genetici

Si codifica un’opportuna soluzione di un problema in una

stringa di bit.

Si crea una popolazione diN soluzioni.

Si valuta la bontà di tali soluzioni utilizzando una funzione di

fitness.

Simulazioni evolutive – p.6/21

Algoritmi genetici

Si codifica un’opportuna soluzione di un problema in una

stringa di bit.

Si crea una popolazione diN soluzioni.

Si valuta la bontà di tali soluzioni utilizzando una funzione di

fitness.

Si selezionano le soluzioni con gli operatori genetici per

riprodurle in una nuova generazione.

Simulazioni evolutive – p.6/21

Algoritmi genetici

Si codifica un’opportuna soluzione di un problema in una

stringa di bit.

Si crea una popolazione diN soluzioni.

Si valuta la bontà di tali soluzioni utilizzando una funzione di

fitness.

Si selezionano le soluzioni con gli operatori genetici per

riprodurle in una nuova generazione.

Le soluzioni possono essere “mescolate” e mutate.

Simulazioni evolutive – p.6/21

Algoritmi genetici

Si codifica un’opportuna soluzione di un problema in una

stringa di bit.

Si crea una popolazione diN soluzioni.

Si valuta la bontà di tali soluzioni utilizzando una funzione di

fitness.

Si selezionano le soluzioni con gli operatori genetici per

riprodurle in una nuova generazione.

Le soluzioni possono essere “mescolate” e mutate.

Si ripete il processo per più generazioni.

Simulazioni evolutive – p.6/21

Algoritmi genetici esempio

Esempio: ottimizzazione di una funzionef(x) > 0 in [0, 1].

Simulazioni evolutive – p.7/21

Algoritmi genetici esempio

Esempio: ottimizzazione di una funzionef(x) > 0 in [0, 1].

Codifico una soluzionex come stringas di n bit.

Simulazioni evolutive – p.7/21

Algoritmi genetici esempio

Esempio: ottimizzazione di una funzionef(x) > 0 in [0, 1].

Codifico una soluzionex come stringas di n bit.

Decodifica:x = D(s) = s/2n−1.

Simulazioni evolutive – p.7/21

Algoritmi genetici esempio

Esempio: ottimizzazione di una funzionef(x) > 0 in [0, 1].

Codifico una soluzionex come stringas di n bit.

Decodifica:x = D(s) = s/2n−1.

Genero casulamenteN stringhe (generazione 1) e le valuto con

fitnessf(D(s)).

Simulazioni evolutive – p.7/21

Algoritmi genetici esempio

Esempio: ottimizzazione di una funzionef(x) > 0 in [0, 1].

Codifico una soluzionex come stringas di n bit.

Decodifica:x = D(s) = s/2n−1.

Genero casulamenteN stringhe (generazione 1) e le valuto con

fitnessf(D(s)).

Costruisco una nuova generazione: ogni stringa nella nuova

generazione figlia di due genitori.

Simulazioni evolutive – p.7/21

Algoritmi genetici esempio

Esempio: ottimizzazione di una funzionef(x) > 0 in [0, 1].

Codifico una soluzionex come stringas di n bit.

Decodifica:x = D(s) = s/2n−1.

Genero casulamenteN stringhe (generazione 1) e le valuto con

fitnessf(D(s)).

Costruisco una nuova generazione: ogni stringa nella nuova

generazione figlia di due genitori.

Ogni genitore viene scelto in maniera casuale ma con

probabilitàpi = f(si)/∑

if(si).

Simulazioni evolutive – p.7/21

Algoritmi genetici esempio

Esempio: ottimizzazione di una funzionef(x) > 0 in [0, 1].

Codifico una soluzionex come stringas di n bit.

Decodifica:x = D(s) = s/2n−1.

Genero casulamenteN stringhe (generazione 1) e le valuto con

fitnessf(D(s)).

Costruisco una nuova generazione: ogni stringa nella nuova

generazione figlia di due genitori.

Ogni genitore viene scelto in maniera casuale ma con

probabilitàpi = f(si)/∑

if(si).

Nuova stringa prodotta con crossover.

Simulazioni evolutive – p.7/21

Algoritmi genetici esempio

Esempio: ottimizzazione di una funzionef(x) > 0 in [0, 1].

Codifico una soluzionex come stringas di n bit.

Decodifica:x = D(s) = s/2n−1.

Genero casulamenteN stringhe (generazione 1) e le valuto con

fitnessf(D(s)).

Costruisco una nuova generazione: ogni stringa nella nuova

generazione figlia di due genitori.

Ogni genitore viene scelto in maniera casuale ma con

probabilitàpi = f(si)/∑

if(si).

Nuova stringa prodotta con crossover.

E mutazione.Simulazioni evolutive – p.7/21

Operatori genetici

1

0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

1

11

111111

1 1 1

Simulazioni evolutive – p.8/21

Operatori genetici

1

0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

1

11

111111

1 1 1

1

0 0 0 0 0

0 0 0 0 0 1

1111

1 1 1 1

0 0 0 1 0

1 1 0

Simulazioni evolutive – p.8/21

Operatori genetici

1

0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

1

11

111111

1 1 1

1

0 0 0 0 0

0 0 0 0 0 1

1111

1 1 1 1

0 0 0 1 0

1 1 0

1

0 0 0 0

0 0 0 0 0 1

1111

1 1 1

0 0 0 1 0

1 1 1

1

0Simulazioni evolutive – p.8/21

Operatori genetici

f=0.18 f=0.22

f=0.42

f=0.20

Simulazioni evolutive – p.8/21

Rete neurale

Una rete neurale è la schematizzazione di un sistema nervoso.

Simulazioni evolutive – p.9/21

Rete neurale

Una rete neurale è la schematizzazione di un sistema nervoso.

Degli stimoli (input) sono elaborati in maniera non linearein

azioni (output).

Simulazioni evolutive – p.9/21

Rete neurale

Una rete neurale è la schematizzazione di un sistema nervoso.

Degli stimoli (input) sono elaborati in maniera non linearein

azioni (output).

La rete può essere usata come sistema di controllo di un robot

(virtuale o reale).

Simulazioni evolutive – p.9/21

Rete neurale

Una rete neurale è la schematizzazione di un sistema nervoso.

Degli stimoli (input) sono elaborati in maniera non linearein

azioni (output).

La rete può essere usata come sistema di controllo di un robot

(virtuale o reale).

Le caratteristiche di una rete sono determinate dai pesi (valori

reali) delle connessioni.

Simulazioni evolutive – p.9/21

Rete neurale

Simulazioni evolutive – p.9/21

Rete neurale feedforward

verso l’ambiente

I

I

I

2

1

3

O1

O2

H

H

H

H

1

2

3

4

I 1

da ambiente

I ωH1 σ11

1 11

1O

Simulazioni evolutive – p.10/21

Rete neurale feedforward

verso l’ambiente

I

I

I

2

1

3

O1

O2

H

H

H

H

1

2

3

4

I 1

da ambiente

I ωH1 σ11

1 11

1O

Definisco funzione sigmoidef(x) = tanh(x)

Simulazioni evolutive – p.10/21

Rete neurale feedforward

verso l’ambiente

I

I

I

2

1

3

O1

O2

H

H

H

H

1

2

3

4

I 1

da ambiente

I ωH1 σ11

1 11

1O

Definisco funzione sigmoidef(x) = tanh(x)

Prima calcoloHj = f(∑

i ωjiIi) ∀j

Simulazioni evolutive – p.10/21

Rete neurale feedforward

verso l’ambiente

I

I

I

2

1

3

O1

O2

H

H

H

H

1

2

3

4

I 1

da ambiente

I ωH1 σ11

1 11

1O

Definisco funzione sigmoidef(x) = tanh(x)

Prima calcoloHj = f(∑

i ωjiIi) ∀j

Poi calcoloOk = f(∑

j ωkjHj) ∀k Simulazioni evolutive – p.10/21

Robotica evolutiva

Una rete può essere codificata in una stringa.

Simulazioni evolutive – p.11/21

Robotica evolutiva

Una rete può essere codificata in una stringa.

Il nostro processo può quindi servire ad evolvere dei robot in

grado di svolgere un certo compito, basta definire una funzione

di fitness in grado di esprimere quanto bene lo svolgono.

Simulazioni evolutive – p.11/21

Robotica evolutiva

Una rete può essere codificata in una stringa.

Il nostro processo può quindi servire ad evolvere dei robot in

grado di svolgere un certo compito, basta definire una funzione

di fitness in grado di esprimere quanto bene lo svolgono.

Perché farlo? Il problema del robot cameriere.

Simulazioni evolutive – p.11/21

Robot smemorato

Un robot privo di memoria si muove in un corridoio. Si

accende e poi si spegne una luce all’inzio del corridoio. Si

premia il robot (con una fitness alta) se alla fine del corridoio

gira dalla parte in cui si è accesa la luce.

Simulazioni evolutive – p.12/21

Robot smemorato

PREMIO

Simulazioni evolutive – p.12/21

Robot smemorato

Un robot privo di memoria si muove in un corridoio. Si

accende e poi si spegne una luce all’inzio del corridoio. Si

premia il robot (con una fitness alta) se alla fine del corridoio

gira dalla parte in cui si è accesa la luce.

Come può il robot svolgere il suo compito? Si crea una

memoria nell’interazione con l’ambiente.

Simulazioni evolutive – p.12/21

Robot smemorato

Simulazioni evolutive – p.12/21

Regola di circolazione

Un gruppo di agenti si muove in una città-reticolo, senza altra

informazione che la distanza dal punto in cui devono arrivare.

Simulazioni evolutive – p.13/21

Regola di circolazione

Un gruppo di agenti si muove in una città-reticolo, senza altra

informazione che la distanza dal punto in cui devono arrivare.

Se più agenti si trovano sullo stesso sito si muovono più

lentamente.

Simulazioni evolutive – p.13/21

Regola di circolazione

Un gruppo di agenti si muove in una città-reticolo, senza altra

informazione che la distanza dal punto in cui devono arrivare.

Se più agenti si trovano sullo stesso sito si muovono più

lentamente.

Gli agenti imparano che devono tenersi lontani dal centro del

reticolo, dove è più facile che ci siano degli ingorghi, pur non

avendo informazioni né sulla loro posizione né sulla posizione

del centro.

Simulazioni evolutive – p.13/21

Regola di circolazione

Un gruppo di agenti si muove in una città-reticolo, senza altra

informazione che la distanza dal punto in cui devono arrivare.

Se più agenti si trovano sullo stesso sito si muovono più

lentamente.

Gli agenti imparano che devono tenersi lontani dal centro del

reticolo, dove è più facile che ci siano degli ingorghi, pur non

avendo informazioni né sulla loro posizione né sulla posizione

del centro.

Per farlo sviluppano una regola di circolazione.

Simulazioni evolutive – p.13/21

Regola di circolazione

Simulazioni evolutive – p.13/21

Evitare le collisioniDegli agenti (sfere dure) si muovono in un ambiente pieno di loro simili.

Sono regolati da parametri che determinano la loro capacitàdi evitarsi.

Simulazioni evolutive – p.14/21

Evitare le collisioniDegli agenti (sfere dure) si muovono in un ambiente pieno di loro simili.

Sono regolati da parametri che determinano la loro capacitàdi evitarsi.

Simulazioni evolutive – p.14/21

Evitare le collisioniDegli agenti (sfere dure) si muovono in un ambiente pieno di loro simili.

Sono regolati da parametri che determinano la loro capacitàdi evitarsi.

Vengono evoluti utilizzando una funzione di fitness che assegna un peso

negativo alle collisioni ed uno positivo alla velocità.

Simulazioni evolutive – p.14/21

Evitare le collisioniDegli agenti (sfere dure) si muovono in un ambiente pieno di loro simili.

Sono regolati da parametri che determinano la loro capacitàdi evitarsi.

Vengono evoluti utilizzando una funzione di fitness che assegna un peso

negativo alle collisioni ed uno positivo alla velocità.

simulazione

Simulazioni evolutive – p.14/21

Replicator equations

Se il numero di parametri è limitato ed essi assumono solo

valori discreti possiamo studiare l’evoluzione del sistema con

equazioni differenziali

B

Simulazioni evolutive – p.15/21

Replicator equations

Se il numero di parametri è limitato ed essi assumono solo

valori discreti possiamo studiare l’evoluzione del sistema con

equazioni differenziali

xi = xi(Fi(x) − F )

B

Simulazioni evolutive – p.15/21

Replicator equations

Se il numero di parametri è limitato ed essi assumono solo

valori discreti possiamo studiare l’evoluzione del sistema con

equazioni differenziali

xi = xi(Fi(x) − F )

Esempio regola circolazione.

B

Simulazioni evolutive – p.15/21

Replicator equations

Se il numero di parametri è limitato ed essi assumono solo

valori discreti possiamo studiare l’evoluzione del sistema con

equazioni differenziali

xi = xi(Fi(x) − F )

Esempio regola circolazione.

B

A

B

Simulazioni evolutive – p.15/21

Replicator equations

Se il numero di parametri è limitato ed essi assumono solo

valori discreti possiamo studiare l’evoluzione del sistema con

equazioni differenziali

xi = xi(Fi(x) − F )

Esempio regola circolazione.

B

A

0 200 400 600 800 1000generation

0

0.2

0.4

0.6

0.8

1

xi

Simulazioni evolutive – p.15/21

Pensiero ricorsivo, falchi e colombe

Nel problema delle collisioni tra sfere dure possiamo studiare l’effetto del

pensiero ricorsivo, definendo il livello di teoria della mente.

Simulazioni evolutive – p.16/21

Pensiero ricorsivo, falchi e colombe

Nel problema delle collisioni tra sfere dure possiamo studiare l’effetto del

pensiero ricorsivo, definendo il livello di teoria della mente.

Si crea una disparità tra livelli pari (falchi) e dispari (colombe).

Simulazioni evolutive – p.16/21

Pensiero ricorsivo, falchi e colombe

Nel problema delle collisioni tra sfere dure possiamo studiare l’effetto del

pensiero ricorsivo, definendo il livello di teoria della mente.

Si crea una disparità tra livelli pari (falchi) e dispari (colombe).

Simulazioni evolutive – p.16/21

Pensiero ricorsivo, falchi e colombe

Nel problema delle collisioni tra sfere dure possiamo studiare l’effetto del

pensiero ricorsivo, definendo il livello di teoria della mente.

Si crea una disparità tra livelli pari (falchi) e dispari (colombe).

Simulazioni evolutive – p.16/21

Matrice urti binari

Possiamo ottenere la matrice di fitnessf = v − β p per gli urti

binari

Simulazioni evolutive – p.17/21

Matrice urti binari

Possiamo ottenere la matrice di fitnessf = v − β p per gli urti

binari

v p

Simulazioni evolutive – p.17/21

Matrice urti binari

Possiamo ottenere la matrice di fitnessf = v − β p per gli urti

binari

v p

Risulta simmetrica (dipende dalla sola parità)

Simulazioni evolutive – p.17/21

Matrice urti binari

Possiamo ottenere la matrice di fitnessf = v − β p per gli urti

binari

v p

Risulta simmetrica (dipende dalla sola parità)

Simulazioni evolutive – p.17/21

Dinamica evolutiva falchi e colombe

Studiamo l’equazione per l’evoluzione di pari e dispari

xe = 1 − xo

Simulazioni evolutive – p.18/21

Dinamica evolutiva falchi e colombe

Studiamo l’equazione per l’evoluzione di pari e dispari

xe = 1 − xo

assumendo che valgano

fo = foexe + fooxo fe = feoxo + feexe

Simulazioni evolutive – p.18/21

Dinamica evolutiva falchi e colombe

Studiamo l’equazione per l’evoluzione di pari e dispari

xe = 1 − xo

assumendo che valgano

fo = foexe + fooxo fe = feoxo + feexe

e

xo = xo

f(xo)

f

xe = xe

f(xe)

f

Simulazioni evolutive – p.18/21

Stato stabile

All’intersezione trafe efo si trova uno stato evolutivamente stabile

(attrattore)

xo =foe − fee

foe + feo − foo − fee

=0.08 + 0.27β

0.31 + 0.27β

1

e

fo

xo0

f

Simulazioni evolutive – p.19/21

Risultati di simulazioni

Ma i risultati delle simulazioni dipendono dal livello

Simulazioni evolutive – p.20/21

Risultati di simulazioni

Ma i risultati delle simulazioni dipendono dal livello

β = 0

20 40 60 80 100generation

0

0.2

0.4

0.6

0.8

1

x

level 4level 3level 2level 1level 0

i

Simulazioni evolutive – p.20/21

Risultati di simulazioni

Ma i risultati delle simulazioni dipendono dal livello

β = 1

20 40 60 80 100generation

0

0.2

0.4

0.6

0.8

1

xi

Simulazioni evolutive – p.20/21

Risultati di simulazioni

Ma i risultati delle simulazioni dipendono dal livello

β = 10

20 40 60 80 100generation

0

0.2

0.4

0.6

0.8

1

xi

Simulazioni evolutive – p.20/21

Bibliografia

J. Hofbauer and K. Sigmund (1998) “Evolutionary Games and

Population Dynamics”, Cambridge University Press.

S. Haykin (1999), “Neural Networks. A Comprehensive

Foundation”, Prentice Hall.

D. Goldberg (1989), “Genetic Algorithms in Search,

Optimization and Machine Learning”, Addison-Wesley.

S. Nolfi and D. Floreano (2000), “Evolutionary Robotics. The

Biology, Intelligence and Techonology of Self-Organizing

Machines”, MIT Press.

Questo file su http://www.physycom.unibo.it/it/corsi.php

Simulazioni evolutive – p.21/21