0% acharam este documento útil (0 voto)
6 visualizações27 páginas

Otimização da Fermentação em Usina Sucroalcooleira

O documento descreve um sistema para otimizar a eficiência da produção de álcool em uma usina sucro-alcooleira, utilizando reagentes controlados por um sistema automático baseado em uma rede ADALINE. A equipe desenvolveu um modelo que considera cinco variáveis monitoradas para decidir qual reagente injetar, além de abordar a interferência de ruídos nos sinais de sensores. O treinamento da rede é realizado com dados experimentais, e o sistema é aplicado para classificar situações operacionais na produção.

Enviado por

Ana Carolina
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações27 páginas

Otimização da Fermentação em Usina Sucroalcooleira

O documento descreve um sistema para otimizar a eficiência da produção de álcool em uma usina sucro-alcooleira, utilizando reagentes controlados por um sistema automático baseado em uma rede ADALINE. A equipe desenvolveu um modelo que considera cinco variáveis monitoradas para decidir qual reagente injetar, além de abordar a interferência de ruídos nos sinais de sensores. O treinamento da rede é realizado com dados experimentais, e o sistema é aplicado para classificar situações operacionais na produção.

Enviado por

Ana Carolina
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Prof.

Marcelo Suetake

Alterado em 2017 pelo Prof. Celso


❑ Em uma planta de usina sucro-alcooleira, a eficiência
do processo de fabricação do álcool pode ser
otimizado a partir do controle adequado da injeção
de dois tipos de reagentes (R1 ou R2) em um
determinado estágio do processo de fermentação.
❑ Assim, uma equipe de engenheiros, por meio de
pesquisas e ensaios em laboratório, concluíram que
os reagentes (R1 ou R2) poderiam ser adicionados ao
processo dependendo da concentração de algumas
substâncias (x1, x2 e x3) e de mais outras duas
grandezas físico-químicas (x4 e x5).

2
3
Colheita Moagem Aquecimento 105oC (melaço)
40% de sacarose
(garapa)
Variáveis Medidas:
Alto teor de
- Pressão nos tanques
sacarose
- Temperatura Fermentação Glicose + frutose
- ph
- Teor alcoólico
- Condutividade
- Concentração de C
- Concentração de O Etanol + gás
Catalisa
- Concentração de H carbônico

Reagentes:
- Cloreto Férrico (FeCl3) Alcool Anidro
- Cal hidratada (CaO) (100% etanol)
- Sulfato de Alumínio (Al2SO4) Destilação
Alcool hidratado
(96% etanol) 4
❑ Na sequência, a equipe pretende desenvolver um
sistema automático de acionamento das válvulas
constituintes dos dois tipos de reagentes, cujo
diagrama esquemático pode ser observado na
figura a seguir.

5
Válvulas
R1 Driver de y
R2 Acionamento

ADALINE
x1

DAQ
x2
x3
x4
Caldeira x5

Sensores
Ruídos

❑ Entretanto, notou-se que os sinais sofriam interferências


durante a sua transmissão, distorcendo-se assim as informações
retornadas pelos sensores. Para contornar este problema, a
equipe decidiu treinar uma rede ADALINE para classificar
estes sinais ruidosos e enviar a ação de controle ao driver de
acionamento das válvulas dos reagentes.
6
❑ Como existe cinco variáveis que estão sendo
monitoradas, o neurônio constituinte do ADALINE
terá então cinco entradas {x1, x2, x3 , x4 , x5}.
❑ Conseqüentemente, a saída {y} do ADALINE estará
então decidindo, levando-se em consideração as suas
cinco entradas, qual dos reagentes será adicionado ao
processo, ou sejam:

➢ Reagente R1 → “Classe C1” → { y = -1 }


➢ Reagente R2 → “Classe C2” → { y = 1 }

7
❑ A figura seguinte ilustra o ADALINE a ser
implementado.

x1 w1 −1
 = w0
x2 w2


u
x3 w3 g(.) y


x4 w4 erro
+
Bloco
associador
x5 w5
d
8
❑ A base de dados de treinamento do ADALINE,
disponibilizada no arquivo {[Link]}, foi
levantada por meio de sucessivos ensaios
experimentais e contém o formato seguinte:
N x1 x2 x3 x4 x5 d
1 1.9007 1.0664 1.9147 0.089 0.9267 -1
2 2.3616 1.6669 4.8792 1.6663 0.343 -1
3 4.2315 2.0403 2.3101 2.4789 3.5831 -1
4 4.956 2.6197 4.6272 2.2171 3.0343 -1
5 2.8372 4.8439 4.1225 2.8788 4.4959 1
6 3.2317 1.8979 2.3829 2.7357 3.7906 1
7 0.0743 0.7835 2.3578 1.629 0.7725 1
8 0.2985 3.2902 4.4482 0.3289 0.6065 -1
(…) (…) (…) (…) (…) (…) (…)
9
x1 x2 x3 x4 x5 d
1.9007 1.0664 1.9147 0.0890 0.9267 −1 
 
 2.3616 1.6669 4.8792 1.6663 0.3430 −1 
M =
 4.2315 2.0403 2.3101 2.4789 3.5831 −1 
 
 (...) (...) (...) (...) (...) (...) 

a) Carregar a matriz de treinamento M x1 w1 −1

usando a seguinte instrução: x2 w2


 = w0


u
x3 w3 g(.) y
M = load(‘nome_do_arquivo.txt’); −
x4 w4 erro
+
Bloco
associador
x5 w5
d 10
b) Implementar as seguintes instruções a partir da matriz M
➢ Definir a Matriz T, referentes aos sinais de entrada do
ADALINE, que seja composta pelas cinco primeiras colunas de
M, inserindo-se ainda o elemento -1 (relativo ao termo θ) em
sua primeira coluna
➢ Definir o vetor d, referente aos sinais de saída do ADALINE,
que seja composto pela última coluna de M.

x1 x2 x3 x4 x5 d
1.9007 1.0664 1.9147 0.0890 0.9267 −1 
 
 2.3616 1.6669 4.8792 1.6663 0.3430 −1 
M =
 4.2315 2.0403 2.3101 2.4789 3.5831 −1 
 
 (...) (...) (...) (...) (...) (...) 

T 11
c) Inicializar as seguintes variáveis, além de T e d:
➢ Taxa de Aprendizagem em 0.0025; {η0.0025}
➢ Contador de época em 0; {epoca  0}
➢ Parâmetro de Precisão 10-6 {ε10-6};
➢ Vetor de pesos (w) com valores aleatórios
uniformemente distribuídos entre 0 e 1, sendo
cada um de seus elementos representandpo os
seguintes parâmetros:
T
w =  w1 w2 w3 w4 w5 
 
12
d) Implementar a instrução que, dada uma linha k da matriz
T, obtenha o potencial de ativação do neurônio, ou seja:
xT(k,:) {onde x conterá a k-ésima linha da matriz T}
Teste a sua instrução para k = 2, verificando se o valor de
retorno está correto.

 −1 1.9007 1.0664 1.9147 0.0890 0.9267 


 
 − 1 2.3616 1.6669 4.8792 1.6663 0.3430  k=2
T =
 −1 2.3616 1.6669 4.8792 1.6663 0.3430 
 
(...) (...) (...) (...) (...) (...) 

u[Link] {realize eventuais transposições que sejam


necessárias}
13
FASE
TREINAMENTO DA
REDE
Função EQM (erro)
14
e) Implementar a função EQM que receba T, w e d como
argumentos de entrada, retornando então o valor do erro
quadrático médio, que é obtido pela seguinte expressão:
p
EQM = 1
p k =1 
( d ( k ) − u ( k ) )2 x1 w1 −1
 = w0
x2 w2
onde p é o número de amostras
de treinamento.

u
x3 w3 g(.) y


function z = EQM(T,w,d) x4 w4 +
erro
s  0; Bloco
associador
x w
p  size(T,1); {quantidade de amostras} 5 5 d

Para k variando de 1 até p, fazer:


x  T(k , :) ;
u  [Link] ; {realize eventuais transposições que sejam necessárias}
s  s + (d(k) – u)2; Teste se a função está ok (sem erros de
Fim_Para programação), utilizando-se os valores de T,
w e d que já foram especificados
z  s/p; anteriormente. 15
ASE TREINAMENTO DA REDE

FASE TREINAMENTO
DA REDE
Algoritmo de
Treinamento
16
❑ Algoritmo de Treinamento (Regra Delta)
function [w, epoca, erro] = Treina_adaline(T, d)
precisão  10-6;
n  0,0025
epoca  0 x1 w1 −1
Incializar w aleatoriamente (OBS: SALVE ESSES VALORES)  = w0
x2 w2
amostras  size(T, 1)

u
y
eqm_ant  0; x3 w3 g(.)

erro
eqm_atual  EQM(T,w,d); x4 w4 +
Bloco
associador

Enquanto | eqm_atual – eqm_ant |  precisão , fazer: x5 w5


d
epoca  epoca + 1;
eqm_ant  eqm_atual;
Para k variando de 1 até a quantidade total de amostras em T, fazer:
x  T(k , :); {atribua padrão k de T ao vetor x // Utilize as instruções do item “d”}
u  [Link]; {realize as eventuais transposições que sejam necessárias}
w  w +  .(d(k) – u).x;
Fim_Para
{Execute a rede pelo menos três vezes e
eqm_atual  EQM(T,w,d);
analise os números de épocas e os valores
erro(epoca)  eqm_atual;
finais para o vetor w}
Fim_Enquanto
17
Fim_Programa
Regra Delta
❑ Compare os resultados
TREINAMENTOS
1º 2º 3º
Pesos Aleatório final Aleatório final Aleatório final
0 = 
1
2
3
4
5
Épocas

❑ Obs: quando inserir tabelas (ou figuras) nos relatórios,


escrever no texto o que o leitor deve notar (ou verificar
de importante nelas). 18
j)
f) Trace o gráfico do erro quadrático médio {erro} em função das
épocas de treinamento.

t=1:epoca;
plot(t, erro)

19
f1) Faça o treinamento novamente, mas ao invés de usar pesos
aleatórios use os pesos nulos:
w = [0 0 0 0 0 0]

** Verifique se a rede converge.

f2) Faça novamente o treinamento com os pesos nulos e verifique


se o número de épocas foi o mesmo ou se houve alteração.

20
FASE DE
OPERAÇÃO DA
REDE

21
g) Após o treinamento do ADALINE, aplique a mesma para
selecionar que tipo de reagente será inserido no processo
industrial em relação a outras configurações operacionais.
Carregue numa matriz V o arquivo {[Link]} que contem
a relação completa destas situações representadas por
medições de x1, x2, x3, x4 e x5.
x1 x2 x3 x4 x5

 2.9370 0.7290 4.5267 1.9206 3.7214 


 
 0.8147 2.8296 4.6581 2.3493 1.9144 
V =
 3.4284 2.3311 1.3016 1.7078 2.5767 
 
 (...) (...) (...) (...) (...) 

h) Prepare esta matriz V, adicionando-se os elementos -1 em
sua primeira coluna, a fim de ser inserida nas entradas do
ADALINE já treinado. 22
i) Implemente as instruções que permita a classificação, após a
realização do processo de treinamento, usando-se o algoritmo
seguinte. Forneça também os resultados da classificação.

function [ output_args] = adaline(V,w)


amostras  size(V, 1)
Para k variando de 1 até a quantidade
total de amostras em V, faça:
x  V(k, :);
u  [Link]; ➢ Se { y = -1 } ➔ “Adicionar Reagente R1”
y(k)  sinal(u); ➔ Classe C1
Imprima(y);
Fim_Para ➢ Se { y = 1 } ➔ “Adicionar Reagente R2”
➔ Classe C2

23
❑ FUNÇÕES DO MATLAB PARA ESCREVER NA TELA
❑ O comando disp pode imprimir mensagens que
contenham strings delimitadas por aspas e valores de
variáveis

❑ C1 = ‘Classe C1 →Adicionar Reagente R1‘;


❑ C2 = ‘Classe C2 →Adicionar Reagente R2’;
❑ k = 2;
❑ u = 3;
❑ if(u<0) disp(C1);
❑ else disp(C2);
❑ end
24
❑ FUNÇÕES DO MATLAB PARA ESCREVER NA TELA
❑ O comando fprintf permite imprimir na tela com várias
formatações (equivalente ao printf da linguagem C)

❑ %s - utilizado para imprimir uma string


❑ %c - utilizado para imprimir uma character
❑ %d - utilizado para imprimir um n ́umero inteiro
❑ %f - utilizado para imprimir um n ́umero ponto flutuante
❑ \n - Gera uma quebra de linha
❑ \t - Gera tabulação
❑ \\ - utilizado para imprimir uma barra
❑ \% - utilizado para imprimir por cento 25
❑ FUNÇÕES DO MATLAB PARA ESCREVER NA TELA
❑ O comando fprintf permite imprimir na tela com
várias formatações

❑ C1 = ‘Classe C1 →Adicionar Reagente R1‘;


❑ C2 = ‘Classe C2 →Adicionar Reagente R2’;
❑ k = 2;
❑ u = 3;
❑ fprintf('a amostra k=%d pertence a ',k);
❑ if(u<0) y(k) = fprintf(' %s \n', C1);
❑ else y(k) = fprintf(' %s \n', C2);
❑ end
26
❑ >> Adaline( V,w )
❑ a amostra k=1 pertence a classe Adicionar Reagente R2 --> Classe C2
❑ a amostra k=2 pertence a classe Adicionar Reagente R2 --> Classe C2
❑ a amostra k=3 pertence a classe Adicionar Reagente R1 --> Classe C1
❑ a amostra k=4 pertence a classe Adicionar Reagente R2 --> Classe C2
❑ a amostra k=5 pertence a classe Adicionar Reagente R2 --> Classe C2
❑ a amostra k=6 pertence a classe Adicionar Reagente R2 --> Classe C2
❑ a amostra k=7 pertence a classe Adicionar Reagente R2 --> Classe C2
❑ a amostra k=8 pertence a classe Adicionar Reagente R2 --> Classe C2
❑ a amostra k=9 pertence a classe Adicionar Reagente R1 --> Classe C1
❑ a amostra k=10 pertence a classe Adicionar Reagente R2 --> Classe C2
❑ a amostra k=11 pertence a classe Adicionar Reagente R1 --> Classe C1
❑ a amostra k=12 pertence a classe Adicionar Reagente R2 --> Classe C2
❑ a amostra k=13 pertence a classe Adicionar Reagente R1 --> Classe C1
❑ a amostra k=14 pertence a classe Adicionar Reagente R1 --> Classe C1
❑ a amostra k=15 pertence a classe Adicionar Reagente R2 --> Classe C2
27

Você também pode gostar