24
Capitolo 3 Algoritmi Genetici

Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

  • Upload
    others

  • View
    8

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Capitolo 3

Algoritmi Genetici

Page 2: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

27

Capitolo 3

3.1 Breve storia della computazione evolutiva

3.1.1 Algoritmi Evolutivi

Molti problemi computazionali riguardano la ricerca di una soluzione tra un numero

infinito di possibili alternative, tanto che non è proponibile l’idea di valutarle una per

una. Alcuni ricercatori hanno osservato che l’evoluzione biologica può essere un’ottima

fonte d’ispirazione per chi si propone di risolvere questo genere di problemi.

L’evoluzione, infatti, può essere vista come un metodo di ricerca in un insieme di

innumerevoli soluzioni possibili: le soluzioni candidate sono tutte le possibili sequenze

genetiche, mentre le soluzioni desiderate sono quelle sequenze che danno luogo ad

organismi particolarmente adatti al loro ambiente cioè organismi con una forte capacità

di sopravvivere e di riprodursi. Col termine generico di Algoritmi Evolutivi si indica

una gamma di sistemi di risoluzione dei problemi basati sull’utilizzo del calcolatore

affini ai processi evolutivi. Essi comprendono gli Algoritmi Genetici (AG), la

Programmazione Evolutiva, le Strategie Evolutive, i Sistemi Classificatori e la

Programmazione Genetica [Cerruti, 2002].

In genere gli algoritmi utilizzati nelle varie discipline operano l’individuazione di un

massimo o di un minimo globale in uno spazio finito di ricerca sulla base di vincoli

sullo spazio delle soluzioni.

Da un punto di vista formale possiamo dire che dato un elemento X appartenente a uno

spazio cartesiano D (∈N ) e data una funzione:

RDf →: (3.1)

detta funzione obiettivo, allora la ricerca dell’ottimo globale è la ricerca di un X* che

massimizza (o minimizza) tale funzione, cioè

Page 3: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

28

DX ∈* e *)()(: XfXfDX ≤∈∀ (3.2)

Fattori come la presenza di più punti di massimo o minimo locale, vincoli sul dominio

dello spazio, la non linearità dei vincoli, possono rendere la ricerca molto difficoltosa,

per cui il problema non è risolvibile in tempi accettabili. Si fa allora uso degli Algoritmi

Evolutivi, tecniche di ricerca parallela euristiche e stocastiche che richiedono tempi di

convergenza molto minori. Da qui la distinzione tra i metodi “forti” e quelli “deboli”. I

primi sono orientati alla soluzione di un problema specifico, sulla base della conoscenza

del dominio particolare e della rappresentazione interna del sistema in esame. I metodi

deboli utilizzano poca conoscenza del dominio, non sono orientati a un target specifico

ma risolvono una vasta gamma di problemi. Gli Algoritmi Evolutivi sono algoritmi di

ricerca euristici, considerati metodi deboli. Tuttavia è stata ultimamente introdotta la

nuova tipologia dei metodi deboli evolutivi che hanno inizialmente poca conoscenza del

dominio, ma che durante la loro evoluzione acquistano maggiore consapevolezza del

problema, implementando alcune caratteristiche dei metodi forti (“intelligenza

emergente”).

Gli Algoritmi Evolutivi si concentrano sul legame esistente tra genitori e figli. Il

processo di ricerca è un ciclo che, a partire da una popolazione iniziale, genera altre

soluzioni candidate ed elimina dall’insieme delle soluzioni quelle meno buone. Ad ogni

passo del ciclo viene manipolato un intero insieme di soluzioni candidate, dette

individui, le quali formano la cosiddetta popolazione. Ogni individuo della popolazione

rappresenta una codifica di una soluzione candidata. Su ognuno di essi vengono

applicati due operatori genetici, chiamati mutazione ed incrocio, seguendo una certa

probabilità [Catallo, 2004]. Ogni individuo ha una certa capacità di risolvere il

problema che si sta trattando, misurata per mezzo di una funzione detta fitness. Sulla

base della qualità degli individui viene applicato il principio della “riproduzione” e della

“sopravvivenza” del più adatto per comporre la generazione successiva.

Figura 3.1: Schema di un Algoritmo Evolutivo

Inizializzazione Mutazione Ricombinazione Selezione Soluzione

Page 4: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

29

3.1.2 Gli Algoritmi Genetici (AG)

Tra la fine degli anni ‘50 e l’inizio degli anni ‘60 i ricercatori nel campo del

computazione evolutiva cominciarono a interessarsi ai sistemi naturali nella

convinzione che potessero costituire un modello per nuovi algoritmi di ottimizzazione

per la ricerca della soluzione tra un numero enorme di alternative [Mitchell, 1998].

Gli organismi possono essere considerati ottimi risolutori di problemi, poichè sono in

grado di sopravvivere nel loro ambiente, sviluppare comportamenti ed abilità che sono

il risultato dell’evoluzione naturale dimostrando di poter interagire con un ambiente

mutevole come teorizzato per la prima volta da Charles Darwin nella sua opera

“L’origine delle specie” [Darwin, 1864]. L’evoluzione biologica è assimilabile a un

metodo di ricerca all’interno di un grandissimo numero di soluzioni, costituite

dall’insieme di tutte le sequenze genetiche i cui risultati, le soluzioni desiderate, sono

organismi altamente adattati, dotati di forte capacità di sopravvivenza e di riproduzione.

L’evoluzione di una specie è regolata quindi da due processi fondamentali: la selezione

naturale e la riproduzione che determina la ricombinazione del materiale genetico dei

genitori generando un’evoluzione molto più rapida di quella che si otterrebbe se tutti i

discendenti contenessero semplicemente una copia dei geni di un genitore, modificata

casualmente da una mutazione. Si tratta di un processo ad alto grado di parallelismo:

non opera su una specie per volta, ma mette alla prova e cambia milioni di specie in

parallelo. L’AG seleziona le soluzioni migliori e le ricombina con diverse modalità

affinché esse evolvano verso un punto di ottimo. Il ciclo completo è ripetuto fino al

raggiungimento di un dato criterio di arresto. Un Algoritmo Genetico è una tecnica di

ricerca stocastica che opera su una popolazione di individui e che codifica le possibili

soluzioni di un dato problema [Jiang, 2003].

Gli AG hanno quindi questi punti di forza:

possibilità di risolvere problemi complessi senza basarsi sulla forma delle funzioni

obiettivo;

capacità di auto-modificazione in base al mutamento del problema;

capacità di simulare alcuni fenomeni data una struttura e modalità operative affini

con quelle dell’evoluzione biologica.

Page 5: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

30

I primi tentativi di progettazione di strumenti di ottimizzazione, le Strategie Evolutive di

Rechemberg e la Programmazione Evolutiva di Fogel, Owens e Walsh, non produssero

risultati interessanti, poichè i test di biologia dei primi anni ‘60 mettevano in risalto

l’operatore della mutazione, piuttosto che il processo riproduttivo per la generazione di

nuovi geni. A metà degli anni ‘60 un progresso significativo fu segnato dalla proposta di

John Holland, i cui Algoritmi Genetici sottolinearono per la prima volta l’importanza

della riproduzione e dell’evoluzione [Holland, 1992].

L’utilizzo di questi algoritmi oggi è essenzialmente legato alla programmazione

dell’intelligenza artificiale in robotica, alla biocomputazione, a particolari problemi di

gestione e sistemi di ottimizzazione in ingegneria.

Page 6: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

31

3.2 Evoluzione naturale ed artificiale: la terminologia

3.2.1 L’evoluzione naturale

La combinazione delle ipotesi darwiniane con la genetica ha dato luogo a principi che

costituiscono le basi della genetica delle popolazioni. Le modalità di azione del

principio darwiniano della selezione naturale possono essere così riassunte:

la terminologia utilizzata si ispira direttamente agli studi sull’evoluzione naturale e

biologica;

una popolazione è definita come un gruppo di individui della stessa specie, che

operano e si incrociano nello stesso luogo;

l’evoluzione naturale agisce sul materiale genetico di un individuo e non sulle sue

caratteristiche fisiche, il fenotipo. Ogni cromosoma è composto da geni, ognuno dei

quali codifica una particolare proteina che determina le caratteristiche specifiche

dell’organismo. Le posizioni dei geni all’interno del cromosoma sono dette locus e

le diverse configurazioni delle proteine sono dette alleli. La maggior parte degli

organismi presentano più di un cromosoma, il cui insieme è detto genoma. Per

genotipo si intende l’insieme dei geni del genoma. Il risultato finale dell’evoluzione

fetale, cioè l’individuo, è detto fenotipo. Ogni variazione che promuove

l’adattamento di un individuo emerge dal patrimonio genetico, non da ciò che i

genitori avranno eventualmente appreso durante la loro vita;

la selezione naturale favorisce la riproduzione degli individui che migliorano

l’adattabilità all’ambiente mutevole ed elimina gli individui dalla minore

potenzialità riproduttiva. Dal punto di vista genetico, la selezione naturale promuove

quelle particolari combinazioni genetiche che danno vita a un organismo più

efficiente, selezionando il genotipo, non il fenotipo;

la riproduzione (incrocio) è il nucleo centrale del processo evolutivo: la variabilità

generazionale di una specie è determinata dalla ricombinazione genica e dalle

piccole mutazioni casuali del codice genetico. La variabilità è una condizione

essenziale dell’evoluzione;

Page 7: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

32

l’evoluzione naturale opera su intere popolazioni attraverso processi ciclici e

generazionali determinati esclusivamente dalle contingenze ambientali e dalle

interazioni fra i vari organismi. L’evoluzione si basa quindi sui seguenti

meccanismi:

mutazione di alleli: fonte primaria di variabilità genetica;

flusso genico: variazione delle frequenze degli alleli, dovuta ai

movimenti migratori di alcuni individui, con conseguente introduzione o

rimozione di genotipi;

deriva genetica: variazioni imprevedibili nelle frequenza degli alleli nel

caso in cui una popolazione abbia un piccolo numero di componenti.

Page 8: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

33

3.2.2 L’evoluzione artificiale e il modello di Holland

Nella terminologia degli Algoritmi Genetici il cromosoma codifica una soluzione

candidata di un dato problema di ricerca.

Il modello originario di Holland si basa su una popolazione di n stringhe di bit di

lunghezza fissata l (n, l ∈ Ν), generate in modo casuale. Ogni stringa (genotipo) è la

codifica binaria di una soluzione candidata (fenotipo). Nei casi in cui la codifica del

cromosoma rappresenti direttamente una soluzione candidata, come in alcune

applicazioni in cui il cromosoma è una stringa di numeri reali anzichè di bit, anche i

termini genotipo e fenotipo possono coincidere.

Nelle applicazioni comuni si utilizzano individui a un singolo cromosoma, quindi i

termini genotipo, cromosoma e individuo sono equivalenti. Ogni locus in un

cromosoma ha due possibili alleli: 0 e 1. Ogni cromosoma può essere pensato come un

punto dello spazio di ricerca delle soluzioni candidate.

L’AG manipola le popolazioni dei cromosomi e ha bisogno in genere di una funzione di

idoneità (una fitness) che assegni un punteggio a ogni cromosoma della popolazione

corrente. Questa dipende dal suo grado di capacità di risolvere il problema che si sta

trattando.

In generale la funzione di fitness si presenta nelle forma seguente:

),....,,( 21 nxxxfF = (3.3)

Tramite questa funzione, ad ogni genotipo ig della popolazione iniziale )0( =tP è

associato un valore )( ii gFF = che rappresenta la capacità dell’individuo di risolvere il

problema dato. Per determinare il valore di adattività, la funzione di fitness riceve in

input un genotipo, lo decodifica nel corrispondente fenotipo e lo testa sul problema

dato.

Una volta conclusa la fase di valutazione degli individui della popolazione iniziale, si

genera una nuova popolazione )1( +tP di nuove n soluzioni candidate applicando gli

operatori di selezione, crossover, mutazione e inversione.

Page 9: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

34

3.3 Codifica dei problemi per un Algoritmo Genetico

Come per tutti i metodi di ricerca, il modo in cui le funzioni candidate sono codificate è

uno dei fattori principali del successo di un Algoritmo Genetico. L’ottimizzazione di tali

modelli è tipicamente difficoltosa a causa dell’esistenza potenziale dei minimi locali

multipli nello spazio di ricerca. Si assume che una possibile soluzione per un problema

possa essere rappresentata come un set di parametri (detti geni) i quali sono uniti

insieme per formare una stringa di valori (spesso chiamata cromosoma). La maggior

parte delle applicazioni usano per codificare le soluzioni candidate stringhe di bit di

lunghezza e ordine prefissati. Sono tutt’ora di studio nuovi approcci per ridurre il

numero delle funzioni fitness richieste da un GA per l’ottimizzazione dei problemi

([Gantovnik, 2003]). Le aggiunte proposte al GA rendono la ricerca più efficace e

veloce migliorando il valore di fitness di generazione in generazione.

Le codifiche più comuni sono:

codifiche binarie, cioè le stringhe di bit, sono le più comuni per ragioni storiche.

Nei primi studi Holland si concentrò su questo tipo. Sono state studiate numerose

estensioni, ma risultano tuttavia innaturali e a volte inutili per molti problemi;

codifiche a più caratteri e a valori reali, per molte applicazioni è più naturale

formare i cromosomi con un alfabeto formato da molti caratteri o molti numeri reali.

Queste ultime hanno mostrato risultati migliori rispetto alle codifiche binarie;

codifiche ad albero, la popolazione non è costituita da stringhe di bit, ma da

programmi che quando vengono eseguiti si evolvono, si combinano, si riproducono

o mutano per dar luogo ad altri programmi che costituiscono le soluzioni migliori di

un determinato problema. Questi programmi vengono codificati con una struttura ad

albero in cui i nodi interni sono funzioni e le foglie sono i simboli terminali del

programma. Ogni nodo ha un unico arco entrante, tranne uno particolare, chiamato

radice, che non ha archi entranti. Ogni nodo può avere zero o più archi uscenti e i

nodi senza archi uscenti sono detti foglie.

Page 10: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

35

Figura 3.2: Codifica ad albero

Le codifiche ad albero hanno parecchi vantaggi tra cui il fatto di potersi muovere in

spazi di ricerca illimitati. Questa assenza di limiti può anche essere svantaggiosa, gli

alberi possono crescere senza controllo, impedendo la formazione di soluzioni

candidate strutturate in maniera più gerarchica. Inoltre più gli alberi sono estesi, più

risultano di difficile interpretazione. Tuttavia le codifiche ad albero, insieme al

miglioramento locale, costituisco due dei metodi che hanno dimostrato

miglioramenti notevoli in efficienza di calcolo per i problemi di ottimizzazione, dal

momento che utilizzano le informazioni dei punti precedentemente analizzati nelle

ricerche successive. L’operatore di crossover è la forza trainante dell’algoritmo: si

prendono a caso due sottoalberi da individui selezionati in base alla loro fitness e si

ricombinano dando vita a due alberi figli, con parametri che fissano limiti sulla

dimensione massima degli alberi della popolazione. Sarà la fitness, penalizzando gli

alberi che non rispettano le condizioni, a favorire la crescita di alberi corretti. Il

percorso della valutazione della funzione di fitness con l’aiuto dell’albero binario

consta in vari passi: dopo che una nuova generazione è stata creata tramite i

funzionamenti genetici, è cercato un albero binario per ogni nuova iterazione. Se ciò

accade, il valore di fitness è richiamato dall’albero binario senza condurre

un’analisi. Altrimenti, la fitness ottenuta è basata su un’analisi esatta. Questa nuova

Radice

Campo

Cammino

Sottoalbero

Page 11: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

36

struttura ed il relativo valore di fitness allora sono inseriti nell’albero come nuovo

nodo [De Lucia, 2001].

Una proprietà rilevante di questa codifica è dovuta alla versatilità dei dati che

possono essere richiamati, modificati ed inseriti rapidamente nel processo. Nel GA

standard, una nuova popolazione può contenere le proprietà che sono già state

incontrate nelle generazioni precedenti, soprattutto verso la conclusione del

processo di ottimizzazione. La procedura di memoria elimina la possibilità di

ripetere un’analisi che potrebbe essere costosa.

L’estensione dello spazio di ricerca (lo spazio di tutte le funzioni che soddisfano la

grammatica definita dall’utente) e la minore efficienza della mappatura in memoria

della rappresentazione utilizzata fanno sì che la programmazione genetica richieda

un elevato carico computazionale e un’elevata occupazione di memoria. Ne segue

un utilizzo minore rispetto agli Algoritmi Genetici e la necessità di realizzare

un’implementazione parallela di questi algoritmi su ambienti di tipo distribuito.

Page 12: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

37

3.4 Parametri degli AG

3.4.1 Selezione

Una volta scelta la codifica, la successiva operazione che viene compiuta è la selezione

che guida la ricerca verso gli individui migliori che promuovono la convergenza. La

selezione dei genitori ha il compito di allocare opportunità riproduttive a ciascun

individuo. Questo funzionamento effettua un rapporto tra alta velocità di convergenza e

l’alta probabilità di individuazione dell’optimum globale nei problemi complessi [Alba,

2003]. Gli schemi più importanti di selezione usati sono:

metodo proporzionale, all’interno di una popolazione, ad ogni individuo è

associata una probabilità di selezione legata alla fitness. L’operatore di selezione

genera un numero casuale c ∈ ]1,0[ che determina quale individuo verrà scelto.

L’individuo selezionato viene copiato dalla popolazione e introdotto nel cosiddetto

mating pool (“piscina di accoppiamento”), dove gli individui migliori hanno molta

probabilità di essere copiati più volte, mentre i peggiori potrebbero non essere

copiati affatto [Lazzerini, 2002]. Sotto un severo schema di riproduzione, la

dimensione della mating pool è uguale a quella della popolazione. Dopo di ciò,

coppie di individui vengono tirati fuori “dalla piscina” e fatti accoppiare. Esso è

così riempito di n copie degli individui selezionati, al tempo )0( =tP . Questo viene

ripetuto finché lo spazio rimane vuoto. La nuova popolazione è ottenuta con gli

operatori di crossover, mutazione e inversione;

metodo della roulette, è il metodo più comune. Ad ogni individuo si assegna una

fetta di una ruota di una roulette e la grandezza di questa fetta è proporzionale

all’idoneità dell’individuo. La ruota viene azionata N volte, dove N è il numero di

individui della popolazione. Ad ogni iterazione, all’individuo prescelto è concesso

di essere tra i genitori della generazione successiva. Il metodo può essere

implementato in questo modo: sommare i valori attesi di tutti gli individui della

popolazione. La somma si indica con T; ripetere N volte le seguenti istruzioni:

scegliere un intero casuale r tra 0 e T, passare in rassegna tutti gli individui della

Page 13: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

38

popolazione, sommando mano a mano i valori attesi, fino a che la somma non è

maggiore o uguale a r. L’individuo il cui valore atteso porta la somma sopra questo

limite, è prescelto [Mitchell, 1998];

metodo stocastico universale: con popolazioni relativamente piccole, il numero

dei discendenti effettivamente assegnati a ogni individuo spesso si discosta di

molto dal valore atteso (con la roulette si potrebbe addirittura assegnare tutti i

discendenti all’individuo peggiore). In questo caso si itera una sola volta ma con N

puntatori posti a egual distanza che servono per selezionare gli N genitori.

3.4.2 Crossover

Il crossover è una metafora della riproduzione in cui il materiale genetico dei

discendenti è una combinazione di quello dei genitori, cioè il meccanismo da cui fra

tutti gli individui accoppiati sono scambiate informazioni per formare due nuovi

individui. All’interno del mating pool sono scelti a caso due individui, detti genitori, e

un punto di taglio, detto punto di crossover. L’incrocio è attivato secondo valori scelti di

probabilità, che è presa tipicamente intorno a 0,90. Le tecniche di incrocio

maggiormente utilizzate sono:

crossover one point: è applicato n/2 volte per ottenere n discendenti in base ad una

prefissata probabilità p. Le porzioni di genotipo alla destra del punto di crossover

sono scambiate generando due discendenti. Nel caso in cui il crossover non sia

applicato, i discendenti coincidono con i genitori [Hasançebi, 2000];

Figura 3.3: Schema di un crossover one point

Page 14: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

39

two points crossover: l’incrocio in un punto tratta alcune posizioni in modo

preferenziale, poiché i segmenti scambiati tra due genitori contengono sempre gli

estremi della stringa. Per ovviare a ciò si usa l’incrocio in due punti in cui si

scelgono a caso due posizioni e si scambiano i segmenti compresi;

multi- point crossover fornisce uno scambio disperso di caratteristiche dei genitori

tanto più evidente quanti più tagli vengono effettuati;

crossover uniforme prevede che per ogni coppia di genitori si genera una stringa

binaria della stessa lunghezza chiamata maschera. Il discendente viene generato

copiando il bit del padre o quello della madre a seconda che nella corrispondente

posizione della maschera vi sia uno 0 o un 1.

3.4.3 Mutazione

Questo operatore è ispirato alla rara variazione di elementi del genoma degli esseri

viventi durante l’evoluzione. In base a una probabilità piccola p, viene cambiato il

valore dei bit di ogni individuo (da 0 a 1 e viceversa).

Figura 3.4: Schema di una mutazione

Come in natura, la mutazione aggiunge un “rumore” o una certa casualità all’intera

procedura, in modo da assicurare che partendo da una popolazione generata

casualmente non vi siano punti dello spazio delle soluzioni che non vengano esplorati.

3.4.4 Inversione

In base a una fissata probabilità p, sono scelti casualmente due punti nella stringa che

codifica l’individuo e inverte i bit tra le due posizioni.

Page 15: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

40

Figura 3.5: Schema di un’inversione

Su una popolazione iniziale numerosa è difficile stimare quali valori della probabilità di

crossover e della probabilità di mutazione daranno le migliori prestazioni. Dipende dal

tipo di problema. Generalmente la probabilità di crossover è tra il 60 e l'80%, mentre

quella di mutazione oscilla fra 0,1-1%. Se le probabilità che un individuo sia selezionato

per la riproduzione sono proporzionali alla sua fitness è probabile che, in seguito a

crossover, gli individui migliori vengano ricombinati, con la conseguente perdita del

cromosoma migliore. Per evitare ciò e accelerare i tempi di convergenza si può

“clonare” l’individuo migliore di una generazione. Attraverso tale tecnica, detta

elitismo, mantenendo un alto numero di popolazioni, è possibile clonare più individui

nella successiva generazione, mentre per gli altri si procede in modo classico.

Page 16: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

41

3.5 Gli altri settori degli Algoritmi Evolutivi 3.5.1 La Programmazione Evolutiva

La Programmazione Evolutiva (Evolutionary Programming, EP) è una strategia

stocastica di ottimizzazione simile agli AG. Si basa sulla definizione della popolazione,

fitness e la selezione dei migliori, ma mentre questi principalmente nei GA cercano di

simulare gli operatori di crossover e mutazione come avvengono in natura, la

Programmazione Evolutiva si concentra sul legame esistente tra genitori e figli. Il

metodo di base consiste in tre passi: scegliere una popolazione iniziale a caso (maggiore

è il numero di individui, più velocemente si arriverà alla convergenza); ogni individuo

viene copiato in una nuova popolazione e a ciascun figlio viene applicata una mutazione

seguendo una certa probabilità; viene calcolato la fitness di ogni individuo e tramite un

torneo con selezione stocastica vengono scelte N possibili soluzioni.

L’obiettivo degli EP è la previsione della prossima configurazione del sistema, non

attraverso l’operatore di crossover (come negli AG), ma affidandosi esclusivamente alla

mutazione: la mutazione altera lo stato iniziale, modifica la transizione o cambia uno

stato interno. La caratteristica fondamentale di questo tipo di algoritmi è che i figli

hanno un comportamento simile a quello dei genitori.

3.5.2 Le Strategie Evolutive

Le Strategie Evolutive sono tecniche simili alla precedente, ma sviluppate

originariamente per problemi di ingegneria civile e strutturale. La principale differenza

consiste nel fatto che nella EP gli individui sono selezionati per la mutazione con una

certa probabilità proporzionale alla fitness come accade negli AG, mentre in questo caso

gli individui peggiori vengono scartati deterministicamente. Il metodo di ottimizzazione

si basa sulla scelta di una strategia che viene poi applicata a una popolazione. Le due

principali sono note come Strategia Plus (m+l) e Strategia Comma (m,l). Nel primo

caso i genitori possono partecipare alla selezione nella generazione successiva, mentre

Page 17: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

42

nel secondo solo i figli possono essere selezionati, mentre i genitori muoiono. m

rappresenta il numero di individui nella popolazione, mentre l il numero di figli

concepiti per ogni generazione. Un individuo nella popolazione consiste di un genotipo

che rappresenta un punto nello spazio di ricerca (cioè lo spazio delle possibili

soluzioni). A ciascun punto vengono associate:

delle variabili oggetto xi sulle quali verranno applicati gli operatori di crossover e

mutazione fino a che non viene raggiunta una soluzione ottima del problema;

delle variabili di strategia Si che determinano la “mutuabilità” di xi. Esse

rappresentano la deviazione standard di una distribuzione Gaussiana (0, Si). Con un

valore uguale a zero i genitori produrranno in media dei figli simili a loro. Questa

strategia funziona perché prima o poi verranno favoriti gli individui che hanno un

buon valore della funzione obiettivo e che probabilmente ricombinandosi tra loro

formeranno figli migliori. Il valore della funzione obiettivo f(x) rappresenta il

fenotipo (fitness) di cui si terrà conto nella selezione. Nella strategia Plus i migliori

m individui su (m+l) sopravvivranno e diventeranno genitori nella generazione

successiva, mentre nella Comma la selezione avviene solo tra i figli.

3.5.3 I Sistemi Classificatori

I Sistemi Classificatori sono operatori che lavorano in un ambiente dal quale ricevono

input che classificano secondo una serie di regole dai quali generano output di istruzioni

da eseguire. Le istruzioni sono del tipo if...then.

3.5.4 La Programmazione Genetica

La tecnica della Programmazione Genetica è simile a quella degli Algoritmi Genetici,

ma in questo caso, la popolazione non è costituita da stringhe di bit, ma da programmi

che quando vengono eseguiti si evolvono, si combinano, si riproducono o mutano per

Page 18: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

43

dar luogo ad altri programmi che costituiscono soluzioni migliori di un determinato

problema. Questi programmi vengono codificati con una struttura ad albero in cui i nodi

interni sono funzioni e le foglie sono i simboli terminali del programma.

Lo spazio di ricerca è costituito da tutti i programmi composti dai terminali e dalle

funzioni definite per uno specifico problema.

La Programmazione Genetica ha un grado di complessità maggiore rispetto agli

Algoritmi Genetici, poiché la progettazione richiede la selezione di molti più parametri,

come la generazione della popolazione iniziale, l’insieme delle funzioni e terminali di

base, il tipo di selezione, la dimensione della popolazione e il numero massimo di

generazioni, il criterio di terminazione.

L’operatore di crossover è la forza trainante dell’algoritmo: si prendono a caso due

sottoalberi da individui selezionati in base alla loro fitness e si ricombinano dando vita

a due alberi figli, con parametri che fissano limiti sulla dimensione massima degli alberi

della popolazione. Altri operatori, quali la mutazione, la permutazione, l’editing,

l’incapsulamento e la decimazione sono usati in casi particolari. Sarà la fitness,

penalizzando gli alberi che non rispettano le condizioni, a favorire la crescita di alberi

corretti.

Se gli Algoritmi Genetici ottimizzano una soluzione definita e parametrizzata

dall’utente, e quindi l’ottimizzazione opera sulla rappresentazione dei parametri di una

funzione la cui struttura è nota, nella Programmazione Genetica si opera a un livello

superiore, poichè l’utente definisce gli elementi di una grammatica (operatori e simboli

terminali) utilizzati per generare funzioni che devono evolversi. L’ottimizzazione della

fitness consiste allora nella manipolazione del codice stesso delle funzioni e non solo

dei parametri.

L’estensione dello spazio di ricerca (lo spazio di tutte le funzioni che soddisfano la

grammatica definita dall’utente) e la minore efficienza della mappatura in memoria

della rappresentazione utilizzata fanno sì che la programmazione genetica richieda un

elevato carico computazionale e un’elevata occupazione di memoria. Ne segue un

utilizzo minore rispetto agli Algoritmi Genetici e la necessità di realizzare

un’implementazione parallela di questi algoritmi su ambienti di tipo distribuito.

Page 19: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

44

3.6 Altre tecniche di ricerca

Molte tecniche di approccio generale sono state inventate per problemi di ricerca

[Cerruti, 2002]. Come i GA, assumono che il problema sia definito da una funzione di

fitness, che deve essere massimizzata. Ci sono varie tecniche di ottimizzazione, le più

conosciute sono:

metodo del gradiente: si utilizzano le informazioni sul gradiente della funzione per

guidare la direzione della ricerca. La funzione deve essere però continua, altrimenti

non ne può essere calcolata la derivata. In generale questi metodi sono detti di

hillclimbing (scalata) e nel caso di funzioni con un solo picco (unimodali), meno

per funzioni multimodali, non è detto che il primo picco scalato sia il più alto. Nella

figura seguente abbiamo un esempio del problema: partendo da un punto a caso X,

con movimenti verso l’alto (uphill) è localizzato il massimo B, ma A e C non sono

localizzati;

Figura 3.6: Schema dell’ hillclimb

ricerca casuale: l’approccio è una ricerca casuale o enumerata. I punti nello spazio

di ricerca sono scelti a caso o in qualche maniera sistematica, e il loro valore

calcolato;

ricerca Iterata: si combina il metodo del gradiente con quello della Ricerca Casuale,

in cui i punti dello spazio di ricerca sono scelti a caso. Trovato il picco, la scalata

Page 20: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

45

riparte da un altro punto scelto a caso. La tecnica ha il pregio della semplicità e dà

buoni risultati con funzioni che ovviamente non hanno molti massimi locali.

Tuttavia, poiché ogni prova è isolata, non si ottiene una figura complessiva della

forma del dominio e mentre la ricerca casuale progredisce, si continuano ad allocare

lo stesso numero di prove sia in regioni dove sono stati trovati alti valori di fitness,

sia in regioni con basso valore di fitness. Un Algoritmo Genetico, invece, opera a

partire da una popolazione iniziale casuale e compie tentativi nelle regioni con più

alto fitness. Potrebbe essere uno svantaggio se il massimo si trova in una piccola

regione circondata da regioni con basso fitness. Ma questo tipo di funzione è

difficilmente ottimizzabile con qualsiasi metodo;

Simulated Annealing (temperatura simulata): è una versione modificata

dell’hillclimbing. Iniziando da un punto scelto a caso nel dominio, viene fatto un

movimento casuale: se questo porta a un punto più alto allora è accettato, se ci porta

ad un valore più basso è accettato con una probabilità p(t), dove t è il tempo.

All’inizio il valore di p(t) è vicino a 1, ma tende gradualmente a zero. Inizialmente

ogni movimento è accettato, ma la “temperatura” si riduce e la probabilità di

accettare un movimento negativo diminuisce. A volte i movimenti negativi sono

necessari per evitare massimi locali, me se sono troppi possono allontanarci dal

massimo. In generale, questa tecnica lavora con una sola soluzione candidata per

volta, non costruisce una figura complessiva dello spazio di ricerca e non sono

salvate le informazioni dei precedenti movimenti per guidarci verso la soluzione

[Catallo, 2004].

Page 21: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

46

3.7 Vantaggi e svantaggi degli AG

Una prima distinzione degli AG, rispetto alle normali procedure di ricerca ed ai più

classici algoritmi d’ottimizzazione numerica, può essere fatta sulla base delle seguenti

motivazioni:

svolgono ricerche all’interno di una popolazione di punti di una regione dello spazio

di ricerca e non nel singolo punto;

le leggi che regolano il passaggio da un punto all’altro del dominio (regole di

transizione) sono di tipo probabilistico e non deterministico;

valutano le informazioni contenute direttamente nella funzione obiettivo e non le

derivate parziali o altre conoscenze ausiliarie;

lavorano con una codifica dei parametri e non con i parametri in sé e per sé.

L’Algoritmo Genetico sfrutta le regioni ”bersaglio” dello spazio delle soluzioni, poiché

in generazioni successive, attraverso la riproduzione ed il crossover, aumenta

progressivamente il numero delle stringhe che si trovano in quelle regioni [Cavanna,

2004].

In un normale problema di statistica, in cui sono applicati opportuni algoritmi

matematici (un esempio sono i metodi di Montecarlo), si dovrebbero valutare decine di

campioni tratti da migliaia o milioni di regioni per ottenere il valore adattivo di ciascuna

di queste. L’Algoritmo Genetico invece riesce ad ottenere lo stesso risultato con un

numero di stringhe di gran lunga inferiore. Questo sorprendente comportamento è

dovuto al fatto che una singola stringa appartiene a tutte le regioni in cui appare almeno

qualcuno dei suoi bit. Per esempio, la stringa

[11011001]

appartiene alle regioni

11******, 1******1, **0**00*

Page 22: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

47

e così via, dove il segno di asterisco indica che il valore di un bit non è specificato. Le

regioni più grandi, quelle cioè con un numero elevato di bit non specificati, saranno

rappresentate da una elevata percentuale di tutte le stringhe di una popolazione. Così, un

Algoritmo Genetico che manipola una popolazione di poche migliaia di stringhe, di

fatto dispone di campioni di un numero molto più grande di regioni.

E’ proprio questo parallelismo implicito, che conferisce all’Algoritmo Genetico il suo

vantaggio fondamentale rispetto ad altri procedimenti utilizzati per la risoluzione di

problemi, in quanto può esplorare e sfruttare moltissime regioni nello spazio di ricerca,

pur manipolando un numero relativamente piccolo di stringhe.

Inoltre l’Algoritmo Genetico contribuisce a risolvere un enigma che ha eluso fin qui i

metodi convenzionali di risoluzione di problemi. Per localizzare l’ottimo, una solida

tecnica di crossover può utilizzare due strategie: esplorazione (exploration) per

esaminare le aree dello spazio di ricerca, e sfruttamento (exploitation). Queste richieste

sono contraddittorie e un buon algoritmo di ricerca deve trovare un buon compromesso

tra le due [Herrera, 1999]. Una ricerca puramente casuale è buona per l’esplorazione,

ma non fa nessuno sfruttamento, mentre un metodo puramente di scalata (hillclimb) va

bene per lo sfruttamento, ma fa poca esplorazione. La combinazione di queste due

tecniche può essere abbastanza efficace, ma è difficile sapere dove si trova l’equilibrio

migliore, cioè quanto sfruttamento bisogna fare prima di arrendersi. Holland ha

dimostrato che un GA combina le due strategie allo stesso tempo e in un modo ottimale.

Sebbene questo sia teoricamente vero, in pratica ci sono problemi inevitabili. Holland

infatti ha fatto certe semplificazioni:

la popolazione è infinita;

la funzione fitness riflette accuratamente l’utilità della soluzione;

i geni in un cromosoma non interagiscono significativamente.

La prima condizione non può essere mai verificata in pratica e a causa di ciò il

funzionamento del GA sarà soggetto ad errori stocastici. Un problema del genere, che si

trova anche in natura è quello della deriva genetica (genetic drift). Anche in assenza di

qualsiasi pressione di selezione (cioè la funzione fitness è costante), i membri della

popolazione continueranno a convergere verso qualche punto nello spazio di ricerca.

Questo succede a causa dell’accumulo di errori stocastici. Se un gene diventa

Page 23: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

48

predominante nella popolazione, allora ha la stessa probabilità sia di diventare più che

meno dominante nella generazione successiva. Il tasso di deriva genetica produce un

limite inferiore alla velocità con la quale un GA può convergere verso la soluzione

corretta. Così, se il GA sta sfruttando l’informazione del gradiente nella funzione

fitness, la funzione fitness fornisce un’inclinazione sufficientemente grande per

contrastare ogni deriva genetica. Il tasso di genetic drift, può essere anche ridotto

introducendo la mutazione. Se la mutazione è troppo elevata, le informazioni del

gradiente non possono essere sfruttate adeguatamente. La seconda e la terza condizione

possono essere verificate su funzioni test che si comportano bene in laboratorio, ma

sono difficili da soddisfare nel mondo reale. Gli Algoritmi Genetici sono

particolarmente indicati per quelle regioni del dominio caratterizzate dall’avere parecchi

punti di massimo o minimo locali dove quindi il metodo del gradiente facilmente

rischierebbe di focalizzarsi su un estremo locale, oppure caratterizzate da zone piatte a

gradiente nullo che rendono difficoltosa la ricerca dell’estremo.

Figura 3.7: Visualizzazione di una funzione obiettivo

Page 24: Capitolo 3 Algoritmi Genetici · Algoritmi Genetici 33 3.2.2 L’evoluzione artificiale e il modello di Holland Nella terminologia degli Algoritmi Genetici il cromosoma codifica una

Università degli Studi di Pavia Facoltà di Ingegneria Algoritmi Genetici

49

Gli Algoritmi Genetici sono sicuramente il paradigma evoluzionistico più comunemente

utilizzato, sia per le caratteristiche della rappresentazione che consente di realizzare

implementazioni particolarmente efficienti degli operatori genetici, sia per la quantità di

problemi d’ottimizzazione le cui soluzioni possono essere rappresentate in modo

immediato ed efficace con stringhe binarie.

Considerando le applicazioni dei metodi d’ottimizzazione ai problemi d’ingegneria

civile, si può affermare che i più usati sono tradizionalmente quelli di ricerca del

gradiente.

Con tale approccio esistono difficoltà legate alla scelta di una funzione di costo

differenziabile e continua e nel fatto di considerare la non linearità.

Comparato con quello del gradiente, il metodo degli Algoritmi Genetici è invece in

grado di ottenere un valore ottimale dalla complessa e possibile discontinuità dello

spazio delle soluzioni, in quanto la funzione di prestazione di costo è la sola

informazione richiesta per questo tipo di problema; infatti gli Algoritmi Genetici non

richiedono la riformulazione del problema in una forma più adatta a differenza del

metodo del gradiente.

Nel campo civile gli AG sono molto utili quando si vogliono identificare i parametri

strutturali di un edificio nel quale si evolve un danno.

Essi servono, ad esempio, per identificare i valori di smorzamento da introdurre nel

modello matematico che si usa per svolgere l’analisi strutturale, ma il problema che si

presenta è quello di scegliere una buona funzione di costo in modo da ottenere soluzioni

ottimali ed accettabili.