Algoritmi Genetici

Transcript

Algoritmi Genetici
AI – Sistemi Evolutivi
Algoritmi genetici
Programmazione evolutiva
Strategie evolutive
Particle Swarm Optimization (Teoria degli
sciami)
Ant Colony Optimization
Sistemi Evolutivi
Sistemi Evolutivi
I sistemi evolutivi (Evolutionary Computation) costituiscono una famiglia di metodi
(sviluppati teoricamente a partire dagli anni ’60 del XX secolo, ma implementati solo a
partire dagli anni ‘90) che rientrano nell’ambito dell’Intelligenza Artificiale.
Essi fondano il loro impianto teorico sulla possibilità di riprodurre artificialmente i
meccanismi evolutivi darwiniani e quelli dell’intelligenza “sociale”, di un gruppo di
individui, ognuno dei quali dotato di una propria intelligenza, ma in grado di
“collaborare” con altri individui.
Nella loro versione “artificiale” vengono utilizzati principalmente per affrontare
problemi di Ottimizzazione.
In generale un problema di ottimizzazione consiste nell’individuare i valori per cui una
certa funzione raggiunge un minimo o un massimo, con l’eventuale presenza di vincoli
su questi valori oppure sulla funzione stessa (ottimizzazione vincolata, constrained
optimization). L’ottimizzazione combinatoria è una sottoclasse di quella matematica, in
cui l'insieme ammissibile di soluzioni è definito in termini di strutture combinatorie
(quindi di natura discreta anziché continua).
Sistemi Evolutivi
Sistemi Evolutivi - Algoritmi genetici (GA)
Introdotti da John Holland(1) ispirandosi ai meccanismi della
Teoria dell’Evoluzione di C. Darwin, costituiscono oggi uno
dei metodi più potenti e diffusi per l’ottimizzazione di sistemi
non lineari complessi.
Le componenti di un GA sono:
Il modulo di codifica (generazione di geni e cromosomi);
La procedura di inizializzazione (creazione);
La funzione di valutazione e selezione (fitness, adattamento all’ambiente);
Il meccanismo di riproduzione (riproduzione, crossover);
Gli operatori genetici (mutazione);
L’accettazione e l’inserimento del nuovo individuo (nuova generazione).
(1)J.H.
Holland, Adaptation in Natural and Artificial Systems, University of Michigan Press, Ann Arbor, Michigan (1975); re-issued by MIT Press (1992)
Sistemi Evolutivi
Sistemi evolutivi - GA - Codifica
Codifica dei cromosomi
Il cromosoma deve contenere l’informazione
codificata della soluzione che rappresenta. La
codifica più utilizzata è quella binaria e quindi i
cromosomi ‘artificiali’ altro non sono che
stringhe di 0 e 1.
Cromosoma 1
1101100100110110
Cromosoma 2
1101111000011110
Se ogni cromosoma è costituito da una stringa binaria, ogni bit della stringa può
rappresentare di per sé una componente della soluzione, oppure l’intera stringa può
rappresentare un numero (reale, per es.).
Le modalità di codifica sono svariate, quella diretta di numeri interi o reali, quella di
permutazioni combinatorie, di stati digitali binari, ternari, etc.
Sistemi Evolutivi
Sistemi Evolutivi - GA - Riproduzione
Una volta che è stata definito il tipo di codifica, possiamo “generare” dei figli a partire
dai genitori.
La riproduzione avviene selezionando secondo una qualche modalità dei geni da entrambi
i genitori e creando una nuova generazione.
Esistono varie tecniche per fare questo, le più usate sono:
• Un punto: viene selezionato, in modo casuale, un singolo punto all’interno dei
cromosomi genitori che costituisce il punto di scambio di una parte del patrimonio
genetico;
Genitore 1
110110 | 0100110110
Genitore 2
110111 | 1000011110
Figlio 1
110110 | 1000011110
Figlio 2
110111 | 0100110110
Sistemi Evolutivi
Sistemi Evolutivi - GA - Riproduzione
Due punti: vengono scelti due punti all’interno dei cromosomi genitori che
selezionano una porzione che viene incrociata fra i due genitori;
Genitore 1
11011 | 00100 | 110110
Genitore 2
11011 | 11000 | 011110
Figlio 1
11011 | 11000 | 110110
Figlio 2
11011 | 00100 | 011110
Sistemi Evolutivi
Sistemi Evolutivi - GA - Riproduzione
Uniforme: i cromosomi “figli” vengono scelti da quelli genitori non mescolando
dei segmenti di codice, ma dei singoli geni, in modo casuale e in una
percentuale data da un “mixing ratio”
mix.Ratio = 0.5
Genitore 1
1101100100110110
Genitore 2
1101111000011110
Figlio 1
1101111100010110
Figlio 2
1100100000111110
Sistemi Evolutivi
Sistemi Evolutivi - GA - Riproduzione
Aritmetica: l’operatore di crossover agisce secondo le relazioni (λ è un fattore peso casuale):
• Figlio1 = λ⋅Genitore1 + (1- λ)⋅Genitore2
• Figlio2 = (1 – λ)⋅Genitore1 + λ⋅Genitore2
λ = 0.7
Genitore 1: (0.3)(1.4)(0.2)(7.4)
Genitore 2: (0.5)(4.5)(0.1)(5.6)
Figlio 1: (0.36)(2.33)(0.17)(6.86)
Figlio 2: (0.402)(2.981)(0.149)(6.842)
Sistemi Evolutivi
Sistemi Evolutivi - GA - Mutazione
La mutazione, mutuata dal meccanismo darwiniano, ha luogo in seguito alla
riproduzione, e assolve al compito di ridurre la possibilità di incappare in minimi locali
della funzione da ottimizzare.
Essa modifica, in modo casuale, alcuni dei geni della popolazione appena generata, in
caso di modifica binaria invertendone un ristretto numero, selezionato secondo
un’assegnata probabilità, da 0 a 1 o da 1 a 0.
Cromosoma figlio1
1101111000011110
Cromosoma figlio 2
1101100100110110
Crom. F.1 Mutato
1100111000011110
Crom. F.2 Mutato
1101101100110100
Sistemi Evolutivi
Sistemi Evolutivi - GA - Selezione
La selezione degli individui che daranno luogo alla riproduzione, anch’essa
mutuata dalla teoria darwiniana della selezione naturale, è il meccanismo
chiave che viene adottato per andare nella direzione della soluzione desiderata,
incrementando la Fitness della popolazione; esistono numerose alternative che
possono essere adottate.
• Roulette Wheel Selection:
1.[Sum] Calcola la somma delle fitness di tutti gli individui della popolazione = S.
2.[Select] Genera un numero casuale nell’intervallo (0,S) = r.
3.[Loop] Scansiona la popolazione e somma le fitness da 0 = s. Quando s supera r, fermati e
scegli l’ultimo individuo selezionato. Ripeti da 2.
Sistemi Evolutivi
Sistemi Evolutivi - GA - Selezione
Roulette Wheel Selection:
Fitness
1. [Sum] Calcola la somma delle
fitness di tutti gli individui della
popolazione = S.
2. [Select] Genera un numero casuale
nell’intervallo (0,S) = r.
3. [Loop] Scansiona la popolazione e
somma le fitness da 0 = s. Quando s
supera r, fermati e scegli l’ultimo
individuo selezionato. Ripeti da 2.
indiv 1; 5
indiv 6; 8
indiv 2; 3
indiv 5; 2
Esempio:
Somma delle Fitness: 35
Si estrae un numero random tra 0 e 35 (es. 11)
Si seleziona l’individuo il cui settore contiene il numero
estratto
Sistemi Evolutivi
indiv 4; 7
indiv 3; 10
Sistemi Evolutivi - GA - Selezione
• Rank Selection: Gli individui della popolazione vengono
riordinati secondo la loro fitness e ad ognuno viene assegnata una
nuova fitness relativa a questa graduatoria (al peggiore viene
assegnato 1, al migliore N, dove N è il numero dei cromosomi).
Vengono poi scelti gli individui genitori attingendo alla graduatoria
con una probabilità pari alla “fitness relativa”:
ρ
ρ
f (ak )
p(ak ) = N
ρ
∑ f (a j )
ρ
ρ
ak = individuok - simo; f (ak ) = fitnessdell'individuok - simo
j =1
Sistemi Evolutivi
Sistemi Evolutivi - GA - Selezione
Steady state Selection: Solo una parte (più o meno grande) di
popolazione viene sostituita da una generazione all’altra,
escludendo gli individui con i cromosomi peggiori e introducendo
al loro posto quelli generati dai migliori;
Sistemi Evolutivi
Sistemi Evolutivi - GA - Selezione
Elitism: questo è in realtà un accorgimento aggiuntivo al
meccanismo selettivo, che parte dalla considerazione che
riproduzione e mutazione possono avere come conseguenza negativa
la perdita degli individui “migliori”; per evitare ciò si può far
precedere i passi suddetti dalla preselezione dell’individuo (o di
pochi individui) avente il cromosoma migliore; è stato dimostrato
che l’elitismo può accelerare notevolmente la convergenza.
Sistemi Evolutivi
Sistemi Evolutivi - GA – Schema a blocchi
Inizializzazione
Creazione individui con cromosomi random
Calcolo Fitness degli individui
Criterio di
Stop
no
Selezione individui per la riproduzione
Riproduzione
Mutazione
Nuova generazione
Sistemi Evolutivi
Sistemi Evolutivi - GA - applicazioni
Domain
Application Types
Control
gas pipeline, pole balancing, missile evasion, pursuit
Design
Scheduling
semiconductor layout, aircraft design, keyboard
configuration, communication networks
manufacturing, facility scheduling, resource allocation
Robotics
trajectory planning
Machine Learning
Signal Processing
designing neural networks, improving classification
algorithms, classifier systems
filter design
Game Playing
poker, checkers, prisoner’s dilemma
Combinatorial
Optimization
set covering, travelling salesman, routing, bin packing,
graph colouring and partitioning
Sistemi Evolutivi
Esempio: massimo funzione
Si vuol trovare il punto di massimo della funzione:
, =
1
0.5
+
=
− 0.3 + − 0.3 + 0.1
−1 + −1
+ 0.1
nell’intervallo:
0≤
≤2e0≤
≤2
La soluzione è
= 1,
= 1( = 10.46)
Sistemi Evolutivi
massimo funzione
Codifica dei crosomi
Ogni individuo ha due crosomi Cx e Cy, rappresentati da due
byte che codificano le coordinate del punto.
La codifica usata è:
2
=
∗
=
256
∗
2
256
La fitness è il valore della funzione.
Sistemi Evolutivi
Esempio: Il problema del commesso viaggiatore
Siano date n città (nodi del grafo) collegate da
strade (archi del grafo).
A
E
Il valore di un arco è la lunghezza della strada
(o il costo di viaggio) che quell’arco
rappresenta.
Un commesso viaggiatore si propone di
visitare una ed una sola volta ciascuna città
(partendo da una qualsiasi e ritornandovi), in
modo da avere un percorso totale di
lunghezza (o costo) minimo.
Sistemi Evolutivi
8
5 B
F
3
D
C
Il problema del commesso viaggiatore
Matrice dei costi
A
B
C
D
E
F
A
-
5
7
4
8
6
B
5
-
3
9
2
8
C
7
3
-
4
7
6
D
4
9
4
-
5
1
E
8
2
7
5
-
3
F
6
8
6
1
3
-
Sistemi Evolutivi
Il problema del commesso viaggiatore
Ciascun individuo della popolazione è
rappresentato da una permutazione delle sei
città: per esempio
F,E,A,B,D,C
La funzione di fitness è data dal costo del
percorso dell’individuo (N.B. in questo caso si
vuol minimizzare la fitness).
Sistemi Evolutivi
Il problema del commesso viaggiatore
Codifica dei cromosomi
Ogni individuo ha 5 cromosomi, rappresentati da un byte.
Ciascuno di questi cromosomi indica la posizione sulla lista delle città non ancora scelte.
Esempio: il percorso F,A,E,B,D,C è rappresentato dalla sequenza di numeri interi:
5,0,3,0,1
5 – il 6° elemento della lista (indici a base 0) ABCDEF
-> F
0 – il 1° elemento della lista ABCDE
-> A
3 – il 4° elemento della lista BCDE
-> E
0 – il 1° elemento della lista BCD
-> B
1 – il 2° elemento della lista CD
-> D
Resta l’ultimo elemento possibile
-> C
Sistemi Evolutivi
Il problema del commesso viaggiatore
Codifica dei cromosomi
Il primo dei 5 numeri può variare da 0 a 5,
Il secondo da 0 a 4,
………
Il quinto da 0 a 1
Questi numeri sono individuati dai corrispondenti byte (cromosomi) con la seguente formula:
=
256
∗ (6 − ) = 0, … , 5
Sistemi Evolutivi
Genetic Algorithm, un esempio - Un metodo per la selezione
automatica delle frequenze di test in circuiti analogici basato su GA(1), 1
Il metodo si propone di selezionare l’insieme di frequenze ottime per eseguire diagnosi di guasto parametrica
multifrequenza dei circuiti analogici.
È un’applicazione tipica di un problema di ottimizzazione
multiparametrica, nel quale si vuole individuare un certo
numero di frequenze (numero che dipende dal numero dei
parametri da individuare) alle quali effettuare le misure
della risposta del circuito allo scopo di localizzare i guasti
parametrici eventualmente presenti nei componenti
testabili del circuito stesso. Il problema dell’inversione
delle funzioni misurate è nonlineare nelle incognite e
quello della giusta collocazione delle frequenze è arduo da
risolvere con metodi di ricerca tradizionali.
Funzione di rete
(Test point)
Elementi della matrice Jacobiana e
delle sue componenti calcolate rispetto alla sola ampiezza espressa in dB
(1)F.Grasso,
A.Luchetta, S.Manetti, M.C.Piccirilli, “A Method for the Automatic Selection of Test Frequencies in Analog Fault Diagnosis“, IEEE Trans. on
Instrumentations and Meaurements, Vol. 56, N. 6, pp. 2322-2329, December 2007.
Sistemi Evolutivi
Genetic Algorithm, un esempio - Un metodo per la selezione
automatica delle frequenze di test in circuiti analogici basato su GA, 2
L’idea è quella di utilizzare un metodo iterativo di Newton-Raphson per risolvere le funzioni di diagnosi di guasto e ricercare
l’insieme di frequenze di misura che minimizzino l’errore nella soluzione e accelerino la convergenza verso di essa.
È possibile dimostrare per mezzo di alcuni teoremi che:
1.
Per minimizzare l’errore nella soluzione è opportuno che il numero di condizionamento della matrice jacobiana associata alla funzione di
trasferimento relativa al test point in esame:
k(Jq) = ||Jq||2⋅||Jq-1||2
sia il più basso possibile; essendo esso sempre ≥ 1, deve essere il più vicino possibile all’unità.
2.
Per incrementare la rapidità di convergenza dell’algoritmo di Newton–Raphson, la norma della matrice inversa dello jacobiano ||Jq-1||2 deve essere
più piccola possibile.
Potendosi esprimere per mezzo della Decomposizione a valori Singolari (SVD):
k(Jq) = σMAX/σMIN
e
||Jq-1||2 = 1/σ2MIN
dove σMAX e σMIN rappresentano il massimo e il minimo valore singolare della matrice Jacobiana associata al test point, la funzione
obiettivo (la “Fitness”) dell’algoritmo genetico può essere presa pari al seguente indice (Test Index):
Sistemi Evolutivi
Genetic Algorithm, un esempio - Un metodo per la selezione automatica delle
frequenze di test in circuiti analogici basato su GA, 2
In questo caso nei geni dei cromosomi vengono
inserite le frequenze di test, utilizzando 16-bit di
word per codificare ciascuna di esse usando
opportuni offset e fattori di scala. Al fine di
migliorare la convergenza, il meccanismo elitario
trascrive senza alterazioni l’individuo migliore nella
generazione successiva. La “fitness” di ogni membro
è rappresentata dal T.I. che corrisponde a quelle
frequenze di test. Per evitare problemi numerici
dovuti ai valori reali dei componenti si procede con
la normalizzazione/denormalizzazione in ampiezza e
frequenza. L’algoritmo di arresta quando un T.I.
predefinito è stato raggiunto o dopo un numero
prefissato di iterazioni.
In concreto, la procedura di ricerca delle frequenze e diagnosi di guasto
consiste nel seguante algoritmo:
1. Partendo dai valori nominali dei componenti (vettore po), il GA
determina le frequenze di test;
2. Le equazioni di guasto sono risolte tramite l’algoritmo di Newton–
Raphson utilizzando le misure effettuate alle frequenze determinate al
passo 1;
3. Il GA determina nuove frequenze di test ripartendo dalla soluzione p
data al passo precedente
4. Per mezzo dell’algoritmo di Newton–Raphson viene determinata una
nuova soluzione p∗. Se è vero che, ∀ i, |(p∗i− pi)/pi|⋅100 ≤ δ, dove δ è
fissato a priori, stop; altrimenti, vai al passo 3.
Ipotizzando e simulando due componenti guasti
(C1 ed R1) e necessitando 3 frequenze di test,
dopo 3 iterazioni costituite rispettivamente di
2000, 1640 e 1800 generazioni di cromosomi, si
ricavano infine le 3 frequenze desiderate
(“ottime”): 1020 Hz, f2 = 1447 Hz, and f3 =2366
Hz, e i valori dei componenti guasti con un errore
dello 0.62% e dello 0.54%.
Sistemi Evolutivi