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:

Edit

Add Variables

como mostra o destaque da Figura 2.

Input
Output

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

Remove

Selected

A d d VVaar ri ia ab bl el e s

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.

Escolher o Nome

Figura 4: Mudana do nome das variveis de entrada

Escolher o Nome

Figura 5: Mudana do nome das variveis de sada

4 e/ou 5

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:

Remove
all

Edit

MFs

e posteriormente, em:

Edit

Remove
Add
MFs

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

all

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.

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
Pontos da Funo de Pertinncia
( a=0.05;b= 0.45; c=0.55 e d= 0.95 )

Domnio da Varivel de
entrada input1

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)

Altera a Regra Selecionada

Apaga 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

14

View

Rules

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 Y

Varivel de Entrada
Escolhida para o Eixo X

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

fuzzy V, como

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


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.

0.8

0.6

0.4

0.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

A
Regio Descoberta

Figura 23: Base de regras incompleta

19

0.8

0.9

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

Figura 24: Base de regras redundantes .

20

10

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

Você também pode gostar