Você está na página 1de 23

TUTORIAL FUZZY MATLAB: O sistema Mamdani Em geral, um sistema fuzzy faz corresponder a cada entrada fuzzy uma sada

fuzzy. No entanto, espera-se que a cada entrada crisp (um nmero real, ou par de nmeros reais, ou n-upla de nmeros reais) faa corresponder uma sada crisp. Neste caso, um n sistema fuzzy uma funo de R em R, construda de alguma maneira especfica. Os mdulos que seguem indicam a metodologia para a construo desta funo: 1) Mdulo de fuzzificao: o que modela matematicamente a informao das variveis de entrada por meio de conjuntos fuzzy. neste mdulo que se mostra a grande importncia do especialista do processo a ser analisado, pois a cada varivel de entrada devem ser atribudos termos lingsticos que representam os estados desta varivel e, a cada termo lingstico, deve ser associado um conjunto fuzzy por uma funo de pertinncia; 2) Mdulo da base de regras : o que constitui o ncleo do sistema. neste mdulo onde se guardam as variveis e suas classificaes lingsticas; 3) Mdulo de inferncia: onde se definem quais so os conectivos lgicos usados para estabelecer a relao fuzzy que modela a base de regras. deste mdulo que depende o sucesso do sistema fuzzy j que ele fornecer a sada (controle) fuzzy a ser adotado pelo controlador a partir de cada entrada fuzzy; e 4) Mdulo de defuzzificao : que traduz o estado da varivel de sada fuzzy para um valor numrico. importante ressaltar que existem diferentes mtodos de inferncia fuzzy com diferentes propriedades. O Fuzzy Logic toolbox do MATLAB oferece duas opes: o Mtodo de Mamdani e o Mtodo de Sugeno. Analogamente, existem diversos mtodos de defuzzificao. Devido simplicidade e eficincia, alm de ser bastante condizente com a intuio humana, todo o contedo desta apostila foi preparado utilizando-se os seguintes mtodos disponibilizados por este toolbox : o Mtodo de Mamdani, na etapa de inferncia, e o Mtodo do centro de gravidade ( centroid), na etapa de defuzzificao. Nota-se que h casos especficos em que se recomenda o uso do mtodo de Sugeno (ver manual do MATLAB). Para um melhor entendimento destes e de outros mtodos de inferncia e de defuzzificao, sugere-se a leitura de PEDRYCZ & GOMIDE. A Figura 1 destaca a configurao bsica para o uso do Fuzzy Logic Toolbox , segundo estas especificaes, e ser mantida como base para todo o desenvolvimento 1

deste manual.

TermosRelacionados o Mtodo comdeInferncia ( Mtodo deMamdani)

Mtodo deDefuzzificao Figura 1 Configurao bsica segundo especificaes pr-estabelecidas para o uso doFuzzy Logic Toolbox

Como introduzir ou adicionar as variveis de entrada (input) e/ou de sada (output). Neste momento, para introduzir ou adicionar as variveis no Fuzzy Logic Toolbox , devem ser criadas caixas para guard-las, o que feito na tela inicial, para cada uma das variveis de entrada (caixas amarelas) e/ou variveis de sada (caixas azuis), selecionando as opes: Input Output

Edit

Add Variables

como mostra o destaque da Figura 2.

Figura 2: Destaque das opes selecionadas para a introduo das variveis de entrada e/ou sada

importante ressaltar que pode haver diversas variveis de entrada bem como de sada. Porm, neste manual, ser tomado o sistema de duas variveis de entrada e uma de sada, o que, na literatura descrito como MISO, posto que em Ingls MISO significa multiple input and simple output; outros sistemas so descritos por MIMO (multiple input and multiple output).

Como remover variveis de entrada e/ou de sada Para remover caixas de variveis de entrada e/ou de variveis de sada, pressionar o boto esquerdo do mouse uma vez na caixa correspondente varivel que se quer remover, seguindo a opo: Edit A d dV Vaar r les ii aa bb le
Remove Selected

como mostra o que est destacado na Figura 3.

Figura 3: Opo selecionada para a remoo de variveis de entrada e/ou sada

Como mudar o nome das variveis de entrada e/ou sada Nesta etapa sero dados nomes s variveis de entrada e de sada. Para mudar o nome das caixas das variveis de entrada, e/ou de sada, pressionar o boto esquerdo do mouse em cima da caixa que se quer renomear, escrever o nome escolhido no local destacado em vermelho no canto inferior direito como indicado nas Figuras respectivamente e pressionar a tecla Enter. 4 e/ou 5

Escolher o Nome

Figura 4: Mudana do nome das variveis de entrada

Escolher o Nome

Figura 5: Mudana do nome das variveis de sada

Como alterar o domnio das variveis de entrada e/ou sada A primeira alterao que deve ser feita dentro das caixas das variveis de entrada e/ou sada, para que estas fiquem representativas do problema que se quer estudar, a determinao do domnio de cada uma dessas variveis. Para tanto se deve pressionar o boto esquerdo do mouse na caixa da varivel, alterando-se o que est destacado no que mostram as Figuras 6, no caso das variveis de entrada, e 7 no caso das variveis de sada, e pressionar a tecla Enter.

Definir o Domnio

Figura 6: Definio do domnio das variveis de entrada

Definir o Domnio

Figura 7: Definio do domnio das variveis de sada

Este procedimento deve ser repetido tantas vezes quanto for o nmero de caixas de variveis de entrada e/ou sada que se quer alterar o domnio.

Funes de pertinncia. De acordo com a teoria apresentada, um conjunto fuzzy caracterizado por uma funo de pertinncia que assume valores dentro do intervalo [0,1]. Enquanto na teoria de conjuntos clssica, a funo de pertinncia assume apenas os valores zeroindicando que o elemento no pertence ao conjunto-, ou um- indicando que o elemento pertence ao conjunto-, na teoria de conjuntos fuzzy, os elementos podem estar associados a graus de pertinncia entre zero e um indicando que os mesmos podem pertencer parcialmente a um conjunto (no "confundir" com meia,75%, 80% de verdade). A princpio, qualquer funo que associe valores entre zero e um a elementos de um dado conjunto, pode ser tomada como funo de pertinncia. Entretanto, na escolha de tais funes, deve-se levar em conta o contexto em que estas sero utilizadas na representao das variveis lingsticas. Neste sentido, tanto o nmero quanto o formato das funes de pertinncia devem ser escolhidos de acordo com o conhecimento sobre o processo que se quer estudar. .

Como alterar o nmero e o formato das funes de pertinncia Para se alterar o nmero e o formato das funes de pertinncia das variveis de entrada deve-se, a partir do que est indicado na Figura 6, pressionar o boto esquerdo do mouse nas seguintes opes:

Edit

Remove all

MFs

e posteriormente, em:

Edit

Remove Add MFs all

A partir do que aparecer o que mostra a Figura 7.

Figura 7: Escolha do nmero e da forma das funes de pertinncia para variveis de entrada

De acordo com as Figuras

8 e 9, que exibem uma ampliao da regio

destacada na Figura 7, deve-se escolher a quantidade e o tipo das funes de pertinncia. Escolhidos o nmero e o formato das funes de pertinncia deve-se pressionar em OK. Tal procedimento deve ser repetido para todas as variveis de entrada. Para se alterar o nmero e o formato das funes de pertinncia das variveis de sada deve-se seguir os mesmos procedimentos j descritos para as variveis de entrada, porm a partir do que est ilustrado na Figura 7.

Escolha o Nmero de Funes de Pertinncia

Figura 8: Escolha do nmero de funes de pertinncia para variveis de entrada.

Escolha o Formato da Funo de Pertinncia

Figura 9: Escolha do formato das funes de pertinncia para variveis de entrada.

Como alterar o domnio e o nome das funes de pertinncia Uma vez selecionados nmero e formato, deve-se determinar, para cada uma das funes de pertinncia, os valores associados mxima pertinncia, onde a funo de pertinncia igual a um, e os valores associados mnima pertinncia, onde o valor da funo de pertinncia igual a zero. Tal procedimento diferente para os distintos formatos de funes de pertinncia disponveis no Fuzzy Logical Toolbox. Os formatos mais comumente utilizados para funes de pertinncia so os triangulares ( trimf), os trapezoidais (trapmf) e os gaussianos ( gaussmf). Por esta razo, neste manual, apenas para estes formatos sero indicados quais procedimentos devem ser seguidos. Funes de pertinncia triangulares (trimf) As funes de pertinncia triangulares so caracterizadas p elo terno ( a, b, c), onde a e c determinam o intervalo dentro do qual a funo de pertinncia assume valores diferentes de zero, e b o ponto onde a funo de pertinncia mxima. A Figura 10 exibe uma funo de pertinncia triangular onde so destacados a, b e c. Nesta figura encontram-se no eixo vertical os valores da funo de pertinncia e no eixo horizontal os valores da varivel que se quer estudar.
b

Figura 10 : Funo de pertinncia triangular

O que de fato a toolbox aciona a funo abaixo: 0 x a A ( x ) = b a c x c b 0 se x a se a < x b se b < x c se x > c

Nome da Funo de Pertinncia

Formato da Funo de Pertinncia Domnio da varivel de entrada input 1. Pontos da Funo de Pertinncia. (a= 0.1; b=0.5 e c= 0.9)

Figura 11: Funes de pertinncia triangulares da varivel de entrada Input1

Para se determinar os valores de a, b e c deve-se, na Figura 9, escolher a opo trimf. Como exemplo, mostrado na Figura 11, escolheu-se, para a varivel de entrada input1, trs funes de pertinncia com formato triangular: mf1, mf2 e mf3, sendo a=0.1;b=0.5 e c=0.9 para mf2. Os outros valores de a, b e c devem ser definidos para cada uma das funes de pertinncia. Pressionando-se o boto esquerdo do mouse em cima da funo de pertinncia que se quer alterar, esta aparecer destacada em vermelho, como o caso da funo mf2 que aparece na Figura 11. Nos locais indicados nesta mesma Figura, deve-se selecionar um nome apropriado para cada funo de pertinncia, e digitar entre os colchetes, separados por um espao, os valores de a, b, c e pressionar a tecla Enter.

Caso haja interesse pode-se utilizar em uma mesma varivel de entrada e/ou sada, funes de pertinncia com formatos distintos. Para tanto basta escolher outro formato no local indicado na Figura 11.

Funes de pertinncia Gaussianas (gaussmf) As funes de pertinncia Gaussianas so caracterizadas pela sua mdia ( ) e seu desvio padro ( ). Este tipo de funo de pertinncia tem um decaimento suave e tem valores diferentes de zero para todo domnio da varivel estudada. A Figura 1 exibe uma funo de pertinncia Gaussiana. Nesta figura encontram-se no eixo vertical os valores da funo de pertinncia e no eixo horizontal os valores da varivel que se quer estudar. 2

Figura 12: Funo de pertinncia gaussiana.

Neste caso, a funo que a toolbox aciona :

se x est fora do domnio 0 A ( x ) = 2 2 exp( ( x ) ) / 2 )

Para se escolher o formato Gaussiano para as funes de pertinncia de uma varivel de entrada e/ou sada, deve-se escolher a opo gaussmf (Figura 9). Como exemplo, observa-se na Figura 1 3 que se escolheu, para a varivel de entrada input1, trs funes de pertinncia com formato Gaussiano.

10

Figura 13: Funes de pertinncia gaussianas da varivel de entrada Input1

A mdia ( ) e o desvio padro ( ) devem ser definidos para cada uma das funes de pertinncia. Clicando-se uma vez em cima da funo de pertinncia que se quer alterar, esta aparecer destacada em vermelho, como o caso da funo mf2 que aparece na Figura 1 3. Nos locais indicados nesta mesma Figura, deve-se selecionar um nome apropriado para cada funo de pertinncia, e digitar entre colchetes, separados por um espao, os parmetros , e pressionar a tecla Enter.

Funo de pertinncia trapezoidal (trapmf) As funes de pertinncia trapezoidais so caracterizadas por um conjunto de quatro valores de a, b, c e d, onde a e d determinam o intervalo dentro do qual a funo de pertinncia assume valores diferentes de zero, e b e c determinam o intervalo dentro do qual a funo de pertinncia mxima e igual a 1. A Figura 1 4 exibe uma funo de pertinncia trapezoidal onde podem so destacados os pontos a, b, c e d. Nesta Figura encontram-se no eixo vertical os valores da funo de pertinncia e no eixo horizontal os valores da varivel que se quer estudar.

11

Figura 14: Funo de pertinncia trapezoidal

Neste caso, acionada a funo:

0 x a b a A ( x ) = 1 d x d c 0

se

xa

se a < x b se b x c se c < x d se x>d

Para se determinar, dentro do Fuzzy Logical Toolbox os valores de a, b, c e d, deve-se escolher a opo trapmf (ver Figura 9). Como exemplo, como se pode observar na Figura 1 5, escolheu-se, para a varivel de entrada input1, trs funes de pertinncia com formato trapezoidal. Pressionando-se uma vez em cima da funo de pertinncia que se quer alterar, esta aparecer destacada em vermelho, como o caso da funo mf2 que aparece na Figura 1 5. Nos locais indicados nesta mesma Figura, deve-se selecionar um nome apropriado para cada funo de pertinncia, e digitar entre os colchetes, separados por um espao, os valores de a, b, c, d e pressionar a tecla Enter.

12

Nome da Funo de Pertinncia

Formato da Funo de Pertinncia Domnio da Varivel de entrada input1 Pontos da Funo de Pertinncia ( a=0.05;b= 0.45; c=0.55 e d= 0.95 )

Figura 15: Funes de pertinncia trapezoidal da varivel de entrada Input1

Os valores de a, b, c e d devem ser definidos para cada uma das funes de


pertinncia.

Criando a base de regras Aps os procedimentos descritos anteriormente, deve-se criar a base de regras. Para tanto pressionar o boto esquerdo do mouse em: Edit Rules

que aparecer na janela o que mostra a Figura 1 6.

13

Quadro Onde as Regras Criadas so Automaticamente Exibidas

Variveis de Entrada

Determina que a Varivel de Entrada e/ ou de Sada no est em um Determinado Nvel

Varivel de Sada

Conexo entre as Variveis de Entrada Peso da Regra (Valores entre Zero e Um) Apaga a Regra Selecionada

Altera a Regra Selecionada Cria uma Nova Regra

Figura 16: Base de regras.

A Figura 16 exibe um exemplo em que duas regras j foram inseridas. Na construo de cada regra deve-se definir a conexo entre as variveis de entrada e as variveis de sada, atravs dos operadores lgicos, e pressionar o boto esquerdo do mouse em add rule. No final deste processo tem-se a formao do sistema de controle fuzzy.

Como utilizar o sistema de controle fuzzy Construdo o sistema de controle fuzzy pode-se arbitrar valores numricos para as variveis de entrada, simulando cenrios factveis, do ponto de vista do especialista, para observar e analisar os valores obtidos para cada varivel de sada. Para tanto, em qualquer tela dentro do Fuzzy Logical Toolbox , pressionar o mouse em: View View Rules

14

do que aparecer o que mostra a Figura 17.

Valores da Vriavel de Sada

Valores das Variveis de entrada

Figura 17: Um cenrio resultante da seleo de valores das variveis de entrada e os associados valores de sada.

Para o sistema ilustrado na Figura 1 7, atribuiu-se o valore 0 .555 para a varivel de entrada 1 e o valor 0 .777 para a varivel 2. Como sada, o sistema fuzzy gerou o valor 0.617, cuja interpretao a que permite o suporte a deciso como ser explicado posteriormente. Para se arbitrar diferentes valores para as variveis de entrada pode-se proceder de duas formas a partir do que mostra a Figura 1 7: a) ou b) Pressionando e arrastando o mouse nas barras verticais vermelhas destacadas; Digitando os valores desejados no local destacado como valores das variveis de entrada,

Como, para cada valor atribudo s variveis de entrada o sistema gera um valor para a varivel de sada, nota-se que o sistema fuzzy neste caso desempenha o papel de uma funo de duas variveis com valores reais, cujo grfico tridimensional (3D) a superfcie gerada pelas operaes lgicas especficas.

15

Superfcie 3D Para visualizar-se a superfcie formada pelas variveis de entrada e de sada, em qualquer janela dentro do Fuzzy Logical Toolbox , pressionar o boto esquerdo do mouse em: View View Surface View Rules

do que aparecer o que est ilustrado na Figura 1 8.

Varivel de Entrada Escolhida para o Eixo X

Varivel de Entrada Escolhida para o Eixo Y

Nmero de Pontos na Malha

Varivel de Sada Escolhida para o Eixo Y

Figura 18: Superfcie 3D gerada

A partir do que mostra a Figura 1 8, possvel obter grficos bidimensionais, de qualquer uma das variveis de entrada em funo da varivel de sada. Para tanto, basta escolher a varivel de entrada que deve permanecer e escolher a opo none no local destinado outra.

Como salvar e buscar o sistema de controle fuzzy O sistema de controle fuzzy pode ser salvo a partir de qualquer uma das telas dentro do Fuzzy Logical Toolbox . Para salvar, pressionar o boto esquerdo do mouse em:

16

File

Save to

Disk

como aparece na Figura 19.

Figura 19:Salvando o sistema de controle fuzzy.

da aparecer o que ilustra a Figura 20.

Figura 20: Escolha do local e do nome do arquivo a ser salvo

e onde se pode escolher a localizao e o nome do arquivo nos locais destacados nos cantos superior e inferior esquerdo da Figura 20 respectivamente. 17

Por outro lado, para carregar, siga os procedimentos descritos anteriormente Pressionar o mouse em File; Import; From Disk, como indicado na Figura 21.

Figura 21: Conjunto de opes para carregar o sistema de controle fuzzy.

da aparecer o que mostra a Figura 22.

NOME

Figura 22: Escolha do local e do nome do sistema de controlefuzzy.

18

Casos sui generis Base de Regras Incompletas. Na construo de um sistema de regras fuzzy deve-se sempre avaliar se a base de regras que est sendo utilizada COMPLETA, isto , deve-se fazer o seguinte questionamento: H regras suficientes para cobrir toda a extenso do problema estudado? Para responder esta questo, considera-se uma varivel domnio da varivel V que no est representada ou coberta. Entretanto, mesmo neste caso, o Fuzzy Logical Toolbox do MATLAB fornece uma sada que corresponde ao ponto mdio do domnio da varivel Resposta, mas que por outro lado no representativa do problema que est sendo utilizado. fuzzy V, como

representada graficamente na Figura 2 3, onde se pode observar que h uma parte do

0.8

0.6

0.4

0.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

A Regio Descoberta

Figura 23: Base de regras incompleta

19

Base de Regras Redundantes

Na construo de um sistema de regras fuzzy tambm se deve verificar se no h regras desnecessrias e que podem ser removidas do sistema. Para verificar esta situao, considere uma varivel fuzzy V como representada graficamente na Figura 2 4, onde se pode observar que os conjuntos fuzzy azul e vermelho j representam ou cobrem todo o domnio da varivel. Sendo assim, o conjunto fuzzy verde redundante. Entretanto, mesmo neste caso, o fornece uma sada. Fuzzy Logical Toolbox do MATLAB

0.8

0.6

0.4

0.2

10

Figura 24: Base de regras redundantes .

20

Outros comandos adicionais Os comandos que apresentados abaixo devem ser digitados no workspace ou janela de comando como aparece. Para definir uma varivel de nome nome faa: >>nome = readfis ('nome do arquivo criado ')

Como gerar grficos das funes de pertinncias associadas s variveis de entrada Para gerar os grficos faa: >>plotmf(nome,' input ',n) onde n o nmero associado varivel de entrada que se deseja obter o grfico. Por exemplo, para n=1, faa: >>plotmf (nome,' input',1) Aparecer o que mostra a Figura 25:

Figura 25: Funo de pertinncia associada primeira varivel de entrada (input1)

21

Como gerar grficos das funes de pertinncias associadas s variveis de sada Para gerar os grficos faa: >> plotmf (nome,'output',n) Onde n o nmero associado varivel de sada que se deseja obter o grfico. Por exemplo, para n=1, faa: >> plotmf(nome,'output',1) Aparecer o que mostra a Figura 26:

Figura 26: Funo de pertinncia associada a primeira varivel de sada (output1).

Resumo do sistema de controle fuzzy Para obter o resumo do sistema de controle faa: >>plotfis(nome) Aparecer o que mostra a Figura 27:

22

Figura 27: Resumo do sistema de controle fuzzy.

Grfico de superfcie (3D)

Para gerar a superfcie 3D faa: >>gensurf( nome) Aparecer o que mostra a Figura 30:

Figura 30: Grfico de superfcie 3D

23