Anda di halaman 1dari 7

23/09/2016

LgicaFuzzyUmaabordagemprticaEmbarcados

Lgica Fuzzy Uma abordagem prtica


Por Flvio Cavalieri - 22/09/2016

Neste artigo apresentamos o funcionamento de um sistema de controle multivarivel,


atravs da implementao de uma lgica FUZZY utilizando a IDE MPLABX em modo
simulao.

Excelentes referncias sobre esse assunto podem ser encontradas neste site, mais
especicamente nos artigos "lgica fuzzy aplicada s engenharias" e "uma introduo
lgica fuzzy".

A biblioteca Fuzzy, composta pelos arquivos FuzzyHead.h e FuzzyLib.c, foi


desenvolvida para trabalhar com duas variveis de entrada e uma varivel de sada,
implementando cinco funes de pertinncia de formato triangular. Os limites de cada
subconjunto e as regras podem ser denidos pelo usurio da biblioteca, porm,
conhecendo o funcionamento da biblioteca, possvel modicar tanto o nmero de
variveis quanto o nmero de subconjuntos de acordo com a sua necessidade.

http://www.embarcados.com.br/logicafuzzy/

1/7

23/09/2016

LgicaFuzzyUmaabordagemprticaEmbarcados

Como cada subconjunto desse sistema apresenta formato triangular, tanto para as
variveis de entrada quanto para a varivel de sada, o valor do grau de pertinncia
calculado baseado na teoria de semelhana de tringulos. Seu clculo ocorre dentro da
funo Fuzzyphy.

Gostou? Junte-se comunidade


Embarcados

No programa Fuzzy.c, denimos os cinco subconjuntos das variveis de entrada e de


sada conforme a atribuio dos seguintes valores:

1
2
3
4
5
6
7
8
9
10
11

fzm.EntradaSinal = variavelAnalogica_a;
fzm.SubMtoBaixo[0] = 0;
fzm.SubMtoBaixo[1] = 10;
fzm.SubBaixo[0] = 0;
fzm.SubBaixo[1] = 20;
fzm.SubNeutro[0] = 10;
fzm.SubNeutro[1] = 30;
fzm.SubAlto[0] = 20;
fzm.SubAlto[1] = 40;
fzm.SubMtoAlto[0] = 30;
fzm.SubMtoAlto[1] = 40;

A Denio acima equivale representao dos subconjuntos para a varivel de


entrada A, conforme a Figura 1.

http://www.embarcados.com.br/logicafuzzy/

2/7

23/09/2016

LgicaFuzzyUmaabordagemprticaEmbarcados

Gostou? Junte-se comunidade


Embarcados

Figura1:RepresentaogrficadossubconjuntosparaaentradaA

A entrada B e a sada do sistema foram parametrizadas com os mesmos valores de A


e, portanto apresentam a mesma representao da Figura 1.

O grau de pertinncia calculado dentro da funo Fuzzyphy utilizando a teoria de


semelhana de tringulos. No exemplo abaixo podemos observar que para um valor
analgico igual a 24, aplicado entrada A, possvel encontrar o valor de grau de
pertinncia 0.4 no subconjunto function4 rotulado como SubAlto na aplicao, e o
valor de grau de pertinncia 0.6 para o subconjunto function3 rotulado como
SubNeutro na aplicao, conforme a Figura 2.

http://www.embarcados.com.br/logicafuzzy/

3/7

23/09/2016

LgicaFuzzyUmaabordagemprticaEmbarcados

Figura2:DefiniodosgrausdepertinnciaparaaentradaA

J a Funo Rulebase calcula a interseco entre os graus de pertinncia para as


duas entradas do sistema, baseado em uma lista de regras previamente denidas
(modelo de Mamdani). A interseco entre dois subconjuntos igual ao valor do
menor deles (mnimo). Para entender essa funo imagine que um valor analgico de
aproximadamente 22 foi aplicado a entrada B, Figura 3.

http://www.embarcados.com.br/logicafuzzy/

4/7

23/09/2016

LgicaFuzzyUmaabordagemprticaEmbarcados

Figura3:DefiniodosgrausdepertinnciaparaaentradaB

Neste caso os graus de pertinncia calculados para essa entrada so de 0.2 para o
subconjunto function4 e de 0.8 para o subconjunto function3. Assim, supondo que
exista a seguinte regra, (Para A=function3 & B=function3 ENTO C=function3), ento o
valor mnimo escolhido para o grau de pertinncia, resultante desta regra, ser de 0.6,
que representa o valor mnimo obtido atravs da funo Fuzzyphy para os
subconjuntos function3 quando o valor analgico da entrada A for igual a 24 e da
entrada B igual a 22. Supondo outra regra, (Para A=function3 & B=function4 ENTO
C=function3), o valor mnimo ser de 0.2 que o valor do grau de pertinncia
encontrado para o subconjunto function4 da entrada B quando esta receber valor
analgico igual a 22.

J na funo de defuzzicao, representada pela funo Defuzzy, foi utilizado o


mtodo do centro de gravidade (centroide) para calcular o valor de sada do
controlador. Neste mtodo o valor resultante do grau de pertinncia, obtido atravs da
funo Rulebase, multiplicado pelo valor central do subconjunto escolhido regra a
regra. feita uma somatria deste valor obtido em cada uma das regras, e o total
dividido pela somatria dos graus de pertinncia.

Utilizando a IDE MPLABX em modo de simulao e o software Matlab, foi realizada a


comparao entre os dois sistemas, com regras e subconjuntos idnticos, obtendo os
seguintes resultados.
Teste 1: Entrada A = 11.6 e Entrada B = 12.5

http://www.embarcados.com.br/logicafuzzy/

5/7

23/09/2016

LgicaFuzzyUmaabordagemprticaEmbarcados

Figura4:Teste1ComparaosadaLgicaFuzzyMPLABXeMATLAB

Teste 2: Entrada A = 26.5 e Entrada B = 35.0

Figura5:Teste2ComparaosadaLgicaFuzzyMPLABXeMATLAB

Teste 3: Entrada A = 16.9 e Entrada B = 6.6

Figura6:Teste3ComparaosadaLgicaFuzzyMPLABXeMATLAB

O Funcionamento da biblioteca Fuzzy, desenvolvida e testada na IDE MPLABX, foi


satisfatrio conforme os resultados dos testes comparativos com o software Matlab.

Baixe os arquivos de exemplo de Lgica Fuzzy

http://www.embarcados.com.br/logicafuzzy/

6/7

23/09/2016

LgicaFuzzyUmaabordagemprticaEmbarcados

Download dos arquivos de exemplo

Os arquivos FuzzyHead.h e FuzzyLib.c so os arquivos cabealho e fonte da biblioteca


desenvolvida para implementar a lgica fuzzy proposta neste artigo. O arquivo Fuzzy.c
o arquivo principal onde so denidos os valores e regras para testes da biblioteca
fuzzy. J o arquivo FuzzyMatlab.s a implementao da lgica fuzzy com os
mesmos valores e regras atribudos no arquivo Fuzzy.c.

Lgica Fuzzy Uma abordagem prtica por Flvio Cavalieri. Esta obra est sob a licena
Creative Commons Atribuio-CompartilhaIgual 4.0 Internacional.

Flvio Cavalieri
https://eletrocursos.gnomio.com/

Sou graduado em Engenharia Eltrica pelo INATEL, Mestre em Engenharia Qumica pela FEQ-UNICAMP e
possuo especializao em Automao e Controle de processos Industriais e Agroindustriais pela
FEAGRI-UNICAMP. Trabalho com desenvolvimento de hardware e software, e treinamento em
microcontroladores. Tambm possuo experincia com desenvolvimento de software para mquinas,
treinamento e manuteno eltrico-mecnica em diversos ramos da indstria, tais como, plstico,
alimentos e bebidas, grca e cabos eltricos. Durante minha carreira tive a oportunidade de ministrar
disciplinas tcnicas em uma universidade e uma escola tcnica, alm de desenvolver um website com
treinamentos focados em linguagem C para microcontroladores (eletrocursos.gnomio.com).

Este site utiliza cookies. Ao us-lo voc concorda com nossa poltica de
privacidade. Saiba mais.
http://www.embarcados.com.br/logicafuzzy/

Continuar

7/7

Anda mungkin juga menyukai