Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
ANFIS.
A differenza dei modelli tradizionali FIS (Fuzzy Inference System) un modello ANFIS
è in grado di acquisire conoscenza sui dati da elaborare sfruttando dei dati di
allenamento (training data) definendo in tal modo le regole e le funzioni di
appartenenza; per tale ragione si è preferito utilizzarlo.
Il procedimento logico per l’implementazione del modello ANFIS si compone, in
generale, di quattro fasi: [6]
definizione della matrice dei dati di input/output;
training, ovvero l’utilizzo del modello ANFIS per
addestrare il modello FIS ad
emulare i dati di allenamento forniti;
checking, ovvero l’utilizzo di dati di controllo, diversi da quelli di allenamento,
per verificare il potenziale di overfitting (sovradattamento) del modello ai dati;
attraverso la function “evalfis”.
utilizzo del modello neuro-fuzzy
Per quanto concerne la matrice dei dati, invece di immettere direttamente come input
le piogge medie giornaliere dei pluviometri del Casentino si è deciso di utilizzare le
variabili ottenute dalla PCA, ovvero la matrice Z .
a
In particolare l’addestramento è stato effettuato sfruttando la prima metà dei dati
, l’altra metà è stata invece utilizzata per la fase di controllo.
della matrice Z a
Si è quindi generato un modello FIS di Sugeno caratterizzato da tre funzioni di
appartenenza (rappresentanti i qualificatori linguistici basso-medio-alto) di tipo
gaussmf (campana di Gauss) in ingresso e da una uscita di tipo lineare.
Per quanto riguarda l’allenamento del modello ANFIS è possibile osservare un
decremento dell’errore continuo per ogni epoca, ovvero per ogni ciclo di utilizzo delle
osservazioni.
6 Le colonne della matrice sono i dati di input tranne l’ultima colonna che rappresenta l’output. Pagina | 11
Capitolo 3- Adaptive Neuro-Fuzzy Inference System (ANFIS)
Figura 3.1 – Generazione del modello FIS
L’errore di training rappresenta la differenza tra i valori della colonna di output forniti
) e l’uscita prodotta dal FIS
al modello ANFIS (ovvero la seconda colonna di Z a
generato. Figura 3.2 – Training con 100 epoche Pagina | 12
Capitolo 3- Adaptive Neuro-Fuzzy Inference System (ANFIS)
Figura 3.3 - Checking
La struttura dell’ANFIS così realizzato presenta un unico ingresso, a cui sono
associate le tre membership, un’uscita e le tre regole corrispondenti.
Di seguito si riporta la struttura ottenuta e le tre funzioni di appartenenza.
Figura 3.4 – Architettura del modello ANFIS Pagina | 13
Capitolo 3- Adaptive Neuro-Fuzzy Inference System (ANFIS)
in1mf1 in1mf2 in1mf3
1
0.8
membership 0.6
of 0.4
Degree 0.2
0 100 200 300 400 500 600
input1
Figura 3.5 - Membership
Per mostrare il funzionamento del modello FIS ottenuto si riporta a titolo di esempio
l’immagine seguente: preso un valore generico del supporto (input = 274) vengono
individuati i gradi appartenenza ad ogni membership ed il relativo output.
Figura 3.6 – Rule viewer Pagina | 14
Capitolo 3- Adaptive Neuro-Fuzzy Inference System (ANFIS)
Il valore deterministico dell’output (output = 1.9) è ottenuto dalla defuzzificazione, che
nel modello Sugeno si riduce alla semplice media pesata dei singleton dei
conseguenti.
Il modello ANFIS, sfruttando i dati della matrice di addestramento fornita, ha dunque
generato, in modo autonomo, la FIS. [7]
In conclusione il modello definito è stato richiamato attraverso la function evalfis
che nel nostro caso restituisce, in uscita, la portata elaborata dal modello inferenziale
fuzzy.
I risultati ottenuti, per poter essere confrontati con i dati a disposizione, sono stati
dunque trasformati dal sistema PCA a quello dei dati originali con la trasformazione:
anfis[8] Ta
∙W
X = Z
anfis
7 output = evalfis(Input,progpluv).
Input è una matrice, specificando I valori in ingresso, progpluv è la FIS generata.
8 Z è la matrice ottenuta sommando la prima colonna di Z all’output generato dal modello.
anfis a Pagina | 15
Capitolo 4- Risultati e conclusioni
4. Risultati e conclusioni
Per verificare il corretto funzionamento del modello fuzzy generato sono stati infine
confrontati i risultati ottenuti con i valori reali di portata in nostro possesso.
Confronto portate primi 500 giorni
100 uscita ANFIS1
Portata Subbiano
80
Portate 60
40
20 50 100 150 200 250
Giorni
600
400
Portate 200 300 350 400 450 500
Giorni
Confronto portate 200 giorni
400 uscita ANFIS1
Portata Subbiano
350
300
250
Portate 200
150
100
50
5000 5020 5040 5060 5080 5100 5120 5140 5160 5180 5200
Giorni
Figura 4.1 – Confronto tra le portate (primi 500 giorni)
Figura 4.2 – Confronto tra le portate (200 giorni) Pagina | 16
Capitolo 4- Risultati e conclusioni
Dal confronto riportato in figura 4.1 (relativo ai primi 500 giorni) è possibile osservare
che effettivamente i valori elaborati dal modello (in rosso) approssimano in modo
soddisfacente i valori registrati dall’idrometro (in blu).
La bontà dell’approssimazione può essere ancor meglio apprezzata considerando
periodi temporali inferiori; in figura 4.2 è riportato a titolo esemplificativo il confronto
per 200 giorni.
In conclusione, i risultati ottenuti con il modello appena descritto sono stati confrontati
con quelli ricavati sfruttando un approccio diverso nella costruzione del modello
ANFIS tramite la Principal Component Analysis.
Il secondo metodo differisce dal primo per la modalità con cui è stata utilizzata
l’analisi delle componenti principali: nel primo caso la PCA è stata impiegata per
generare i dati in ingresso del modello ANFIS, nel secondo caso per eseguire un
confronto, a coppie, tra le stazioni pluviometriche in modo da individuare quelle meno
correlate da utilizzare per l’implementazione del modello ANFIS.
Attraverso la costruzione delle ellissi di correlazione, alcune delle quali riportate
come esempio nella figura seguente, è stato possibile individuare come stazioni
pluviometriche di riferimento quelle di Salutio e Stia.
Figura 4.3 – Confronto, a coppie, delle stazioni pluviometriche Pagina | 17
Capitolo 4- Risultati e conclusioni
I dati relativi alle suddette stazioni pluviometriche sono stati dunque utilizzati come
ingressi per il modello ANFIS.
In figura seguente si riporta dunque il confronto dei risultati ottenuti con i due
approcci utilizzati con riferimento ai primi 750 giorni di misure.
PCA con tutti i pluviometri
600 uscita ANFIS1
Portata Subbiano
400
portata 200 100 200 300 400 500 600 700
tempo
Pluviometri: Stia - Salutio
600 uscita ANFIS2
Portata Subbiano
400
portata 200
0 100 200 300 400 500 600 700
tempo
Figura 4.4 – Confronto dei risultati ottenuti dai due approcci (750 giorni)
In conclusione l’obiettivo del presente lavoro era realizzare un modello ANFIS in
grado di prevedere i deflussi conseguenti a precipitazioni note e tale modello è stato
ricavato a partire da una sinergia con il metodo della Principal Component Analysis.
Dal raffronto tra i risultati ottenuti con i due approcci risulta evidente che ambedue le
uscite dei modelli ANFIS forniscono un valore confrontabile con la portata reale;
tuttavia tra le due opzioni la seconda mostra un risultato molto più accurato e preciso,
questo deriva dal fatto che la Principal Component Analysis è stata sfruttata nella
modalità più appropriata. Pagina | 18
Capitolo 5- Bibliografia, sitografia e software
5. Bibliografia, sitografia e software
William J.Palm “Matlab 7. Per l’ingegneria e le scienze” –
[1]. McGraw-Hill, 2005
–
[2]. Dispense di Analisi dei Sistemi Ambientali Stefano Marsili-Libelli
[3]. Appunti del corso di Analisi dei Sistemi Ambientali
Appunti del corso di Metodi Numerici per l’Ingegneria
[4].
[5]. Tesi di laurea triennale di Michele Abruzzese
a) www.adbarno.it
b) www.qgis.org/it
c) www.sinanet.isprambiente.it
d) www.sir.toscana.it
1. Matlab versione 7.11.0 (R2010b)
2. QGis Dufour 2.0 Pagina | 19
Appendice A
Appendice A
Si riporta di seguito lo script utilizzato per la costruzione del modello ANFIS sulla
base del primo approccio.
clear
clc
close all
%Pricipal Component Analysis (PCA)
%X (all) sono i dati di pioggia e portata nel ventennio 1992-2012
%W è la matrice degli autovettori ordinata per autovalori descrescenti
%L sono gli autovalori di W
%Z sono i dati X trasformati nel sistema PCA
load all;
X=all;
[W,Z,L]=princomp(X);
disp(W)
disp(L)
bs1=scree(L,1);
Wa=W(:,1:2);
Za=X*Wa;
Z1=Za(:,1);
%Generazione dei dati di input per ANFIS, creato con le due componenti
principali
Training=[Za(1:3653,1) Za(1:3653,2)];
Checking=[Za(3654:7671,1) Za(3654:7671,2)];
%Output ANFIS
%Q1 è l'uscita dell'Anfis
%Out è l’uscita dell’ANFIS nel sistema di riferimento dei dati originali
[9]
port1=readfis('progpluv') ;
Q1=evalfis([Z1],port1);
zanfis=[Z1 Q1];
xanfis=zanfis*Wa';
Out=xanfis(:,7);
%Caricamento delle portate reali
load subbiano;
S=subbiano;
%Plot dei risultati
k=size(Z1);
K=(1:k);
figure(2)
plot(K,Out,'r','Linewidth',1.5)
hold on
plot(K,S,'b','Linewidth',1.5)
axis tight
xlabel('time')
ylabel('flow')
title('Confronto portate')
legend('uscita ANFIS1','Portata Subbiano')
9 ‘progpluv’ è il nome del FIS generato con il primo approccio. Pagina | 20
Appendice A
Si riporta inoltre la porzione di codice che permette di confrontare i risultati ottenuti
con i due approcci descritti.
Questa parte è conseguente alla porzione di codice definita in precedenza.
%Confronto tra i due metodi utilizzati per la costruzione del modello ANFIS
%Caricamento delle piogge e delle portate reali primi 750 giorni
load stia750
load salutio750
load subbiano750
%Plot dei risultati (750 giorni)
%Q2 è l'uscita dell'ANFIS realizzato con il secondo approccio
k=size(stia750);
K=(1:k);
figure(3)
subplot(2,1,1)
plot(K,Out(1:749,1),'r','Linewidth',1.5)
hold on
plot(K,subbiano750,'b','Linewidth',1.5)
axis tight
xlabel('tempo')
ylabel('portata')
title('PCA con tutti i pluviometri')
legend('uscita ANFIS1','Portata Subbiano')
subplot(2,1,2) 10
port2=readfis('progpluv2') ;
Q2=evalfis([stia750 salutio750 ],port