Sei sulla pagina 1di 51

UNIVERSIT DEGLI STUDI DI PISA

Corso di Laurea in Ingegneria Informatica


Progettazione e realizzazione di un Progettazione e realizzazione di un Progettazione e realizzazione di un Progettazione e realizzazione di un
G GG Genetico con funzione di fitness a valori intervallari enetico con funzione di fitness a valori intervallari enetico con funzione di fitness a valori intervallari enetico con funzione di fitness a valori intervallari


Relatori : Relatori : Relatori : Relatori :
Prof. Francesco Marcelloni
Prof.ssa Beatrice Lazzerini

UNIVERSIT DEGLI STUDI DI PISA
Facolt di Ingegneria
Corso di Laurea in Ingegneria Informatica



Elaborato Finale


Progettazione e realizzazione di un Progettazione e realizzazione di un Progettazione e realizzazione di un Progettazione e realizzazione di un A AA Algoritmo lgoritmo lgoritmo lgoritmo
enetico con funzione di fitness a valori intervallari enetico con funzione di fitness a valori intervallari enetico con funzione di fitness a valori intervallari enetico con funzione di fitness a valori intervallari
oni

Anno Accademico 2010 Anno Accademico 2010 Anno Accademico 2010 Anno Accademico 2010/201 /201 /201 /2011 11 1
UNIVERSIT DEGLI STUDI DI PISA
Corso di Laurea in Ingegneria Informatica
lgoritmo lgoritmo lgoritmo lgoritmo
enetico con funzione di fitness a valori intervallari enetico con funzione di fitness a valori intervallari enetico con funzione di fitness a valori intervallari enetico con funzione di fitness a valori intervallari
Candidato: Candidato: Candidato: Candidato:
Riccardo Paoli




1

Indice Indice Indice Indice

1 11 1 Introduzione Introduzione Introduzione Introduzione
1.1 Obiettivi 3
1.2 Cenni sullAritmetica Intervallare 4
1.3 Reti Neurali Artificiali 5
1.4 Reti Neurali Intervallari 7
1.5 Algoritmi Genetici 8
2 22 2 Analisi e Ristrutturazione dellAlgoritmo Genetico Analisi e Ristrutturazione dellAlgoritmo Genetico Analisi e Ristrutturazione dellAlgoritmo Genetico Analisi e Ristrutturazione dellAlgoritmo Genetico
2.1 Il Concetto di Granularit 10
2.2 Addestramento della Rete 11
2.3 Ordinamento tra Intervalli 12
2.4 La Funzione di Fitness 15
2.5 Modifica del toolbox GENETIC 17
2.6 Algoritmi Genetico 20
3 33 3 Esperimenti Esperimenti Esperimenti Esperimenti
3.1 Costruzione del Dataset 23
3.2 Primo Gruppo di Esperimenti 27
3.3 Secondo Gruppo di Esperimenti 33
3.4 Terzo Gruppo di Esperimenti 40
4 44 4 Conclusioni Conclusioni Conclusioni Conclusioni
4.1 Risultati Raggiunti 48
4.2 Ringraziamenti 49
2

5 55 5 Bibliografia Bibliografia Bibliografia Bibliografia 50


3

1 11 1 Introduzione Introduzione Introduzione Introduzione
1.1 1.1 1.1 1.1 Obiettivi Obiettivi Obiettivi Obiettivi

L'obiettivo principale di questa tesi implementare attraverso MATLAB
1
servizi per
laddestramento e lanalisi di una Rete Neurale Multistrato in grado di elaborare dati
Intervallari.

Pi in particolare, laddestramento della rete basato su algoritmi genetici. La libreria
che consente di modellare Reti Neurali Intervallari, utilizza nellAlgoritmo Genetico un
errore numerico per implementare la funzione di costo da ottimizzare (fitness). La
fitness consente la selezione degli individui allinterno di una determinata popolazione.
In questa Tesi si cercher di modificare la libreria facendo in modo che utilizzi errori
intervallari anzich errori numerici. Ci implica lo sviluppo di opportuni metodi di
calcolo, di visualizzazione, e di ordinamento basati sullaritmetica degli intervalli.

A tale scopo si renderanno necessari quindi le seguenti azioni :
Integrare unaritmetica intervallare per le operazioni di calcolo dellerrore
medio;
Progettare un metodo di ordinamento parziale tra errori di tipo intervallare;
Codificare i due punti precedenti in modo tale da integrarli con la libreria
esistente.

Si dovr quindi riprogettare la struttura del sistema mantenendo per inalterate
alcune strutture e funzioni del progetto precedente, aggiungendo dei servizi per
rendere pi efficace ed efficiente l'interazione con l'utente e il significato dei risultati.










1
MATrixLABoratory, ambiente di elaborazione dellinformazione descritta mediante matrici.
4

1.2 1.2 1.2 1.2 Cenni su Cenni su Cenni su Cenni sullAritmetica Intervallare llAritmetica Intervallare llAritmetica Intervallare llAritmetica Intervallare
Una variabile intervallare

definita come :

, ,
rappresenta il set di tutti gli intervalli chiusi su e , sono rispettivamente il
minimo e il massimo dellintervallo rappresentato da

.
Un granulo K- dimensionale rappresentato da un vettore di variabili intervallari nella
seguente forma :

, ,


Come accade anche per elementi appartenenti ad altri insiemi in matematica, anche le
variabili intervallari possono essere espresse in una forma alternativa rispetto a quella
precedentemente riportata (si pensi ad esempio ai numeri complessi , esprimibili in
due diverse forme). Una variabile intervallare, infatti, pu essere espressa in termini di
centro e raggio nella maniera che segue :

, ,


2



2

Per le variabili intervallari sono definite alcune operazioni basilari che sono riassunte
di seguito nella tabella 1:
Tabella 1 aritmetica intervallare di base per le reti neurali
Operazione Operazione Operazione Operazione Realizzazione Realizzazione Realizzazione Realizzazione
Addition Addition Addition Addition , , ,
Real Real Real Real
Multiplication Multiplication Multiplication Multiplication
, ,
Subtraction Subtraction Subtraction Subtraction , , ,
Multiplication Multiplication Multiplication Multiplication , , min , , , , max , , ,
Absolute Value Absolute Value Absolute Value Absolute Value , max, , 0 , max,
Real Distance Real Distance Real Distance Real Distance , , , max , | |
Real Absolute Real Absolute Real Absolute Real Absolute
Value Value Value Value
, , , 0,0 max (||, ||)


5


1.3 1.3 1.3 1.3 Reti Neurali Artificiali Reti Neurali Artificiali Reti Neurali Artificiali Reti Neurali Artificiali
Le Reti Neurali Artificiali sono nate per riprodurre attivit tipiche del cervello umano.
A tale scopo ne sono state studiate le caratteristiche pi importanti. Nel Sistema
Nervoso esistono miliardi di neuroni. Un neurone formato da un corpo cellulare
elementare e da molti prolungamenti ramificati detti dendriti attraverso i quali il
neurone riceve segnali elettrici da altri neuroni. Ogni neurone ha anche un
prolungamento filamentoso detto assone. Allestremit lassone si ramifica formando
terminali attraverso i quali i segnali elettrici vengono trasmessi ad altre cellule. Tra il
terminale di un assone e la cellula ricevente esiste uno spazio che i segnali superano
per mezzo di sostanze chimiche dette neurotrasmettitori. Il punto di connessione tra
terminale e dendrite detto sinapsi.
Un neurone si attiva quando si verifica una differenza di potenziale tra linterno e
lesterno della cellula. Il cervello un calcolatore molto complesso, non lineare e
parallelo e, pur essendo costituito da elementi di elaborazione molto semplici (i
neuroni), in grado di eseguire computazioni estremamente complesse.
Quindi per riprodurre artificialmente il cervello umano occorre realizzare una rete di
elementi molto semplici che sia una struttura che abbia come propriet quelle di
essere distribuita e parallela, in grado quindi di apprendere e di generalizzare, cio di
produrre uscite corrette in corrispondenza di ingressi non incontrati durante la fase di
addestramento.

Figura 1 - Struttura di un neurone artificiale

Tipicamente il neurone ha molti ingressi e una sola uscita (Fig.1). Ogni ingresso ha
associato un peso, che determina la conducibilit del canale dingresso.


6

Lattivazione del neurone una funzione della somma pesata degli ingressi , detta non
a caso funzione di attivazione.
()


Nel modello di neurone rappresentato stata inclusa anche una soglia che ha
leffetto di abbassare il valore in ingresso al valore di attivazione.
Solitamente i neuroni sono raggruppati in layer (strati), ognuno dei quali incaricato
di svolgere un compito ben preciso: il layer di input, svolge la funzione di catturare gli
ingressi della rete, mentre lultimo (layer di output) ha il compito di restituire gli
output. Tutti gli altri sono definiti layer nascosti, e svolgono i calcoli necessari sui dati.
La struttura di una rete neurale con un solo layer nascosto rappresentata in Fig.2 .


Figura 2- Rete Neurale con un layer nascosto
Ogni neurone di uno strato nascosto ha come ingressi le connessioni di uscita dei
neuroni dello strato precedente. I valori in ingresso ad ogni neurone vengono sommati
tra loro e ad un determinato valore di soglia (spesso si considera lopposto della soglia
detto bias); il risultato largomento di unopportuna funzione di attivazione, che
restituisce un valore da passare ai neuroni dello strato successivo.
Quindi per ogni neurone nella Rete avremo una funzione di attivazione con la seguente
forma:
()



Le tecniche di apprendimento di una rete neurale possono essere di due tipologie:
supervisionato e non supervisionato.
La prima tecnica si basa sulla conoscenza di un insieme di ingressi e uscite
corrispondenti (valori target). Linsieme di tali esempi prende il nome di training set.
7

Inizialmente i pesi vengono inizializzati con valori casuali, in seguito aggiustati sulla
base di un errore calcolato come differenza tra luscita fornita dalla rete e i valori
target, finch non si raggiunge un errore considerato soddisfacente. A questo punto, se
il procedimento si svolto correttamente, la rete sar in grado di rispondere in modo
corretto e coerente con gli obiettivi preposti anche per valori di ingresso non
appartenenti al training set di partenza. In altre parole, la rete dimostrer di aver
imparato.
Una rete stratificata in cui il flusso in cui viaggia linformazione unidirezionale (non
ci sono cio anelli di reazione) viene definita rete feedforward multi-strato o Multi-
LayerPerceptron (MLP).


1.4 1.4 1.4 1.4 Reti Neurali Intervallari Reti Neurali Intervallari Reti Neurali Intervallari Reti Neurali Intervallari
Le Reti Neurali Intervallari si differenziano dalle reti neurali a valori numerici in
quanto le quantit che le modellano, cio ingressi,uscite e pesi, sono di natura
intervallare.

Una rete di questo tipo accetta come input un vettore di intervalli e,
conseguentemente, restituisce come output intervalli, riuscendo dunque a modellare
situazioni in cui i dati sono misurati in maniera empirica e quindi soggetti
inevitabilmente a un errore di misura non quantificabile a monte della misurazione
oppure casi in cui linformazione volutamente rappresentata in maniera aggregata.
Luscita di una Rete Neurale Intervallare pu essere calcolata mediante lapplicazione
degli operatori dellAritmetica Intervallare descritti in precedenza.


Figura 3 - Architettura di una Rete Neurale Intervallare

I pesi delle connessioni tra gli ingressi e il primo strato possono essere rappresentati
come:

,
, 1 , 1. L'attivazione di ciascun neurone j-esimo dello strato
intermedio si ottiene dalla somma della combinazione lineare dei pesi degli F valori
intervallari di ingresso X

e dei valori di soglia

,
.
8

I pesi e i valori di soglia (bias) sono intervalli e quindi questa combinazione lineare
risulta un nuovo intervallo.
L'uscita della rete Y

ottenuta come somma della combinazione linearecon i pesi

, 1delle uscite dello strato nascosto e i valori di soglia

.

1.5 1.5 1.5 1.5 Algoritmi Genetici Algoritmi Genetici Algoritmi Genetici Algoritmi Genetici
L'algoritmo genetico un algoritmo euristico di ricerca e ottimizzazione, ispirato al
principio della selezione naturale di Charles Darwin che regola l'evoluzione biologica.
La teoria dellevoluzione spiega come gli individui possano sopravvivere e svilupparsi
adattandosi progressivamente allambiente che li circonda. In particolare, solo quelli
particolarmente idonei hanno elevata possibilit di riprodursi, trasmettendo cos parte
del proprio patrimonio genetico ai figli.
Tra una generazione e laltra si introducono delle differenze che tendono a
personalizzare ogni individuo rendendolo idoneo allambiente in misura leggermente
migliore o peggiore rispetto al padre. Avanzando di generazioni, individui sempre
migliori rimpiazzeranno i padri, in modo dinamico e non troppo repentino, per
permettere ladattamento della specie ai cambiamenti dellambiente. Gli algoritmi
genetici partono da questa teoria per simulare la selezione naturale attraverso
processi computazionali.

Lidea alla base degli Algoritmi Genetici quella di codificare le soluzioni di un
problema attraverso una sequenza di simboli detta cromosoma. Usando una
popolazione di dimensione costante , ogni individuo quindi rappresenta una possibile
soluzione al problema.

Il problema a questo punto si rivela quello di misurare la qualit di ciascun individuo
presente nella popolazione. Ci pu essere fatto attraverso una particolare funzione
detta funzione di fitness. Tale funzione misurer ladattabilit di ciascun individuo
allambiente che lo circonda e lobiettivo dellAlgoritmo Genetico sar quello di trovare
lottimo globale per la funzione di fitness attraverso una procedura di ricerca iterativa.

Una popolazione pu essere rappresentata attraverso una matrice m x n nel seguente
modo :

,

,

,

,


Ogni riga della matrice un vettore ndimensionale che rappresenta un cromosoma,
ed ogni elemento di tale vettore rappresenta un gene.


Una volta che la fitness ha determinato la qualit e la bont di ogni individuo della
popolazione, crea una nuova matrice P applicando alcuni operatori che si ispirano alla
9

selezione naturale e genetica. Gli operatori e le relative operazioni sono riportati nella
tabella seguente:


Cross Cross Cross Cross Over Over Over Over


Figura 4 - Esempio di Cross - Over
Occorre scegliere due individui genitori e uno
o pi punti di taglio. Nel caso di un solo punto
di taglio (one-point cross-over), le porzioni di
genotipo alla sua destra vengono scambiate
tra di loro, generando cos due nuovi
discendenti il cui genoma deriva dal
rimescolamento di quello dei genitori



Mutazione Mutazione Mutazione Mutazione


Figura 5 - Esempio di Mutazione
Lapplicazione delloperatore provoca invece
lalterazione di singoli geni di un cromosoma,
aggiungendo alle componenti del genitore, con
una piccola probabilit pm, un rumore
gaussiano a media nulla



Selezione Selezione Selezione Selezione

La selezione degli individui che parteciperanno ad una nuova riproduzione subordinata al valore di fitness
associata ad ogni individuo. Gli individui con fitness pi alta sono quelli che risolvono meglio il problema di ricerca
dato e dunque devono essere privilegiati in questa fase, andando a formare la matrice Pi relativa alla iesima
generazione.







10

2 22 2 Analisi Analisi Analisi Analisi e Ristrutturazione dellAlgoritmo e Ristrutturazione dellAlgoritmo e Ristrutturazione dellAlgoritmo e Ristrutturazione dellAlgoritmo
Genetico Genetico Genetico Genetico

2. 2. 2. 2.1 11 1 Il concetto di Granularit Il concetto di Granularit Il concetto di Granularit Il concetto di Granularit
Levoluzione delle generazioni tramite lAlgoritmo Genetico deve essere governata da
alcuni vincoli che guidano lesplorazione entro limiti prestabiliti.
Il vincolo fondamentale che deve essere gestito in fase di progetto e in fase
sperimentale quello di granularit. Esso pu essere espresso come una coppia di
numeri nella seguente forma:



Questo intervallo rappresenta il range percentuale entro cui possono variare i pesi e i
bias della Rete. Si tratta quindi di un grado di libert che pu essere associato a pesi e
bias permettendo allutente di variare la risoluzione e la tolleranza del modello
generato nella fase di training.
In particolare, nella tesi vogliamo provare sperimentalmente le seguenti ipotesi.
Allaumentare del livello di granularit, rispetto ad una granularit propria dei dati, il
modello viene forzato ad essere pi grossolano, perch produrr uscite con maggiore
ampiezza, rispetto a quelle necessarie per caratterizzare landamento dei dati nel
dettaglio. Una scelta di questo tipo pu esser utile per individuare landamento
complessivo del modello.
Stabilire un limite massimo alla variazione percentuale dei parametri impedisce il
verificarsi del fenomeno del bound-explosion dei raggi dei valori di output, il che
potrebbe portare a valori di incertezza troppo elevati su alcune predizioni.
Se invece diminuiamo il livello di granularit, otteniamo un modello pi accurato e
preciso, in cui la variazione ammessa risulta inferiore: lAlgoritmo Genetico in questo
modo risulter maggiormente vincolato e potr discostarsi in misura minore dal
valore reale.
Quindi se lintervallo Vg viene stretto, il modello sar meno tollerante tender ad
avvicinarsi al caso numerico.
Se consideriamo il caso particolare in cui gG , il grado di libert sar annullato ed i
valori dei pesi e bias non subiranno alcuna variazione percentuale in quanto stiamo
imponendo un valore percentuale unico al raggio dei pesi, e non un set di valori;
lAlgoritmo Genetico deve semplicemente ottimizzare la posizione del centro in modo
che includa il peso iniziale.
Nel caso in cui si avesse gG0 allora la situazione sarebbe quella in cui i raggi degli
intervalli di pesi e bias sarebbero nulli e quindi lAlgoritmo Genetico non eseguir
alcun processo di ottimizzazione; infatti in tal caso significa accettare la soluzione reale
valida anche per il caso intervallare.


11


2. 2. 2. 2.2 22 2 Addestramento di un Addestramento di un Addestramento di un Addestramento di una aa a Rete Neurale Intervallare Rete Neurale Intervallare Rete Neurale Intervallare Rete Neurale Intervallare
Sia

un insieme di T campioni intervallari di input output. Come


approccio per laddestramento si calcola innanzitutto il centro di ogni hyperbox
risultante dal prodotto cartesiano degli intervalli come mostrato in Fig. 6 , in modo da
ottenere degli ordini di grandezza dei pesi della Rete.

Figura 6 - Addestramento di una Rete Numerica

Si otterr in questo modo un Dataset numerico

e quindi non si addestrer la


Rete Intervallare direttamente, ma una Rete a valori reali, usando algoritmi di training
come quelli di backpropagation o Levenberg-Marquadt. Dopo il training, otterremo
dei pesi numerici del tipo
,

rispettivamente per il layer intermedio e


lultimo layer. I pesi cos ottenuti forniscono soltanto unapprossimazione dellordine
di grandezza della soluzione intervallare e quindi occorre partire da essi per ottenere
dei pesi - intervallo ottimali.

Poich si ha la necessit di lavorare con numeri intervallari, lAlgoritmo Genetico dovr
riuscire ad ottenere dei risultati ottimali rispettando il vincolo di appartenenza citato
in precedenza. Questo pu essere fatto imponendo all Algoritmo Genetico due
condizioni :

1) Ottenere dei pesi intervallo tali che
,

,
,

,

2) Vincolare i raggi dei pesi intervallo ad uno schema fisso tale che
,

, dove G

rappresenta il vincolo di
granularit e fornisce un minimo e un massimo al diametro dei pesi intervallo.


LAlgoritmo Genetico dovr quindi minimizzare l'errore medio sul training set,
calcolato secondo l'aritmetica intervallare e considerate le uscite della rete (Fig. 7).
12


Figura 7 - Raffigurazione dellarea operativa di una Rete Intervallare

La Fig.8 mostra la codifica dei cromosomi usati nellAlgoritmo Genetico. Ogni gene
una coppia centro-raggio relativa a un peso o ad un bias. Come abbiamo notato, ogni
cromosoma rappresenta una possibile soluzione del problema di fitting, pertanto su
queste quantit che dobbiamo agire attraverso operatori di crossover e mutazione,
secondo la filosofia degli Algoritmi Genetici.


Figura 8 - Struttura di un Cromosoma


2. 2. 2. 2.3 33 3 Ordinament Ordinament Ordinament Ordinamento tra Intervalli o tra Intervalli o tra Intervalli o tra Intervalli
E necessario introdurre una relazione di ordinamento tra intervalli in modo tale da
stabilire un criterio logico che possa ordinare dati appartenenti a insiemi intervallari.
Le relazioni di ordinamento sono generalmente definite tra gli elementi di un insieme
A e consentono proprio di confrontare due elementi dellinsieme, stabilendo quale dei
due preceda laltro sulla relazione assegnata in partenza.
Definiamo , linsieme dei valori booleani 1 (True) e 0 (False).
Una relazione dordine R : S S B, definita per un insieme S, mappa il quadrato
cartesiano S S : (a, b) : aS, b S nellinsieme B.
Deve inoltre soddisfare le seguenti propriet:
Riflessivit : per ogni a S vale a R a
Antisimmetria : per ogni a,b S se aRb e bRa allora ab
Transitivit : per ogni a,b,c S se aRb e bRc allora risulta vero che aRc
dove con aRb si intende che la relazione ha valore 1 sulla coppia (a, b).
Una relazione dordine che soddisfa queste tre propriet definita ordinamento
parziale.

13

Un ordinamento parziale si definisce ordinamento totale se vale anche unulteriore
propriet :

Tricotomia : ogni a,b S vale che aRb oppure bRa

Ad esempio la relazione su stabilisce un ordinamento totale in quanto dati due
numeri x e y si pu sempre stabilire quale dei due precede laltro. Al contrario su


dati due vettori (

) e (

)non possibile determinare se uno sia


minore dellaltro e poich non esiste un criterio in questo senso,

non totalmente
ordinato. Anche nel campo complesso non possibile definire un ordinamento
totale, e, analogamente, nellinsieme . Per questi insiemi comunque possibile
introdurre delle relazioni di ordine parziale.

Per la ristrutturazione della libreria,si deciso di basare la relazione di ordinamento
tra due intervalli sul concetto di cardinalit delle configurazioni possibili dei loro
elementi. Si conta quante volte un elemento di un intervallo pu essere maggiore,
minore o uguale ad un elemento appartenente allaltro intervallo e si determina in
base alla cardinalit maggiore lintervallo che risulta minore dellaltro in termini di
ordinamento.
Se focalizziamo lattenzione su due intervalli generici , osserviamo che questi possono
venire a trovarsi in 3 posizioni relative :

1) 1) 1) 1) Intervalli completamente disgiunti Intervalli completamente disgiunti Intervalli completamente disgiunti Intervalli completamente disgiunti


Figura 9 - Intervalli completamente disgiunti
Se gli intervalli sono disgiunti allora sicuramente

, perch tutti gli elementi del primo


intervallo sono minori di tutti gli elementi del secondo.

2) 2) 2) 2) I II Intervalli totalmente sovrapposti ntervalli totalmente sovrapposti ntervalli totalmente sovrapposti ntervalli totalmente sovrapposti


Figura 10 - Intervalli totalmente sovrapposti
Siano

rispettivamente i sottoinsiemi di

a sinistra e destra di

. In questo caso le coppie


ordinate di elementi in cui il primo dei due risulta minore dellaltro sono quelle in cui entrambi
gli elementi si trovano in

ma il primo minore dellaltro, e quelle per cui il primo elemento si


trova in

ed il secondo in

. In definitiva

se ha il centro che ricade nella prima met di

. In caso contrario vale la relazione opposta. Se i centri sono sovrapposti risulta discriminante
il valore del raggio, nel senso che prevale lintervallo con il raggio maggiore.
14

3) 3) 3) 3) Intervalli parzialmente sovrapposti Intervalli parzialmente sovrapposti Intervalli parzialmente sovrapposti Intervalli parzialmente sovrapposti


Figura 11 - Intervalli parzialmente sovrapposti
Se gli intervalli sono parzialmente sovrapposti, si ha che quello che ha il massimo spostato pi
a destra maggiore dellaltro in quanto sicuramente esisteranno elementi appartenenti
allinsieme pi a destra che avranno una cardinalit maggiore relativamente agli elementi
dellaltro intervallo.


Per quantificare la differenza tra i due sottoinsiemi, ovvero per fornire un indice di
quanto effettivamente un intervallo sia migliore di un altro, si introduce
unimplementazione del metodo di ordinamento basato sui valori di centro e raggio
che rispecchia i criteri dettati in precedenza. Sia quindi il centro di un intervallo e il
rispettivo raggio. Possiamo classificare intervalli utilizzando il seguente criterio :
moltiplichiamo il valore del centro di ogni intervallo per un numero abbastanza grande
(es. 10
^5
) in modo tale da allargare la scala dei valori riferimento e in seguito
sommiamo al valore ottenuto il raggio originale. Si otterr quindi 10

.
Associando ad ogni intervallo il valore di corrispondente saremo in grado ottenere
un ordinamento tra gli intervalli presi in considerazione. E interessante notare che
utilizzando questo metodo sono coperti eventuali gli casi particolari che possono
venire a trovarsi in una delle tre situazioni analizzate in precedenza; infatti ad esempio
viene risolto automaticamente il problema di intervalli aventi il medesimo centro; in
quel caso risulta discriminante il valore del raggio. Notiamo che lunico caso in cui si
avrebbe luguaglianza tra due intervalli si ha proprio quando centro e raggio
corrispondono. Possiamo fare un semplice esempio per testare il funzionamento della
procedura prendendo in considerazione una situazione del mondo reale: se il giorno X
vengono rilevate temperature tra 23 e 25 gradi , quindi X123,25 , e nel giorno Y
temperature tra 20 e 25 gradi , quindi con X220,25 , avremo
n124*10
^5
1240001 e n122.5*10
^5
2.5225002.5 . Se lindice di comparazione
la freschezza avremo che Y X come intuitivamente si deduce.

E stata quindi creata una funzione apposita sortIntervalli che utilizza i criteri di
ordinamento enunciati in precedenza e attraverso un parametro di input riesce a
discriminare se lordinamento deve essere fatto in maniera crescente o decrescente.
Tale funzione oltre a ritornare il vettore di intervalli ordinati secondo il criterio scelto,
restituisce anche un vettore contente gli indici degli elementi ordinati.
Per effettuare lordinamento si scelto di servirsi di funzioni apposite messe a
disposizione da MatLab.





15

Si riporta di seguito limplementazione della funzione sortIntervalli in codice MatLab:


2. 2. 2. 2.4 44 4 La Funzione di Fitness La Funzione di Fitness La Funzione di Fitness La Funzione di Fitness
Uno degli obiettivi che questa tesi si pone quello di adeguare e ottimizzare la
funzione di fitness dellAlgoritmo Genetico alla natura intervallare della rete, dandone
unespressione in forma di massimi e minimi, piuttosto che di valori numerici.
La funzione di fitness che si intende minimizzare quella di errore medio, inteso non
come la media dei singoli errori intervallari, ma come distanza intervallare tra la
soluzione predetta dalla rete e il valore ottimo delloutput relativo al training set.
Se indichiamo con

li-esima uscita prodotta e con

li-esima uscita che era prevista,


in generale lerrore medio in un set di dati pu essere definito come segue :


1



Poich la funzione di fitness opera su intervalli, quello che vogliamo minimizzare
lerrore medio tra gli intervalli e quindi lespressione non sar pi coerente con quanto
descritto sopra ma verr espresso nella seguente forma :



Introducendo un errore intervallare nella funzione non si introducono semplificazioni
che , se usassimo un errore numerico, sarebbero presenti in quanto restringerebbero
linsieme dei dati , escludendo di fatto alcune soluzioni.
Usando un errore di tipo intervallare, si rende necessaria lapplicazione del criterio di
ordinamento tra intervalli illustrato in precedenza per non rischiare la perdita della
ricchezza di informazioni che deriva dalluso di dati intervallari.
function[ris,indice]=sortIntervalli(Vett,tipo)
%determino i valori pesati degli intervalli
for i=1:size(Vett,1),
centro_r=get(Vett(i),1);
centro=centro_r(:,1);
raggio=centro_r(:,2);
valori_pesati(i)=centro*(10^8)+raggio;
end
% discrimino il tipo di ordinamento a seconda dell'indice
if tipo==0,
%ordinamento crescente
[temp,indice]=sort(valori_pesati);
ris=Vett(indice);
else
%ordinamento decrescente
[temp,indice]=sort(-valori_pesati);
ris=Vett(indice);
end
end
16

Attualmente la libreria esistente, pur avendo come input un insieme di dati di tipo
intervallare restituisce un errore in forma numerica. E necessario dunque scrivere una
nuova funzione di fitness da integrare nella classe GeneticAlgorithm affinch lerrore
restituito sia non pi un numero bens un intervallo . Loutput di tale funzione dovr
quindi essere un vettore contente lerrore medio intervallare di ogni individuo.

Se chiamiamo tale vettore fitV avremo la seguente struttura :


.



La libreria esistente prevede che tale funzione sia uno dei servizi offerti dalla Classe
GeneticAlgorithm che implementa le funzionalit di un Algoritmo Genetico il cui
comportamento conforme a quanto descritto nel Capitolo 1.

In forma di codice MATLAB quindi la funzione di fitness pu essere scritta come
segue:






function fitV=fitness(this,pop,X,Y,nets)
for i=1:size(X,2)
XX{i}=get(X(i));
end
YY{1}=get(Y(1)); %
for i=1:size(pop,1)
nets=acquisition(nets,fromPopVector2IntervalNet(this,pop(i,:),nets));
ERR=NumeroIntervallare(0,0);
tot=NumeroIntervallare(0,0);
for j=1:size(XX{1},1)
INPUT(1)=NumeroIntervallare(XX{1}(j,1),XX{1}(j,2));
for erre=1:size(XX,2)
INPUT(erre)=NumeroIntervallare(XX{erre}(j,1),XX{erre}(j,2));
End
%risultato ottenuto
out=simIntervallare(nets,INPUT);
%risultato atteso
OUTPUT=NumeroIntervallare(YY{1}(j,1),YY{1}(j,2));
%differenza tra intervalli di output
Differenza=subtraction(OUTPUT,out);
%valore assoluto della differenza
ERR(j)=absoluteValue(Differenza);
%aggiungo lerrore j-esimo agli altri
tot=addition(tot,ERR(j));
end
%faccio la media intervallare
ERR=realMultiplication(tot,1/size(XX{1},1));
%creo il vettore di uscita
fitV(i,:)=ERR;
end
return;

17

2. 2. 2. 2.5 55 5 Modifica del toolbox GENETIC Modifica del toolbox GENETIC Modifica del toolbox GENETIC Modifica del toolbox GENETIC
Una volta effettuata la modifica alla funzione di fitness , e resa questa intervallare ,
necessario procedere ad una modifica della struttura del toolbox GENETIC sviluppato
dallUniversit di Sheffield e che racchiude al proprio interno quelle operazioni
caratteristiche della genetica viste nel Capitolo 1 quali ad esempio il cross-over e la
mutazione.
Dopo un analisi della struttura generale, si evince che le funzioni da modificare, o per
meglio dire adattare, sono essenzialmente due : la funzione ranking e la funzione
reins.
La funzione di ranking in grado di ordinare un certo numero di individui sulla base
dei valori della funzione obiettivo su di essi calcolata (nel nostro caso la funzione di
fitness), restituendo un vettore contenente i corrispondenti valori di fitness degli
individui. Lordinamento fatto per minimizzazione, ossia si assegna un valore di
fitness pi alta a quegli individui che hanno un valore della funzione obiettivo pi
basso (nel nostro caso, gli individui con errore intervallare pi piccolo avranno una
fitness pi alta).
Lattribuzione del valore di fitness discriminato a seconda del caso in cui si proceda
con un metodo lineare o non lineare.
Nel caso del metodo lineare si segue la seguente formula :

() 2 2
( 1)
( 1)


Il metodo non lineare invece assegna i valori di fitness degli Individui secondo il
criterio seguente:
()

()



dove X calcolato come radice del polinomio( 1)

0

In entrambe le formule SP rappresenta la Selective Pressure, cio il valore di fitness
pi alto che si pu attribuire.
Gli algoritmi per entrambi i tipi di ranking, lineare o non lineare, per prima cosa
ordinano i valori della funzione obiettivo in maniera decrescente. Lindividuo meno in
forma viene posto nella posizione iniziale e quello con un valore migliore in posizione
finale Nind , dove Nind rappresenta il numero di individui della popolazione.
Un valore di fitness poi assegnato a ciascun individuo a seconda della sua posizione
sulla base delle regole sopra enunciate.
La modifica eseguita su questa funzione sta nel fatto che se in origine dovevano essere
ordinati vettori di reali adesso si deve procedere con un ordinamento di intervalli per
stabilire lattribuzione dei valori di fitness.




18

Si riporta limplementazione della funzione in versione parziale sottolineandone
soltanto gli elementi modificati in quanto lo schema di funzionamento stato descritto
in precedenza :



La funzione diversi stata implementata per ovviare alla mancanza di una funzione
standard che confronti degli intervalli tra di loro. Si tratta di una funzionalit
assolutamente necessaria per la conversione da numerico a intervallare della ranking
e il suo scopo quello di restituire gli indici degli elementi non identici, che nel campo
degli intervalli corrisponde a verificare la coincidenza o meno degli estremi degli
intervalli stessi.
Infatti date due variabili intervallari

si ha che:

, ,

,

Il risultato di tale funzione quindi coerente con quanto osservato in precedenza a
proposito dellordinamento parziale degli intervalli. Infatti se applicassimo il metodo
di ordinamento a due intervalli coincidenti, non sarebbe svolto alcun processo di
ordinamento in quanto i valori di centro e raggio dei due intervalli coinciderebbero,
cosa che non accadrebbe se gli intervalli fossero diversi e quindi soggetti ad un
ordinamento parziale.







function FitnV = ranking(ObjV, RFun, SUBPOP);

Controllo parametri di input Controllo parametri di input Controllo parametri di input Controllo parametri di input
Ca Ca Ca Cal ll lcolo dei valori di f colo dei valori di f colo dei valori di f colo dei valori di fitness e assegnamento allarray RFun itness e assegnamento allarray RFun itness e assegnamento allarray RFun itness e assegnamento allarray RFun

% Copia dellattuale subpopolazione
ObjVSub = ObjV((irun-1)*Nind+1:irun*Nind);
% ordinamento dei valori
[ans,ix] = sortIntervalli(ObjVSub,1);
% Array di intervallic ordinati
Sorted = ObjVSub(ix);
% Assegnamento delle fitness in accordo con RFun
i = 1;
FitnVSub = zeros(Nind,1);
for j = diversi(Sorted,Sorted,Nind),
FitnVSub(i:j) = sum(RFun(i:j)) * ones(j-i+1,1) / (j-i+1);
i =j+1;
end

Controllo Controllo Controllo Controllo e ritorno dei risultati e ritorno dei risultati e ritorno dei risultati e ritorno dei risultati

end
19

E riportato di seguito il codice MatLab della funzione diversi :



La funzione reins permette di reinserire i discendenti nella popolazione dalla quale
sono derivati, rimpiazzando eventualmente i genitori. Il criterio con cui viene
effettuata questa operazione di tipo fitness-based: i discendenti rimpiazzano i padri
con le fitness peggiori, consentendo al patrimonio genetico della popolazione di
evolvere sempre, con una tendenza costantemente orientata al progressivo
miglioramento. La modifica effettuata a tale funzione ricalca quanto visto per la
funzione di ranking ed stata necessaria per lordinamento degli intervalli che sono
stati ricavati applicando la funzione fitness alla popolazione originale e alla
popolazione dei derivati da questa.


















function [objDiv]=diversi(vett1,vett2,N)
k=1;
%scopro quali elementi sono diversi
for i=1:N-1,
V1=get(vett1(i));
V2=get(vett2(i+1));
%estraggo caratteristiche degli intervalli
V1_x=V1(1);
V1_y=V1(2);
V2_x=V2(1);
V2_y=V2(2);
if V1_x ~= V2_x && V1_y ~= V2_y,
%se elementi sono diversi allora aggiungo lindice
objDiv(k)=i;
k=k+1;
end
end
%aggiungo l'ultimo elemento di valore N
objDiv(k)=N;
end
20

2. 2. 2. 2.6 66 6 Algoritmo Genetico Algoritmo Genetico Algoritmo Genetico Algoritmo Genetico
Uno degli obiettivi che ci prefissiamo di stabilire, quello di adattare la natura
fondamentalmente numerica dellAlgoritmo Genetico a quella intervallare utilizzata in
questa Tesi. Dopo aver implementato le modifiche alla funzione di fitness e a quelle di
ranking e reins, necessario analizzare attentamente come queste modifiche si
possono ripercuotere sullesecuzione dellalgoritmo in quanto, a differenza del caso
numerico, lordinamento tra intervalli un ordinamento parziale.
Una volta stabiliti gli errori intervallari per ogni individuo tramite la fitness, si effettua
la classifica fitness-based tramite la ranking ed in seguito si passa ad utilizzare gli
operatori di crossover e mutazione visti nel Capitolo 1 per creare una nuova
popolazione modificata e migliorata rispetto a quella precedente.
Le funzioni di libreria utilizzate nellimplementazione dellAlgoritmo Genetico (oltre
alla ranking e alla reins viste in precedenza) sono :
select select select select : serve a selezionare un certo numero di individui di una popolazione,
restituendo gli individui selezionati in una nuova popolazione.
La funzione accetta come argomento un vettore contenente i valori di fitness
degli individui, che saranno interpretati dalla select come valori di probabilit di
selezione (individui con fitness pi alta avranno dunque maggiore probabilit di
essere selezionati). Tale funzione non ha avuto bisogno di adeguamenti in
quanto riceve come input i valori di fitness scelti dalla ranking.

xovmp xovmp xovmp xovmp: ha lo scopo di realizzare un cross-over multi-point tra coppie di
individui contenuti nella medesima popolazione, e ritorna una nuova
popolazione sui cui individui stato applicato tale operatore. E possibile
specificare come argomenti alcuni parametri che permettono di precisare il tipo
di cross-over.

mutate mutate mutate mutate: attraverso questa funzione possibile realizzare una mutazione di
quantit casuali su un certo numero di individui appartenenti ad una
popolazione, passata come argomento.
Il rate di mutazione anchesso passato come argomento e rappresenta la
probabilit di mutazione di ogni variabile. Il ritorno della funzione costituito
dalla nuova popolazione mutata.

Poich limplementazione originale considerava un errore numerico , stato anche
necessario modificare concettualmente la formula di arresto dellAlgoritmo,
considerando un errore intervallare. Infatti si interpreta lerrore per arresto non come
lerrore medio ma come la differenza tra estremi dellerrore intervallare ottenuto alli-
esima iterazione dellalgoritmo. Inoltre , sono stati modificati i parametri che venivano
mostrati con la funzione display sempre per necessit di adeguamento al caso
Intervallare.


21

Gli operatori applicati sui cromosomi sono un two-points cross-over e il seguente tipo
di mutazione:

Viene scelta casualmente una percentuale dei geni che subiscono mutazione
Viene stabilito un intervallo di granularit forma percentuale ,
Vengono rimpiazzati i valori correnti di ogni gene selezionato estraendo
casualmente due valori, denominati rispettivamente
,
e
,
, nei due intervalli

,
()
,
,
()

,
()

,
,
,
()

,


Il primo intervallo direttamente in relazione con la definizione di granularit e
permette il rispetto del vincolo di granularit.
La definizione del secondo intervallo segue immediatamente alla determinazione di

,
, ossia i centri possono assumere come valore massimo i propri valori aumentati
dei raggi, e come valore minimo i propri valori decurtati dei raggi. Questo soddisfa i
criteri sullevoluzione di una popolazione.
Lo schema di funzionamento dellAlgoritmo Genetico, espresso in codice MatLab il
seguente :




function [var var_error] = performGA(this,nets,X,Y)
%intervallo di granularit
g = this.granularity;
%errore obiettivo
objErr = this.objErr;
%numero di generazioni del GA
maxTry = this.numGenGa;
%percentuale di CrossOver
crossoverRate = this.crossoverRate;
for i=1:size(nets,2)
%creo la popolazione originale
population(i,:)=fromIntervalNet2PopVector(nets{i});
end
GGAP = 0.9;
err=[10^9;0];
gen=0;
n=get(nets{1},0);
n=n.biases{1}.size;
display(population);
centri_originali=population(1,1:2:size(population,2));
diffErrore=(err(1)-err(2));
while (gen < maxTry && diffErrore>objErr)
%ottengo gli errori intervallari
objV=fitness(this,population,X,Y,nets{1});
%classifico gli elementi con tecnica fitness-based
fitV= ranking (objV);
%estraggo i figli
selCh = select('sus',population,fitV,GGAP);
% mutazione con rateo 0.6
selCh = xovmp(selCh,crossoverRate,0,1);
%fielDR raggi fielDR=[min;max]
fielDR_raggi=[abs(centri_originali*g(1));abs(centri_originali*g(2))];

22











% mutazione raggi
selCh_radius=mutate('mutbga', selCh(:,2:2:size(population,2)),
fielDR_raggi,8/size(population,2));
%fielDR centri
fielDR_centri=[centri_originali-min(selCh_radius);
centri_originali+min(selCh_radius)];
% mutazione centri
selCh_center = mutate('mutbga', selCh(:,1:2:size(population,2)),
fielDR_centri,8/size(population,2));
selCh(:,1:2:size(population,2))=selCh_center;
selCh(:,2:2:size(population,2))=selCh_radius;
fitSons=fitness(this,selCh,X,Y,nets{1});
%creo la nuova popolazione
[population objV]=reins(population,selCh,1,1,objV,fitSons);
%ordino le fitness
errmin_minmax=sortIntervalli(fitSons,0);
%assegno l'errore minimo e lo visualizzo
err=errmin_minmax(1);
display(get(err));
gen=gen+1;
var_error(gen)=err;
%rinfresco la differenza di errore commesso
temp=get(err);
diffErrore=temp(2)-temp(1);
display(gen);
end
%seleziono l'individuo con errore minore
display(population);
fitV=ranking(objV);
if (gen ~= 0)
index=0;
k=max(fitV);
for i=1:size(fitV,1)
if(fitV(i)==k)
index=i;
end
end
var=population(index,:);
end
return;

23


3 33 3 Esperimenti Esperimenti Esperimenti Esperimenti

3 33 3. .. .1 11 1 Costruzione del Dataset Costruzione del Dataset Costruzione del Dataset Costruzione del Dataset
Per effettuare gli esperimenti che riuscissero a testare la bont delle operazioni
effettuate dal Sistema, ed in particolare dallAlgoritmo Genetico , stato scelto di
utilizzare un Dataset che avesse caratteristiche peculiari tali da evidenziare eventuali
falle nel funzionamento generale.
Dopo unattenta valutazione di quali caratteristiche il Dataset dovesse possedere, si
optato per un insieme di dati che avessero un andamento generale in media non
costante e dei cambiamenti di concavit frequenti; sono state effettuate queste scelte
in modo tale da verificare leffettiva adattabilit di un approccio totalmente
intervallare ad una situazione che non si discosta in maniera significativa da casi reali
e quindi preferibile ad una soluzione totalmente sintetica nella quale non sarebbero
stati presenti quei contributi di rumore che caratterizzano i dati reali.
Originariamente stata presa come base di partenza il grafico dello Spread tra i titoli
di Stato della Germania e quelli del Portogallo con rendimento decennale misurato
nellultimo anno (Fig. 12).
Si ipotizza che tali dati veri siano medi, e che i campionamenti originari siano
distribuiti secondo una variabile aleatoria radialmente costante in un intorno del
punto del grafico. I campioni originari vengono ricostruiti con metodo Monte Carlo,
ossia generando una serie di numeri che seguono la distribuzione di probabilit che si
suppone abbia il fenomeno da indagare.
In altri termini, la simulazione Monte Carlo calcola una serie di realizzazioni possibili
del fenomeno in esame. Una volta calcolato questi campioni casuali, la simulazione
esegue delle 'misure' delle grandezze di interesse su tale campione. La simulazione
Monte Carlo ben eseguita se il valore medio di queste misure sulle realizzazioni del
sistema converge al valore vero.
Il risultato stato quello di riuscire a ricreare una sorgente di dati nel quale ogni pixel
rappresenta una possibile stima dello Spread.


24



Figura 12 - Spread tra Titoli di Stato Tedeschi e Portoghesi decennali


Figura 13Grafico dello Spread ottenuto con Metodo Monte-Carlo e dettaglio del Grafico

In conseguenza del fatto che tali dati originari sono soggetti a rumore , stata effettuata
un operazione di granulazione tramite Clustering dei dati in modo tale creare Dataset
completamente intervallari. Il Data Clustering il processo di divisione elementi di
dati in classi o gruppi in modo che gli elementi nella stessa classe siano il pi simili
possibile, e punti in classi diverse siano dissimili. A seconda della natura dei dati e le
finalit per le quali il Clustering in uso, diverse misure di somiglianza possono essere
utilizzate per inserire gli elementi in classi, dove la misura di similarit controlla come
i clusters si formano; nel caso del grafico dello Spread stato utilizzato un algoritmo di
Clustering Fuzzy C-Means (FCM) con distanza Euclidea. Dagli insiemi fuzzy ottenuti, i
rettangoli sono stati generati tramite loperatore lamda-cut.
Sono stati creati 2 Dataset di tipo intervallare (Dataset A e DatasetB) per verificare il
comportamento dellAlgoritmo Genetico in situazioni diverse; il primo dataset, creato
25

con lalgoritmo FCM con lambda-cut pari a 0.25 e numero di clusters pari a 180,
presenta degli hyperbox molto stretti e in numero molto elevato tanto che
landamento della curva si avvicina molto al caso non intervallare. Il secondo Dataset
invece stato ottenuto aumentando la dimensione di ogni hyperbox ma al tempo
stesso diminuendone il numero totale; infatti in questo caso lalgoritmo di Clustering
FCM stato utilizzato con lambda-cut pari a 0.15 e numero di clusters pari a 50 e
landamento grafico segue in linea di massima quello del Dataset originale ma gli
elementi pi peculiari ,quali i frequenti cambiamenti di concavit, sono meno
accentuati.
Di seguito vengono mostrati i Dataset Intervallare ottenuti attraverso le diverse
applicazioni dellalgoritmo di Clustering FCM.


Figura 14Primo Dataset Intervallare ottenuto (Dataset A)

Figura 15Secondo Dataset Intervallare ottenuto (Dataset B)
26

Come si pu osservare il Dataset Intervallare possiede le peculiarit del grafico dello
Spread originale ed inoltre soddisfa le propriet precedentemente elencate in quanto
possiede diversi cambi di concavit ed il suo andamento generale crescente in media.
Gli esperimenti che sono stati effettuati su questo Dataset mirano a verificare alcune
propriet che lAlgoritmo Genetico dovrebbe possedere. In particolare , discriminando
a seconda della risoluzione con cui osserviamo il modello (cio lordine di grandezza
impostato per il livello di Granularit) si pu osservare che :

A bassa risoluzione lAlgoritmo Genetico dovrebbe riuscire ad approssimare
landamento di massima del Dataset ; auspicabile supporre che con un modello
di questo tipo non si riescano ad apprezzare esattamente i cambiamenti di
concavit presenti . Quindi nei modelli prodotti ci aspetteremo che la banda
risultante approssimasse landamento generale del Dataset , in alcuni casi
tagliando il reale sviluppo della serie dei dati. Ci aspetteremo inoltre un grafico
dellerrore intervallare che avr il massimo che scende ed il minimo che sale,
avendo lAlgoritmo Genetico una discreta libert di agire data la Granularit
elevata.



Con un modello ad alta risoluzione lAlgoritmo Genetico dovrebbe riuscire ad
approssimare in maniera molto precisa landamento del Dataset. Poich il
Dataset scelto presenta diversi cambiamenti di concavit , alcuni dei quali anche
con degli angoli piuttosto stretti auspicabile supporre che con un modello ad
alta risoluzione si riescano ad apprezzare quasi esattamente questi
cambiamenti . Quindi nei modelli prodotti ci aspetteremo che la banda
risultante approssimasse landamento generale del dataset , seguendo quindi
landamento originale. Ci aspetteremo inoltre un grafico dellerrore che avr il
massimo ed il minimo che modificano di poco la loro prestazione, essendo la
libert dellAlgoritmo Genetico molto limitata.











27

3 33 3. .. .2 22 2 Primo Gruppo di Esperimenti Primo Gruppo di Esperimenti Primo Gruppo di Esperimenti Primo Gruppo di Esperimenti
Nel primo gruppo si scelto di utilizzare un modello a bassa risoluzione con il Dataset
A, con intervallo di Granularit 0% 4%. Sono stati condotti 3 esperimenti con il
metodo del 10-foldcross , ognuno dei quali con un numero di neuroni totali diverso.
Nel primo esperimento infatti sono stati utilizzati 7 Neuroni, nel secondo 10 e nel terzo
15. Il numero relativamente basso di neuroni giustificato dal fatto che in modello a
bassa risoluzione, un numero troppo elevato di neuroni comporterebbe un overhead
tale da rendere i risultati prodotti non significativi.
1. ESPERIMENTO CON 7 NEURONI


Figura 16 - Andamento generale dell'errore nel Training Set con 7 Neuroni

Figura17 Modello prodotto all'iterazione 4
28



Figura 18 - Modello prodotto all'iterazione 7

Figura 19 - Modello prodotto all'iterazione 9
In questo esperimento possiamo osservare che lerrore intervallare rispecchia le
aspettative in quanto , al crescere del numero di generazioni, il massimo scende ed
il minimo sale. I modelli riportati dimostrano come la rete si comporti in accordo
con le supposizioni fatte allinizio in quanto ,in corrispondenza delle variazioni di
concavit, queste vengono tagliate di netto dal modello risultante.

29

2. ESPERIMENTO CON 10 NEURONI


Figura 20 - Andamento generale dell'errore nel Training Set con 10 Neuroni


Figura 21 - Modello prodotto all'iterazione 5

30


Figura 22 - Modello prodotto all'iterazione 8

Figura 23 - Modello prodotto all'iterazione 10
Anche in questo esperimento con 10 neuroni possiamo osservare che lerrore
intervallare rispecchia le aspettative in quanto , al crescere del numero di generazioni,
il massimo scende ed il minimo sale. I modelli riportati dimostrano come la rete si
comporti in accordo con le supposizioni fatte allinizio in quanto ,in corrispondenza
31

delle variazioni di concavit, queste vengono tagliate di netto dal modello risultante
anche se tutti i modelli presentano al centro una sorta di rigonfiamento che potrebbe
stare ad indicare che il numero di Neuroni utilizzato inizia ad essere troppo elevato.

3. ESPERIMENTO CON 15 NEURONI

Figura 24 - Andamento generale dell'errore nel Training Set con 15 Neuroni


Figura 25 - Modello prodotto all'iterazione 5
32


Figura 26 - Modello prodotto all'iterazione 9



Figura 27 - Modello prodotto all'iterazione 10
Come negli esperimenti precedenti, anche in questo esperimento con 15 neuroni
possiamo osservare che lerrore intervallare rispecchia le aspettative in quanto , al
33

crescere del numero di generazioni, il massimo scende ed il minimo sale. I modelli
riportati dimostrano come la rete si comporti in linea di massima in accordo con le
supposizioni fatte allinizio ma , probabilmente causa il numero di neuroni troppo
elevato per questa granularit, si inizia a discostare in alcuni caso dallandamento in
media del Dataset. E per possibile apprezzare che, nonostante ci siano delle
differenze tra il Dataset iniziale e quello prodotto, il numero di neuroni sia sufficiente
per riuscire a produrre con buona approssimazioni alcune delle variazioni di concavit
pi critiche.

3 33 3. .. .3 33 3 Secondo Gruppo di Esperimenti Secondo Gruppo di Esperimenti Secondo Gruppo di Esperimenti Secondo Gruppo di Esperimenti
Nel secondo gruppo si scelto di utilizzare un modello ad alta risoluzione con il
Dataset A, con intervallo di Granularit 0,01% 0,04%. Sono stati condotti 3
esperimenti con il metodo del 10-foldcross , ognuno dei quali con un numero di
neuroni totali diverso. Nel primo esperimento infatti sono stati utilizzati 25 Neuroni,
nel secondo 30 e nel terzo 40. Il numero alto di neuroni giustificato dal fatto che in
modello ad alta risoluzione, un numero troppo basso di neuroni comporterebbe una
capacit di adattamento molto limitata ad una condizione molto vicina alla realt.
Il livello di granularit scelto per questo secondo gruppo di esperimenti tipico per
livelli di incertezza che siano molto limitati e quindi approssimino molto il caso reale.
In questo caso infatti lintervallo allinterno del quale i pesi sono in grado di assumere
valori diversi diviene molto ristretto e quindi diviene molto pi complicato effettuare
un processo di ottimizzazione.
1. ESPERIMENTO CON 25 NEURONI


Figura 28 - Andamento generale dell'errore nel Training Set con 25 Neuroni
34



Figura 29 - Modello prodotto all'iterazione 4



Figura 30 - Modello prodotto all'iterazione 7
35


Figura 31 - Modello prodotto all'iterazione 8
In questo esperimento con 25 neuroni possiamo osservare che lerrore intervallare
rispecchia le aspettative in quanto , al crescere del numero di generazioni, il
massimo ed il minimo non subiscono variazioni di rilievo. I modelli riportati
dimostrano come la rete si comporti in accordo con le supposizioni fatte allinizio in
quanto ,in corrispondenza delle variazioni di concavit, queste vengono
approssimate abbastanza fedelmente dal modello risultante anche se la loro
riproduzione non rispecchia ancora cos fedelmente leffettivo andamento, in
quanto probabilmente il numero di neuroni utilizzati risulta ancora insufficiente .
2. ESPERIMENTO CON 30 NEURONI


Figura 32 - Andamento generale dell'errore nel Training Set con 30 Neuroni
36


Figura 33 - Modello prodotto all'iterazione 5



Figura 34 - Modello prodotto all'iterazione 6
37


Figura 35 - Modello prodotto all'iterazione 10
Anche in questo esperimento con 30 neuroni possiamo osservare che lerrore
intervallare rispecchia le aspettative in quanto , al crescere del numero di
generazioni, il massimo ed il minimo non subiscono variazioni di rilievo. I modelli
riportati dimostrano come la rete si comporti in accordo con le supposizioni fatte
allinizio in quanto ,in corrispondenza delle variazioni di concavit, queste vengono
approssimate abbastanza fedelmente dal modello risultante e questo porta a
supporre che il numero di neuroni utilizzati pu risultare sufficiente per ottenere
delle prestazioni discrete del Sistema.
3. ESPERIMENTO CON 40 NEURONI


Figura 36 - Andamento generale dell'errore nel Training Set con 40 Neuroni
38


Figura 37 - Modello prodotto all'iterazione 2


Figura 38 - Modello prodotto all'iterazione 6
39


Figura 39 - Modello prodotto all'iterazione 10
Come negli esperimenti precedenti, anche nellesperimento con 40 neuroni possiamo
osservare che lerrore intervallare rispecchia le aspettative in quanto , al crescere del
numero di generazioni, il massimo ed il minimo non subiscono variazioni di rilievo. I
modelli riportati dimostrano come la rete non si comporti in accordo con le
supposizioni fatte allinizio in quanto sono presenti notevoli scostamenti in alcuni casi
dal dataset originale anche se si riusciamo ad osservare che le oscillazioni vengono
riprodotte in maniera abbastanza precisa. Tutto ci ci porta a supporre che il numero
di neuroni utilizzati pu risultare elevato per ottenere delle prestazioni discrete .











40

3.4 3.4 3.4 3.4 Terzo Gruppo di Esperimenti Terzo Gruppo di Esperimenti Terzo Gruppo di Esperimenti Terzo Gruppo di Esperimenti
In questo ultimo gruppo si scelto di utilizzare un modello a bassa risoluzione con
il Dataset B, con intervallo di Granularit 0% 4%. Sono stati condotti 3
esperimenti con il metodo del 10-foldcross , ognuno dei quali con un numero di
neuroni totali diverso. Nel primo esperimento infatti sono stati utilizzati 7 Neuroni,
nel secondo 10 e nel terzo 15. Il numero relativamente basso di neuroni
giustificato dal fatto che in modello a bassa risoluzione, un numero troppo elevato
di neuroni comporterebbe un overhead tale da rendere i risultati prodotti non
significativi. La differenza rispetto agli esperimenti effettuati con il Dataset A sta nel
fatto che landamento dei Dati in questo caso si presenta pi adatto ad esperimenti
di questo tipo piuttosto che esperimenti con grana fine , i quali richiederebbero
delle forme di Algoritmo Genetico pi esplorative.

1. ESPERIMENTO CON 7 NEURONI


Figura 40 - Andamento generale dell'errore nel Training Set con 7 Neuroni



41



Figura 41 - Modello prodotto all'iterazione 4



Figura 42 - Modello prodotto all'iterazione 6
42


Figura 43 - Modello prodotto all'iterazione 8
In questo esperimento possiamo osservare che lerrore intervallare rispecchia le
aspettative in quanto , al crescere del numero di generazioni, il massimo tende a
scendere ed il minimo a salire. I modelli riportati dimostrano come la rete si
comporti in accordo con le supposizioni fatte allinizio di paragrafo in quanto ,in
corrispondenza delle variazioni di concavit, queste vengono tagliate di netto dal
modello risultante. A differenza dellesperimento con il Dataset A, si pu notare che
alcune parti dei modelli prodotti sono pi conformi al Dataset originale rispetto a
quanto accadeva in precedenza a causa della nuova dimensione degli hyperbox.

2. ESPERIMENTO CON 10 NEURONI

Figura 44 - Andamento generale dell'errore nel Training Set con 10 Neuroni
43


Figura 45 - Modello prodotto all'iterazione 2


Figura 46 - Modello prodotto all'iterazione 7
44


Figura 47 - Modello prodotto all'iterazione 10

Anche in questo esperimento con 10 neuroni possiamo osservare che lerrore
intervallare rispecchia le aspettative in quanto , al crescere del numero di generazioni,
il massimo tende a scendere ed il minimo a salire. I modelli riportati dimostrano come
la rete si comporti in accordo con le supposizioni fatte allinizio del paragrafo in
quanto ,in corrispondenza delle variazioni di concavit, queste vengono tagliate di
netto dal modello risultante. Se con il Dataset A i modelli risultanti iniziavano a soffrire
delleccessivo numero di neuroni, con il Dataset B il comportamento della rete
continua ad essere abbastanza coerente con le caratteristiche dei modelli risultanti a
bassa risoluzione in quanto non sono presenti quei rigonfiamenti peculiari del Dataset
A.







45

3. ESPERIMENTO CON 15 NEURONI


Figura 48 - Andamento generale dell'errore nel Training Set con 15 Neuroni


Figura 49 - Modello prodotto all'iterazione 3
46


Figura 50 - Modello prodotto all'iterazione 5


Figura 51 - Modello prodotto all'iterazione 10

47

Come negli esperimenti precedenti, anche in questo esperimento con 15 neuroni
possiamo osservare che lerrore intervallare rispecchia le aspettative in quanto , al
crescere del numero di generazioni, il massimo scende ed il minimo sale. I modelli
riportati dimostrano come la rete si comporti in linea di massima in accordo con le
supposizioni fatte allinizio ma , probabilmente causa il numero di neuroni troppo
elevato per questa granularit, si inizia a discostare in alcuni caso dallandamento in
media del Dataset come gi accaduto per il Dataset A. E per possibile apprezzare che,
nonostante ci siano delle differenze tra il Dataset iniziale e quello prodotto, il numero
di neuroni sia sufficiente per riuscire a produrre con buona approssimazioni alcune
delle variazioni di concavit pi critiche; inoltre a differenza del caso con il Dataset A
gli scostamenti dal modello originale sono meno accentuati a causa del minor numero
degli hyperbox e della loro dimensione pi grande. Infatti con caratteristiche di questo
tipo le ottimizzazioni calcolate dallAlgoritmo Genetico riescono con pi efficacia con
dei dati intervallari di questa tipologia anche se per ottenere risultati migliori si
dovrebbe ricorrere a delle esplorazioni che questa versione dellAlgoritmo Genetico
non dispone.

48

4 44 4 Conclusioni Conclusioni Conclusioni Conclusioni
4 44 4. .. .1 11 1 Ri Ri Ri Risultati Raggiunti sultati Raggiunti sultati Raggiunti sultati Raggiunti

I risultati sperimentali che abbiamo ottenuto mostrano un comportamento della rete
compatibile con quanto atteso.
In particolare, si osserva che una versione intervallare dellerrore in grado di fornire,
rispetto ad una sua versione numerica, informazioni maggiori sul modello, poich
lAlgoritmo Genetico produce variazioni sia in termini di centro che di raggio e quindi
si presta in maniera migliore ad applicazioni reali.
Il processo di ottimizzazione, in questo modo, risulta pienamente coerente con la
natura intervallare dei dati. Lo spazio di ricerca, ad ogni modo, risulta molto vasto e
complesso.
Ci sono infatti molteplici variabili ,che in modi molto diversi tra di loro, possono
caratterizzare un modello e che devono essere tenute in considerazione per produrre
dei risultati sempre migliori: il numero di neuroni, le probabilit di cross-over e
mutazione, il livello di granularit, il numero di generazioni e la relazione di
ordinamento parziale. Modificando infatti una di queste infatti una di queste variabili
si possono ottenere dei comportamenti molto diversi e talvolta incorrelati gli uni con
gli altri.

Lobiettivo di questa Tesi stato quello di progettare e realizzare un Algoritmo
Genetico che riuscisse a lavorare con una funzione di fitness completamente
intervallare, dimostrando che anche utilizzando un errore sui dati di tipo intervallare ,
pu avvenire un processo di ottimizzazione dei risultati. Un approccio di questo tipo
pu sostituire totalmente delle soluzioni che utilizzavano in maniera mista sia errori
intervallari che errori numerici introducendo una conversione tra questi che, facendo
approssimazioni talvolta errate, poteva peggiorare di fatto la qualit dei risultati
ottenuti.

La novit dellapproccio introdotto sta nellaver definito un errore intervallare come
metrica delle soluzioni trovate, strumento che, a fronte dello sforzo derivante
dallimpiego di unaritmetica diversa, ma coerente con i dati a nostra disposizione,
abbia il pregio di non impoverire la qualit e la quantit dellinformazione, ma, al
contrario, riesca a metterne in luce tutte le potenzialit, aprendo uno spazio di ricerca
del tutto nuovo e stimolante.









49

4 44 4.2 .2 .2 .2 Ringraziamenti Ringraziamenti Ringraziamenti Ringraziamenti

In queste ultime righe desidero ringraziare tutte le persone che, in modo diverso,
hanno concorso alla realizzazione di questa tesi.

Ringrazio il Prof. Francesco Marcelloni e la Prof.ssa Beatrice Lazzerini, che, in qualit di
relatori, hanno incoraggiato e supportato il mio interesse verso largomento,
accettando di supervisionare il lavoro, favorendo la mia crescita culturale e il mio
futuro professionale.

Un grazie particolare va allIng. Mario Cimino, che con la sua costante presenza mi ha
offerto un impagabile sostegno in ogni fase del lavoro e che mi ha aiutato e consigliato,
sempre disponibile a dirimere i miei dubbi e a dispensare consigli con estrema
cordialit. Lentusiasmo e limpegno che ho mantenuto durante il lavoro trovano
giustificazione nel suo atteggiamento collaborativo, con il quale ha profuso quel
contributo reale di sapienza ed esperienza che risultato vitale per la realizzazione del
presente elaborato.

Un doveroso grazie va ai miei genitori, che mi hanno educato al senso del dovere, mi
hanno instillato lamore per lo studio, hanno condiviso emotivamente i miei risultati
scolastici e mi hanno incoraggiato a raggiungere questo importante traguardo.

Un ringraziamento particolare va alla mia fidanzata Francesca che mi ha sempre
supportato nei momenti in cui avevo bisogno ed ha saputo condividere in modo
impagabile tutte le emozioni durante questo percorso di studi.

Voglio dimostrare inoltre il mio riconoscimento anche a tutti i miei compagni e amici
che mi hanno accompagnato in questo percorso di studi , con una menzione particolare
ai miei compagni di casa che insieme a me e forse come nessun altro hanno vissuto in
prima persona i risultati di questi anni di studio.

Un Grazie inoltre va a Fabio Quilici, senza i cui continui spunti non mi sarei mai
innamorato veramente dellInformatica.


50

5 55 5 Bibliografia Bibliografia Bibliografia Bibliografia

A. Chipperfield, P. Fleming, H. Pohlheim, C. Fonseca, Genetic Algorithm TOOLBOX
For Use with MATLAB , University of Sheffield

B. Lazzerini, Introduzione alle Reti Neurali
M. G.C.A. Cimino, B.Lazzerini, F.Marcelloni, W.Pedrycz , Granular Data Regression
with Neural Networks , 2011
A.Niewiadomski, J.Ochelska, P.S.Szczepaniak , Interval valued linguistic
summaries of databases , 2006