Yukarıda belirtilen önceki CMK m 94 hükmündeki yol tutuklamasına konu olan en
B. Mahkemelerce VerilmiĢ Hürriyeti Kısıtlayıcı Cezanın ve Güvenlik Tedbirinin Yerine Getirilmes
Nesta seção é feito o ajuste de um modelo para predição não-linear de curvas de produção de Petróleo. O modelo de rede neural ajustado foi o de Redes Multilayer
Perceptron (MLP’s).
O Gráfico 9 ilustra a curva de treinamento da rede neural com a curva da série de vazão (produção) de petróleo. O algoritmo de Levenberg-Marquardt foi utilizado para o processo de aprendizado e a rede foi treinada com 2 sinais de atrasos. O sinal azul representa a série real de vazão de óleo, enquanto que a rede neural e representada pelo sinal verde. O conjunto de treinamento tem os dados de aproximadamente 9 primeiros anos de produção, ou seja, 115 meses.
0 2 4 6 8 10 12 -0.15 -0.14 -0.13 -0.12 -0.11 -0.1 -0.09 -0.08 -0.07 Tempo E rr o s
Gráfico 9 - Treinamento para a curva de vazão
O Gráfico 10 corresponde ao erro obtido no treinamento da rede neural. O erro para o treinamento da rede pode ser considerado baixo, pois esse não apresentou valores consideráveis em relação a quantidade gerada.
Gráfico 10 - Sinal erro de treinamento da vazão Fonte: Elaboração própria
0 20 40 60 80 100 120 5 10 15 20 25 30 35 40 45 50 Meses v a z ã o ( m ³/ d ia ) Série Modelo RNA 0 20 40 60 80 100 120 -8 -6 -4 -2 0 2 4 6 8 Meses E rr o a b s o lu to ( m ³/ d ia )
saída do simulador e da rede NARX utilizada como preditor de passo simples. O sinal do preditor e representado pela linha verde, enquanto o sinal gerado pela saída do simulador representado pela linha azul.
Gráfico 11- Sinal da vazão obtido pela predição de 12 passos Fonte: Elaboração própria
O Gráfico 12 corresponde ao erro de predição. Foi verificado que para o gráfico da predição da vazão, não foi apresentado erro com valor acima de 10% em relação ao sinal do simulador para um numero de 12 passos adiante, ou 12 meses.
Gráfico 12 - Sinal erro de predição para a vazão com 12 passos Fonte: Elaboração própria
0 2 4 6 8 10 12 7.2 7.4 7.6 7.8 8 8.2 8.4 8.6 Meses v a z ã o ( m ³/ d ia ) Série Previsão a 12 passos 0 2 4 6 8 10 12 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0 0.02 Tempo E rr o s
Nas Tabelas 1 e 2 são apresentados os erros médios quadráticos encontrados. Fazendo-se uma comparação entre os erros gerados pelos dois modelos, foi constatado que, para o período de treinamento que corresponde a aproximadamente 9 anos e 5 meses iniciais da série, o modelo ARIMA (0,2,1) apresentou um erro quadrático médio (MSE) superior (10,8427%) ao erro do modelo ARIMA (0,2,1) corrigido pela RNA MLP (9,6249%), o que confirma o bom desempenho da rede em estimar e corrigir os erros associados ao modelo ARIMA, aproximando a série estimada à série original. Por outro lado, é possível verificar que a Rede MLP apresentou um MSE bem inferior aos dois modelos citados (2,23%).
Para o período de predição, o modelo ARIMA (0,2,1) apresentou um erro quadrático médio (MSE) inferior (0,009%) ao erro do modelo ARIMA (0,2,1) corrigido pela RNA MLP (2,10,10,10,1) (1,2%) e ao erro da rede MLP (2,10,10,10,1) (0,56%). Este resultado se deve ao fato de que nos extremos o modelo ARIMA se adequou muito bem a série, ou seja, quase não apresentou erro, logo a rede neural não tem tanta eficiência em corrigir o erro associado ao modelo ARIMA. A proposta que fica nesta situação é fazer predições (validação) com partes da série onde ocorre maior variação dos dados, pois é nesta situação que o modelo ARIMA perde sua eficiência e não consegue acompanhar o comportamento dos dados ao longo do tempo e rede neural atuaria na correção do erro com mais qualidade. A Rede MLP (2,10,10,10,1) por sua vez, apresentou nas predições a 12 passos um MSE bem inferior ao erro do modelo ARIMA (0,2,1) corrigido pela RNA MLP (2,10,10,10,1) dois modelos citados (0,56). Porém, o modelo ARIMA foi o que apresentou o menor erro de predição em relação aos dois modelos citados.
Tabela 1- Erros observados no período de treinamento e de predição para os modelos ajustados.
Modelos Erros de Treinamento (%)
Erro Quadrático Médio (MSE)
Modelo ARIMA (0,2,1) 10,842
Modelo ARIMA (0,2,1) corrigido
Tabela 2 - Erros observados no período de predição para os modelos ajustados
Modelos Erros de Predição (%)
Erro Quadrático Médio (MSE)
Modelo ARIMA (0,2,1) 0,009
Modelo ARIMA (0,2,1) corrigido
pela RNA MLP (2,10,10,10,1) 1,2
Rede MLP (2,10,10,10,1) 0,56
Considerações Finais
As considerações finais deste trabalho são referentes aos dados reais de vazão (produção) de petróleo, de um reservatório localizado em um campo da região nordeste do Brasil. Os modelos de Redes Neurais Artificiais e Box & Jenkins selecionados e apresentados neste estudo foram modelados a partir do conjunto de dados citado.
Em relação à modelagem por meio do ajuste de um modelo linear, técnica sugerida por Box & Jenkins, concluiu-se que o melhor modelo foi o ARIMA (0,2,1). Os resultados das análises mostraram que a metodologia utilizada fornece informações importantes sobre o padrão comportamental de Séries Temporais. Informações tais que auxiliam na elaboração de modelos eficientes referentes à Série Temporal em questão.
Referente à modelagem não-linear da curva de produção de petróleo por Redes Neurais Artificiais, as várias simulações realizadas (não apresentadas neste texto) permitiram testar várias arquiteturas de rede, escolhendo a arquitetura adequada às variações da série. Concluiu-se que a melhor arquitetura para rede é a MLP (2,10,10,10,1), onde foi possível desenvolver uma RNA capaz de modelar, de forma satisfatória, o comportamento aleatório da série de vazão de óleo, tornando possível a estimação e correção dos erros associados ao modelo de Box & Jenkins. Também foi possível generalizar os resultados por meio de predição dos dados da série em estudo.
Fazendo-se uma comparação entre os erros gerados pelos modelos, foi constatado que, para o período de treinamento que corresponde aos 10 anos iniciais da série, o modelo ARIMA (0,2,1) apresentou um erro quadrático médio (MSE) superior (10.8427%) ao erro do modelo ARIMA (0,2,1) corrigido pela RNA MLP (9.6249%), o que confirma o bom desempenho da rede em estimar e corrigir os erros associados ao modelo ARIMA, aproximando a série estimada à série original. Por outro lado, é possível verificar que o modelo não-linear de Rede MLP apresentou um MSE bem inferior aos dois modelos citados (2.23%).
Este resultado se deve ao fato de que nos extremos o modelo ARIMA se adequou muito bem a série, ou seja, quase não apresentou erro, logo a rede neural não tem tanta eficiência em corrigir o erro associado ao modelo ARIMA.
Foi possível identificar que a utilização de modelos estatísticos de Séries Temporais, como forma de modelar e predizer o comportamento de curvas de produção de petróleo, ainda é uma ferramenta pouco difundida pelas pesquisas na área de Engenharia de Reservatórios, como apresentado na revisão bibliográfica. De forma análoga, a utilização destes modelos estatísticos como uma ferramenta de auxílio às Redes Neurais no processo de predição não-linear também é algo inovador na literatura, visto que, encontrar referências com o resultado de pesquisas que apresentem a junção da técnica não-linear de Redes Neurais e os modelos lineares estatísticos no processo de predições, tornou-se a grande dificuldade encontrada neste trabalho. Apenas alguns pesquisadores apresentam modelos empíricos para a estimativa das curvas de produção de petróleo. Isto destaca a grande importância do trabalho para a literatura e para área de Engenharia de Reservatórios.
Os resultados apresentados neste trabalho podem sugerir o uso de modelos lineares estatísticos como uma ferramenta adicional às já atualmente utilizadas, como as curvas de declínio e simulação numérica ou ainda em situações que essas ferramentas são de difícil utilização, uma vez que demandam grande tempo computacional. Ressaltando a redução da complexidade durante as simulações, daí a proposta da elaboração de um modelo híbrido para predizer dados de produção de petróleo.
Como trabalhos futuros, esta metodologia pode ser empregada na implementação de problemas de inteligência artificial, como tomadas de decisão, alem de situações praticas e de grande porte.
Referências
A. BRAGA; A. CARVALHO & T. LUDERMIR. “Redes Neurais Artificiais: Teoria e Aplicações.” LTC, 2000.
BALLINI, R., FRANÇA E.H., SOARES S., ANDRADE M.G., 1997. “Relação entre Modelos Auto-Regressivos e a Configuração da Rede Neural para Previsão de Séries Temporais Estacionárias”, artigo submetido ao IV
Simpósio Brasileiro de Redes Neurais - IV SBRN.
BARRETO, J. M., “Introdução às Redes Neurais Artificiais.” Anais V
Escola Regional de Informática da SBC Regional Sul, 5 a 10 de maio de 1997.
BORGES, M. E., “Algoritmo Genético para Otimização de Arquiteturas
de Redes MLP”. 2012. Disponível em: http://www.borges-solutions.com. Acesso em: 10 de outubro de 2012.
BOX, G. E. P.; JENKINS, G. M.; REINSEL, G.C., “Time series
analysis: forecasting and control.” 4rd ed. New Jersey: John Wiley, 2008. 746
p.
CALOBA, L. P. “Introdução ao uso de Redes Neurais na modelagem de sistemas dinâmicos e Séries Temporais”. In: Livro de Minicursos do
Congresso Brasileiro de Automática, 14. Natal, 2002.
CARDON, A.; MÜLLER, D N. “Introdução Às Redes Neurais Artificiais”. Instituto de Informática. Universidade Federal do Rio Grande
do Sul. Porto Alegre. 1994.
CASTRO, M. C. F. “Predição não-linear de Séries Temporais usando Redes Neurais RBF por decomposição em componentes principais.” Tese de
CONSENTINO, L. “Integrated Reservoir Studies”, Paris, Editions Technip,
2001.
COWPERTWAIT, Paul S. P.; ANDREW V. Metcalfe. “Introductory Time
Serie whith R.” Dordrecht: Springer. 2009. 254 p.
DIAS, GLÁUCIO J.CARDOZO. “Planejamento Estratégico De Um Centro
De Distribuição: Uma Aplicação De Redes Neurais Artificiais De Funções De Bases Radiais Para Previsão De Séries Temporais.” Programa de Pós-
Graduação em Métodos Numéricos em Engenharia, Setor de Ciências Exatas e Tecnologia, Universidade Federal do Paraná. 2006.
ERTEKIN, T.; ABU-KASSEM, J. H. & KING, G. R. “Basic Applied Reservoir Simulation”, Paris, Editions Technip, 2001.
FREEMAN, J. A.; SKAPURA, D. M., “Neural Networks - Algorithms, Aplications and Programming Techniques.” Loral Space Information
Systems and Adjunct Faculty, School of Natural and Applied Sciences University of Houston at Clear Lake.
GOMES, DANIEL TAKATA. “Modelos de Redes Neurais recorrentes para previsão de Séries Temporais de memórias curta e longa.” Dissertação
(mestrado) - Universidade Estadual de Campinas, Instituto de Matemática, Estatística e Computação Científica. 2005.
HAYKIN, S. “Redes Neurais: princípios e prática.” 2. ed. Porto Alegre:
Bookman, 2001. 900 p. Tradução de Paulo Martins Engel.
JÚNIOR, ALDAYR DANTAS ARAÚJO – “Predição não-linear de curvas de
produção de petróleo via Redes Neurais recursivas.” Dissertação de
Mestrado, UFRN, Programa de Pós-graduação em Ciência e Engenharia de Petróleo. Linha de Pesquisa: Automação na Indústria de Petróleo e Gás Natural, Natal-RN, Brasil. 2010.
KOHONEN, Teuvo. “Self-Organization and Associative Memory.” Springer-Verlag Series in Information Science. 1987.
LEDO, FERNANDES, LUIZ GUSTAVO. “Utilização de Redes Neurais na
análise e previsão de Séries Temporais.” Dissertação (mestrado) -
Universidade Federal do Rio Grande do Sul. Curso de Pós-graduação em Ciência da Computação, Porto Alegre, 1995.
MATTAX, C. C.; DALTON, R. L. “Reservoir Simulation. in: SPE Monograph Series”, Vol. 13, Richardson, Texas, 1990.
MEUM, P. “Optimization of Smart Well Production Through Nonlinear Model Predictive Control.” Society of Petroleum Engineers 112100.
Amsterdam, The Netherlands, 2008.
MORETTIN, P.; TOLOI, C. “Análise de Séries Temporais”. 2ª ed. São Paulo:
E. Blucher, 2006. 564 p.
MORSE, LUCIANO LAIT. “Análise do crescimento do volume recuperável provado de campos de petróleo”. Dissertação de mestrado – COPPE/UFRJ,
M.Sc. Planejamento Energético, 2006.
OSORIO, F. S. “Um Estudo sobre Reconhecimento Visual de Caracteres através de Redes Neurais.” Dissertação de Mestrado, CPGCC, UFRGS,
Porto Alegre - Brasil. Outubro 1991.
PANDA, M. N.; CHOPRA, A. K. “An Integrated Approach to Estimate Well Interactions.” Society of Petroleum Engineers 39563. Nova Deli, India, 1998.
PINHO, André Luis Santos de. “Análise de Séries Temporais”. 21 fev. 2011,
08 jul. 2011. Notas de Aula.
PRINCIPE, J.C.; KUO. J. “Dynamic Modelling of Chaotic Time Series with
Neural Networks”. Advances in Neural Information Processing Systems 7, p. 311-
RANGANATHAN, ANANTH. "The Levenberg-Marquardt Algorithm."
Honda Research Institute, USA. 2004. Disponível em:
http://www.ananth.in/Notes_files/lmtut.pdf. Acesso em 3 de julho de 2012. ROSA, A. J. “Previsão de Comportamento de Reservatórios de Petróleo:
Métodos Analíticos”, 1 ed., Rio de Janeiro, Editora Interciência Ltda., 2002.
RUMELHART, D. E.; WEIGEND, A. “Predicting the Future: a Connectionist Approach.” Stanford: [s.n.], (PDP-90-01, PARCSSL-90-20),
1990.
RUSSELL, S. J.; NORVIG, P.. “Artificial Intelligence: a modern approach.” New Jersey: Prentice-Hall Inc, 1995.
SAMPAIO, TIAGO PITCHON. “Ajuste de histórico de produção usando
Redes Neurais Artificiais”. Monografia de graduação. Curso de Engenharia de
Petróleo - Escola Politécnica, Universidade Federal do Rio de Janeiro. 2009. SILVA, IVAN NUNES DA. “Redes Neurais Artificiais, Curso prático”; para
engenharia e ciências aplicadas/ Ivan Nunes da Silva; Danilo Hernane Spatti; Rogério Andrade Flauzino.-São Paulo: Artliber, 2010.
THOMAS, J. E. “Fundamentos de Engenharia de Petróleo”, 1 ed., Rio de
Janeiro, Editora Interciência Ltda., 2001.
W.S. MCCULLOCH AND W. PITTS. “A logical calculus of the ideas
immanent in nervous activity”. Bulletin of Mathernatical Biophysics, 5:115-
133, 1943.
WEISS, W. W.; BALCH, R. S.; STUBBS, B. A., “How Artificial Intelligence
Methods Can Forecast Oil Production.” Society of Petroleum Engineers 75143.
APÊNDICES
APÊNDICE A – ESTRUTURAÇÃO DO BANCO DE DADOS INICIAL PARA A VARIÁVEL PRODUÇÃO DE ÓLEO (m³/dia)
Caso Base Caso I
Qo Qo
Dados m3/d Dados m3/d
31/07/1998 0,00 31/05/2000 38,19
05/08/1998 5,26 30/06/2000 30,27 *Qo: Série de Produção de óleo.
11/08/1998 5,26 31/07/2000 26,10 *Caso Base: Reservatório produzindo com sua energia natural.
25/08/1998 5,26 31/08/2000 23,05 *Caso I: Reservatório produzindo depois de algum estímulo
31/08/1998 5,26 30/09/2000 21,10 (injeção de água ou gás). 21/09/1998 6,75 31/10/2000 19,04 30/09/1998 6,75 30/11/2000 21,14 22/10/1998 7,22 31/12/2000 27,89 31/10/1998 7,22 31/01/2001 34,19 22/11/1998 7,10 28/02/2001 39,48 30/11/1998 7,10 31/03/2001 43,62 23/12/1998 10,25 30/04/2001 45,93 31/12/1998 10,25 31/05/2001 47,17 23/01/1999 10,41 30/06/2001 47,39 31/01/1999 10,41 31/07/2001 46,86 23/02/1999 11,14 31/08/2001 45,49
APÊNDICE B – FUNÇÕES IMPLEMENTADAS NO SOFTWARE ESTATÍSTICO R – 2.14.1
#Ajustando um modelo de Série Temporal nos valores de vazão mensal. #importando a base de dados
(dados=read.table("C:vazaoB.txt",header=T,dec=",")) #Identificando as variáveis
attach(dados) oleo.casoI
plot.ts(oleo.casoI,col="blue")
#a série não está estacionária, então, trabalha-se com a diferença da série. dif=diff(oleo.casoI)#1ª diferença plot.ts(dif,col="blue") d2=diff(dif)#2ª diferença plot.ts(d2,col="blue") #Gráfico da série Y <- ts(d2[2:127],start=c(1998,7),end=c(2007,12),frequency=12)
y <- window(Y, end=2007+11/12) # deixar 12 últimos meses para previsão y
plot.ts(y,ylab="2ª diferença da série", xlab="Meses",type="l",col="blue",axes=T,main="") # Gráficos das funções de autocorrelação e autocorrelação parcial da série
par(mfrow=c(2,1))
acf(d2,lag.max=12,main="Função de autocorrelação (2ª diferença da série) ") pacf(d2,lag.max=12,main="Função de autocorrelação parcial(2ª diferença da série) ")
#como se tem um pico (correspondendo a ordem do modelo)na função de autocorrelação e um decaimento do tipo exponencial na função de autocorrelação parcial o modelo adequado a se ajustar é um modelo do tipo MA(1).
w=y[1:115]#115 observações e o restante é para previsão (12) (mdl2=arima(y,order=c(0,2,1),include.mean=F))
ajustado=predict(mdl2) #parâmetros do modelo
-0.9875/0.0456# o módulo é maior do que 2
#quanto aos aspectos da estacionariedade e da invertibilidade, o modelo está adequado. #teste de correlação dos erros
tsdiag(mdl2,gof.lag=12) Box.test(mdl2$res,lag=12)
# de acordo com o teste não rejeita-se a hipótese de que os erros são não correlacionados,logo, o modelo ajustado é adequado.
#ANÁLISE DOS RESÍDUOS resi=mdl2$res
plot(resi)
par(mfrow=c(2,2))
hist(resi,main="Gráfico dos Resíduos",xlab="Resíduos",ylab="Densidade",prob=T) curve(dnorm(x,mean(resi),sd(resi)),col="red",add=T,)
qqnorm(resi,main="Gráficos da Normal",xlab="Quantis Teóricos",ylab="Quantis") qqline(resi,col="red")
par(mfrow=c(2,1))
acf(resi,xlim=c(0,25),main="Gráfico da Função de Auto-correlação",xlab="FAC",ylab="Resíduos") pacf(resi,main="Gráfico da Função de Auto-correlação Parcial",xlab="FACP",ylab="Resíduos") #Gráfico da série com o modelo ajustado
w=y[1:127]
(mdl2=arima(w,order=c(0,2,1),include.mean=F)) ajustado=predict(mdl2)
round((ajustado<-y[1:115]-mdl2$res),2) #mdl$res
plot(y[1:115],ylab="Vazão (m³/dia)", xlab="Meses",type="l",col="blue",axes=T,main="") lines(1:115,ajustado[1:115],col="red")
legend(85,39, c("Série", "Modelo ajustado"), col=c("blue","red"), lwd=1,box.col="white") length(ajustado)
rep(1998:2008, each = 12, len = 115)
# Exportando os dados do modelo ajustado write.table(ajustado, "ajustado.txt") #FAZENDO PREDIÇÕES: (w=read.table("C:vazaoB.txt",header=T,dec=".")) attach(dados) w=dados$oleo.casoI (mdl2=arima(w,order=c(0,2,1),include.mean=F)) #predições pontuais (prev=predict(mdl2,n.ahead=12)) (li=prev$pred-1.96*prev$se) (ls=prev$pred+1.96*prev$se) prev1=prev$pred prev1 par(mfrow=c(2,2)) plot(dados$oleo.casoI[116:118],ylab="Vazão (m³/dia)", xlab="Meses",type="l",col="blue",axes=T,main="") lines(1:12,prev1,col="red")
legend(“toprigth” ,c("Série", "Predição a 12 passos"), col=c("blue","red"), lwd=1,box.col="white") #Erro Quadrático Médio (Mean Squared Error - MSE )das previsões
(sum((oleo.casoI[1:127]-ajustado)^2))/127)*100
APÊNDICE C – FUNÇÕES IMPLEMENTADAS NO SOFTWARE MATLAB VERSÃO 7.0.2 (R2011A).
Ajuste do modelo de Rede Neural para correção dos erros associados ao Modelo Estatístico de Série Temporal
% Carregando os dados load('dados')
% Treinamento
erro = vazao - ajustado; erroTrunc = erro(1:115);
t = []; d = [];
p = 2; %Ordem de Memoria de linha de atraso for i = 1:length(erro)-p t = [t erro((p-1)+i:-1:i)]; d = [d erro(p+i)]; end % Embaralhando os dados tam = length(t)-12; shuffle = randperm(tam); tshuffle = t(:,shuffle); dshuffle = d(shuffle);
% net = newff(tshuffle,dshuffle,[20 20 20],{'purelin' 'purelin'}); % net.divideFcn = '';
% net.trainParam.show = 10; % net.trainParam.lr = 0.01; % net.trainParam.goal = 1e-3;
% net.trainParam.epochs = 100; % Número de épocas % net = train(net,tshuffle(),dshuffle());
load rede01
% Plot do erro entre dados reais e modelo ARIMA
figure(1); clf(1); plot(vazao(2:115)) hold on;
plot(ajustado (2:115),'r'); xlabel('Meses'); ylabel('vazão (m³/dia) '); legend('Série', 'Modelo ARIMA(0,2,1)')
% Utilização dos dados reais para simular a rede
erroPred = sim(net,t); Erro = zeros(1,127); Erro(1,3:127) = erroPred;
figure(4); clf(4); hold all; plot(erro) plot(Erro)
legend('Erro-RNA', 'Erro-Modelo ARIMA (0,2,1)') figure(5); clf(5);
plot(erroRede);
% Plot entre os dados reais e o modelo arima corrigido com os dados % da rede neural
figure(6);clf(6);
novoAjuste = ajustado + Erro';
plot(vazao(1:127),'-b');xlabel('Meses'); ylabel('vazão (m³/dia)'); hold on
plot(2:127,novoAjuste(2:127),'-r',115:127,novoAjuste(115:127),'-k');
legend('Série','Modelo ARIMA (0,2,1) corrigido pela RNA','Previsão a 12 passos')
figure(7);clf(7);
plot(vazao(115:126),'-b');xlabel('Meses'); ylabel('vazão (m³/dia)'); hold on
plot(novoAjuste(115:126),'-k'); legend('Série','Previsão a 12 passos')
figure(8);clf(8);
plot(erro(115:126),'-b');xlabel('Meses'); ylabel('vazão (m³/dia)'); hold on
plot(vazao(115:126)-novoAjuste(115:126),'-k');xlabel('Tempo'); ylabel('Erros');
%Erro quadrático médio
eqmARIMA= mse(vazao(1:127)- novoAjuste(1:127)) eqmRNA= mse(vazao(115:127)-novoAjuste(115:127))
%previsões com saída realimentada da rede % In = t(:,115); % Y1 = sim(net,In); % In = [Y1;In(1)]; % Y2 = sim(net,In); % In = [Y2;Y1]; % Y3 = sim(net,In); % In = [Y3;Y2]; % Y4 = sim(net,In); % In = [Y4;Y3]; % Y5 = sim(net,In); % In = [Y5;Y4]; % Y6 = sim(net,In); % In = [Y6;Y5]; % Y7 = sim(net,In); % In = [Y7;Y6]; % Y8 = sim(net,In); % In = [Y8;Y7]; % Y9 = sim(net,In);
% Y12 = sim(net,In); %
% Yt = [Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12]; % erroRede = erro(115:127)-Yt'; % % figure(4); clf(4); % hold all; % plot(erro(115:127)) % plot(Yt) % figure(5); clf(5); % plot(erroRede);
% % Utilização dos dados da própria rede para simular a rede % erroPred = sim(net,t(:,1:115));
% Erro = zeros(1,127);
% Erro(1,3:127) = [erroPred Yt]; % figure(2); clf(2);
% plot(Erro) % hold on;
% plot(erro,'-r'); xlabel('Meses'); ylabel('Erros'); % legend('Erro-RNA', 'Erro-Modelo ARIMA (0,2,1)')
Ajuste do modelo de Rede Neural MLP
% Treinamento dado = vazao ; t = []; d = [];
p = 2; %Ordem de Memória de linha de atraso for i = 1:length(dado)-p t = [t dado((p-1)+i:-1:i)]; d = [d dado(p+i)]; end tam = length(t)-12; shuffle = randperm(tam); tshuffle = t(:,shuffle); dshuffle = d(shuffle);
% net = newff(tshuffle,dshuffle,[20 20 20],{'purelin' 'purelin'}); % net.divideFcn = '';
% net.trainParam.show = 5; % net.trainParam.lr = 0.02; % net.trainParam.goal = 1e-1;
% net.trainParam.epochs = 100; % Número de épocas % net = train(net,tshuffle(),dshuffle());
load rede02 % Plot dados reais
figure(1); clf(1); plot(vazao(2:116))
% Utilização dos dados reais para simular a rede dadosim = sim(net,t);
% Plot entre os dados reais e o modelo ARIMA corrigido com os dados da rede neural
figure(2);clf(2);
% novoAjuste = ajustado + Erro';
plot(vazao(1:115),'-b');xlabel('Meses'); ylabel('vazão (m³/dia)'); hold on
plot(1:115,dadosim(1:115),'-k'); legend('Série','Modelo RNA')
figure(3);clf(3);
plot(vazao(1:115)'- dadosim(1:115),'-k');;xlabel('Meses'); ylabel('Erro absoluto (m³/dia)');
figure(4);clf(4);
plot(vazao(116:127),'-b');xlabel('Meses'); ylabel('vazão (m³/dia)'); hold on
plot(dadosim(116:127),'-k'); legend('Série','Previsão a 12 passos')
figure(5);clf(5);
plot(vazao(115:127)'-dadosim(115:127),'-k');xlabel('Tempo'); ylabel('Erros'); %Erro quadrático médio
mse(vazao(1:115)'- dadosim(1:115)) mse(vazao(116:127)'-dadosim(116:127))