Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out

Genetic and evolutionary algorithms

VIEWS: 16 PAGES: 5

									Algoritmi genetici e di evoluzione
Gli algoritmi evoluzionistici (evolutionary algorithms, EA) sono un
gruppo di metodi basati sull'idea dell'evoluzione biologica e
progettati per trovare soluzioni ottimali ai problemi.
Gli algoritmi evoluzionistici si possono dividere sommariamente in tre
classi:
algoritmi genetici        GA genetic algorithms
programmazione evolutiva EP evolutionary programming
strategie di evoluzione   ES evolution strategies
Ci sono molte similarità fra queste tre classi, ma anche alcune
differenze fondamentali.
Comune a tutte e tre le classi è l'idea di:
- creare una "popolazione" di possibili soluzioni del problema.
- valutare tutti i membri della popolazione utilizzando una “funzione
di adattamento o fitness” che misura quanto siano "validi" e che gli
attribuisce un punteggio
- la popolazione cambia nel tempo ed evolve verso soluzioni, si spera,
migliori. Questo processo di generazione di nuove soluzioni è spesso
denominato "riproduzione" (breeding), essendo le nuove soluzioni
"figlie" generate dai "genitori" della "generazione" precedente.
Algoritmo genetico canonico (metodo base)
                                     esempi:
Si crea una popolazione iniziale     1. in un problema di analisi
di “µ” possibili soluzioni.          conformazionale, un insieme di
                                     conformeri
                                     2. se vogliamo trovare una
                                     equazione che riproduca dei dati,
                                     un insieme di equazioni
                                     3. in un problema di docking, un
                                     insieme di conformeri del ligando
                                     e di possibili orientazioni del
                                     ligando rispetto alla proteina)
Si codifica ogni membro della        1. in un problema di analisi
popolazione con un "cromosoma",      conformazionale, ogni gene
ovvero una stringa di bit in cui     rappresenta un angolo torsionale
ogni gruppo di "m" bit rappresenta
il valore di una delle "p"
variabili o "geni", per esempio
p=4 variabili codificate ognuna
con m=5 bit: 10100 10100 10001
01001
La popolazione iniziale può essere
facilmente ottenuta anche
impostando i bit del cromosoma a 0
o a 1 in modo casuale.
Si calcola la “funzione di           la funzione di fitness
fitness” per ciascun cromosoma       corrisponde:
                                    1. all'energia interna
                                    nell'analisi conformazionale
                                    2. alla cosiddetta mancanza di
                                    adattamento (lack of fit) del
                                    modello nelle equazioni
                                    3. all’energia di interazione
                                    inter-molecolare nel docking
Si scelgono µ/2 coppie di genitori. La scelta è casuale, ma la
probabilità di essere scelti dipende dal punteggio calcolato tramite
la funzione di "fitness" (per esempio è proporzionale).
Ogni coppia genera due figli tramite l'operatore genetico di "cross-
over" (o "ri-combinazione"):
- si seleziona una posizione di incrocio "i", tale che 1in-1, dove n
è la lunghezza del cromosoma
- si creano 2 nuove stringhe scambiano i bit fra le posizioni i+1 e n,
per esempio se i=7:
      genitori                      figli
   00100011110001   CROSSOVER 00100011001100           00110011001100
                                                   
   11000011001100   11000011110001   11000011110001
                                              MUTAZIONE



l'operatore di cross-over non viene applicato a tutte le coppie di
genitori, ma viene applicato con una certa probabilità (PC0.80, ovvero
80%).
Si applica, alla popolazione ottenuta, l'operatore genetico di
"mutazione di fase" (o "mutazione puntuale"), che consiste nella
possibilità che ha ogni bit di cambiare di valore (da 0 a 1 e
viceversa). Tale possibilità ha una bassa probabilità (PM0.01, ovvero
1%). Lo scopo della mutazione è di consentire all'algoritmo di evitare
i minimi locali, impedendo che i cromosomi diventino troppo simili gli
uni agli altri, in modo da rallentare o bloccare l'evoluzione.
2. Nel caso dell’adattamento di equazioni il cross-over corrisponde
allo scambio di alcuni termini delle equazioni e le mutazioni
rappresentano modificazioni dell'equazione (aggiunta di un nuovo
termine, riduzione dell’equazione, …)
Si completa così un ciclo dell'algoritmo genetico e un nuovo ciclo può
essere applicato alla nuova popolazione. L'algoritmo ripete la
sequenza per un predeterminato numero di iterazioni e/o fino a
convergenza.
Varianti all'algoritmo genetico canonico
Strategia "Elitist"
Si mantengono inalterati gli individui col punteggio più alto, in modo
da non perdere gli individui migliori.
Algoritmo genetico steady-state
Ogni iterazione coinvolge un solo operatore genetico (di cross-over o
di mutazione) e i risultanti individui (2 o 1 rispettivamente)
sostituiscono i peggiori membri della popolazione.
Real-valued chromosomes
I cromosomi sono costituiti da una stringa di numeri reali. La
differenza principale è che la mutazione viene effettuata aggiungendo
un incremento casuale (spesso scelto da una distribuzione gaussiana) a
un parametro del cromosoma scelto casualmente.
Diverse tecniche di cross-over
One-point                                   A single crossover point
crossover                                   on both parents' organism
                                            strings is selected.
                                            All data beyond that point
                                            in either organism string
                                            is swapped between the two
                                            parent organisms.




Two-point                                   Two-point crossover calls
crossover                                   for two points to be se-
                                            lected on the parent or-
                                            ganism strings.
                                            Everything between the two
                                            points is swapped between
                                            the parent organisms




Cut and                                     The "cut and splice" ap-
splice                                      proach, results in a
                                            change in length of the
                                            children strings.
                                            The reason for this dif-
                                            ference is that each par-
                                            ent string has a separate
                                            choice of crossover point.




Uniform                                     Si confrontano uno a uno i
Crossover                                   bit dei vettori dei
(UX)                                        genitori.
                                            I bit diversi si scambiano
                                            con una probabilità
                                            prefissata usualmente 0.5.
Half                                        Si scambiano esattamente
Uniform                                     la metà dei bits che sono
Crossover                                   diversi. Per questo è
                                            necessario calcolare la
                                            distanza di Hamming
                                            (numero di bit diversi).
                                            Questo numero diviso per
                                            due rappresenta il numero
                                            di bit differenti che deve
                                            essere scambiato.
Convergenza
Uno dei problemi principali da tenere in considerazione quando si
implementa un algoritmo genetico è quello di prevenire la convergenza
prematura. Questo problema si può affrontare in vari modi:
1) controllando la pressione di selezione. La pressione di selezione è
la probabilità relativa che il migliore individui di una popolazione
venga scelto come genitore di un individuo con punteggio medio. Si può
controllare la pressione di selezione riscalando i punteggi calcolati
dalla funzione di fitness prima di selezionare le coppie di
"genitori". Ovviamente con lo stesso metodo si può rimediare al
problema inverso, ovvero se il programma impiega troppo tempo a
convergere.
2) usando il "modello a isole" che mantiene delle sotto-popolazioni
separate dalla popolazione totale e introduce un operatore genetico
che corrisponde al movimento di un individuo da un isola a un'altra.
3) applicando il "niching" (da nicchia) una tecnica con cui si cerca
di forzare gli individui lontano dalle regioni più popolate dello
spazio. Ciò si può ottenere calcolando una "distanza" fra tutti le
coppie di membri della popolazione e usando tale distanza per ridurre
la probabilità di selezionare coppie di individui simili.
Programmazione evolutiva
I nuovi individui vengono generati utilizzando solo l'operatore di
mutazione: ogni singolo genitore genera un figlio
Tipicamente i cromosomi sono rappresentati da una sequenza di numeri
reali.
Genitori e figli vengono valutati con una funzione di fitness.
Tutti i genitori e i figli competono per sopravvivere nella
generazione successiva.
Ciò si ottiene effettuando una serie di "tornei": ogni individuo si
confronta con un numero M di sfidanti, scelti in modo casuale
dall'intera popolazione di figli e genitori. Gli individui vengono poi
classificati in base al numero di vittorie ottenute. Passano alla
generazione successiva gli individui migliori.
La pressione di selezione cresce al crescere del numero degli sfidanti
M.
Strategie di evoluzione
Dati µ genitori, ad ogni iterazione vengono generati  figli (7µ),
utilizzando sia l'operatore di cross-over che l'operatore di
mutazione.
Genitori e figli vengono valutati con una funzione di fitness e
classificati tutti assieme: sopravvivono i primi µ classificati.
Alternativamente la selezione può riguardare solo i figli.
Lo scopo principale degli algoritmi evoluzionistici è quello di
effettuare ottimizzazioni globali. Comunque, poiché contengono
significativi elementi di casualità, non ci si può attendere ottenere
la stessa soluzione (per esempio il minimo assoluto) ogni volta che li
si utilizza, tranne che in casi semplici. Producono però soluzioni
vicine al minimo assoluto in un ammontare di tempo ragionevole.
Inoltre poiché mantengono una popolazione di possibili soluzioni, si
possono ottenere diverse soluzioni "ragionevoli" da un singolo "run".
Ciononostante è pratica comune quella di fare più "run" in modo da
ottenere una varietà di diverse soluzioni ed investigare la natura
della superficie di energia.

								
To top