Difference between revisions 121786 and 121787 on itwikiversity

{{risorsa|tipo=lezione|materia1=Sicurezza nei sistemi industriali|avanzamento=50%}}

I metodi di stima dei parametri (conosciuto in letteratura come '''Parameter Estimation Methods''') sono ideali per situazioni in cui i guasti dei processi sono associati a un cambiamento nei parametri del modello del sistema. E' evidente che la conoscenza di un modello è requisito di base per poter applicare questi metodi: il modello può essere conosciuto a priori (raro) oppure stimato attraverso opportune tecniche.

Analizzeremo in questa lezione i seguenti metodi di stima dei parametri:
* metodi ricorsivi di identificazione di modelli lineari (ARX, ARMAX, OE, ...) 
* Extended Kalman Filter (EKF)

== Introduzione ==
Un generico metodo di stima dei parametri è suddiviso nei seguenti passi:
# Si scrive l'equazione di stato del processo che lega le variabili di input <math>u(t)</math> con quelle di output <math>y(t)</math>. Questa equazione ha come parametri <math>p_j</math>.
# Se necessario si semplifica il modello attraverso delle assunzioni e si ottengono i parametri del modello osservabili <math>\theta_j</math>.
# Si stimano i parametri <math>\theta_j</math> al tempo corrente e negli instanti passati
# Dai parametri stimati <math>\hat{\theta_j}</math> si ottiene la stima dei parametri reali <math>\hat{p_j}</math>
# Se i parametri <math>\hat{p}_j</math> si "allontanano troppo" da quelli osservarti nel training set identifichiamo il fault. Per isolarlo si confrontano i cambiamenti nel parametri fisici con altri memorizzati in un database di fault precedenti.

=== Condizione per l'uso del metodi di stima dei parametri ===
Nei parametri di stima dei metodi (in particolare quelli ricorsivi) è richiesto che i segnali abbiano un alto grado di '''eccitazione persistente''', il che motiva la riduzione maggiore possibile sul numero di variabili, semplificando il modello o aggregando parametri.

== Metodi ricorsivi ==
Sia dato il sistema SISO:
:<math>
y(k)=\frac{B(z,\theta)}{A(z,\theta)} u(k) + \frac{z^n}{A(z,\theta)} e(k)\qquad\qquad e(k) \sim WN(0, \lambda^2)
</math>
con:
:<math>A(z,\theta) = z^n + a_{n-1}z^{n-1} + \cdots + a_0</math>
:<math>B(z,\theta) = b_{n-1}z^{n-1} + \cdots + b_0</math>
Per comodità scriviamo i parametri e i dati attraverso due vettori appositi:
:<math>\theta' = [\begin{matrix}a_{n-1}& \cdots& a_0& b_{n-1} &\cdots &b_0\end{matrix}]'</math>
:<math>\phi'(k) = [\begin{matrix}-y(k-1) &\cdots& -y(k-n) &u(k-1)& \cdots &u(k-n)\end{matrix}]'</math>
In questo modo possiamo riscrivere in maniera più compatta l'espressione del sistema:
:<math>y(k)=\phi'(k)\theta + e(k)</math>

L'equazione così ottenuta è formalmente la stessa di quella iniziale. L'errore è ora nella forma:
:<math>e(k) = A(z,\theta) y(k)</math>

In questo modo possiamo scrivere un predittore utilizzabile con il [[w:Metodo dei minimi quadrati|metodo dei minimi quadrati]]:
:<math>\hat{y}(k) = \phi'(k)\hat{\theta}</math>
=== RLS ===
Si pone ora il problema di come identificare <math>\theta</math>. Per fare questo partiamo dal [[w:Metodo dei minimi quadrati|metodo dei minimi quadrati]] (''LS - Least Squares''):

Sia data una predizione <math>\hat{y}(k)=\phi'(k)\theta</math>, allora il suo errore di predizione risulta: <math>\varepsilon(k) = y(k) - \hat{y}(k)</math>. Se ne deduce che l'errore di predizioni è buono se <math>\varepsilon \sim WN(0,\lambda^2)</math>. Al fine di ridurre l'errore dobbiamo minimizzare la sua cifra di merito (in questo caso la varianza):

: <math> \min_{\hat{\theta}(N)} J = \frac{1}{N} \sum_{k=1}^N \varepsilon^2(k)  </math>

che ha come soluzioni (dimostrazione omessa):
:<math>\hat{\theta}(N) = \left( \sum_{i=1}^N \phi(i)\phi'(i)\right)^{-1} \cdot \sum_{i=1}^N \phi(i)y(i)</math>

Per poter consentire al metodo di essere utilizzabile in tempo reale dobbiamo utilizzare la sua versione ricorsiva, ovvero il metodo '''Recursive Least Squares (RLS)'''. La stima del vettore parametri è aggiornata di volta in volta attraverso questa formula:
:<math>\hat{\theta}=\hat{\theta}(k-1) + \frac{P(k-1)\phi(k)}{1+\phi_k'P_{k-1}\phi_k}\left( y(k) - \phi'(k)\theta(k-1) \right)</math>
Dove:
:<math>P(k) = P(k-1) - \frac{P(k-1)\phi(k) \phi'(k)P(k-1)}{1+\phi'(k)P(k-1)\phi(k)}</math>
Inizializzato con i valori:
:<math>\phi(0) = </math> stima iniziale dei parametri
:<math>P(0) = S(0)^{-1}</math> covarianza iniziale

==== Intepretazione delle variazioni ====
L'idea alla base della fault detection con il metodo RLS consiste nell'osservare le variazioni dei parametri stimati e se esse sono significative, possono essere il sintomo di un guasto.

Dato che <math>\theta</math> è costante, il vettore dei parametri può essere visto come lo stato di un [[w:Sistema dinamico|sistema dinamico]] soggetto a disturbi [[w:Processo stocastico|stocastici]] in uscita:
:<math>\theta(k+1) = \theta(k)</math>
:<math>y(k) = \phi'(k)\theta(k) + e(k)</math>
dove <math>A=I, C=\phi'(k), Q=0, R=1</math>. Utilizzando questi ultimi parametri come [[w:Filtro di Kalman|predittore di Kalman]] porta proprio alla formula dell'RLS precedentemente trovata.

==== Problemi nell'uso di RLS ====
I principali problemi nell'uso di RLS sono:
* Come inizializzare <math>P(0)</math>? Una soluzione comunque è assegnargli <math>P(0)=aI</math>, dove <math>a>0</math> è un parametro scelto durante il progetto. Se <math>a</math> è grande, avremo una grande variabilità iniziale.
* Il segnale in input dovrebbe essere sempre '''persistentemente eccitante'''; tuttavia questo non è sempre possibile e in tal caso la matrice di covarianza <math>P(k)</math> cresce velocemente. Per evitare questo si introducono dei '''forgetting factor''' o si forza <math>P(k)</math> a essere costante.
* ARX non è sempre perfetto: in alcuni casi un modello autoregressivo non è abbastanza coincidente con la realtà. In tal caso bisogna sfruttare un ARMAX e si usa il metodo '''Extended Least Squares Methods (ELS)'''.
* L'ordine scelto del modello è cruciale per produrre un metodo robusto.

=== Conclusioni ===
In generale possiamo dire che i metodi ricorsivi presentano i seguenti problemi:
* i parametri dei modelli identificati devono essere associati univocamente con i parametri fisici del sistema da monitorare.
* i metodi ricorsivi possono non essere sufficientemente robusti e dipendono molto da:
** la struttura del modello scelta
** l'ordine del modello scelto
** la fase di inizializzazione
** l'uso di input persistentemente eccitanti o meno

Per i problemi precedentemente esposti, non è semplice costruire un algoritmo di identificazione del guasto ricorsivo che possa essere usato senza supervisione

== Filtro di Kalman esteso ==
L''''Extended Kalman Filter''' (EKF) ci permette di stimare lo stato e i parametri non conosciuti di '''sistemi non lineari'''. Indichiamo un generico sistema con:
:<math>\tilde{x}(k+1)=\tilde{f}(\tilde{x}(k),u(k),\theta)+v_x(k)</math>
:<math>y(k) = \tilde{g}(\tilde{x}(k),\theta)+v_y(k)</math>
con <math>v_x</math> e <math>v_y</math> rumore bianco che garantiscono le assunzioni del filtro/predittore di kalman lineare<ref group="nota">incorrelati nel tempo, gaussiani e a media nulla</ref>. Riscritto in forma matriciale:
:<math>\left[ \begin{matrix} \tilde{x}(k+1) \\ \theta(k+1) \end{matrix}\right] = \left[ \begin{matrix} \tilde{f}(\tilde{x}(k),u(k),\theta(k)) \\ \theta(k) \end{matrix} \right] = \left[ \begin{matrix}I \\ 0\end{matrix} \right]v_x(k) </math>
:<math>y(k) = \tilde{g}(\tilde{x}(k),\theta)+v_y(k)</math>

== Test d'ipotesi ==
Il [[w:Test di verifica d'ipotesi|test d'ipotesi]] si rende necessario per prendere delle decisioni in condizioni di incertezza; nel nostro caso:
* '''valutare i residuals'''
* '''valutare le variazioni dei parametri stimati'''
La pratica comune consiste nel: prendere due ipotesi H0 e H1, dove H0 è detta ipotesi nulla (o ipotesi di base) e H1 è l'ipotesi alternativa. Dai dati si verifica se le ipotesi sono verificate o meno.

== Note ==
<references group="nota" />

== Bibliografia ==
* {{cita pubblicazione|titolo=Slides: Safety in automation system|editore=Politecnico di Milano|autore=Riccardo Scattolini|anno=2015}}
* {{cita web|url=http://www.dsi.unifi.it/users/chisci/idfric/PEM.pdf|titolo=Note sull<nowiki>'</nowiki>identificazione parametrica|autore=Luigi Chisci|editore=Università di Pisa}}
* {{cita libro|titolo=Fault detection and Diagnosis in Industrial Systems|autore=L.H. Chiang|coautori=E.L. Russel; R.D. Braatz|anno=2001|editore=Springer|lingua=en|url=http://www.springer.com/us/book/9781852333270|ISBN=978-1-4471-0347-9}}