presentazione del problema - alfonsoisola.com · le informazioni non rilevanti sono state eliminate...

63
MODELLISTICA & CONTROLLO DEI SISTEMI AMBIENTALI Tesina di Grassia Filippo Consoli Sergio Isola Alfonso Agatino A.A. 2002/03 Prof. Ing. G. Nunnari

Upload: volien

Post on 18-Feb-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

MODELLISTICA & CONTROLLO DEI SISTEMI AMBIENTALI

Tesina di

Grassia Filippo Consoli Sergio Isola Alfonso Agatino

A.A. 2002/03

Prof. Ing. G. Nunnari

PRESENTAZIONE DEL PROBLEMA Lo scopo di questa tesina è comparare molte tecniche statistiche per la modellazione della concentrazione di SO2 nell’area di S.Cusumano(SR). Dati riportati nella letteratura indicano che il livello di emissioni di zolfo, principalmente come SO2 , negli ultimi venti anni sta decrescendo continuamente in paesi industrializzati occidentali. Comunque esistono ancora problemi di SO2 localizzati in particolari aree,dovuti soprattutto a fattori metereologici o topografici. Inoltre le emissioni di zolfo stanno aumentando nei paesi orientali in via di sviluppo così come in altri paesi del resto del mondo. Ricordiamo che l’SO2 è un inquinante pericoloso per la salute dell’uomo;la sua soglia olfattiva è di 780 µg/m3 dopo la quale diventa nocivo! Di solito i suoi valori guida sono di 40-60 µg/m3 però esistono casi di improvvisi picchi causati da agenti atmosferici e metereologici. Allora la direttiva dell’unione europea 96/62/CE del 27/09/1996 stabilisce una Soglia di Attenzione di 125 µg/m3 ed una di Allarme di 350 µg/m3 . La modellazione dell’SO2 nelle aree di inquinamento urbane e/o industriali è un compito complesso che ha attratto l’attenzione di molti scienziati di tutto il mondo fin dai primi anni sessanta. L’esperienza ha mostrato che per questo problema, non esiste un modello universale per calcolare con accuratezza efficiente le concentrazioni di SO2 nei punti di una specifica area. Allora molti approcci di modellamento di tipo statistico o deterministico sono stati proposti. Gli approcci statistici sono considerati per previsioni a breve termine applicando un controllo in real-time delle emissioni. Questi metodi sono preferiti a quelli deterministici per due ragioni principali: • non hanno bisogno di dati sulle emissioni (che a volte non sono disponibili in

tempo reale) • si basano solamente su misurazioni metereologiche e della qualità dell’aria. Inoltre la struttura dei modelli statistici è spesso più semplice di quella dei modelli deterministici e quindi essi possono essere perfezionati più agevolmente ed anche usati da persone non esperte. Fra i molti approcci statistici quelli che da noi sono stati approfonditi sono: 1. Identificazione Lineare (ARX) 2. Neural Networks,con algoritmo di Backpropagation 3. Tecniche Neuro-Fuzzy 4. Identificazione mediante funzioni Wavelets , basate sugli algoritmi genetici. 2

Però questi metodi statistici presentano dei difetti comuni , essi richiedono un gran lavoro per la realizzazione di una sfilza di serie temporali rappresentanti le varie grandezze misurate e per la determinazione del legame empirico tra di esse (analisi di correlazione). Un altro aspetto negativo è che essi sono Point-Dependent,cioè il modello che si và a determinare è legato strettamente al punto di misura , cambiando la locazione della centralina di rilevamento cambieranno i dati e di conseguenza il modello trovato. Le tecniche considerate sono state confrontate in base alla loro capacità di predire episodi critici, cioè tutti quei valori di emissioni che superano le soglie di Attenzione o di Allarme di Biossido di Zolfo (SO2) stabilite secondo le normative.

ANALISI PREVENTIVA I dati forniti dagli enti predisposti (Comune,Provincia,CIPA,ENEL,ecc..) rappresentano i valori di SO2 e degli agenti atmosferici rilevanti misurati dalle centraline di rilevamento dell’area di S.Cusumano(SR) e campionati ad intervalli orari. Nella prima fase i dati si dicono in forma “Grezza” o “Bruta” in quanto sono presenti informazioni non rilevanti (come codice cabina,orario,data,…vedi esempio1) oltre le misure interessate. Esempio1 "01/01/1995 01:00"," 1.900669","81000000","1" "01/01/1995 02:00"," 5.98915","80000000","9" "01/01/1995 03:00"," 3.79594","80000000","9" "01/01/1995 04:00"," 4.14046","80000000","9" "01/01/1995 05:00"," 4.212383","80000000","9" "01/01/1995 06:00"," 3.259624","80000000","9" "01/01/1995 07:00"," 2.238494","80000000","9" "01/01/1995 08:00"," 5.348946","80000000","9" Le informazioni non rilevanti sono state eliminate utilizzando il Microsoft Excel, gli ulteriori passi da effettuare si trovano nella Guida di JuveClean2003 , un efficiente applicativo di cui parleremo successivamente. Le centraline in genere lavorano su aree urbane o extraurbane ed un loro malfunzionamento condiziona fortemente i dati a disposizione. Infatti le serie temporali a disposizione presentano numerosi dati mancanti (Missing Data); essi sono stati individuati e opportunamente marcati con un un identificatore di dato non valido (NaN,999,-999).

3

In merito è stato da noi sviluppato un efficiente applicativo (JuveClean 2003.exe) che facesse questa delicata operazione, restituendo per ogni inquinante e/o agente atmosferico serie temporali di 8760 (o 8784 per gli anni bisestili) valori di rilevamento orario. Riportiamo sotto la documentazione per un corretto utilizzo di JuveClean2003: File In questa sezione sono presenti le operazioni di : Apri Database L’applicativo JuveClean2003 non elabora serie temporali “Grezze” in formato Testo (.txt) come da esempio: "01/01/1995 01:00"," 1.900669","81000000","1" "01/01/1995 02:00"," 5.98915","80000000","9" "01/01/1995 03:00"," 3.79594","80000000","9" ………………………………………………….. Inizialmente devono essere eliminate le ultime due colonne estrapolando così solo le informazioni relative alla data e ora di rilevamento e alla misura della grandezza di interesse (es SO2,Pres,Rad ecc.). "01/01/1995 01:00"," 1.900669","81000000","1" "01/01/1995 02:00"," 5.98915","80000000","9" "01/01/1995 03:00"," 3.79594","80000000","9" ………………………………………………….. Questa operazione deve essere effettuata aprendo il file di testo mediante EXCEL.

4

Selezionare il campo Delimitati cliccare su Avanti e spuntare le opzioni “spazio” e “virgola”

quindi cliccare Avanti e selezionare l’opzione Avanzate eliminando il separatore delle migliaia come da figura

5

A questo punto bisogna eliminare le colonne che non interessano e salvare il file in formato txt .

Adesso si passa alla creazione del database Access vero e proprio il quale verrà in seguito manipolato da JuveClean2003. La struttura dovrà contenere 2 tabelle con il nominativo OBBLIGATORIO di “cleantab” e “inqtab”,la struttura di “cleantab” e i relativi nomi dei campi è quella riportata di seguito in figura:

6

La tabella “inqtab” invece verrà creata importando il file .txt che prima abbiamo creato con l’ausilio di EXCEL:

A questo punto si passa avanti sino al penultimo passo dove, bisogna ricordarsi di settare il “Tipo di Dati” del campo “Campo2” in tipo “Testo”

7

bisogna salvare la tabella con il nome “inqtab”:

Infine ecco giù riportata la struttura della tabella “inqtab”

8

A questo punto il database ottenuto potrà essere aperto da “Apri Database” e manipolato con JuveClean2003. Salva Elaborazione Tale opzione permette di salvare i files elaborati con JuveClean2003 nei formati .m (per Matlab),.txt(testo),.dat(dati). Salva per MDT Tale opzione permette di salvare i files elaborati da JuveClean2003 nel formato riconosciuto da MDT (Missing Data Toolbox) noto toolbox di gestione dati mancanti di Matlab. ATTENZIONE:Si ricordi di settare la “virgola” come separatore delle colonne quando si aprirà il file con MDT.

Cancella Tale opzione permette di eliminare tutte le elaborazioni effettuate. Esci Tale opzione permette di uscire da JuveClean2003.

9

Debug In questa sezione sono presenti le operazioni di : Delete Errori Excel Tale opzione permette di eliminare un errore che raramente si verifica cancellando le ultime due colonne con Excel.Questa operazione viene effettuata ogni volta che viene aperto un nuovo database,dopo di che si potranno elaborare le serie date. Elabora Tale opzione permette di elaborare le serie temporali.

Questa operazione manipola i dati contenuti nella tabella “inqtab” aggiungendo l’indicatore di dato non valido o mancante(NaN,999,-999) in tutte le righe mancanti e in quelle che contengono dati non validi. Alla fine si salvano le serie di 8760 (8784 per gli anni bisestili) misure all’interno di un file(Vedi Salva Elaborazione o Salva per Mdt). Esempio2: Serie Temporale SO2 del 1995 con dati mancanti e/o errati "01/01/1995 01:00"," 1.900669" "01/01/1995 02:00"," 5.98915" ………………………………… (Dato mancante) ………………………………… (Dato mancante) "01/01/1995 05:00"," 4.212383" "01/01/1995 06:00"," 3.259624" "01/01/1995 07:00"," 2.238494" "01/01/1995 08:00"," 5.348946"

10

Esempio3: Serie Temporale SO2 del 1995 elaborata da JuveClean2003 "01/01/1995 01:00"," 1.900669" "01/01/1995 02:00"," 5.98915" "01/01/1995 03:00"," NaN” "01/01/1995 04:00"," NaN" "01/01/1995 05:00"," 4.212383" "01/01/1995 06:00"," 3.259624" "01/01/1995 07:00"," 2.238494" "01/01/1995 08:00"," 5.348946" Tale software inoltre genera un file di LOG dove vengono enumerate tutte le date e gli orari in cui la cabina di rilevamento ha avuto un malfunzionamento. Esempio: Contenuto del File di LOG 08/01/1995 16.00.00 01/02/1995 23.00.00 02/02/1995 11.00.00 09/02/1995 11.00.00 09/02/1995 12.00.00 09/02/1995 13.00.00 09/02/1995 14.00.00 09/02/1995 15.00.00 09/02/1995 16.00.00 Il file di dati generato dal JuveClean 2003 può essere di due tipi: uno utilizzabile con il Missing Data Toolbox e l’altro da Datalab e altri software. L’MDT è un noto toolbox di Matlab per la trattazione dei dati mancanti. L’ MDT c’è stato gentilmente fornito da quattro Professori dell’Università di Tokio (Harri Niska, Heikki Junninen, Teri Hiltunen, Toni Patama e Mikko Kolehmainen) contattati direttamente via email.

11

A questo punto ci siamo posti il problema dell’interpolazione dei dati mancanti. Si possono avere casi in cui il gap dovuto ai dati mancanti è corto , ed altri casi in cui questo assume lunghezza elevata. Nel primo caso può essere sufficiente effettuare una Interpolazione Lineare, nel secondo invece abbiamo eseguito una serie di prove con il set di interpolazioni fornite dal MDT. L’MDT mette a disposizione vari metodi di interpolazioni tra cui: Linear,Cubic,Nearest,Spline,MLP,Hybrid,Nn e le SOM(Self Organizing Maps).

12

Abbiamo effettuato l’interpolazione con il metodo Cubic per le serie temporali dove il gap dei dati mancanti era corto , e l’interpolazione con le mappe SOM per gli altri casi. Sotto riportiamo un confronto tra i due metodi succitati:

Serie Temporale SO2 1995di S.Cusumano non interpolata

Zoom su intervallo dati mancanti

13

Zoom intervallo dati non validi interpolati con il metodo SOM

Zoom intervallo dati non validi interpolati con il metodo Cubic

14

Riportiamo di seguito il risultato ottenuto utilizzando l’interpolazione cubica

Riportiamo di seguito il risultato ottenuto utilizzando l’interpolazione SOM

15

Successivamente dopo l’interpolazione di tutte le serie temporali orarie di nostro interesse , attraverso il programma Datalab sviluppato dall’Ing. Bertrucco siamo passati dalle serie orarie alle serie giornaliere. Le grandezze che abbiamo preso in considerazione sono: • Umidità Relativa (UMR); • Radiazione Solare (RAD); • Velocità del vento (VV); • Temperatura (TEMP); • Pressione Atmosferica (PRES); • Polveri (POLV); • Inquinante (SO2). continuando riportiamo di seguito i grafici relativi all’inquinante SO2 misurata a S. Cusumano dall’anno 1995 all’anno 1999 , ed inoltre i grafici relativi agli agenti atmosferici solo per l’anno 1995:

16

17

18

19

20

Per la scelta delle grandezze che influenzano maggiormente la dinamica dell’inquinante e per la determinazione del numero di sue regressioni da considerare come ingressi al predittore, abbiamo utilizzato gli operatori di Auto e Cross-Correlazione. Per l’autocorrelazione dell’ SO2 abbiamo utilizzato l’applicativo R-Project

21

ed in particolare la funzione ACF , riportiamo di seguito la procedura sviluppata: Esempio AutocorrelazioneSO2 <- ts(scan(file="so295-99.m")) acf(AutocorrelazioneSO2,type="par") il grafico ottenuto è il seguente:

Come si può osservare dal grafico , scelto un livello di significatività di 0.4 della funzione di autocorrelazione , abbiamo deciso di considerare solo una regressione dell’uscita ( SO2(t-1) ).

22

Per la Crosscorrelazione abbiamo utilizzato invece il Matalab, ed in particolare la funzione XCORR,riportiamo di seguito la procedura sviluppata: Esempio giorni=input('Inersire i giorni dell"anno 365,366(AB)-->'); so2file=input('Inserire il nome del file del so2(tra apici!!)-->'); datafile=input('Inserire il nome del file del parametro metereologico-->'); dataso2=load(so2file); datameteo=load(datafile); crosscorr=xcorr(dataso2,datameteo,'coeff') figure; plot(crosscorr((giorni):(2*giorni-1),1)); title('Cross Correlazione'); riportiamo di seguito i soli grafici per l’anno 1995 evidenziando i tratti migliori:

23

24

Dopo l’analisi di crosscorrelazione, abbiamo deciso di prendere come ingressi esogeni i seguenti agenti atmosferici: UMR,VV,TEMP,PRES,RAD; scartando le polveri le quali presentano una crosscorrelazione con l’SO2 meno influente rispetto alle precedenti. A questo punto conclusa la fase preventiva di manipolazione dei dati, possiamo passare alla fase di realizzazione del predittore mediante metodi di Identificazione Lineare e Non Lineare.

25

IDENTIFICAZIONE LINEARE Al fine di ricavare il modello, inizialmente abbiamo ipotizzato che il sistema fosse lineare e pertanto abbiamo cercato di risolvere il problema con i metodi d’identificazione lineare parametrica da noi studiati. I metodi d’identificazione parametrica consistono nella ricerca, all’interno di una classe d’appartenenza, del modello migliore valutato in funzione di un criterio d’ottimizzazione come il Metodo dei Minimi Quadrati (M.M.Q.). Tale metodo è basato sulla minimizzazione di un funzionale costituito dalla somma dei quadrati degli errori:

∑−

=

=1

0

2N

iiV ε

Tra gli ambienti di sviluppo, quello da noi utilizzato è il Matlab contenente un toolbox dedicato all’identificazione dei sistemi lineari (Identification Toolbox). Poiché un processo di identificazione necessita, non solo dei dati a partire dai quali si ricava il modello, ma anche di quelli per testare la bontà del modello stesso, abbiamo preferito dividere i dati iniziali in due parti chiamate rispettivamente di learning (apprendimento) e di test; in particolare abbiamo definito le seguenti variabili: Variabili di Learning (1995,1996,1997,1999) UMR colonna di 1461 elementi RAD colonna di 1461 elementi PRES colonna di 1461 elementi TEMP colonna di 1461 elementi VV colonna di 1461 elementi SO2(t-1) colonna di 1461 elementi SO2(t) colonna di 1461 elementi Variabili di Test (1998) UMR colonna di 365 elementi RAD colonna di 365 elementi PRES colonna di 365 elementi TEMP colonna di 365 elementi VV colonna di 365 elementi SO2(t-1) colonna di 365 elementi

26

SO2(t) colonna di 365 elementi Quindi abbiamo deciso di utilizzare il modello ARX ( modello auto-regressivo con ingressi esogeni). Nell’espressione analitica del modello ARX sotto riportata compaiono le costanti na e nb le quali indicano rispettivamente il numero di retroazioni sull’uscita (ordine) e sull’ingresso, ed nk indicante l’istante di partenza della successione dei campioni degli ingressi (ritardo).

∑∑==

−−+−=ba n

iki

n

ii nikubikyaky

11

)()()(

Nel nostro caso i valori di na,nb ed nk sono i seguenti:

na=[1] nb=[1 1 1 1 1]

nk=[0 0 0 0 0]

Riportiamo di seguito il codice relativo all’implementazione del modello Arx con i rispettivi grafici:

%caricamento dati learnning 1995-99 UMR=load('umr.pat'); TEMP=load('temp.pat'); RAD=load('rad.pat'); PRES=load('pres.pat'); VV=load('vv.pat'); %SO2tm1=load('so2(t-1).pat'); SO2t=load('so2(t).pat'); O1T=SO2t; na=[1]; nb=[1 1 1 1 1]; nk=[0 0 0 0 0]; %Creazione del modello Slid=[SO2t UMR TEMP RAD PRES VV]; ARX221=arx(Slid,[na nb nk]); %caricamento dati testing 1998 UMR=load('umrTest.pat'); TEMP=load('tempTest.pat'); RAD=load('radTest.pat');

27

PRES=load('presTest.pat'); VV=load('vvTest.pat'); OT=load('so2Test(t).pat'); Yarx=idsim([UMR TEMP RAD PRES VV],ARX221); %Uscita simulata EarxL=resid(Slid,ARX221); %Errore in fase di learning EarxT=OT-Yarx; figure; %Confronto nel dominio del tempo tra uscita simulata e uscita di test plot(1:365,OT,'r-',1:365,Yarx,'b-'); title(' Modello ARX SO2 1998'); ylabel('Uscita'); xlabel('Campioni'); legend('Uscita reale','Uscita simulata'); figure; % Rappresentazione nel dominio del tempo dell'errore di learning plot(EarxL); title(' Modelllo ARX (Errore di Learning)'); ylabel('Errore'); xlabel('Campioni');

figure; % Rappresentazione nel dominio del tempo dell'errore di test plot(EarxT); title(' Modello ARX (Errore di Test Uscita)'); ylabel('Errore');

xlabel('Campioni'); i grafici relativi sono i seguenti:

28

29

Per poter valutare la bontà del modello ottenuto abbiamo utilizzato l’applicativo INDEX2.m ottenendo i seguenti risultati: INDEX - Valutazione di Modelli di Predizione Inquinanti Atmosferici L. Bertucco - DEES - Prj. APPETISE, Aprile 2001 Inserire il Nome del Vettore dei Valori Veri : OT Inserire il Nome del Vettore dei Valori Calcolati : Yarx Inserire il Nome del Vettore dei Valori Persistenti : OT Inserire Tolleranza (0-100) % (0=Nessuna Tolleranza): 0 Inserire Identificatore Dati non Validi (NaN=1) : 1 Massimo e Minimo Serie Vera : 306.186 0.236529 Massimo e Minimo Serie Calcolata: 95.9434 2.3865 Media della Serie Vera : 31.0731 Media della Serie Calcolata : 34.2403 Dev. Standard Serie Vera : 39.7767 Dev. Standard Serie Calcolata : 18.0043 Dev. Standard Errori : 34.1705 Media degli Errori (BIAS) : -3.16726 Media Valori Abs. Errori (MAE) : 23.3173 Errore Quadratico Medio (RMSE) : 34.3169 Comp. Sistematica RMSE (RMSEs) : 30.6549 Comp. non Sistem. RMSE (RMSEu) : 15.4249 Parametro a(Punto Intersezione) : 26.9864 Parametro b(Inclinazione) : 0.233449 Bias Frazionario (FB) : -0.0969865 NMSE Dispersione (NMSEd) : 0.82163 Frazione non Spiegata (NEF) : 0.73798 Indice di Agreement (d) : 0.596669 Indice Correl. Vero-Previsto (r): 0.515756 Indice di Skill-Score SK : 25.34% Corrispondenza Superi Veri/Predetti (Media Veri: 31.07) Inserire il Valore della Soglia dei Superi (-1 per Uscire): 125 Superi Osservati (Veri) M = 10 Superi Previsti (Calcolati) F = 0 Superi Correttamente Previsti (Calcolati) A = 0 Percent Superi Previsti Correttamente SP = A/M = 0% Nessun Supero Previsto (F=0) per la Soglia Scelta: SR = A/F non Definito Indice di Successo IS = 0%

Indice Area ROC Curve (A) Soglia 125 AuROC = 0.80507

30

IDENTIFICAZIONE NON LINEARE NEURAL NETWORK

La seconda parte della nostra esperienza,consiste nel realizzare un’identificazione mediante l’ausilio di una Rete Neurale.Le Reti Neurali sono considerate come “approssimatori universali di funzioni”, cioè sono in grado di realizzare un operazione di Fitting , dati solo dei valori significativi nel dominio di definizione della funzione (Patterns). Una Rete Neurale è composta da un certo numero di nodi interconnessi,organizzati in strati ed ognuno caratterizzato da una sua funzione di attivazione.

Nel nostro caso avremo sei neuroni d’ingresso(UMR,TEMP,VV,SO2(t-1),RAD,PRES), uno d’uscita (SO2(t)) e un numero di neuroni Hidden da determinare al fine di ottenere la configurazione ottimale per l’approssimazione del sistema. Dal teorema di Cybenko possiamo affermare che la struttura a percettrone è in grado di approssimare il nostro sistema, anche se presenta un “solo” strato di neuroni hidden. Le funzioni di attivazione usate rispettivamente per lo strato Hidden e per quello d’uscita sono le seguenti: netnetf =)(

11

2)( )( −+

= +− bnetenetf

Oi

net

Oi

net

31

Il nostro scopo è quello di determinare il numero di neuroni dello strato hidden. Non avendo informazioni a priori sui dati, dobbiamo iniziare con un numero "a caso"; quindi alleniamo la rete e analizziamo i risultati in fase di learning e di test. In fase di learning osserviamo come si comporta l'errore: se esso scende molto velocemente e in maniera continua allora la rete è sovradimensionata; se invece non converge la rete è sottodimensionata. Ciò non basta: prendiamo i dati di test e analizziamo l'errore commesso e la sua autocorrelazione. Se nella fase di test l'errore è troppo alto rispetto a quello ottenuto durante il learning, vuol dire che la rete ha appreso a memoria (sovradimensionata); quindi va sfoltita. Fatte queste considerazioni iniziamo col provare alcune configurazioni al fine dell’ottenimento di quella ottimale,trovare cioè un giusto compromesso tra complessità ed efficienza. Variabili di Learning (1995,1996,1997,1999) UMR colonna di 1461 elementi RAD colonna di 1461 elementi PRES colonna di 1461 elementi TEMP colonna di 1461 elementi VV colonna di 1461 elementi SO2(t-1) colonna di 1461 elementi SO2(t) colonna di 1461 elementi Variabili di Test(1998) UMR colonna di 365 elementi RAD colonna di 365 elementi PRES colonna di 365 elementi TEMP colonna di 365 elementi VV colonna di 365 elementi SO2(t-1) colonna di 365 elementi SO2(t) colonna di 365 elementi

32

Per realizzare la rete neurale abbiamo utilizzato il Matlab 6.5 , riportiamo di seguito il codice relativo alla normalizzazione dei dati e all’implementazione della struttura neurale: CODICE RELATIVO ALLA NORMALIZZAZIONE DEI DATI DI LEARNING UMR=load('umr.pat'); TEMP=load('temp.pat'); RAD=load('rad.pat'); PRES=load('pres.pat'); VV=load('vv.pat'); SO2tm1=load('so2(t-1).pat'); SO2t=load('so2(t).pat'); Patterns=[UMR TEMP RAD PRES VV SO2tm1 SO2t]; %Normalizzazione dei pattern nell'intervallo [-0.9 ; 0.9] M=max(max(Patterns)); %ritorna il max tra i max di ogni colonna della matrice dati m=min(min(Patterns)); %ritorna il min tra i min di ogni colonna della matrice dati Top=0.9; Bottom=0; Col=7; Row=1461; G=(Top-Bottom)/(M-m); M m %ciclo di normalizzazione for I=1:Row, for J=1:Col, NormPatterns(I,J)=(Patterns(I,J)-m)*G+Bottom; end end %--Plotto SO2(t) normalizzata %figure; %plot(NormPatterns(1:1096,7)); for I=1:Row, for J=1:Col, Patterns(I,J)=(NormPatterns(I,J)-Bottom)/G+m; end end

33

%--Plotto SO2(t) denormalizzata %figure; %plot(Patterns(1:1096,7)); save 'pattern.dat' NormPatterns -ascii Analogamente si procede per i dati di test. CODICE RELATIVO ALL’IMPLEMENTAZIONE DELLA RETE NEURALE clear all; close all; %Variabili Ausiliarie k=[1:365]'; %Caricamento dei Patterns 1995-99 già normalizzati dal file "pattern.dat" NormPatterns=load('pattern.dat'); % Divisione dei Pattern in Colonne di Learning e colonne di Test %%% I1L=NormPatterns(1:1461,1); I2L=NormPatterns(1:1461,2); I3L=NormPatterns(1:1461,3); I4L=NormPatterns(1:1461,4); I5L=NormPatterns(1:1461,5); I6L=NormPatterns(1:1461,6); OL=NormPatterns(1:1461,7); NormPatTest=load('validation.dat'); %Inserisco i valori di M e m per denormalizzare alla fine OT e Ynet di SO2 1998 MT=input('Inserire M per denormalizzare l"uscita simulata del 1998-->'); mt=input('Inserire m per denormalizzare l"uscita simulata del 1998-->'); Top=0.9; Bottom=0; Col=7; Row=365; G=(Top-Bottom)/(MT-mt); Range=[Bottom Top, Bottom Top, Bottom Top, Bottom Top,

34

Bottom Top, Bottom Top] I1T=NormPatTest(1:365,1); I2T=NormPatTest(1:365,2); I3T=NormPatTest(1:365,3); I4T=NormPatTest(1:365,4); I5T=NormPatTest(1:365,5); I6T=NormPatTest(1:365,6); OT=NormPatTest(1:365,7); %Inserimento numero di neuroni hidden e numero di epoche NNeur=input ('Number of Hidden Neurons = ') NEpoch=input ('Number of Epochs = ') NGoal=input ('Inserisci il massimo errore=') %Creazione della Rete Neurale net=newff(Range,[NNeur 1],{'tansig' 'purelin'},'trainlm'); net.trainParam.epochs = NEpoch; net.trainParam.show = NEpoch/50; net.trainParam.goal=NGoal; T=[OL']; P=[I1L';I2L';I3L';I4L';I5L';I6L']; [net,tr]=train(net,P,T); % Learning % Ynet=sim(net,[I1T';I2T';I3T';I4T';I5T';I6T']); %Testing % Ynet=Ynet'; %Denormalizzo la Ynet e la OT for I=1:Row, Ynet(I,1)=(Ynet(I,1)-Bottom)/G+mt; OT(I,1)=(OT(I,1)-Bottom)/G+mt; end %Grafici riepilogativi %Confronto Uscite Reali-Simulate figure; plot (k,OT,'b-',k,Ynet(:,1),'r-') title ('Confronto tra SO2 Simulata(in Rosso) e SO2 Reale del 1998(in Blu)') xlabel('Giorni') ylabel('Concentrazione') 35

Err1=abs(OT-Ynet(:,1)); MaxError1=max(Err1) MinError1=min(Err1) MeanError1=mean(Err1) Var1=var(Err1) %Errori figure; plot (k,Err1,'b-') title ('Errore in valore assoluto fra Uscita della rete e Target') xlabel('Campioni') ylabel('Errore')

CONFIGURAZIONE N.N. CON 3 NEURONI

Dopo numerose prove , riportiamo di seguito i grafici migliori ottenuti relativamente all’errore in fase di Learning e al confronto tra l’SO2(t) reale e quella simulata:

36

Per poter valutare la bontà del modello ottenuto abbiamo utilizzato l’applicativo INDEX2.m ottenendo i seguenti risultati: INDEX - Valutazione di Modelli di Predizione Inquinanti Atmosferici L. Bertucco - DEES - Prj. APPETISE, Aprile 2001 Inserire il Nome del Vettore dei Valori Veri : OT Inserire il Nome del Vettore dei Valori Calcolati : Ynet Inserire il Nome del Vettore dei Valori Persistenti : OT Inserire Tolleranza (0-100) % (0=Nessuna Tolleranza): 0 Inserire Identificatore Dati non Validi (NaN=1) : 1 Massimo e Minimo Serie Vera : 306.195 0.236536 Massimo e Minimo Serie Calcolata: 312.498 -2.60233 Media della Serie Vera : 31.074 Media della Serie Calcolata : 31.911 Dev. Standard Serie Vera : 39.7778 Dev. Standard Serie Calcolata : 29.0683 Dev. Standard Errori : 33.6705 Media degli Errori (BIAS) : -0.83702 Media Valori Abs. Errori (MAE) : 20.8509 Errore Quadratico Medio (RMSE) : 33.6809 Comp. Sistematica RMSE (RMSEs) : 23.5332 Comp. non Sistem. RMSE (RMSEu) : 24.0955 Parametro a(Punto Intersezione) : 19.2093

37

Parametro b(Inclinazione) : 0.408758 Bias Frazionario (FB) : -0.0265784 NMSE Dispersione (NMSEd) : 0.692398 Frazione non Spiegata (NEF) : 0.716502 Indice di Agreement (d) : 0.712383 Indice Correl. Vero-Previsto (r): 0.559356 Indice di Skill-Score SK : 28.19% Corrispondenza Superi Veri/Predetti (Media Veri: 31.07) Inserire il Valore della Soglia dei Superi (-1 per Uscire): 125 Superi Osservati (Veri) M = 10 Superi Previsti (Calcolati) F = 3 Superi Correttamente Previsti (Calcolati) A = 1 Percent Superi Previsti Correttamente SP = A/M = 10% Percent Superi Previsti Effett. Verificati SR = A/F = 33.33% Percent Falsi Allarmi FA = 100-SR = 66.67% Indice di Successo IS = 9.437% Indice Area ROC Curve (A) Soglia 125 AuROC = 0.87493

CONFIGURAZIONE N.N. CON 5 NEURONI

Dopo numerose prove , riportiamo di seguito i grafici migliori ottenuti relativamente all’errore in fase di Learning e al confronto tra l’SO2(t) reale e quella simulata:

38

Per poter valutare la bontà del modello ottenuto abbiamo utilizzato l’applicativo INDEX2.m ottenendo i seguenti risultati: INDEX - Valutazione di Modelli di Predizione Inquinanti Atmosferici L. Bertucco - DEES - Prj. APPETISE, Aprile 2001 Inserire il Nome del Vettore dei Valori Veri : OT Inserire il Nome del Vettore dei Valori Calcolati : Ynet Inserire il Nome del Vettore dei Valori Persistenti : OT Inserire Tolleranza (0-100) % (0=Nessuna Tolleranza): 0 Inserire Identificatore Dati non Validi (NaN=1) : 1 Massimo e Minimo Serie Vera : 306.195 0.236536 Massimo e Minimo Serie Calcolata: 209.752 -9.65779 Media della Serie Vera : 31.074 Media della Serie Calcolata : 28.0397 Dev. Standard Serie Vera : 39.7778 Dev. Standard Serie Calcolata : 25.9967 Dev. Standard Errori : 29.9192 Media degli Errori (BIAS) : 3.03432 Media Valori Abs. Errori (MAE) : 20.2469 Errore Quadratico Medio (RMSE) : 30.0727 Comp. Sistematica RMSE (RMSEs) : 22.8483 Comp. non Sistem. RMSE (RMSEu) : 19.5531 Parametro a(Punto Intersezione) : 14.6564

39

Parametro b(Inclinazione) : 0.43069 Bias Frazionario (FB) : 0.10266 NMSE Dispersione (NMSEd) : 0.58242 Frazione non Spiegata (NEF) : 0.565742 Indice di Agreement (d) : 0.763367 Indice Correl. Vero-Previsto (r): 0.659005 Indice di Skill-Score SK : 42.81% Corrispondenza Superi Veri/Predetti (Media Veri: 31.07) Inserire il Valore della Soglia dei Superi (-1 per Uscire): 125 Superi Osservati (Veri) M = 10 Superi Previsti (Calcolati) F = 1 Superi Correttamente Previsti (Calcolati) A = 1 Percent Superi Previsti Correttamente SP = A/M = 10% Percent Superi Previsti Effett. Verificati SR = A/F = 100% Percent Falsi Allarmi FA = 100-SR = 0% Indice di Successo IS = 10% Indice Area ROC Curve (A) Soglia 125 AuROC = 0.8938

CONFIGURAZIONE N.N. CON 7 NEURONI

Dopo numerose prove , riportiamo di seguito i grafici migliori ottenuti relativamente all’errore in fase di Learning e al confronto tra l’SO2(t) reale e quella simulata:

40

Per poter valutare la bontà del modello ottenuto abbiamo utilizzato l’applicativo INDEX2.m ottenendo i seguenti risultati: INDEX - Valutazione di Modelli di Predizione Inquinanti Atmosferici L. Bertucco - DEES - Prj. APPETISE, Aprile 2001 Inserire il Nome del Vettore dei Valori Veri : OT Inserire il Nome del Vettore dei Valori Calcolati : Ynet Inserire il Nome del Vettore dei Valori Persistenti : OT Inserire Tolleranza (0-100) % (0=Nessuna Tolleranza): 0 Inserire Identificatore Dati non Validi (NaN=1) : 1 Massimo e Minimo Serie Vera : 306.195 0.236536 Massimo e Minimo Serie Calcolata: 221.745 -7.64105 Media della Serie Vera : 31.074 Media della Serie Calcolata : 29.1078 Dev. Standard Serie Vera : 39.7778 Dev. Standard Serie Calcolata : 27.4097 Dev. Standard Errori : 32.1954 Media degli Errori (BIAS) : 1.96616 Media Valori Abs. Errori (MAE) : 20.724 Errore Quadratico Medio (RMSE) : 32.2554 Comp. Sistematica RMSE (RMSEs) : 23.5567 Comp. non Sistem. RMSE (RMSEu) : 22.0339

41

Parametro a(Punto Intersezione) : 16.3719 Parametro b(Inclinazione) : 0.40986 Bias Frazionario (FB) : 0.0653408 NMSE Dispersione (NMSEd) : 0.669933 Frazione non Spiegata (NEF) : 0.655097 Indice di Agreement (d) : 0.731368 Indice Correl. Vero-Previsto (r): 0.594802 Indice di Skill-Score SK : 34.19% Corrispondenza Superi Veri/Predetti (Media Veri: 31.07) Inserire il Valore della Soglia dei Superi (-1 per Uscire): 125 Superi Osservati (Veri) M = 10 Superi Previsti (Calcolati) F= 3 Superi Correttamente Previsti (Calcolati) A = 2 Percent Superi Previsti Correttamente SP = A/M = 20% Percent Superi Previsti Effett. Verificati SR = A/F = 66.67% Percent Falsi Allarmi FA = 100-SR = 33.33% Indice di Successo IS = 19.72% Indice Area ROC Curve (A) Soglia 125 AuROC = 0.87634

42

IDENTIFICAZIONE NON LINEARE FUZZY NEURAL NETWORK

Tale tipo di approssimazione utilizza sia la teoria delle Reti Neurali(N.N.) che i principi della Logica Fuzzy (F.L.); da cui il nome F.N.N.: Fuzzy Neural Network (rete neuro fuzzy). La F.L. è una generalizzazione della logica tradizionale booleana, in cui gli insiemi cessano di essere chiusi ed una data variabile può allo stesso tempo appartenere con diverso grado di verità a più insiemi distinti. E proprio la rete neuro-fuzzy si basa sulla clusterizzazione di pattern ad essa presentati ed organizzati in più fuzzy-set, costituenti le membership, che sono gli insiemi distinti di cui sopra. A partire dalle membership vengono determinate delle regole (Rule Base) che associano ad una combinazione di fuzzy-set d’ingresso,un fuzzy-set d’uscita e su cui si basano in generale i sistemi basati sulla conoscenza. Tali regole assumono la forma del tipo:

If [antecedente1] and [antecedente2] then [conseguente]

Nel nostro caso vengono usate sei membership functions d’ingresso e una d’uscita (ogni membership è costituita da 3 fuzzy-set). Per la realizzazione di una rete F.N.N. si possono utilizzare due applicazioni: l’ANFISEDIT (ovvero il Neural-fuzzy toolbox del Matlab) e l’applicativo Adaptive Fuzzy Modeller (AFM) prodotto dalla ST Microelectronics. Nel nostro caso abbiamo deciso di utilizzare l’A.F.M. Ver. 2.0 .

43

Riportiamo di seguito tutti gli step da seguire per realizzare una rete Neuro Fuzzy con l’ausilio dell’A.F.M. :

All’inizio si sceglie il numero di ingressi ed uscite del modello.

Accanto si setta l’Universo del discorso di tutte le variabili.

Accanto si setta il numero e la forma delle Membership Functions.

44

Accanto si può scegliere il nome da attribuire ai vari fuzzy set.

Accanto si può scegliere il metodo di inferenza fuzzy.

Nell’inferenza fuzzy, il grado di verità del conseguente è correlato al grado di verità dell’antecedente. Data la seguente regola fuzzy: Ri : if Vel_vento is Bassa and Radiazione is Alta il grado di verità dell’antecedente (o grado di attivazione della regola) m(Ri ) può essere calcolato come il Minimo,oppure come il Prodotto, tra i gradi di appartenenza delle variabili dell’antecedente. Per calcolare il valore fuzzy del conseguente occorre tenere conto del grado di attivazione della regola.

45

A tale proposito esistono due metodi :

• Metodo del Troncamento; • Metodo del Prodotto;

L’elaborazione di tutte le regole dell’algoritmo fuzzy produce per ogni conseguente funzioni di membership scalate o troncate. L’uscita dell’inferenza fuzzy è il risultato dell’unione dei fuzzy sets modificati.

Accanto si può settare la minima sovrapposizione tra membership adiacenti ed il minimo grado d’attivazione.

Infine si può decidere di normalizzare i dati (tra 0 e 1) ed il tipo di errore che si vuole minimizzare (Mean Quadratic Error e/o Maximal Local Error)

46

Poiché un processo di identificazione necessita, non solo dei dati a partire dai quali si ricava il modello, ma anche di quelli per testare la bontà del modello stesso, abbiamo preferito dividere i dati iniziali in due parti chiamate rispettivamente di learning (apprendimento) e di test; in particolare abbiamo definito le seguenti variabili: Variabili di Learning (1995,1996,1997,1999) UMR colonna di 1461 elementi RAD colonna di 1461 elementi PRES colonna di 1461 elementi TEMP colonna di 1461 elementi VV colonna di 1461 elementi SO2(t-1) colonna di 1461 elementi SO2(t) colonna di 1461 elementi Variabili di Test (1998) UMR colonna di 365 elementi RAD colonna di 365 elementi PRES colonna di 365 elementi TEMP colonna di 365 elementi VV colonna di 365 elementi SO2(t-1) colonna di 365 elementi SO2(t) colonna di 365 elementi Riportiamo di seguito le due prove effettuate con l’Adaptive Fuzzy Modeller. Come visto in precedenza l’AFM permette la minimizzazione di due tipi diversi di errore :

• Mean Quadratic Error; • Maximal Local Error.

Nella prima prova abbiamo minimizzato il Mean Quadratic Error,mentre nella seconda prova entrambi gli errori contemporaneamente. Abbiamo scelto di considerare per entrambe le prove , 150 epoche per la fase di Learning visto che con un numero superiore di epoche gli errori considerati non si minimizzavano ulteriormente in maniera significativa.

47

CONFIGURAZIONE F.N.N. CON 3 MEMBERSHIP FUNCTIONS (CON MEAN QUADRATIC ERROR)

Riportiamo di seguito le funzioni di membership ottenute per ogni ingresso,la base di regole definite , l’errore di Learning ed il confronto tra la SO2 misurata nel 1998 e quella simulata dall’AFM: Membership degli ingressi:

48

Base delle regole ottenute:

Errore in fase di Learning:

49

Confronto tra la SO2 misurata nel 1998 e quella simulata dall’AFM:

Per poter valutare la bontà del modello ottenuto abbiamo utilizzato l’applicativo INDEX2.m ottenendo i seguenti risultati: INDEX - Valutazione di Modelli di Predizione Inquinanti Atmosferici L. Bertucco - DEES - Prj. APPETISE, Aprile 2001 Inserire il Nome del Vettore dei Valori Veri : OT Inserire il Nome del Vettore dei Valori Calcolati : YAfm Inserire il Nome del Vettore dei Valori Persistenti : OT Inserire Tolleranza (0-100) % (0=Nessuna Tolleranza): 0 Inserire Identificatore Dati non Validi (NaN=1) : 1 Massimo e Minimo Serie Vera : 306.186 0.236529 Massimo e Minimo Serie Calcolata: 178.493 13.5095 Media della Serie Vera : 31.0731 Media della Serie Calcolata : 36.5906 Dev. Standard Serie Vera : 39.7767 Dev. Standard Serie Calcolata : 23.6583 Dev. Standard Errori : 32.0833

50

Media degli Errori (BIAS) : -5.51751 Media Valori Abs. Errori (MAE) : 22.8147 Errore Quadratico Medio (RMSE) : 32.5543 Comp. Sistematica RMSE (RMSEs) : 26.3752 Comp. non Sistem. RMSE (RMSEu) : 19.0822 Parametro a(Punto Intersezione) : 25.6656 Parametro b(Inclinazione) : 0.35159 Bias Frazionario (FB) : -0.163086 NMSE Dispersione (NMSEd) : 0.625882 Frazione non Spiegata (NEF) : 0.650581 Indice di Agreement (d) : 0.698576 Indice Correl. Vero-Previsto (r): 0.591128 Indice di Skill-Score SK : 32.95% Corrispondenza Superi Veri/Predetti (Media Veri: 31.07) Inserire il Valore della Soglia dei Superi (-1 per Uscire): 125 Superi Osservati (Veri) M = 10 Superi Previsti (Calcolati) F = 5 Superi Correttamente Previsti (Calcolati) A= 2 Percent Superi Previsti Correttamente SP = A/M = 20% Percent Superi Previsti Effett. Verificati SR = A/F = 40% Percent Falsi Allarmi FA = 100-SR = 60% Indice di Successo IS = 19.15% Indice Area ROC Curve (A) Soglia 125 AuROC = 0.88845

CONFIGURAZIONE F.N.N. CON 3 MEMBERSHIP FUNCTIONS (CON MEAN QUADRATIC ERROR & MAXIMAL LOCAL ERROR)

Riportiamo di seguito le funzioni di membership ottenute per ogni ingresso,la base di regole definite , l’errore di Learning ed il confronto tra la SO2 misurata nel 1998 e quella simulata dall’AFM: Membership degli ingressi:

51

Base delle regole ottenute:

52

Errore in fase di Learning:

Confronto tra la SO2 misurata nel 1998 e quella simulata dall’AFM:

Per poter valutare la bontà del modello ottenuto abbiamo utilizzato l’applicativo

53

INDEX2.m ottenendo i seguenti risultati: INDEX - Valutazione di Modelli di Predizione Inquinanti Atmosferici L. Bertucco - DEES - Prj. APPETISE, Aprile 2001 Inserire il Nome del Vettore dei Valori Veri : OT Inserire il Nome del Vettore dei Valori Calcolati : YAfm Inserire il Nome del Vettore dei Valori Persistenti : OT Inserire Tolleranza (0-100) % (0=Nessuna Tolleranza): 0 Inserire Identificatore Dati non Validi (NaN=1) : 1 Massimo e Minimo Serie Vera : 306.186 0.236529 Massimo e Minimo Serie Calcolata: 175.545 9.15629 Media della Serie Vera : 31.0731 Media della Serie Calcolata : 33.1514 Dev. Standard Serie Vera : 39.7767 Dev. Standard Serie Calcolata : 24.2541 Dev. Standard Errori : 32.036 Media degli Errori (BIAS) : -2.0783 Media Valori Abs. Errori (MAE) : 21.3895 Errore Quadratico Medio (RMSE) : 32.1033 Comp. Sistematica RMSE (RMSEs) : 25.4795 Comp. non Sistem. RMSE (RMSEu) : 19.5299 Parametro a(Punto Intersezione) : 21.9163 Parametro b(Inclinazione) : 0.36157 Bias Frazionario (FB) : -0.0647198 NMSE Dispersione (NMSEd) : 0.64326 Frazione non Spiegata (NEF) : 0.648662 Indice di Agreement (d) : 0.708148 Indice Correl. Vero-Previsto (r): 0.592975 Indice di Skill-Score SK : 34.76% Corrispondenza Superi Veri/Predetti (Media Veri: 31.07) Inserire il Valore della Soglia dei Superi (-1 per Uscire): 125 Superi Osservati (Veri) M = 10 Superi Previsti (Calcolati) F = 4 Superi Correttamente Previsti (Calcolati) A = 2 Percent Superi Previsti Correttamente SP = A/M = 20% Percent Superi Previsti Effett. Verificati SR = A/F = 50% Percent Falsi Allarmi FA = 100-SR = 50% Indice di Successo IS = 19.44% Indice Area ROC Curve (A) Soglia 125 AuROC = 0.88845

54

IDENTIFICAZIONE NON LINEARE MEDIANTE FUNZIONI WAVELET

Un ulteriore tecnica per identificare il modello richiesto a partire dai dati che vengono misurati dalle stazioni di rilevamento , può essere l’approssimazione mediante Funzioni Wavelet. Una funzione wavelet è del tipo:

dove: u = parametro additivo di t s = parametro che oltre a scalare la (t-u) si trova anche come termine moltiplicativo di tutta la funzione Ψ. La u è responsabile delle traslazioni temporali , mentre la s è responsabile dello scaling (cioè s è il fattore di scala). Tra le funzioni wavelet più comuni ricordiamo:

• Mexican Hat; • Morlet; • Gabor; • Wag1,ecc.

Una peculiarità delle funzioni wavelet , è poter realizzare delle variazioni temporali ripide quanto si vuole. Questo è possibile farlo agendo sui parametri di tali funzioni. Se invece utilizzassi per approssimare una serie temporale una funzione troppo smussata oppure troppo liscia non avrei la possibilità di effettuare una buona approssimazione delle parti transienti (ovvero componenti ad alta frequenza). La trasformata Wavelet è una generalizzazione della trasformata Fourier , in questa si considera una funzione in termini di funzioni wavelet. Il Matlab fornisce un appropriato tool per l’identificazione tramite funzioni wavelet (Wavelet Toolbox) , nel nostro caso abbiamo utilizzato il pacchetto wavelet fornito dal professore.

55

Inizialmente abbiamo impostato il file di configurazione wave.cfg in questo modo: # File di Configurazione per il Programma WAG2 # Funzioni Wavelet Consentite (Libreria) # 1 - Mexican # 2 - Morlet # 3 - Morlet2 # 4 - Gabor1 # 5 - Gabor2 # 6 - Wag1 # 7 - Coseno # 8 - Coseno2 # 9 - Bipolare # 10 - Proposta # 11 - Non Attivata # 12 - Non Attivata # 13 - Non Attivata # 14 - Non Attivata # 7 ;Numero delle Wavelet (Cicli) 6 ;Tipo Wavelet Ciclo 1 6 ;Tipo Wavelet Ciclo 2 6 ;Tipo Wavelet Ciclo 3 6 ;Tipo Wavelet Ciclo 4 6 ;Tipo Wavelet Ciclo 5 6 ;Tipo Wavelet Ciclo 6 6 ;Tipo Wavelet Ciclo 7 # 1 ;Passo della Previsione 0 ;Normalizzazione Automatica (max,min --> 0,1) 1=attivata 0=non attivata 6 ;Numero di Ingressi (Regressioni Target + Esogeni) # 80 ;Valore Massimo Target 0 ;Valore Minimo Target 10.5 ;Valore Massimo Ingresso 1 0 ;Valore Minimo Ingresso 1 10.5 ;Valore Massimo Ingresso 2 0 ;Valore Minimo Ingresso 2 10.5 ;Valore Massimo Ingresso 3 0 ;Valore Minimo Ingresso 3 10.5 ;Valore Massimo Ingresso4 0 ;Valore Minimo Ingresso 4 10.5 ;Valore Massimo Ingresso 5 56

0 ;Valore Minimo Ingresso 5 10.5 ;Valore Massimo Ingresso 6 0 ;Valore Minimo Ingresso 6 # # Tipo di Sogliatura per la Ottimizzazione # 1 - Nessuna Pesatura # 2 - Pesatura con Esponenziale (Base dell'esponenziale a moltiplicare l'errore, es. 1.5-3) # 3 - Pesatura Automatica con Soglia (Parametro addiz. "soglia target" es. 150) # 4 - Pesatura Automatica con Soglia (Parametro addiz. percentuale oversoglia (0-100) es. 25) # 5 - Pesatura con Coefficienti Multipli # 6 - Pesatura con Elevazione ad Esponente dell'Errore (Parametro addiz. "esponente" es. 1-4) 1 ;Tipo di Sogliatura 150 ;Parametro Addizionale Sogliatura 9999 ;Identificatore di Dato non Valido 0 ;Seme del Generatore di Numeri Casuali 400 ;Numero di Individui (NIND) 160 ;Numero di Generazioni (MAXGEN) 0.80 ;Gap (GGAP) 10 ;Precisione per le amplificazioni 0 ;Estremo inferiore per le amplificazioni 4 ;Estremo superiore per le amplificazioni 10 ;Precisione per gli shift -2 ;Estremo inferiore per gli shift 2 ;Estremo superiore per gli shift 10 ;Precisione per alpha1 0 ;Estremo inferiore per alpha1 4 ;Estremo superiore per alpha1 10 ;Precisione per alpha2 0 ;Estremo inferiore per alpha2 4 ;Estremo superiore per alpha2 10 ;Precisione per alpha3 0 ;Estremo inferiore per alpha3 4 ;Estremo superiore per alpha3 10 ;Precisione per alpha4 0 ;Estremo inferiore per alpha4 4 ;Estremo superiore per alpha4 1 ;Plottaggio dei Risultati Correnti (1=Sempre, 0=Solo ad ogni Generazione) Come si può notare abbiamo scelto la funzione di wavelet Wag1. 57

Poiché un processo di identificazione necessita, non solo dei dati a partire dai quali si ricava il modello, ma anche di quelli per testare la bontà del modello stesso, abbiamo preferito dividere i dati iniziali in due parti chiamate rispettivamente di learning (apprendimento) e di test; in particolare abbiamo definito le seguenti variabili: Variabili di Learning (1995,1996,1997,1999) UMR colonna di 1461 elementi RAD colonna di 1461 elementi PRES colonna di 1461 elementi TEMP colonna di 1461 elementi VV colonna di 1461 elementi SO2(t-1) colonna di 1461 elementi SO2(t) colonna di 1461 elementi Variabili di Test (1998) UMR colonna di 365 elementi RAD colonna di 365 elementi PRES colonna di 365 elementi TEMP colonna di 365 elementi VV colonna di 365 elementi SO2(t-1) colonna di 365 elementi SO2(t) colonna di 365 elementi In particolare i file del pacchetto wavelet che abbiamo utilizzato sono i file Learning.m e Testing.m i quali utilizzano il file di configurazione wave.cfg precedentemente configurato. I dati di Learning e di Testing sono stati memorizzati all’interno dei file pattern.dat e di testing.dat. Riportiamo di seguito i risultati dello studio effettuato tramite funzioni wavelet:

• Confronto in fase di Learning tra SO2 Reale e Simulata (vedi figura); • Funzione Obbiettivo da minimizzare (vedi figura); • Confronto in fase di Testing tra SO2 Reale e Simulata (vedi figura);

58

Confronto in fase di Learning tra SO2 Reale e Simulata

Funzione Obbiettivo da minimizzare

59

Confronto in fase di Testing tra SO2 Reale e Simulata

Per poter valutare la bontà del modello ottenuto abbiamo utilizzato l’applicativo INDEX2.m ottenendo i seguenti risultati: INDEX - Valutazione di Modelli di Predizione Inquinanti Atmosferici L. Bertucco - DEES - Prj. APPETISE, Aprile 2001 Inserire il Nome del Vettore dei Valori Veri : Osservati Inserire il Nome del Vettore dei Valori Calcolati : Calcolati Inserire il Nome del Vettore dei Valori Persistenti : Osservati Inserire Tolleranza (0-100) % (0=Nessuna Tolleranza): 0 Inserire Identificatore Dati non Validi (NaN=1) : 1 Massimo e Minimo Serie Vera : 306.195 0.236536 Massimo e Minimo Serie Calcolata: 270.756 4.40835 Media della Serie Vera : 31.074 Media della Serie Calcolata : 26.8832 Dev. Standard Serie Vera : 39.7778 Dev. Standard Serie Calcolata : 23.9125 Dev. Standard Errori : 34.0783 Media degli Errori (BIAS) : 4.19078

60

Media Valori Abs. Errori (MAE) : 21.1247 Errore Quadratico Medio (RMSE) : 34.335 Comp. Sistematica RMSE (RMSEs) : 27.6189 Comp. non Sistem. RMSE (RMSEu) : 20.3982 Parametro a(Punto Intersezione) : 17.135 Parametro b(Inclinazione) : 0.31371 Bias Frazionario (FB) : 0.144616 NMSE Dispersione (NMSEd) : 0.885226 Frazione non Spiegata (NEF) : 0.733962 Indice di Agreement (d) : 0.650496 Indice Correl. Vero-Previsto (r): 0.521849 Indice di Skill-Score SK : 25.3% Corrispondenza Superi Veri/Predetti (Media Veri: 31.07) Inserire il Valore della Soglia dei Superi (-1 per Uscire): 125 Superi Osservati (Veri) M = 10 Superi Previsti (Calcolati) F = 3 Superi Correttamente Previsti (Calcolati) A = 1 Percent Superi Previsti Correttamente SP = A/M = 10% Percent Superi Previsti Effett. Verificati SR = A/F = 33.33% Percent Falsi Allarmi FA = 100-SR = 66.67% Indice di Successo IS = 9.437% Indice Area ROC Curve (A) Soglia 125 AuROC = 0.88113

61

CONCLUSIONI FINALI

Dai risultati ottenuti appare chiaro che i metodi di identificazione lineare non sono capaci di predire nessuna eccedenza della soglia d’attenzione (SP%=0). Lo studio attraverso l’utilizzo di una rete neurale ha dato risultati migliori rispetto alla precedente , gli indici di performance ottenuti con le prove effettuate sono i seguenti:

• 3 Neuroni Hidden (SP=10% FA=66,67%) ; • 5 Neuroni Hidden (SP=10% FA=0%); • 7 Neuroni Hidden (SP=20% FA=33,33%);

Lo studio attraverso l’utilizzo di una rete neuro fuzzy (AFM) ha dato risultati all’incirca simili a quelli ottenuti mediante la rete neurale. Gli indici di performance ottenuti con le prove effettuate sono i seguenti:

• 3 Membership Functions M.Q.E. (SP=20% FA=60%); • 3 Membership Functions M.Q.E.-M.L.E. (SP=20% FA=50%);

I risultati ottenuti attraverso l’utilizzo delle funzioni Wavelet , sono stati identici a quelli ottenuti per mezzo della rete neurale con 3 neuroni hidden :

• 160 Generazioni ,400 Individui,6 Cicli con la funzione WAG1 (SP=10% FA=50%).

In conclusione si può evincere che i metodi di identificazione Lineare non sono adatti a questo tipo di problematiche , i migliori risultati sono stati ottenuti con le reti neurali e le reti neuro fuzzy.

62

INDICE Copertina ....................................................................................................................... 1 Presentazione del problema........................................................................................... 2 Analisi Preventiva ........................................................................................................ 3 Identificazione Lineare................................................................................................ 26 Neural Network ........................................................................................................... 31 Fuzzy Neural Network ................................................................................................ 43 Identificazione Non Lineare mediante funzioni Wavelet ........................................... 55 Conclusioni Finali ....................................................................................................... 62

63