Identificação de Sistemas

July 4, 2019 | Author: Claudio Fagundes | Category: Física e matemática, Matemática, Física, Massa, Sistema Não Linear
Share Embed Donate


Short Description

Trabalho final de Disciplina de identificação de sistemas. Identificação de um forno elétrico....

Description

UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Engenharia Elétrica

IDENTIFICAÇÃO DE SISTEMAS NÃO LINEARES Prof. Marcio José Cunha

Identificação de um forno elétrico utilizando modelos NARMAX

Frederico Duarte Fagundes Luis Paulo Fagundes Uberlândia 2014

Resumo

 A identificação de sistemas tem sido usado como uma importante ferramenta para simulação, predição e controle de sistemas dinâmicos. As dificuldades inerentes ao modelamento faz com que este tipo de técnica seja ideal para modelamento de sistemas complexos. Neste contexto, o presente trabalho tem por objetivo realizar a identificação de um forno elétrico utilizando modelos NARMAX, bem como apresentar uma descrição detalhada dos passos tomados para a identificação do sistema. Palavras-chave:  Identificação de sistemas, modelos NARMAX, modelos caixa preta, forno elétrico.

Abstract The system identification have been used as an important tool for simulation, prediction and control of dynamical systems. The intrinsics difficulties in modeling,causes this kind of technique be ideal for modeling complex systems. In this context, this work aims to make the identification of an electric oven using NARMAX models and presents a detailed description of the steps taken for system identification. Keywords: System identification, NARMAX models, black box models, electric oven.

2

Sumário

Introdução.................... Introdução................................ ........................ ........................ ........................ .......................... ............................ ...................Pág .....Pág 04 Desenvolvimento.................. Desenvolvimento.............................. ......................... ........................ ....................... ........................... ........................Pág .........Pág 07 Conclusão...................... Conclusão.................................. ........................ ........................ ........................ .......................... ............................ .................Pág ...Pág 24 Referências Bibliográficas............ Bibliográficas........................ ......................... ............................ ............................. ........................Pág ..........Pág 25 Apêndice A (Código fonte do programa)................... programa)................................ .......................... .....................Pág ........Pág 26 Apêndice B (Tabela com regressores candidatos)..................... candidatos)............................... ...................Pág .........Pág 27 Apêndice C (Funções usadas estimação do modelo)................... modelo)............................... ................Pág ....Pág 28

3

1 - Identificação de sistemas

Qualquer sistema, considerado como uma relação de causas e efeitos pode ser representado matematicamente. Os modelos matemáticos possibilitam, por exemplo, a simulação do comportamento do sistema sem a necessidade da construção física do mesmo. Para que isso seja possível, é necessário que o modelo seja fiel ao sistema (BILLINGS, 2013; LJUNG, 1999; NELLES, 2001). Uma abordagem, para obtenção do modelo matemático, é o modelamento analítico (BILLINGS, 2013), ou modelagem caixa branca (AGUIRRE, 2007; NELLES, 2001), onde um conhecimento profundo do sistema a ser modelado é necessário. O modelo é obtido com  base na divisão do sistema em subsistemas (LJUNG, 1999), onde é feita uma análise dos fenômenos físico-químicos envolvidos e em relações matemáticas conhecidas. A identificação de sistemas estuda técnicas alternativas de modelagem matemática. O modelo é obtido com a medição das entradas e saídas do processo, por isso pouco ou nenhum conhecimento prévio do sistema é necessário. São técnicas aplicáveis a qualquer sistema e são relativamente rápidas (AGUIRRE, 2007; BILLINGS, 2013; LJUNG, 1999). Um modelo é apenas uma representação aproximada do sistema. Por isso, não há um modelo que represente todas as características de um sistema real, compreendendo, sim, algumas características. Um modelo com muitas características é algo intangível. Desenvolvendo modelos de forma aproximado, são feitas simplificações. O modelo é então testado e, se for considerado inadequado, é reavaliado (AGUIRRE, 2007). Ljung explica bem esse conceito: Um sistema real é um objeto de um tipo diferente dos nossos modelos matemáticos. De certa maneira, há uma impenetrável, porém transparente tela entre nosso mundo de descrições matemáticas e o mundo real. Nós podemos olhar através dessa janela e comparar certos aspectos do sistema físico com sua descrição matemática, mas nós nunca podemos estabelecer uma conexão exata entre eles. A questão de susceptibilidade natural para descrição matemática possui aspectos filosóficos  profundos, e em termos práticos nós temos que ter uma visão mais pragmática dos modelos. Nossa aceitação dos modelos deve ser mais guiada pela “utilidade” do que  pela “verdade”. Entretanto, nós podemos ocasionalmente usar um c onceito

de

“sistema verdadeiro”, definido em termos de um modelo matemático. Essa ficção é

útil para comparar métodos de identificação e entender suas propriedades. Em certos contextos nós assumimos que os dados observados foram gerados de acordo com 4

regras matemáticas bem-definidas, o que com certeza é uma idealização (LJUNG 1999, p. 6, tradução nossa).

Para as técnicas de identificação de sistemas, as etapas, de um modo geral, são (LJUNG, 1999): 1. Testes dinâmicos e coleta de dados: dados são necessários para gerar o modelo e muitas vezes não estão disponíveis, sendo necessário testes para extrair informação dinâmica do sistema. Problemas comuns nesta etapa ocorrem na escolha dos sinais de excitação, na execução do teste e na escolha do tempo de amostragem. 2. Representação matemática: escolha do tipo de modelo a ser utilizado, sua estrutura, estimação dos parâmetros, etc. Essas escolhas são feitas com base nas características do sistema e no conhecimento e experiência de quem  projeta o modelo. 3. Validação do modelo: com o modelo obtido, ou o conjunto deles, verifica-se o seu desempenho. É feita uma validação para atestar que o(s) modelo(s) incorporam as características desejadas. A obtenção de modelos diferentes é útil para comparação, visto que algum pode ter desempenho melhor, em alguns aspectos, que outros. Os possíveis motivos que podem levar um modelo a ser considerado inadequado, na terceira etapa, são (LJUNG, 1999): 

O procedimento numérico falho em achar o melhor modelo para o critério estabelecido;



O critério não foi bem estabelecido;



Escolha inapropriada de modelos, pois nenhum foi considerado satisfatório;



Os dados não foram informativos o suficiente para a seleção dos modelos.

A maior parte da aplicação da identificação consiste, de fato, em encontrar esses  problemas. Isso é feito de forma iterativa, guiada pela informação prévia e os problemas encontrados (LJUNG, 1999). A FIGURA 1.1 resume o processo de identificação.

5

Figura 1.1 –  O ciclo de identificação de sistemas Fonte: adaptado de Ljung 1999 Com base no exposto, o presente trabalho tem por objetivo realizar a identificação do modelo de um forno elétrico que foi apresentado em (AGUIRRE, 2007). O forno elétrico utilizado para a identificação consiste em uma caixa metálica com dimensões de 15x10x31 cm³ de alumínio com espessura de 2 mm. Uma lâmpada elétrica de 200W como elemento de aquecimento. O fato do forno não ser isolado termicamente faz com que variações na temperatura ambiente afetem seu comportamento dinâmico. Como sensor de temperatura foi utilizado um resistor de coeficiente de temperatura negativo (NTC) ligado em um conversor A/D de 12 bits (RODRIGUES, 1996) ligado a um computador, a figura 1.2 mostra um esquema do sistema utilizado para realizar a identificação.

6

Figura 1.2 –  Diagrama em blocos do sistema utilizado para identificação Fonte: RODRIGUES, 1996.  Neste trabalho será utilizado um modelo NARMAX e o algoritmo de GolubHouseholder para determinação da estrutura e dos parâmetros simultaneamente. A seguir será descrito os procedimentos realizados para identificação do sistema, bem como os resultados.

2 - Desenvolvimento Passo 1  –  Coleta dos Dados

O primeiro passo para a identificação de um sistema é a coleta dos dados que possam fornecer informações para a identificação. No presente caso a coleta não foi realizada, pois se  partiu de duas massas de dados fornecidas juntamente com o livro  Introdução à Identificação de Sismteas  –   Técnicas Lineares e Não-lineares aplicadas a Sistemas Reais, de Luis Antônio  Aguirre. Contudo ainda assim algum tratamento sobre os dados coletados foi necessário.

Para coletar os dados do sistema deve-se utilizar um sinal de entrada suficientemente amplo em frequência e amplitude para que possa assim, excitar as dinâmicas de interesse (RODRIGUES, 1996). No sistema em estudo a entrada era o sinal de tensão aplicado ao TRIAC e a saída a temperatura medida pelo sensor NTC.  No caso do forno, foi utilizado um “ruído quantizado” como sinal de excitação, isto é,

um algoritmo sorteia uma amplitude e mantém esta constante durante um tempo préestabelecido, e então sorteia um novo valor e o mantém pelo mesmo período de tempo, a figura 2.1 e 2.2 mostra o sinal de entrada e o respectivo sinal de temperatura para as duas massas utilizadas na identificação F0407 e F0307. 7

Figura 2.1 –  Massa de dados F0407, sinal de entrada em azul e sinal de saída em vermelho. Fonte: Adaptado de (RODRIGUES, 1996).

Figura 2.2 –  Massa de dados F0307, sinal de entrada em azul e sinal de saída em vermelho. Fonte: Adaptado de (RODRIGUES, 1996). O sinal foi amostrado com período de amostragem de 70 segundos, contudo o que se observa na figura 2.1 no eixo das abscissas é a quantidade de amostras e não o tempo. A maior parte das variáveis de interesse em sistemas reais é contínua no tempo, contudo os computadores digitais apresentam ciclos de trabalho de forma que o sinal deve ser 8

amostrado em tempos discretos. Assim o período entre duas amostras consecutivas é denominado tempo de amostragem Ts. O tempo de amostragem deve ser suficientemente curto para manter as características do sinal original, na prática a frequência de amostragem é normalmente escolhida entre 5 e 10 vezes maior do que a maior frequência de interesse (AGUIRRE, 2007).

 

Outro problema relacionado a tempos de amostragem muito pequenos é em relação à matriz de regressores. Os elementos dessa matriz incluem termos do tipo  ... e , observe que se Ts se aproxima de zero,  se torna muito próximo de , de forma que as colunas da matriz de regressores tendem a se tornar linearmente dependentes.

( )  (( ))

Como nem sempre se tem o conhecimento de qual a maior frequência de interesse, (AGUIRRE, 2007) propõe um critério simples que tem dado uma boa indicação da frequência de amostragem a ser usada em diversas situações reais.





 

Este critério consiste em determinar uma taxa  com  de forma que . Para isso faz-se uso de um intervalo de amostragem bem pequeno para que y*(k) se torne um sinal superamostrado. Em seguida determina-se a função de autocovariância linear e não-linear. Tal procedimento é feito para determinar o grau de correlação (redundância) entre observações adjacentes do sinal y*(k) (AGUIRRE, 2007). As funções de autocovariância linear e não-linear são determinadas respectivamente da seguinte maneira:

̅    ̅ ̅            ̅               ̃     ̅ ̅       

(2.1) (2.2)

Com estas funções determinadas encontra-se o mínimo das duas desses mínimos passará a ser o valor de trabalho, .

e

, o menor

Este valor de trabalho é avaliado de forma a satisfazer o seguinte critério,

(2.3)

Caso seja satisfeita a condição (2.3), o sinal está adequadamente amostrado, caso contrário é selecionada uma taxa   pela qual o sinal original é decimado e novamente é calculada as funções de autocovariância, e o novo valor de  é avaliado de acordo com (2.3).  Na prática, a autocovariância pode ser determinada da seguinte maneira,

(2.4)

9

Um programa em matlab® para determinar a autocovariância linear e não linear pode ser encontrado no apêndice A. Para o caso do forno, utilizando a massa de dados F0407, obteve-se os seguintes gráficos de autocovariância linear e não linear.

Figura 2.3 –  Autocovariância linear do sinal de saída do forno utilizando a massa de dados F0407. Fonte: Elaboração própria.

Figura 2.4 –  Autocovariância Não-Linear do sinal de saída do forno utilizando a massa de dados F0407. Fonte: Elaboração própria. 10



O primeiro mínimo desses dois gráficos ocorre em aproximadamente = 28, o que não satisfaz a condição 2.3. Assim o sinal deve ser decimado novamente, até que 2.3 seja satisfeita.



O sinal foi decimado utilizando  = 3, e as seguintes funções de autocovariãncia linear e não linear foram obtidas.



Figura 2.5 –  Autocovariância Linear do sinal de saída do forno decimado pelo fator de  = 3 utilizando a massa de dados F0407. Fonte: Elaboração própria.

Figura 2.6 –  Autocovariância Não-Linear do sinal de saída do forno decimado pelo fator de



 = 3 utilizando a massa de dados F0407. Fonte: Elaboração própria. 11

Agora é possível observar que o mínimo das autocovariância linear e não linear ocorre



 próximo de

= 15, valor este que satisfaz a condição 2.3. Assim o sinal amostrado será

decimado  = 3, o que corresponde a dizer que o sinal foi amostrado a uma taxa de 210 s. Para se ter uma noção da importância de adequar o sinal escolhendo uma taxa de decimação apropriada, o sistema foi identificado sem utilizar uma taxa de decimação, simulado e comparado com a massa de dados F0307. Observe a figura 2.7.

Figura 2.7 –  Simulação de um sistema identificado sem utilizar uma taxa de decimação adequada. Fonte: Elaboração própria. A simulação foi inicializada com os 22 primeiros dados de saída da massa de dados F0307, isto é, a simulação foi efetivamente feita a partir do vigésimo terceiro termo, no gráfico pode-se observar a coincidência das duas curvas até a vigésima terceira amostra,  posteriormente os dados divergem. Observa-se que o sinal apesar de acompanhar a dinâmica apresenta certa discrepância,  posteriormente será apresentada a simulação utilizando uma taxa de decimação apropriada e então será possível comparar os resultados.

Passo 2  –  Determinação de Não-Linearidades

Com o intuito de descobrir qual modelo se adequaria melhor para a identificação, um modelo linear ou um modelo não linear, foi aplicado um teste de determinação de não linearidade, apresentado em (BILLINGS, 2013). 12

O teste consiste em calcular a função de correlação cruzada do sinal de saída e do sinal de saída ao quadrado. De forma que a seguinte condição seja satisfeita:

   ̅     ̅      ̅     ̅ 

(2.5)

,

sistema linear.

,

(2.6)

sistema não linear.

Figura 2.8 –  Teste de não linearidade utilizando função de correlação cruzada. Fonte: Elaboração própria. Como pode ser observado na figura 2.8, a correlação do sistema não permaneceu dentro do intervalo de confiança, o que indica que a correlação do sinal de entrada e entrada ao quadrado não é igual a zero, assim conclui-se que o sistema apresenta não linearidades, e o modelo a ser considerado para efeito de identificação deve ser não linear.

Passo 3  –  Detecção da estrutura

 No presente trabalho optou-se por trabalhar com uma estrutura chamada NARMAX  polinomial. Um modelo polinomial NARMAX pode ser representado por

    ()        

Sendo

 os efeitos que não podem ser bem representados por

(2.7)

.

13

Matematicamente essa função pode ser expandida por:

             ∏   ∏                      ∑ (2.8)

Sendo que

(2.9)

E o limite superior é fatores do tipo .

 se o somatório se refere a fatores do tipo

 ou

 para

Como exemplo, iremos expandir a equação 2.8 utilizando l=3.

A expansão será feita termo a termo deixando o somatório  para m=0 e p=0

 para o fim. Assim tem-se



Observe que o parêntese é omitido por ser correspondente a (n1...,n0), e os produtórios não existem por irem de 1 até 0. Assim para m=0 e p=0 só temos .



Para m=1 e p=0, tem-se:



O produtório de .

           

  é zero por ir de 1 até 0, temos assim o produtório de



 Note que o somatório ainda não foi apresentado, como se tem apenas um termo regressor, e esse termo se refere a  o limite superior do produtório será também referente à , logo se tem:

Para m=1 e p=1,

Como o somatório de u seria de 2 até 1, este não existirá. Observando que agora o termo avaliado é y, o limite superior será , logo:

14

                   

Para m=2 e p=0,

E como agora existe dois termos de u, ter-se-á, dois somatórios referentes a



.

Para m=2 e p=1,

a

 

E desta vez como os termos se referem a y e a u, os limites superiores serão referentes e .

                                                                

Para m=2 e p=2,

Para m=3 e p=0,

E neste caso três somatórios referentes

.

Para m=3 e p=1,

Para m=3 e p=2,

Para m=3 e p=3

15

         

Assim a função

 seria a soma de todos estes passos.

A expansão de um modelo NARMAX é necessária para descobrir quais termos serão candidatos a fazer parte da identificação, obviamente alguns critérios devem ser seguidos para selecionar dentre os termos candidatos, quais farão efetivamente parte do modelo final.

    

Deve-se atentar durante o processo de expansão, que alguns termos podem vir a repetir, assim um termo que seja multiplicado por uma constante , poderia ser agrupado com um outro termo idêntico, que fosse multiplicado por uma outra constante , gerando um termo de constante (

 

Para o projeto do forno, foi utilizando um modelo NARMAX com l=3 e A expansão não será apresentada neste trabalho, mas foram encontrados 136 termos regressores, e após uma racionalização dos termos repetidos, os termos candidatos foram reduzidos para 84 termos, e são apresentados no anexo B.

O critério utilizado para determinar quais termos faria parte do modelo a ser identificado, foi o critério ERR, apresentado em (AGUIRRE, 2007). O critério da taxa de redução de erro (ERR) utiliza os algoritmos de mínimos quadrados ortogonais para determinar a contribuição de cada regressor ao modelo. Segundo (Aguirre, 2007), a soma dos valores quadráticos de y(k) pode ser definida como,

〈 〉∑̂ 〈 〉〈 〉   ̂    〈〈〉〉 ̂〈 〉 〈 〉

(2.10)

.

Esta equação nos diz que a parcela não explicada pelos regressores é igual à soma dos valores quadráticos do vetor de resíduos . Assim define-se a taxa de redução de erro (ERR) como, (2.11)

.



A equação 2.8 pode ser entendida da seguinte maneira, quanto mais próximo  estiver de , maior será o valor de , atingindo um máximo de 1, o que significa dizer que o termo i, em questão, explica totalmente os dados de y. Logo para selecionar os termos que farão parte da estrutura, são utilizados aqueles que apresentam maior ERR. Passo 4  –  Estimação dos parâmetros

16

Para realizar a estimação dos parâmetros do modelo, foi utilizado o método dos mínimos quadrados e o algoritmo de Golub-Householder (Aguirre, 2007), para determinação da taxa de redução do erro. Definindo-se a equação matricial,

                     [ ]             ̂                              [     ]             

(2.12)

Onde,

;

;

(2.13)

;

e

(2.14)

, i=1,2,...,

 Na equação 2.12,   representa a matriz de regressores,   representa os parâmetros estimados e  representa o erro de estimação, isto é, o quanto o  estimado difere do y real. Assim considerando uma matriz de regressores candidatos

a matriz de regressores como,

, como,

(2.15)

 é montada utilizando as saídas medidas do sistema, e seria dada (2.16)

Onde as saídas ao instante anterior a 0 são consideradas 0. Considerando a equação

(2.17)

Para se determinar , pode-se fazer.

(2.18) (2.19) 17

Assim para a estimação dos parâmetros do modelo, foi utilizado um algoritmo  presente no anexo C, que faz uso da função “myhouse” que tem por objetivo determinar os

termos regressores que serão utilizados para a estimação do modelo. A função myhouse foi retirada dos arquivos de (Aguirre, 2007), e é apresentada também no anexo C. A estimação dos parâmetros juntamente com o critério de ERR, forneceu o seguinte modelo para o forno elétrico,

                                     

(2.20)

A simulação deste sistema será apresentada posteriormente. Passo 5  –  Validação do Modelo Identificado

 No presente trabalho optou-se por realizar a validação analisando os resíduos de identificação. Segundo (Aguirre, 2007) a principal condição para que o estimador quadrático não seja polarizado é que o erro seja um ruído branco, o que consiste em dizer que o erro deve ser aleatório. O erro consiste na parte dos dados de identificação que o modelo não conseguiu explicar, assim se o erro for completamente aleatório, isto é, se o erro for um ruído branco, o modelo terá explicado tudo que havia para explicar, e o que não é explicado é devido a erros aleatórios. Em contrapartida, caso o erro seja um ruído colorido, isto é um indicio de que o modelo não conseguiu explicar toda dinâmica do sistema. Uma forma de analisar se o erro é ruído branco é por análise de correlação cruzada. Contudo para sistemas não lineares, é de se esperar que haja correlações não lineares, assim é definido um conjunto de testes em (BILLINGS, 2013), que devem ser satisfeitos para validar o modelo, segue abaixo as condições.

        ̅     ̅         

(2.21)

18

Sendo



a função impulso unitário.

Um ponto muito importante para a análise de resíduos, é que ela considera o desempenho do modelo no conjunto de dados de identificação, visto que os resíduos são definidos como o erro do preditor de um passo à frente (Aguirre, 2007). A seguir são apresentados os resultados dos testes 2.21, sobre o modelo identificado 2.20. O cálculo da função de correlação cruzada foi feita utilizando a função”myccf” obtida

no livro (Aguirre, 2007), e apresentada no anexo C.

Figura 2.9 –  Teste de correlação cruzada



. Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996). Fonte: Elaboração própria.

Figura 2.10 –  Teste de correlação cruzada



. Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996). Fonte: Elaboração própria.

19

Figura 2.11 –  Teste de correlação cruzada



. Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996). Fonte: Elaboração própria.

Figura 2.12 –  Teste de correlação cruzada



. Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996). Fonte: Elaboração própria.

Figura 2.13 –  Teste de correlação cruzada



. Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996). Fonte: Elaboração própria. Pela análise de resíduos, observa-se que a figura 2.9 é muito semelhante a função impulso unitário, o que satisfaz a condição 2.21, as figuras 2.10, 2.11 e 2.13 apresentam um  pequeno intervalo que está fora do intervalo de confiança, o que poderia levar a afirmação de 20

que a função de correlação cruzada não é zero, contudo tal intervalo é muito pequeno para se fazer tal consideração. Outro ponto interessante é que apesar do modelo obtido neste trabalho ser bastante diferente do modelo obtido em (Rodrigues, 1996), a análise de resíduos mostrou que ambos os modelos são válidos. A análise estatística mostrou que os resíduos são aleatórios e, portanto não houve  polarização do estimador, contudo não comprova se o modelo é capaz de reproduzir a dinâmica do forno elétrico, para isso será necessário uma simulação dinâmica, o que foi feito no próximo passo. Passo 6  –  Simulação Dinâmica

Para simulação de um modelo, deve-se utilizar um conjunto de dados diferentes daqueles utilizados na identificação do modelo (Aguirre, 2007), assim os dados para simulação foi a massa de dados F0307. Existem diversas formas utilizadas para simular um sistema. Uma forma comum, mas que não fornece bons resultados para o processo de identificação é a  predição um passo a  frente, neste tipo de simulação o valor estimado é sempre identificado utilizando os dados medidos de um passo anterior, fazendo com que os dados estimados sejam muito próximos dos valores medidos. Esse tipo de simulação pode levar a enganos e fazer com que se pense que o modelo é melhor do que realmente é. A figura 2.14 apresenta uma simulação um passo a frente.

Figura 2.14 – Predição de estados um passo a frente. Em azul os dados medidos, em verde a simulação de um modelo um passo a frente, e em vermelho a simulação infinitos passos a frente.

Fonte: Elaboração própria.

21

A forma mais adequada de simular um sistema a fim de observar que o mesmo consegue satisfazer as dinâmicas do sistema, é simulá-lo utilizando  predição infinitos passos a frente. Neste tipo de predição o modelo é inicializado com algumas condições iniciais, e após algumas estimações serem feitas, todas as outras estimações são feitas utilizando dados de estimação, isto é, as estimações passadas são incorporadas ao processo de estimação dos  passos futuros. Na figura 2.15 foi feito a simulação do sistema identificado e comparado com o sistema identificado em (Rodrigues, 1996).

Figura 2.15 –  Simulação Infinitos passos a frente. Fonte: Elaboração própria. Observa-se que o modelo obtido neste trabalho e o modelo obtido em (RODRIGUES, 1996) se aproximam, apesar de serem modelos diferentes.

22

Conclusão As técnicas de identificação de sistemas utilizadas neste trabalho foram bastante eficientes para identificação de sistemas não lineares. Foi possível observar que todas as fases de identificação de sistemas apresentam uma série de cuidados que devem ser respeitados  para uma correta identificação. Algumas etapas comuns da identificação de sistemas como o agrupamento de termos e a inclusão de resíduos com o intuito de reduzir a polarização não foram incorporados ao  presente trabalho, o que sugere que resultados melhores que os apresentados na figura 2.15  podem ainda ser obtidos. Como sugestão para trabalhos futuros sugere-se a utilização destas etapas para identificação do modelo, e análise do quanto estas etapas podem melhorar um modelo a ser indetificado.

23

Bibliografia Aguirre, L. A. (2007). Introdução à identificação de sistemas: técnicas lineares e não lineares aplicadas a sistemas reais (3 ed.). Belo Horizonte: UFMG. BILLINGS, S. A. (2013). Nonlinear System Identification: NARMAX Methods in the Time, Frequency, and Spatio-Temporal Domains. Wiley. LJUNG, L. (1999). System Identification: Theory for the User  (2. ed.). Englewood: PTR Prentice Hall. NELLES, O. (2001). Nonlinear System Identification: From Classical Approaches to Neural Networks and Fuzzy Models. Berlim, Alemanha: Springer Science & Business Media. RODRIGUES, G. G. (s. d.). Identificação de Sistemas Dinâmicos Não-Lineares Utilizando Modelos NARMAX Polinomiais − Aplicação a Sistemas Reais.  Dissertação de Mestrado, UFMG, Belo

Horizonte.

24

Apêndice A (Funções de autocorrelação) Autocovariância Linear

%O valor de 84 corresponde ao atraso, e deve ser sempre menor ou igual ao %tamanho dos dados. for k=1:100 y1=y(1:100); %a quantidade de y's utilizado é igual ao tamanho do atraso ruu(k)=0; media=sum(y)/250; %O valor que a soma dos vetores é divido, deve ser sempre igual ao %tamanho total dos dados que estão sendo utilizados, assim se o vetor y %tivesse tamanho de 250 amostras, a média seria sob este valor. for i=1:100-k ruu(k)=ruu(k)+(y1(i)-media).*(y1(i+k)-media); end end S=sum(y); S=sqrt(s); ruu=ruu/(S*S); %Normalização dos valores da autocovariância Autocovariância Não-Linear

%O valor de 84 corresponde ao atraso, e deve ser sempre menor ou igual ao %tamanho dos dados. for k=1:84 y1=y(1:84); %a quantidade de y's utilizado é igual ao tamanho do atraso ruuNL(k)=0; %O valor que a soma dos vetores é divido, deve ser sempre igual ao %tamanho total dos dados que estão sendo utilizados, assim se o vetor y %tivesse tamanho de 250 amostras, a média seria sob este valor. media=sum(y)/84; for i=1:84-k ruuNL(k)=ruuNL(k)+((y1(i).^2)-media^2).*((y1(i+k).^2)-media^2); end end S=sum(y.^2); S=sqrt(S); ruuNL=ruuNL/(S*S); %Normalização dos valores da autocovariância

25

Anexo B (Regressores candidatos a fazer parte do modelo) Termos de primeiro grau

Termos de Segundo Grau

Termos de terceiro grau

u(k-1)

u(k-1).^2

u(k-1).^3

u(k-2)

u(k-1)*u(k-2)

u(k-1).^2*u(k-2)

u(k-3)

u(k-1)*u(k-3)

u(k-1).^2*u(k-3)

y(k-1)

u(k-2).^2

u(k-1)*u(k-2).^2

y(k-2)

u(k-2)*u(k-3)

u(k-1)*u(k-2)*u(k-3)

y(k-3)

u(k-3).^2

u(k-1)*u(k-3).^2 u(k-2).^3

y(k-1)*u(k-1)

u(k-2).^2*u(k-3)

y(k-1)*u(k-2)

u(k-2)*u(k-3).^2

y(k-1)*u(k-3)

u(k-3).^3

y(k-2)*u(k-1) y(k-2)*u(k-2)

y(k-1)*u(k-1).^2

y(k-2)*u(k-3)

y(k-1)*u(k-1)*u(k-2)

y(k-3)*u(k-1)

y(k-1)*u(k-1)*u(k-3)

y(k-3)*u(k-2)

y(k-1)*u(k-2).^2

y(k-3)*u(k-3)

y(k-1)*u(k-2)*u(k-3) y(k-1)*u(k-3).^2

y(k-1).^2

y(k-2)*u(k-1).^2

y(k-1)*y(k-2)

y(k-2)*u(k-1)*u(k-2)

y(k-1)*y(k-3)

y(k-2)*u(k-1)*u(k-3)

y(k-2).^2

y(k-2)*u(k-2).^2

y(k-2)*y(k-3)

y(k-2)*u(k-2)*u(k-3)

y(k-3).^2

y(k-2)*u(k-3).^2 y(k-3)*u(k-1).^2 y(k-3)*u(k-1)*u(k-2) y(k-3)*u(k-1)*u(k-3) y(k-3)*u(k-2).^2 y(k-3)*u(k-2)*u(k-3) y(k-3)*u(k-3).^2 y(k-1).^2*u(k-1) y(k-1).^2*u(k-2) y(k-1).^2*u(k-3) y(k-1)*y(k-2)*u(k-1) y(k-1)*y(k-2)*u(k-2) y(k-1)*y(k-2)*u(k-3) y(k-1)*y(k-3)*u(k-1) y(k-1)*y(k-3)*u(k-2) y(k-1)*y(k-3)*u(k-3) y(k-2).^2*u(k-1) y(k-2).^2*u(k-2) 26

y(k-2).^2*u(k-3) y(k-2)*y(k-3)*u(k-1) y(k-2)*y(k-3)*u(k-2) y(k-2)*y(k-3)*u(k-3) y(k-3).^2*u(k-1) y(k-3).^2*u(k-2) y(k-3).^2*u(k-3) y(k-1).^3 y(k-1).^2*y(k-2) y(k-1).^2*y(k-3) y(k-1)*y(k-2).^2 y(k-1)*y(k-2)*y(k-3) y(k-1)*y(k-3).^2 y(k-2).^3 y(k-2).^2*y(k-3) y(k-2)*y(k-3).^2 y(k-3).^3

Anexo C (Programas e funções para estimação dos parâmetros do modelo) load F0407.DAT; %carrega dados de entrada e saída no workspace do matlab. dados= F0407; %define dados. u=dados(:,1); %coluna um é os dados de entrada uident=u(1:3:250); %decimação, para que y(k-1) não seja aproximadamente igual a y(k-2), faz-se a decimação do sinal. %que consiste em pegar as medidas a cada 3 amostra. y=dados(:,2); %coluna dois é os dados de saída. yident=y(1:3:250); %Faz-se yest igual a y para poder pegar as 22 primeiras amostras como estados inicial yest0=y; %Inicializando os dados que serão utilizados posteriormente para simulação do modelo. axes(handles.axes1); cla(handles.axes1); axes(handles.axes2); cla(handles.axes2);

%seta o axes1 como ativo %limpa o axes1 %seta o axes1 como ativo %limpa o axes1

% Montar matriz de regressores reg1=ones(81,1); % constante reg2=uident(3:83); % u(k-1) reg3=uident(2:82); % u(k-2) reg4=uident(1:81); % u(k-3) reg5=yident(3:83); % y(k-1) reg6=yident(2:82); % y(k-2)

27

reg7=yident(1:81); % y(k-3) reg8=reg2.^2; % u(k-1).^2 reg9=reg2.*reg3; % u(k-1)*u(k-2) reg10=reg2.*reg4; % u(k-1)*u(k-3) reg11=reg3.^2; % u(k-2).^2 reg12=reg3.*reg4; % u(k-2)*u(k-3) reg13=reg4.^2; % u(k-3).^2 reg14=reg5.*reg2; % y(k-1)*u(k-1) reg15=reg5.*reg3; % y(k-1)*u(k-2) reg16=reg5.*reg4; % y(k-1)*u(k-3) reg17=reg6.*reg2; % y(k-2)*u(k-1) reg18=reg6.*reg3; % y(k-2)*u(k-2) reg19=reg6.*reg4; % y(k-2)*u(k-3) reg20=reg7.*reg2; % y(k-3)*u(k-1) reg21=reg7.*reg3; % y(k-3)*u(k-2) reg22=reg7.*reg4; % y(k-3)*u(k-3) reg23=reg5.^2; % y(k-1).^2 reg24=reg5.*reg6; % y(k-1)*y(k-2) reg25=reg5.*reg7; % y(k-1)*y(k-3) reg26=reg6.^2; % y(k-2).^2 reg27=reg6.*reg7; % y(k-2)*y(k-3) reg28=reg7.^3; % y(k-3).^2 reg29=reg2.^2; % u(k-1).^3 reg30=(reg2.^2).*reg3; % u(k-1).^2*u(k-2) reg31=(reg2.^2).*reg4; % u(k-1).^2*u(k-3) reg32=reg2.*reg3.^2; % u(k-1)*u(k-2).^2 reg33=reg2.*reg3.*reg4; % u(k-1)*u(k-2)*u(k-3) reg34=reg2.*reg4.^2; % u(k-1)*u(k-3).^2 reg35=reg3.^3; % u(k-2).^3 reg36=(reg3.^2).*reg4; % u(k-2).^2*u(k-3) reg37=reg3.*reg4.^2; % u(k-2)*u(k-3).^2 reg38=reg4.^3; % u(k-3).^3 reg39=reg5.*reg2.^2; % y(k-1)*u(k-1).^2 reg40=reg5.*reg2.*reg3; % y(k-1)*u(k-1)*u(k-2) reg41=reg5.*reg2.*reg4; % y(k-1)*u(k-1)*u(k-3) reg42=reg5.*reg3.^2; % y(k-1)*u(k-2).^2 reg43=reg5.*reg3.*reg4; % y(k-1)*u(k-2)*u(k-3) reg44=reg5.*reg4.^2; % y(k-1)*u(k-3).^2 reg45=reg6.*reg2.^2; % y(k-2)*u(k-1).^2 reg46=reg6.*reg2.*reg3; % y(k-2)*u(k-1)*u(k-2) reg47=reg6.*reg2.*reg4; % y(k-2)*u(k-1)*u(k-3) reg48=reg6.*reg3.^2; % y(k-2)*u(k-2).^2 reg49=reg6.*reg3.*reg4; % y(k-2)*u(k-2)*u(k-3) reg50=reg6.*reg4.^2; % y(k-2)*u(k-3).^2 reg51=reg7.*reg2.^2; % y(k-3)*u(k-1).^2 reg52=reg7.*reg2.*reg3; % y(k-3)*u(k-1)*u(k-2) reg53=reg7.*reg2.*reg4; % y(k-3)*u(k-1)*u(k-3) reg54=reg7.*reg3.^2; % y(k-3)*u(k-2).^2 reg55=reg7.*reg3.*reg4; % y(k-3)*u(k-2)*u(k-3) reg56=reg7.*reg4.^2; % y(k-3)*u(k-3).^2 reg57=(reg5.^2).*reg2; % y(k-1).^2*u(k-1) reg58=(reg5.^2).*reg3; % y(k-1).^2*u(k-2) reg59=(reg5.^2).*reg4; % y(k-1).^2*u(k-3) reg60=reg5.*reg6.*reg2; % y(k-1)*y(k-2)*u(k-1) reg61=reg5.*reg6.*reg3; % y(k-1)*y(k-2)*u(k-2) reg62=reg5.*reg6.*reg4; % y(k-1)*y(k-2)*u(k-3) reg63=reg5.*reg7.*reg2; % y(k-1)*y(k-3)*u(k-1) reg64=reg5.*reg7.*reg3; % y(k-1)*y(k-3)*u(k-2) reg65=reg5.*reg7.*reg4; % y(k-1)*y(k-3)*u(k-3) reg66=(reg6.^2).*reg2; % y(k-2).^2*u(k-1) reg67=(reg6.^2).*reg3; % y(k-2).^2*u(k-2)

28

reg68=(reg6.^2).*reg4; reg69=reg6.*reg7.*reg2; reg70=reg6.*reg7.*reg3; reg71=reg6.*reg7.*reg4; reg72=(reg7.^2).*reg2; reg73=(reg7.^2).*reg3; reg74=(reg7.^2).*reg4; reg75=(reg5.^3); reg76=(reg5.^2).*reg6; reg77=(reg5.^2).*reg7; reg78=reg5.*reg6.^2; reg79=reg5.*reg6.*reg7; reg80=reg5.*reg7.^2; reg81=reg6.^3; reg82=(reg6.^2).*reg7; reg83=reg6.*reg7.^2; reg84=reg7.^3;

% % % % % % % % % % % % % % % % %

y(k-2).^2*u(k-3) y(k-2)*y(k-3)*u(k-1) y(k-2)*y(k-3)*u(k-2) y(k-2)*y(k-3)*u(k-3) y(k-3).^2*u(k-1) y(k-3).^2*u(k-2) y(k-3).^2*u(k-3) y(k-1).^3 y(k-1).^2*y(k-2) y(k-1).^2*y(k-3) y(k-1)*y(k-2).^2 y(k-1)*y(k-2)*y(k-3) y(k-1)*y(k-3).^2 y(k-2).^3 y(k-2).^2*y(k-3) y(k-2)*y(k-3).^2 y(k-3).^3

%Declaração da matriz psi. psi=[reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11 reg12 reg13 reg14 reg15 reg16 reg17 reg18 reg19 reg20 reg21 reg22 reg23 reg24 reg25 reg26 reg27 reg28 reg29 reg30 reg31 reg32 reg33 reg34 reg35 reg36 reg37 reg38 reg39 reg40 reg41 reg42 reg43 reg44 reg45 reg46 reg47 reg48 reg49 reg50 reg51 reg52 reg53 reg54 reg55 reg56 reg57 reg58 reg59 reg60 reg61 reg62 reg63 reg64 reg65 reg66 reg67 reg68 reg69 reg70 reg71 reg72 reg73 reg74 reg75 reg76 reg77 reg78 reg79 reg80 reg81 reg82 reg83 reg84]; vec=yident(4:84); %define vec como as amostras que se deseja identificar do vetor de medidas Psi=[psi vec]; %De acordo com o algoritmo de Golub-Householder (Aguirre página 430), monta-se a matriz PSI como sendo a matriz de regressores e a ultima coluna com y [A,err,piv]=myhouse(Psi,84);

%Função que cálcula a taxa de reduçao do %erro, define o vetor piv que contém quais %colunas dos regressores serão escolhidas %e faz a transformação de householder sobre %a matriz A, pode ser observada logo %abaixo.

np=9; % numero de parametros no modelo final Psit=Psi(:,piv(1:np)); %define a matriz Psit com base na matriz Psi, com todas as linhas e somente as colunas que foram selecionadas pelo vetor piv teta=inv(Psit'*Psit)*Psit'*vec; %Determina os parâmetros teta utilizando mínimos quadrados. teta2=[0.44551;0.57773;-0.63628;0.4860;-1.14580e-6;-9.97760e-5;-2.92710e5;7.88310e-3;7.43860e-8 ] ;%O parâmetro teta2 foi retirado de (Aguirre, 2007) e foi utilizado apenas para comparação. %Simulação 1 passo a frente yUPAF=Psit*teta; yUPAFAguirre=Psit*teta;

%Simulação Infinitos passos a frente usando dados de identificação for k=23:250

29

yest0(k)=0.778979244469561*yest0(k-1)+0.264968587335836*yest0(k-2)0.202230245793142*u(k-2)-0.002505004275601*u(k-1).^2-1.470916581337107e05*yest0(k-3)*u(k-2).^2+0.424915554330944*u(k-1)-0.002167793408121*yest0(k2)*yest0(k-3)-4.409058775720922e-05*u(k-1)*u(k-3).^2+3.854810662214531e05*yest0(k-1).^2*u(k-2); end %Plota os gráficos axes(handles.axes1); plot(yest0(1:250,1), 'r','DisplayName','yest(1:250,1)' ,'YDataSource','yest(1 :250,1)'); hold on plot(y(1:250,1), 'black','DisplayName','y(1:250,1)' ,'YDataSource' ,'yest(1:25 0,1)'); plot(u(1:250,1), 'g','DisplayName' ,'y(1:250,1)' ,'YDataSource' ,'yest(1:250,1) ');

%dados para validação load F0307.dat dados2= F0307; %define dados u2=dados2(:,1); %coluna um é os dados de entrada u2ident=u2(1:3:250); %Decimação das amostras, a identificação não foi feita usando as 250 amostras, mas sim a cada 3 amostras. y2=dados2(:,2); %coluna dois é os dados de saída y2ident=y2(1:3:250); %Decimação das amostras, a identificação não foi feita usando as 250 amostras, mas sim a cada 3 amostras. y2est0=y2; y2est=y2;

%Inicializar as 22 primeiras condições iniciais. %Inicializar as 22 primeiras condições iniciais.

%Simulação Infinitos passos a frente usando dados de validação for k=23:250 y2est0(k)=0.778979244469561*y2est0(k-1)+0.264968587335836*y2est0(k-2)0.202230245793142*u2(k-2)-0.002505004275601*u2(k-1).^2-1.470916581337107e05*y2est0(k-3)*u2(k-2).^2+0.424915554330944*u2(k-1)0.002167793408121*y2est0(k-2)*y2est0(k-3)-4.409058775720922e-05*u2(k1)*u2(k-3).^2+3.854810662214531e-05*y2est0(k-1).^2*u2(k-2); end %%Modelo linear nl391 retirado do livro do aguirre for k=23:250 y2est(k)=0.44551*y2est(k-1)+0.57773*y2est(k-2)-0.63628*u2(k-2)+0.4860*u2(k1)-1.14580e-6*(y2est(k-1).^2).*u2(k-1)-9.97760e-5*(u2(k-1).^2).*u2(k-3)2.92710e-5*y2est(k-3).^3+7.88310e-3*y2est(k-2).*u2(k-2)+7.43860e8*(y2est(k-3).^2).*u2(k-3); end axes(handles.axes2); plot(y2est0(1:250,1), 'r','DisplayName' ,'yest(1:250,1)','YDataSource' ,'yest( 1:250,1)'); hold on plot(y2est(1:250,1), 'blue','DisplayName' ,'yest(1:250,1)','YDataSource' ,'yes t(1:250,1)'); plot(y2(1:250,1), 'black','DisplayName' ,'y(1:250,1)' ,'YDataSource','yest(1:250,1)' ); plot(u2(1:250,1),'g','DisplayName' ,'y(1:250,1)' ,'YDataSource','yest(1:250,1 )');

30

Função MyHouse function  [A,err,Piv]=myhouse(Psi,np); % [A,err,Piv]=myhouse(Psi,np); % Do livro Matrix Computations 2a Ed. pg 212 % Dada a matriz Psi (m,n), esta rotina acha Q de forma % que Q'*Psi=V é triangular superior. A parte triangular % superior de A é substituída pela parte triangular % superior de V. % % Assume-se que a última coluna de Psi é o vetor de % observacoes a ser explicado, y(k). % np é o número de regressores escolhidos para compor o modelo % err é um vetor de np valores que contem as taxas de redução de erro % de cada um dos regressores escolhidos % Piv é um vetor que contem os indices dos regressores escolhidos, ou % seja são os indices das colunas usadas para pivotar a matriz % Psi np vezes. [m,n]=size(Psi); A=Psi; yy=Psi(:,n)'*Psi(:,n); piv=1:n-1; for j=1:np

% Opera por colunas, ate o numero de termos final

% Determina err para demais regressores e volta a escolher % o de maior valor for k=j:n-1 % ate completar o numero de termos candidatos c(k)=((A(j:m,k)'*A(j:m,n))^2)/((A(j:m,k)'*A(j:m,k))*yy); regressor k end;

% err do

[ans aux]=max(c(j:n-1)); jm=j+aux-1; err(j)=ans; aux=A(:,jm); % column of regressor with greatest err A(:,jm)=A(:,j); A(:,j)=aux; aux=piv(jm); % indice do regressor com maior err piv(jm)=piv(j); piv(j)=aux;

x=A(j:m,j); % v=house(x) % Do livro Matrix Computations 2a Ed. pg 196 % Dado um vetor x, volta-se um vetor v de tal forma % que (I-2vv'/v'v)x é zero à excecao do primeiro elemento nx=length(x); u=norm(x,2); v=x; if u ~= 0 b=x(1) + sign(x(1))*u; v(2:nx) = v(2:nx)/b;

31

end; v(1)=1; % fim house(x) a=A(j:m,j:n); % % % % %

a=rowhouse(a,v) Do livro Matrix Computations 2a Ed. pg 197 Dada uma matriz A (m,n), e um vetor de comprimento m, v, cujo primeiro elemento é 1, este algoritmo substitui A por P*A onde P=I-2vv'/v'v

b=-2/(v'*v); w=b*a'*v; a=a+v*w'; % fim rowhouse(a,v) A(j:m,j:n)=a; end; % fim myhouse(A) Piv=piv(1:np);

Função Myccf – Cálcula a Função de correlação cruzada.

function  [t,r,l,B]=myccf(c,lag,flag1,flag2,cor); % % % % % % % % % % % %

[t,r,l]=myccf(c,lag,flag1,flag2,cor); c1=c(:,1); c2=c(:,2); the ccf are calculated from -lag/2 to lag/2 if flag1 = 1; the ccf are calculated from 0 to lag if flag1 = 0; plots the ccf between c1 and c2 if flag2 = 1; if flag2=0 the ccf is returned in r (with respective lags in t), but not plotted; l is a scalar, the 95% confidence interval is +-l; if cor='w', white lines are used. If cor='k', black. r*B is the unnormalized value of r. in case of intending the FI(eu) plot c MUST be =[e u]

% Luis Aguirre - Sheffield - may 91 % - Belo Horizonte - Jan 99, update if flag1==1, lag=floor(lag/2); end; c1=c(:,1); c1=c1-mean(c1); c2=c(:,2); c2=c2-mean(c2); cc1=cov(c1); cc2=cov(c2); m=floor(0.1*length(c1)); r12=covf([c1 c2],lag+1); t=0:1:lag-1;

32

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF