Sei sulla pagina 1di 26

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
indiv 1; 5
fitness di tutti gli individui della
indiv 6; 8
popolazione = S.
2. [Select] Genera un numero casuale
nell’intervallo (0,S) = r. indiv 2; 3
3. [Loop] Scansiona la popolazione e
somma le fitness da 0 = s. Quando s
supera r, fermati e scegli l’ultimo indiv 5; 2

individuo selezionato. Ripeti da 2.

Esempio:
Somma delle Fitness: 35
indiv 3; 10
Si estrae un numero random tra 0 e 35 (es. 11) indiv 4; 7
Si seleziona l’individuo il cui settore contiene il numero
estratto

Sistemi Evolutivi
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 ak = individuok - simo; f (ak ) = fitnessdell'individuok - simo
ρ
∑ f (a j )
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 semiconductor layout, aircraft design, keyboard


configuration, communication networks
Scheduling manufacturing, facility scheduling, resource allocation

Robotics trajectory planning

Machine Learning designing neural networks, improving classification


algorithms, classifier systems
Signal Processing filter design

Game Playing poker, checkers, prisoner’s dilemma

Combinatorial set covering, travelling salesman, routing, bin packing,


graph colouring and partitioning
Optimization

Sistemi Evolutivi
Esempio: massimo funzione

Si vuol trovare il punto di massimo della funzione:


, =
0.5 1
= +
− 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 2
= ∗ = ∗
256 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
Il valore di un arco è la lunghezza della strada E 8
5 B
(o il costo di viaggio) che quell’arco
rappresenta.
Un commesso viaggiatore si propone di F
3
visitare una ed una sola volta ciascuna città
(partendo da una qualsiasi e ritornandovi), in
C
modo da avere un percorso totale di D
lunghezza (o costo) minimo.

Sistemi Evolutivi
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:
= ∗ (6 − ) = 0, … , 5
256

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 In concreto, la procedura di ricerca delle frequenze e diagnosi di guasto
inserite le frequenze di test, utilizzando 16-bit di consiste nel seguante algoritmo:
word per codificare ciascuna di esse usando
opportuni offset e fattori di scala. Al fine di 1. Partendo dai valori nominali dei componenti (vettore po), il GA
migliorare la convergenza, il meccanismo elitario determina le frequenze di test;
trascrive senza alterazioni l’individuo migliore nella 2. Le equazioni di guasto sono risolte tramite l’algoritmo di Newton–
generazione successiva. La “fitness” di ogni membro Raphson utilizzando le misure effettuate alle frequenze determinate al
è rappresentata dal T.I. che corrisponde a quelle passo 1;
frequenze di test. Per evitare problemi numerici 3. Il GA determina nuove frequenze di test ripartendo dalla soluzione p
dovuti ai valori reali dei componenti si procede con data al passo precedente
la normalizzazione/denormalizzazione in ampiezza e 4. Per mezzo dell’algoritmo di Newton–Raphson viene determinata una
frequenza. L’algoritmo di arresta quando un T.I. nuova soluzione p∗. Se è vero che, ∀ i, |(p∗i− pi)/pi|⋅100 ≤ δ, dove δ è
predefinito è stato raggiunto o dopo un numero fissato a priori, stop; altrimenti, vai al passo 3.
prefissato di iterazioni.

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