UNIVERSIDADE FEDERAL DE UBERLÂNDIA
UNIVERSIDADE FEDERAL DE UBERLÂNDIA
Faculdade de Engenharia Elétrica
Faculdade de Engenharia Elétrica
IDENTIFICAÇÃO DE SISTEMAS NÃO LINEARES
IDENTIFICAÇÃO DE SISTEMAS NÃO LINEARES
Prof. Marcio José Cunha
Prof. Marcio José Cunha
Identificação de um forno elétrico utilizando modelos
Identificação de um forno elétrico utilizando modelos
NARMAX
NARMAX
Frederico Duarte Fagundes
Frederico Duarte Fagundes
Luis Paulo Fagundes
Luis Paulo Fagundes
Uberlândia
Uberlândia
2014
2014
Resumo
Resumo
A
A identificação identificação de de sistemas sistemas tem tem sido sido usado usado como como uma uma importante importante ferramenta ferramenta parapara simulação, predição e controle de sistemas dinâmicos. As dificuldades inerentes ao 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 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 sistemas complexos. Neste contexto, o presente trabalho tem por objetivo realizar a identificação de um forno elétrico utilizando modelos NARMAX, bem como 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 apresentar uma descrição detalhada dos passos tomados para a identificação do sistema.
sistema.
Palavras-chave:
Palavras-chave: Identificação de sistemas, modelos NARMAX, modelos caixa preta, forno elétrico. Identificação de sistemas, modelos NARMAX, modelos caixa preta, forno elétrico.
Abstract
Abstract
The system identification have been used as an important tool for simulation, The system identification have been used as an important tool for simulation, prediction and control of dynamical systems. The intrinsics difficulties in prediction and control of dynamical systems. The intrinsics difficulties in modeling,causes this kind of technique be ideal for modeling complex systems. 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 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 NARMAX models and presents a detailed description of the steps taken for system identification.
identification.
Keywords:
Sumário
Sumário
Introdução...
Introdução...
...
...
...
...
...
...
...Pág
...Pág 04
04
Desenvolvimento...
Desenvolvimento...
...
...
...
...
...
...Pág
...Pág 07
07
Conclusão...
Conclusão...
...
...
...
...
...
...
...Pág
...Pág 24
24
Referências
Referências Bibliográficas..
Bibliográficas...
...
...
...
...
...Pág
...Pág 25
25
Apêndice
Apêndice A (Código
A (Código fonte do
fonte do programa)...
programa)...
...
...
...Pág 26
...Pág 26
Apêndice B
Apêndice B (Tabela com regressores
(Tabela com regressores candidatos)...
candidatos)...
...
...Pág 27
...Pág 27
Apêndice C
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 conceito 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
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
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.
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 Golub-Householder 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.
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
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
e
, o menor desses mínimos passará a ser o valor de trabalho,
.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,
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
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
= 3utilizando 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
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).
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:
̅
̅
, sistema linear.(2.5)
̅
̅
, sistema não linear.(2.6)
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
(
)
(2.7)Matematicamente essa função pode ser expandida por:
∏
∏
(2.8) Sendo que
(2.9)E o limite superior é
se o somatório se refere a fatores do tipo
ou
para fatores do tipo
.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 o fim. Assim tem-se para m=0 e p=0
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:
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,
E desta vez como os termos se referem a y e a u, os limites superiores serão referentes a
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
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.
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
, i=1,2,...,
(2.14)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 ô
estimado difere do y real.Assim considerando uma matriz de regressores candidatos
, como,
(2.15)a matriz de regressores
é montada utilizando as saídas medidas do sistema, e seria dada como,
[
]
(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)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)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 omodelo identificado em (Rodrigues, 1996). Fonte: Elaboração própria.
Figura 2.10 – Teste de correlação cruzada
. Em azul modelo identificado e vermelho omodelo identificado em (Rodrigues, 1996). Fonte: Elaboração própria.
Figura 2.11 – Teste de correlação cruzada
. Em azul modelo identificado e vermelho omodelo identificado em (Rodrigues, 1996). Fonte: Elaboração própria.
Figura 2.12 – Teste de correlação cruzada
. Em azul modelo identificado e vermelho omodelo identificado em (Rodrigues, 1996). Fonte: Elaboração própria.
Figura 2.13 – Teste de correlação cruzada
. Em azul modelo identificado e vermelho omodelo 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
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.
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.
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.
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.
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);
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)
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); %seta o axes1 como ativo cla(handles.axes1); %limpa o axes1
axes(handles.axes2); %seta o axes1 como ativo cla(handles.axes2); %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)
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)
reg68=(reg6.^2).*reg4; % y(k-2).^2*u(k-3) reg69=reg6.*reg7.*reg2; % y(k-2)*y(k-3)*u(k-1) reg70=reg6.*reg7.*reg3; % y(k-2)*y(k-3)*u(k-2) reg71=reg6.*reg7.*reg4; % y(k-2)*y(k-3)*u(k-3) reg72=(reg7.^2).*reg2; % y(k-3).^2*u(k-1) reg73=(reg7.^2).*reg3; % y(k-3).^2*u(k-2) reg74=(reg7.^2).*reg4; % y(k-3).^2*u(k-3) reg75=(reg5.^3); % y(k-1).^3 reg76=(reg5.^2).*reg6; % y(k-1).^2*y(k-2) reg77=(reg5.^2).*reg7; % y(k-1).^2*y(k-3) reg78=reg5.*reg6.^2; % y(k-1)*y(k-2).^2 reg79=reg5.*reg6.*reg7; % y(k-1)*y(k-2)*y(k-3) reg80=reg5.*reg7.^2; % y(k-1)*y(k-3).^2 reg81=reg6.^3; % y(k-2).^3 reg82=(reg6.^2).*reg7; % y(k-2).^2*y(k-3) reg83=reg6.*reg7.^2; % y(k-2)*y(k-3).^2 reg84=reg7.^3; % 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.92710e-5;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;
yest0(k)=0.778979244469561*yest0(k-1)+0.264968587335836*yest0(k-2)- 0.202230245793142*u(k-2)-0.002505004275601*u(k-1).^2-1.470916581337107e- 05*yest0(k-3)*u(k-2).^2+0.424915554330944*u(k-1)-0.002167793408121*yest0(k- 2)*yest0(k-3)-4.409058775720922e-05*u(k-1)*u(k-3).^2+3.854810662214531e-05*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; %Inicializar as 22 primeiras condições iniciais. y2est=y2; %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.470916581337107e- 05*y2est0(k-3)*u2(k-2).^2+0.424915554330944*u2(k-1)- 0.002167793408121*y2est0(k-2)*y2est0(k-3)-4.409058775720922e-05*u2(k-1)*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(k- 1)-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.43860e-8*(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 )');
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); % err do regressor k end; [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;
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;