Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Algoritmi genetici
1 Introduzione ........................................................................................................................... 1
2 Algoritmi Euristici e Metaeuristici ......................................................................................... 2
2.1 Algoritmi Euristici ............................................................................................................ 2
2.2 Algoritmi Metaeuristici ................................................................................................... 2
2.3 Combinatorial Optimization Problems .......................................................................... 3
3 Algoritmi Genetici .................................................................................................................. 5
3.1 Cenni generali ................................................................................................................. 5
3.2 Descrizione dellindividuo............................................................................................... 5
3.3 Processo Evolutivo .......................................................................................................... 6
3.4 Operatori ......................................................................................................................... 7
3.5 Metodologia .................................................................................................................... 8
4 Esempio implementativo ..................................................................................................... 10
4.1 Descrizione .................................................................................................................... 10
4.2 Dettagli .......................................................................................................................... 12
4.3 Risultati .......................................................................................................................... 13
5 Bibliografia e sitografia ........................................................................................................ 14
1 Introduzione
Sono numerosi i problemi di cui tuttoggi non si conosce ancora un algoritmo che permetta
la loro risoluzione in tempo accettabile. Per la risoluzione di questi problemi ci si affida
alleuristica.
In ambito informatico leuristica una tecnica designata alla risoluzione di problemi in un
modo pi rapido rispetto ai metodi classici, o nel caso in cui non sia stato ancora trovato un
algoritmo che li risolve di trovare una approssimazione della soluzione ottima. Infatti con
questa tecnica si sceglie di sacrificare gli aspetti dellottimalit, dellaccuratezza e della
precisione per ottener un minor tempo di computazione.
In una grande classe di problemi infatti non si dispone del tempo necessario per applicare
metodi esatti basati su modelli matematici, in questi casi ci si accontenta di soluzioni di buona
qualit, purch siano ottenute in tempi utili.
Con il passare degli anni la tecnica stata sviluppata presentando nuovi sotto-classi quali gli
algoritmi metaeuristici. Di questultima classe fanno parte gli algoritmi genetici, un paradigma
introdotto da Holland nel 1975.
1
2 Algoritmi Euristici e Metaeuristici
Gli algoritmi sviluppati utilizzando la tecnica euristica vengono appunto denominati algoritmi
euristici.
Gli algoritmi euristici possono essere classificati in tre macro-classi: costruttivi, di ricerca
locale e metaeuristici.
Gli algoritmi costruttivi sono orientati alla costruzione graduale di una soluzione ammissibile
sfruttando le loro propriet strutturali. Un esempio di questa classe il Closest Neighbor per
il problema del commesso viaggiatore (TSP), lalgoritmo consiste nel visitare sempre il cliente
pi vicino reiterando la procedura fino a che tutti i clienti non sono stati visitati.
Gli algoritmi di ricerca locale utilizzano uno schema di ricerca nello spazio delle soluzioni,
partendo da una soluzione euristica iniziale gi ammissibile ricercano nel vicinato dei possibili
miglioramenti iterando la procedura fino al presunto ottimo.
Gli algoritmi metauristici invece attuano una esplorazione pi approfondita dello spazio delle
soluzioni nelle regioni pi promettenti. Questi algoritmi implementano regole di ricerca e di
ricombinazione che permettono di raggiungere soluzioni di qualit migliore rispetto alle altre
classi euristiche, richiedendo per allo stesso tempo un tempo di calcolo solitamente pi
elevato.
Queste ultime due classi rappresentano un framework pi generale rispetto agli algoritmi
costruttivi, adatto ad essere utilizzato per la risoluzione di una variet maggiore di problemi.
A partire dagli anni 60/70 emerso un nuovo tipo di algoritmo approssimato che combina i
metodi base delleuristica per esplorare efficacemente lo spazio delle soluzioni. Questi
prendono il nome di algoritmi metaeuristici.
Come accennato nel paragrafo precedente le caratteristiche di questo tipo di algoritmi sono
lesplorazione approfondita di regioni dello spazio delle soluzioni considerate pi promettenti
delle altre e lutilizzo di regole di ricombinazione delle soluzioni. Unaltra caratteristica che li
distingue dagli algoritmi euristici classici la possibilit di passare attraverso soluzioni non
ammissibili o attraverso fasi non migliorative.
2
I risultati derivanti da questi algoritmi sono solitamente di qualit superiore rispetto a quelli
ricavabili con euristici classici. In genere, inoltre, questo tipo di procedure richiede la corretta
valutazione ed impostazione di un certo numero di parametri propri dellalgoritmo. Essendo
infatti un framework generale ladattamento dei parametri al problema da risolvere
garantisce una probabilit maggiore di ottenere la soluzione migliore possibile.
Diverse tipologie di tecniche metaeuristiche sono state presentate in letteratura come lAnt
Colony Optimization (ACO), lEvolutionary Computation (EC), lIterated Local Searchm,
Memetic Algorithms, Artificial Neural Networks.
Molti tecniche si sviluppano partendo da una soluzione iniziale e passa, ad ogni iterazione,
dalla soluzione corrente alla migliore soluzione tra i vicini finch non viene soddisfatto un
opportuno criterio di arresto, tempo di calcolo o ammissibilit della soluzione. In generale per
favorire la diversificazione ed impedire fasi di stallo intorno a minimi locali pu esser
necessario passare attraverso sequenze di soluzioni peggiorative. Nel caso invece degli
algoritmi genetici, legati allEvolutionary Computation, ad ogni passo viene esaminata una
popolazione di soluzioni: ogni popolazione deriva dalla precedente combinando i suoi migliori
elementi e scartando i peggiori. Negli Ant System, un algoritmo della classe dellAnt Colony
Optimization, numerose soluzioni sono create ad ogni passo sfruttando le informazioni
raccolte durante le iterazioni precedenti. Le reti neurali, invece, sono meccanismi in grado di
auto-regolare insiemi di coefficienti interni, progredendo verso soluzioni sempre migliori.
Molte tecniche metaeuristiche si basano su ripetute chiamate a metodi di algoritmi di ricerca
locale. Un insieme di problemi in cui la ricerca sta progredendo in questi ultimi anni sono i
Combinatorial Optimization Problems (CO). Lo sviluppo di algoritmi sempre pi efficaci che
permettano una risoluzione ottimale di questi problemi di primaria importanza per lintero
ambito industriale.
4
3 Algoritmi Genetici
Il paradigma alla base degli algoritmi genetici stato introdotto da Holland nel 1975 ed
parte dellinsieme di procedure dellEvolutionary Computation.
Gli algoritmi di Evolutionary Computation sono ispirati dalla capacit degli esseri viventi di
evolversi e adattarsi allambiente in cui vivono e possono dunque essere visti come il modello
computazionale del processo evolutivo presente in natura.
Lo spazio delle soluzioni viene esplorato utilizzando crossover (ricombinazione di due individui
per crearne di nuovi) e mutazioni (operatori che permettono un adattamento spontaneo
dellindividuo) e selezionando ad ogni iterazione (che prender il nome di generazione) gli
individui pi adatti a trasmettere le loro caratteristiche in base al loro fitness, calcolato
tramite unapposita funzione. Pi alto questo fitness, maggiore sar la probabilit che
lindividuo rimanga (o che le sue caratteristiche vengano passate) alla prossima generazione.
Ci sono fondamentalmente tre tipi di algoritmi evolutivi:
1. Evolutionary Programming e Evolutionary Strategies: utilizzati per problemi di
ottimizzazione continui
2. Genetic Algorithms: quelli su cui ci concentreremo, sono utilizzati per problemi di
ottimizzazione combinatori
le caratteristiche principali di questi algoritmi sono varie e andremo ad elencarne alcune nei
paragrafi a seguire.
5
Questo per differenziare la rappresentazione delle soluzioni dalle soluzioni stesse in quanto,
ogni individuo porta con s un set di propriet (codificate solitamente con n bit o come una
serie di interi) che possono essere ricombinate o mutate.
Ad ogni iterazione, devessere deciso quali individui andranno alla prossima generazione e
quali invece si fermeranno.
Se scegliamo solamente gli individui generati da una coppia della generazione precedente,
parliamo di generational replacement. Se invece permettiamo ad un individuo della
generazione corrente di passare a quella successiva, questo detto processo evolutivo steady
state.
Come anticipavamo, il passaggio dellindividuo o delle sue caratteristiche alla successiva
generazione permesso o meno in base ad una funzione di valutazione, fitness function, che
valuta uno o pi parametri scelti in modo coerente allobiettivo da raggiungere alla fine
dellalgoritmo.
Se un individuo non dovesse dunque risultare adeguato, viene eliminato o non gli viene
permesso di riprodursi per passare le sue caratteristiche alliterazione successiva.
Se un individuo pu essere ricombinato con qualunque altro individuo (come nel caso della
maggior parte degli Algoritmi Genetici) parliamo di unstructured populations altrimenti
parleremo di structured populations.
Come possiamo ovviamente intuire, se una popolazione ha un numero variabile ed essa si
restringe ad ogni iterazione, arriveremo ad avere uno o pochi pi individui che non trovano
un partner per dare inizio alla nuova generazione, permettendo cos una condizione di
terminazione dellalgoritmo.
6
3.4 Operatori
7
Lultimo operatore specifico degli algoritmi genetici quello di crossover. Questo operatore
si utilizza per variare i cromosomi di ogni individuo nel passaggio da una generazione alla
successiva. quindi un processo dove presi due o pi individui genitori viene generato una
soluzione figlio, lanalogo della riproduzione e del crossover biologico. Un esempio di
tecnica di crossover la single-point crossover dove, dati due genitori e presa la stringa di bit
che rappresenta le caratteristiche di ogni individuo esse vengono divise in due parti rispetto
a un singolo punto, detto crossover point. I figli derivanti da questa tecnica avranno i
cromosomi incrociati dei due genitori, il primo avr la prima parte del primo genitore e la
seconda del secondo genitore e viceversa. Esistono anche altri metodi che prevedono di
spezzare in pi punti questa stringa di bit (Two-point crossover e Uniform crossover)
3.5 Metodologia
8
1. Inizializzazione casuale della popolazione 0
2. Calcolo della funzione di fitness della popolazione 0
3. Ciclo
1. Seleziono due individui dalla popolazione x
2. Applico crossover ai due individui creando la popolazione x+1
3. Applico la mutazione alla popolazione x+1
4. Calcolo la funzione di fitness della popolazione x+1
4. Ripeto finch non raggiungo lobiettivo desiderato
Inizializzazione: durante questa fase viene scelta la dimensione della popolazione che
dipende da caso a caso in base alla natura del problema, di norma consiste in centinaia o
migliaia di possibili soluzioni. Spesso la popolazione iniziale viene generata a caso per
non escludere nessuna possibile soluzione.
Selezione: durante questa fase viene applicato loperatore di selezione per individuare
gli individui che andranno poi a influenzare la creazione della nuova generazione. Questa
selezione viene fatta in base alla funzione di fitness. In alcuni casi per pu essere
impossibile definire una funzione di fitness, si pu perci ricorrere alla valutazione
umana. La classe di algoritmi genetici che fa uso di questa tecnica prende il nome di
iteractive genetic algorithms (IEC).
Operatori genetici: il passo successivo alla selezione consiste nella generazione della
popolazione dagli individui selezionati nel passo precedenti combinandoli tra loro tramite gli
operatori di mutazione e crossover. A processo terminato il risultato della nuova
generazione avr generalmente un valore di fitness medio pi alto rispetto alla generazione
precedente. Anche se questi due operatori sono i pi conosciuti esistono anche altri
operatori genetici utilizzati per gli stessi scopi quali regrouping, colonization-extinction e
migration. La parte importante di questa fase scegliere in modo adeguato i parametri
relativi alla probabilit di mutazione, di crossover e la dimensione della popolazione. Una
probabilit troppo bassa nella mutazione porterebbe infatti a una variazione troppo bassa
dei geni portando a dei possibili stalli in punti di sub ottimo, al contrario un valore troppo
alto potrebbe portare alla perdita di soluzioni ottime.
9
4 Esempio implementativo
4.1 Descrizione
10
[1] Codice sorgente: https://github.com/garis/ProgettoSI
11
4.2 Dettagli
Funzione di fitness: =
1+
Essa stata creata apposta per questa particolare simulazione in modo che non privilegiasse
solo la mancanza di collisioni, ma anche la distanza percorsa, e, secondo il nostro giudizio,
esprime una semplice e buona valutazione del comportamento di una navicella.
12000
10000
8000
6000
Bont
4000
2000
0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
# Collisioni
Distanza 10000 Distanza 5000 Distanza 2500 Distanza 1250
Questa implementazione stata testata con popolazione da 52 e 128 elementi per ogni
generazione in cui:
110 della popolazione composto da navicelle scelte con il criterio della selection
roulette.
310 della popolazione ottenuto unendo 2 genotipi di due navicelle diverse scelte col
criterio della selection roulette,
610 della popolazione ottenuto mediante mutazione di genotipi di navicelle
selezionate sempre col criterio della selection roulette.
Ogni navicella ha a disposizione 90 bit nel genotipo che vengono usati per codificare i 5 vettori
di forza che usano i sensori. In particolare sono stati assegnati 9 bit per ogni componente (x
e y) di ciascun vettore.
12
4.3 Risultati
4000
3500
3000
2500
2000
1500
1000
500
0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
4000
3500
3000
2500
2000
1500
1000
500
0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
13
5 Bibliografia e sitografia
14