Difference between revisions 114743 and 121521 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 == EKF == 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. 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. == 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}} All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://it.wikiversity.org/w/index.php?diff=prev&oldid=121521.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|