Você está na página 1de 110

UNIVERSIDADE MACKENZIE

Programa de ps-graduao em Engenharia Eltrica


rea de Concentrao: Engenharia da Computao

SISTEMAS COMPUTACIONAIS BASEADOS EM LGICA FUZZY

Francisco Ribacionka

Dissertao
de
Mestrado
apresentada
a
Universidade
Mackenzie como requisito parcial
para a obteno do ttulo de Mestre
em Engenharia Eltrica na rea da
Engenharia da Computao.

Orientador: Prof. Dr. Lacio Carvalho de Barros

So Paulo
1999

R112

Ribacionka, Francisco
Sistemas Computacionais baseados em Lgica Fuzzy /
Francisco Ribacionka So Paulo, 1999
115 f.: il; 30 cm
Dissertao (Mestrado em Engenharia Eltrica rea de
Concentrao: Engenharia da Computao)
Universidade Mackenzie, 1999
Bibliografia: f. 115.
1. Lgica Fuzzy 2. Conjuntos Fuzzy 3. Engenharia da
Computao I. Ttulo

CDD 511.322

minha me (Em Memria)

Ao meu pai

s minhas irms Neusa e Nanci

minha esposa Mrcia e meu filho Andr, pela pacincia!

Certa noite, em uma de suas aulas no mestrado, o professor Vilmar nos contou a
seguinte estria:

Estava o coelho digitando a sua tese de mestrado, em sua toca, quando passa rasteira
uma guia, que comenta: : - O que ser que o meu almoo estar fazendo?. Pousa
na entrada da toca e pergunta: - Oi amigo coelho. O que voc est fazendo?. Estou

digitando

minha

dissertao

de

mestrado!.

- Mas do que trada a sua pesquisa?. - Trata em como transformar uma guia em
almoo

de

coelho!.

Ora!

Podes

me

mostrar

seu

trabalho?.

- Claro, responde o coelho. Entre na minha toca que eu mostro. E foi pena para
todo lado. Aps alguns minutos, palitando os dentes, o coelho comenta:
-Realmente, o tema do meu trabalho muito bom.. E, com um tapinha em suas
costas, o leo completa: - Sim, o tema importante. Mas o orientador muito
mais!

Agradeo a Deus por ter colocado o Lacio no meu caminho.

INTRODUO
A teoria de conjuntos fuzzy foi introduzida por Lotfi Asker Zadeh em 1965 (Zadeh
(1965)), como uma teoria matemtica aplicada a conceitos vagos. Desde ento a
pesquisa e aplicao desta teoria em sistemas de informtica tem crescido. Uma rea de
aplicao da teoria fuzzy a chamada raciocnio aproximado, conforme Zadeh (1975),
onde um tipo de raciocnio no totalmente certo nem totalmente errado. Este tipo de
raciocnio se aproxima da forma do raciocnio humano. Neste caso, variveis
lingsticas so representadas por conjuntos fuzzy, interpretando uma varivel
lingstica como uma varivel cujos valores so palavras ou sentenas em uma
linguagem natural. Conjuntos fuzzy proporcionam, aos mtodos de desenvolvimento de
sistemas computacionais, uma forma de programao mais prxima da linguagem e do
raciocnio humano.
Atualmente, Lotfi Zadeh diretor do BISC1 - Berkeley Initiative in Soft Computing
- na Universidade da Califrnia, em Berkeley. O seu grupo tem como objetivo a
divulgao e pesquisa das aplicaes da "computao Soft", que uma derivao da
computao tradicional. Zadeh chama a computao tradicional de "Computao Hard"
e a principal diferena entre elas o fato da computao Soft ter uma tolerncia em
relao impreciso, incerteza ou verdade parcial, tendo como modelo a mente
humana, conforme Zadeh (1997).
A computao Soft baseada na Lgica Fuzzy, Teoria de Redes Neurais,
Raciocnio Probabilstico, Algortimos Genticos, Teoria do Caos e Teoria do

O
endereo
na
Internet
deste
grupo
de
pesquisa

http://www.cs.berkeley.edu/projects/Bisc, e pode ser um ponto de partida para


uma busca na Internet dos grupos de pesquisa sobre Lgica Fuzzy.

Aprendizado, onde cada uma destas teorias se complementam para apresentar na


computao Soft uma soluo mais abrangente para uma faixa maior de aplicaes.
Uma conseqncia disto que em muitos casos, um problema pode ser resolvido mais
eficientemente usando uma combinao destas teorias ao invs do uso exclusivo de uma
delas. Um exemplo so os sistemas NeuroFuzzy em aplicaes industriais como mostra
Altrock (1995).
Zadeh (1997) afirma que, alm de aplicaes industriais, a computao Soft est
sendo aplicada em produtos para o consumidor final, como aparelhos de ar
condicionado, filmadoras e tantos outros, onde as tcnicas de computao Soft aplicadas
a estes produtos incluem um indicativo de "Quociente de Inteligncia de Mquina", ou
MIQ (Machine Intelligence Quotient), sendo a Lgica Fuzzy a teoria mais aplicada nos
produtos com este quociente.
Alm destas aplicaes, a teoria fuzzy j est incluida em programas tradicionais
para aplicaes cientficas e de engenharia. Dois destes programas so o MatLab da
empresa Math Works2 e o Mathematica da empresa WRI3. O programa MatLab contm
uma interface grfica que possibilita o desenvolvimento de mtodos fuzzy e
NeuroFuzzy, com gerao de cdigo fonte na linguagem C. O programa Mathematica
fornece um conjunto de recursos para criar, modificar e visualizar sistemas baseados na
Lgica Fuzzy.
Na bibliografia consultada, o termo Lgica Fuzzy usado de duas formas:

O endereo na Internet com informaes sobre o mdulo fuzzy do


programa MatLab http://www.mathworks.com/products/fuzzylogic
3

Na Internet o endereo para obter maiores informaes sobre Lgica fuzzy no


programa mathematica http://store.wolfram.com/view/fuzzylogic

1) Com o objetivo de generalizar a lgica clssica Aristotlica, onde as proposies


so valoradas apenas por 0 ou 1 (falsas ou verdadeiras), com o intuito de quantificar,
formalizar e mesmo raciocinar com conceitos subjetivos e imprecisos (fuzzy).
2) Como generalizao de tudo que envolve conceitos fuzzy.
Neste trabalho so utilizadas as duas formas, onde feito um estudo da teoria fuzzy
e como esta teoria pode contribuir no desenvolvimento de sistemas para soluo de
problemas complexos e de difcil modelamento.
No Captulo 1, tem-se uma viso geral das aplicaes da teoria fuzzy e um histrico
de seu desenvolvimento.
No Captulo 2, faz-se um estudo da teoria tradicional de conjuntos e da teoria de
conjuntos fuzzy, procurando mostrar as diferenas fundamentais entre estas teorias.
No Captulo 3 faz-se um estudo da lgica tradicional e da lgica fuzzy, procurando
apresentar as diferenas fundamentais entre ambas, onde tambm introduzido o
conceito de raciocnio aproximado.
No Captulo 4 estuda-se uma metodologia para o desenvolvimento de Sistemas
Fuzzy, com a descrio de um exemplo. A codificao deste exemplo na linguagem de
programao C e a concluso deste trabalho feita no captulo 5. Este programa foi
desenvolvido no ambiente operacional Linux. O fato do Linux ser um sistema aberto e
ter um compilador C padro ANSI, proporciona o desenvolvimento de programas mais
facilmente adaptveis a outros ambientes operacionais.

CAPTULO 1. APLICAES DA LGICA FUZZY


Segundo Klir (1997), a teoria fuzzy tem se estabelecido como uma regra importante
na Cincia da Computao, tornando os recursos de armazenamento e manipulao da
informao e do conhecimento em uma forma mais compatvel com o pensamento
humano. A principal vantagem de se usar teoria fuzzy nestes sistemas baseados em
computao est na capacidade adquirida de representar e manipular informao e
conhecimento expresso numa linguagem natural. Esta capacidade torna estes sistemas
mais flexveis e realistas.
A Lgica Fuzzy surgiu h cerca de trinta anos com a publicao do artigo Zadeh
(1965), mas somente na atualidade est sendo aplicada na confeco de produtos e
sistemas. Tem sido usada como uma ferramenta em sistemas de controle de processos
industriais, aplicaes domsticas e de diverso eletrnica, sistemas de diagnsticos e
outros sistemas especialistas. Criada nos Estados Unidos, esta tecnologia vem crescendo
em aplicaes no Japo e na Europa e o nmero de patentes requeridas vem aumentando
exponencialmente. Segundo Cox (1998), a maior parte vem de aplicaes de
Controladores Fuzzy.
As principais reas de aplicao da Lgica Fuzzy so: Sistemas de Controle Fuzzy,
Tomada de Deciso, Reconhecimento de Padres e Processamento de Imagens,
Medicina, Ecologia, Banco de Dados Fuzzy, NeuroFuzzy e Aplicaes em Sistemas
Operacionais. A seguir, descreve-se cada uma destas aplicaes.

1.1 SISTEMAS DE CONTROLE FUZZY


Lee (1990), afirma que, sistemas de controle a rea que mais tem recebido
aplicaes da teoria fuzzy, especialmente em aplicaes industriais. Ele tambm afirma
que o uso de controladores fuzzy tem como objetivo emular a forma humana de operar
um sistema. Generalizando, um controlador fuzzy pode ser visto como um mtodo de
tomada de deciso, baseado no raciocnio aproximado, fazendo com que o sistema se
parea mais com a forma humana de operar o sistema controlado.
Enquanto controladores clssicos so baseados em modelos matemticos rgidos
para controle de processos, controladores fuzzy so baseados no conhecimento da
operao humana. Este conhecimento formulado em termos de regras de controle
fuzzy, cada um expresso por uma proposio condicional, tal como:
SE

velocidade do veculo devagar

distncia entre o veculo e o sinal de "Pare" grande

ENTO presso sobre os freios nenhuma


onde velocidade e distncia so variveis observadas do processo controlado,
enquanto presso uma varivel que representa a ao a ser controlada. Os termos
lingsticos devagar, grande e nenhuma so apropriadamente representados na lgica
fuzzy.
Muitos produtos disponveis no mercado de consumo j contm controladores
fuzzy, segundo Zadeh (1997): Mquinas de lavar roupa, aspiradores de p, barbeadores,
filmadoras, automveis (sistemas de freios, transmisso automtica, e outras funes),
refrigeradores e aparelhos de ar condicionado. Sistemas mais complexos so usados

para controlar grupos de elevadores, sistemas de metr urbano e controle de trfego de


veculos.
Em Arbex (1996), a arquitetura de controladores fuzzy apresentada em detalhes e
uma discusso a respeito dos elementos de projeto realizada, com uma comparao
entre controladores fuzzy e controladores convencionais.
Maruyama (1991), apresenta diretrizes gerais para o desenvolvimento de projeto de
controladores fuzzy, com a apresentao da arquitetura de controladores fuzzy com uma
discusso sobre os parmetros deste projeto.

1.2 TOMADA DE DECISO


Tomar uma deciso uma das atividades humanas fundamentais e o objetivo da
mesma o estudo de como so feitas e de como elas podem levar a um maior sucesso.
Klir (1995) mostra como feita a aplicao da teoria fuzzy sobre a teoria de tomada de
deciso, atravs da utilizao de conceitos vagos e pouco especficos, semelhantes
formulao humana de preferncias e objetivos.
Na teoria clssica trabalha-se com um conjunto de alternativas naturais, onde a
deciso feita sobre certas condies disponveis para a referida resoluo. A resoluo
tomada sobre condies de riscos, os quais so determinados pela distribuio
probabilstica de cada ao. Quando as probabilidades das aes no so conhecidas, o
grau de risco s pode ser estimado aproximadamente, e as decises so feitas sobre
graus de incerteza. Neste caso, pode-se aplicar a teoria fuzzy para se obter um maior
grau de sucesso.
Os sistemas fuzzy podem ser desenvolvidos para auxiliar na deciso de tomada de
preo de um produto novo como mostra Cox (1998) ou na compra uma casa, segundo
ilustra Klir (1997), ou at na escolha da escola para seu filho, como est em McNeill
(1994). So sistemas que auxiliam no processo de deciso.
Exemplo 1
Para ilustrar este mtodo, supe-se uma pessoa que dever decidir-se por uma entre
quatro propostas de emprego, considerando o salrio oferecido e a distncia entre o
local de trabalho e sua casa.
Estas informaes podem ser representadas por dois conjuntos fuzzy, sendo salrio

representado pela letra S e distncia, representado pela letra D. Colocados em uma


escala entre 0 e 1, sendo 0 o pior caso, e 1 o melhor caso; a pessoa atribui o valor 0.1
para a primeira proposta, aqui chamada de p1, 0.3 para a proposta p2, 0.48 para a
proposta p3 e 0.8 para a p4. O conjunto S fica:
S: {0.1, 0.3, 0.48, 0.8}
Este conjunto caracteriza que a proposta p4 uma proposta mais interessante em
termos de salrio do que a proposta p1.
Para o conjunto D a pessoa atribui a seguinte seqncia ordenada pelas propostas:
D: {0.4, 0.6, 0.2, 0.2}
Ou seja, em uma escala entre 0 e 1, sendo 0 o emprego fica muito longe de sua casa
e 1 fica muito prximo. A proposta p1 recebe o valor 0.4, a proposta p2 recebe o valor
0.6, a proposta p3 o valor 0.2 e p4 tambm 0.2, pois a distncia entre o local de trabalho
das propostas p3 e p4 e sua residncia so iguais.
Analisando o conjunto D, conclui-se que a empresa com a proposta p2 a que fica
mais prxima de sua casa.
Aplicando o mtodo proposto por Klir (1995), a combinao dos dois conjuntos S e
D gera o conjunto final F dado pelo menor valor entre cada elemento para as propostas
p1, p2, p3 e p4:
F={menor(0.1,0.4),menor(0.3,0.6), menor(0.48,0.2), menor(0.8,0.2)}
F={0.1,0.3,0.2,0.2}
O conjunto final F tem os valores 0.1 para a proposta p1, 0.3 para a proposta p2, 0.2

para a proposta p3 e 0.2 para a proposta p4. Deste conjunto F a deciso tomada
levando-se em conta o elemento com o valor mais prximo de 1. Neste caso a melhor
proposta de emprego a proposta p2.
O prximo item tambm envolve tomada de deciso, onde o sistema deve escolher
um entre vrios padres no processamento de imagens.

1.3 Reconhecimento de Padres e Processamento de Imagens


O reconhecimento de padres est associado ao processamento de imagens. Klir
(1997), afirma que o objetivo bsico comparar as categorias identificadas nos dados
com categorias definidas em tabelas ou base de dados. Uma aplicao o
reconhecimento ptico de caracteres, ou OCR (Optical Character Recognize), onde
atravs de um scanner digitaliza-se textos para posterior converso de uma imagem em
um texto manipulvel por um programa de computador. Quando se digita um texto em
um editor de textos, cada letra um valor numrico em uma tabela. A converso de uma
imagem em texto lida com a manipulao de imagens, pois cada letra digitalizada deve
ser convertida para um nmero que represente esta letra.
Shimura (1975), considera o reconhecimento de padres essencialmente fuzzy,
porque no h uma fronteira definida entre as categorias de fontes de caracteres. Afirma
que o reconhecimento de padres mais um evento probabilstico do que
determinstico, pois a impresso de caracteres pode ser afetada por vrias situaes,
como a m qualidade de impresso ou sujeira no papel.
No caso de se ter um padro, onde o nmero de modelos de exemplo para
comparao e reconhecimento limitado, impedindo a aplicao da teoria
probabilstica, um modelo fuzzy mais til na classificao de padres desconhecidos
do que os mtodos de classificao tradicionais.
1.4 MEDICINA
A aplicao da teoria fuzzy na medicina tem sido reconhecida desde 1970, segundo
Klir (1997). O foco principal tem sido o modelamento dos processos de diagnstico de
doenas.

Exemplo 2
Por exemplo, para diagnosticar a cirrose o mdico faz exames de sangue para
identificar se:
"Total de protenas est diminuindo, -globulina est freqentemente diminuindo,
e -globulina est aumentando".
Os termos diminuindo, freqentemente, e aumentando so valores vagos. Assim,
para representar estes termos de forma manipulvel, a teoria fuzzy uma opo.

1.5 ECOLOGIA
Barros (1992, 1997), tem aplicado a teoria fuzzy em dinmica de populao
distinguindo basicamente duas situaes. A primeira quando acredita-se que o ambiente
(clima, higiene, cidade, floresta, etc.) onde vivem os indivduos, interfere fortemente na
dinmica de suas relaes; a outra trata de questes de competio ou predao entre
espcies onde tanto o conceito de presa como o de predador so cotados de maneira
subjetiva.
Um ser, como o tubaro, pode ser considerado como predador, porm seu grau de
predao certamente no o mesmo durante toda a sua vida, podendo at sair da
condio de predador para presa quando muito jovem ou velho.

1.6 BANCOS DE DADOS FUZZY


Um banco de dados informatizado tem como objetivo capacitar um usurio a
manipular e recuperar informaes armazenadas eletrnicamente, como descrito em
Klir (1995). Muitos modelos para representar estas informaes tm sido propostos.
Um destes modelos chamado de modelo relacional, que consiste de um conjunto
multi-dimensional de relaes manipuladas como tabelas, conforme conceitua Korth
(1994). As colunas destas tabelas correspondem a campos ou atributos e so chamados
de domnios. Cada domnio definido em um conjunto universal apropriado. As linhas
destas tabelas so os elementos da relao e correspondem a registros, chamados de
tuplas.
O acesso ao banco de dados feito atravs de operaes algbricas tradicionais,
como a unio ou a interseo sobre os domnios a serem operados, a fim de produzir a
informao desejada.
O modelo relacional proposto por Buckles (1983), difere do modelo tradicional no
seguinte aspecto: os elementos das tuplas, contidos em uma relao, podem ser
subconjuntos do domnio universal, permitindo a incluso de conceitos vagos como
"tamanho igual a grande", ou "potencial igual a bom". A aplicao da algebra relacional
fuzzy utilizada para acessar um banco de dados fuzzy, providencia uma maior
flexibilidade na recuperao e manipulao das informaes em uma linguagem mais
prxima da linguagem humana.
Cox (1995), prope a aplicao da teoria fuzzy em banco de dados gerenciados pela
linguagem SQL (Structured Query Language) com a criao de novas bibliotecas de
comandos SQL, com a capacidade de manipular informaes vagas ou imprecisas.

Segundo esta proposta, com a teoria fuzzy a capacidade de busca e recuperao de


informaes atravs da linguagem SQL ampliada de forma a permitir aplicaes na
rea financeira, para negcios e na industria com um alcance que o uso tradicional no
permite. Como os problemas das reas citadas envolvem conceitos imprecisos, como
situao economicamente vivel, alta produtividade ou baixa liquidez a teoria
fuzzy bem aplicada.
A prxima seo tambm trata da manipulao de informaes, onde, utilizando
uma base de dados, o sistema tem como objetivo o aprendizado de um determinado
comportamento.

1.7 NEUROFUZZY
A combinao com a teoria de redes neurais fornece uma capacidade de
aprendizado para fazer com que os controladores fuzzy se adaptem a uma variada gama
de condies, como descrito em Altrock (1997), e em Altrock (1995). O objetivo das
redes neurais o de imitar a mente humana, a fim de processar informaes atravs de
algoritmos que capacitem um aprendizado de um determinado comportamento. O
benefcio da teoria fuzzy o de capacitar a tomada de decises, onde a teoria de redes
neurais permitem um aprendizado, a partir de um conjunto de dados, enquanto a teoria
fuzzy proporciona uma forma de se obter resultados sobre este aprendizado.
Altrock (1997), tambm mostra como esta teoria tem sido utilizada em aplicaes
industriais, aplicaes na rea financeira e de negcios.
Blinder (1994), apresenta a implementao da lgica fuzzy em redes neurais
artificiais aplicados na biologia. Mostra que a representao de problemas biolgicos
tem um grande grau de incerteza e impreciso lingsticas e que, atravs da teoria fuzzy,
aliada a teoria de redes neurais, obtm-se uma ferramenta com grande poder de sntese.

1.8 SISTEMAS OPERACIONAIS


Kandel (1998), apresenta o uso da tecnologia fuzzy na arquitetura de sistemas
operacionais. O sistema operacional uma parte importante de um sistema de
computador e tem como objetivo principal, gerenciar eficientemente a arquitetura do
computador, a qual formada pelos elementos de hardware e software que compem
este sistema.
Tcnicas fuzzy podem ser usadas para um aprimoramento da qualidade de um
sistema operacional com a incluso de algoritmos fuzzy, pois muitos elementos que
compem um sistema de computador podem ser considerados fuzzy. Por exemplo, o
tempo de acesso a memria, que pode ser mais rpido ou no de acordo com as
condies gerais de uso do sistema, ou o tempo de resposta de um processamento, que
depende do espao em disco disponvel para uso de um determinado programa. Os
termos mais rpido e tempo de resposta so valores vagos, onde a teoria fuzzy pode ser
aplicada para se obter um melhor gerenciamento do sistema, a fim de se obter melhores
resultados.
Perguntas do tipo "Deve-se segmentar o programa em blocos grandes ou pequenos
para se obter o menor tempo de execuo?" so problemas que o sistema operacional
deve resolver a todo instante. Valores vagos como grandes, pequenos e menor
possibilitam a aplicao da teoria fuzzy.
Este captulo tratou das aplicaes da teoria fuzzy. No captulo 2 ser visto a teoria
de conjuntos fuzzy.

CAPTULO 2. CONJUNTOS FUZZY


Na teoria clssica de conjuntos, um elemento ou pertence ao conjunto ou no
pertence ao mesmo. Esta dicotomia reflexo da lgica clssica, onde cada proposio
tratada como totalmente falsa ou totalmente verdadeira. No entanto, muitas proposies
no podem ser bem caracterizadas dessa forma.
Por exemplo, na classe das pessoas altas de uma localidade a fronteira no pode ser
precisamente determinada. Isto porque h uma transio contnua entre ser alto e no ser
alto. No razovel que uma pessoa com 1.69m seja considerada baixa e outra com
1.70m alta.
H muitos outros exemplos que no podem ser representados totalmente pela teoria
clssica de conjuntos; como a classe dos altos salrios em uma empresa, a linha de
custo de um produto, ou a experincia administrativa de uma pessoa. Um conjunto
fuzzy um recurso natural para caracterizar estes conceitos.
Uma das principais motivaes para a criao de conjuntos fuzzy a representao
de conceitos imprecisos. Um indivduo membro do grupo de pessoas altas de acordo
com o conceito de alto. A idia atribuir um grau (valor) a cada membro individual do
grupo que indica o grau de compatibilidade do elemento com o conceito que se deseja
precisar.
Com o objetivo de dar um tratamento ou mesmo tornar programvel conceitos que
julga-se vagos ou imprecisos, como bem maior, bem menor, aproximadamente, que
surge a idia de conjuntos fuzzy (ou nebulosos).
Zadeh (1965) props ento a seguinte definio matemtica:
Definio 2.1

Um subconjunto fuzzy A de um conjunto clssico X dado por uma funo a:X


[0,1], onde a(x) o grau de pertinncia do elemento x a a, com os graus 1 e 0
representando, respectivamente, a pertinncia mxima e a no pertinncia do elemento
ao conjunto fuzzy A. A funo a chamada grau de pertinncia do conjunto fuzzy A.
Baseando-se na caracterizao de um conjunto clssico A atravs da sua funo
caracterstica 1A que definiu-se um subconjunto fuzzy por meio de uma funo
"generalizando" o conceito de subconjunto clssico. Isto , enquanto a funo
indicadora (ou caracterstica) 1A que caracteriza o subconjunto A assume apenas valores
no conjunto {0,1}, a funo grau de pertinncia A(x) do subconjunto fuzzy A pode
assumir qualquer valor no intervalo [0,1].
Aqui neste texto, a exemplo de tantos outros, s vezes o prprio conjunto fuzzy A
ser usado para indicar sua funo grau de pertinncia.
A construo de conjuntos fuzzy tratada na prxima seo.

2.1 CONSTRUINDO CONJUNTOS FUZZY


A construo de conjuntos fuzzy tem como objetivo modelar um sistema atravs de
termos lingsticos apropriados. Estes termos podem ter aplicaes diferentes, conforme
o contexto. Por exemplo, o termo "jovem" tem um significado diferente quando
utilizado por crianas ou por adultos. A sua construo varia sempre para diferentes
universos.
O problema de se construir as funes grau de pertinncia no contexto de vrias
aplicaes no um problema da teoria fuzzy em si. um problema relacionado a um
novo campo chamado de "Engenharia do Conhecimento", onde se concentra a aquisio
dos fatos relacionados ao conhecimento da situao. O processo de aquisio do
conhecimento envolve um ou mais especialistas na rea de aplicao e um engenheiro
de conhecimento. O engenheiro deve transformar em uma forma operacional o
conhecimento fornecido pelos especialistas.
Muitos mtodos para construo da funo grau de pertinncia tm sido
desenvolvidos, e um deles descrito no exemplo a seguir.
Exemplo 3
Supondo que se tem em uma competio cinco mulheres para a disputa de Salto
Ornamental: Mrcia, Cristina, Nanci, Neusa e Terezinha e o jri composto por dez
juzes, descritos por J1, J2, ..., J10, que daro 1 para um bom salto e 0 para um salto ruim.
Deve-se construir uma funo grau de pertinncia A que capture o termo lingstico
"excelente saltadora". Aps receber os resultados dos juzes, monta-se uma tabela
como:

Tabela 1 - Notas fornecidas pelos Juizes


Juiz
J1
J2
J3
J4
J5
J6
J7
J8
J9
J10

Mrcia
1
0
0
1
0
0
0
1
0
0

Cristina
1
0
1
0
0
1
0
1
0
0

Nanci
1
1
0
1
1
1
0
1
0
0

Neusa
1
1
0
1
1
1
0
1
0
0

Terezinha
1
1
1
1
1
1
0
1
1
1

Para cada concorrente calcula-se o grau de pertinncia de acordo com a mdia do


nmero total de respostas favorveis ao nmero total de juzes. Este procedimento
fornece o seguinte conjunto fuzzy para a excelente saltadora:
A = 0.3 / Mrcia + 0.4 / Cristina + 0.6 / Nanci + 0.6 / Neusa + 0.9 / Terezinha
Neste exemplo, tem-se que Terezinha pertence mais ao conjunto fuzzy das
excelentes saltadoras do que as demais e Mrcia pertence menos. Aqui utiliza-se uma
forma de representar este conjunto fuzzy. A representao de um conjunto fuzzy facilita
o seu entendimento e as formas de se representar estes conjuntos vem a seguir.

2.2 REPRESENTAES DE CONJUNTOS FUZZY


A representao das funes que definem os membros de um conjunto fuzzy facilita a
visualizao deste conjunto, e pode ser feita na forma tabular ou de lista, graficamente e
na forma analtica.
Para conjuntos finitos, as funes podem sempre ser representadas por tabelas. A
tabela representando um conjunto fuzzy lista todos os elementos do conjunto com seus
respectivos graus de pertinncia. No seguinte exemplo tem-se uma ilustrao deste
tpico.
Exemplo 4
Seja A o conjunto dos alunos "estudiosos" de uma sala de aula de uma faculdade, e
sejam os alunos desta sala: Fernando, Carlos, Mrcia e Andr. Este conjunto A um
subconjunto do conjunto universo X com todos os alunos da faculdade. Nem todos os
alunos do conjunto A estudam diligentemente, logo alguns tm um grau de mais
estudioso, outros menos estudioso variando entre os valores 0 e 1. Para os alunos
citados tem-se a representao tabular:
Tabela 2 - Alunos e seus graus de estudo
Estudante
Carlos
Mrcia
Fernando
Andr

Grau de estudo
0.3
0.7
0.8
0.9

Alternativamente tabela acima, pode-se listar os pares consistindo de cada


membro com seu grau de estudo, da seguinte forma:
A = { (Fernando; 0.8), (Carlos; 0.3), (Mrcia; 0.7), (Andr;0.9)}

Esta segunda forma tabular mais comumente escrita assim:


A = 0.8/Fernando + 0.3/Carlos + 0.7/Mrcia + 0.9/Andr
Aqui o smbolo / usado apenas para associar o elemento do conjunto universo X e
o seu grau de pertinncia ao conjunto fuzzy A. Assim tambm o sinal de + no significa
soma; simplesmente conecta os elementos do grupo. A forma geral para representar o
conjunto fuzzy A quando X finito tem a forma:

A = A( x ) / x
Uma outra forma de se representar um conjunto fuzzy feita graficamente.
A representao grfica a mais usada na literatura fuzzy por ter uma interpretao
mais intuitiva. No caso de se fazer a representao em duas dimenses, o eixo vertical
representa a funo grau de pertinncia no intervalo [0,1], e o eixo horizontal contm a
informao a ser modelada.
A seguir tem-se trs exemplos de representao grfica de conjuntos fuzzy. No
exemplo 5, tem-se uma curva que inicia em 1 (no eixo vertical) e se aproxima do eixo
horizontal, ou seja, toma forma de uma curva decrescente. No exemplo 6 tem-se uma
curva que cresce e depois decresce, na forma de sino. No exemplo 7, tem-se uma curva
que inicia prxima ao eixo horizontal e vai crescendo at o limite de 1.

Exemplo 5
Um conjunto fuzzy J compatvel com o conceito de jovem deve, no mnimo, indicar
que, quanto menos idade um indivduo tiver, mais jovem ser. Sua funo grau de
pertinncia J(x) pode ser representada como na figura 1.

Figura 1 Funo grau de pertinncia de jovens


Exemplo 6
O conjunto fuzzy de pessoas de meia idade poderia ser representado pela funo
A(x) ilustrada na figura 2.
Neste exemplo, a curva tem a forma de sino, crescendo da esquerda para a direita
at uma certa idade, e depois decrescendo com a idade.
Que a curva deva ter esta forma acredita-se que seja consenso. As controvrsias
talvez apaream a respeito da idade, onde h mudana do crescimento da curva.

Figura 2 Conjunto de pessoas de meia idade


Exemplo 7
Suponha que uma universidade defina nveis de experincia acadmica, de acordo
com o nmero de crditos feitos pelos alunos, conforme a tabela 3:
Tabela 3 - Nveis de experincia acadmica
Nvel
Iniciante
Segundanista
Jnior
Snior

Crditos (em horas)


0-32
33-62
63-94
95-126

Ao contrrio da teoria clssica de conjuntos que definiriam precisamente os nveis


de experincia, o termo vago grau de experincia acadmica corresponde a um
genuno conjunto fuzzy. Os crditos (em horas) que classificam os nveis dos
indivduos, porm h diferenas de crditos dentro de cada nvel. Por exemplo, o
indivduo com 126 crditos mais snior que aquele que tem 95 crditos. Uma
representao grfica para este exemplo pode ser a seguinte:

Figura 3 - Representao dos nveis de experincia acadmica


Nesta fase, em que os conjuntos fuzzy esto sendo definidos, de fundamental
importncia o trabalho conjunto do especialista e do engenheiro de conhecimento, como
descrito na seo 2.1.
A representao analtica tambm bastante utilizada em teoria fuzzy.
Quando o conjunto universo X infinito, impossvel listar todos os elementos com
seus graus. O exemplo a seguir ilustra este caso.
Exemplo 8
Por exemplo, o conjunto fuzzy A dos nmeros reais em torno de 6 no pode ser
representado na forma tabular por motivos claros. No caso, uma representao analtica
de A :

x 5

A( x) = 7 x
0

Se 5 x 6
Se 6 x 7
caso contrrio

A figura 4 representa graficamente este conjunto.

Figura 4 - Conjunto fuzzy dos nmeros reais "em torno de 6"


Aps examinar as diversas formas de representar conjuntos fuzzy, segue-se as
operaes que podem ser feitas entre estes conjuntos.

2.3 OPERAES ENTRE CONJUNTOS FUZZY


Executar operaes entre conjuntos fuzzy significa combinar, comparar ou agregar
estes conjuntos. As operaes entre conjuntos permitem construes que so muito
importantes em vrias situaes envolvendo informaes e processamento de dados.
Na teoria tradicional, as operaes bsicas entre conjuntos so trs: Unio,
Interseo e Complemento. Na teoria fuzzy estas so chamadas de operaes bsicas,
existindo outras que generalizam estas, conforme visto em Gomide (1998), em Klir
(1995), e em Blinder (1994). Para o desenvolvimento deste trabalho ser visto apenas as
operaes bsicas.
A seguir tem-se as definies para Unio, Interseo e Complemento de Conjuntos,
para a teoria tradicional e para a teoria fuzzy.
Definio 2.2
Seja X o conjunto universo. A unio entre dois conjuntos A e B na teoria clssica
representada por AB, e definida como o conjunto que contm todos os elementos
pertencentes ao conjunto A ou ao conjunto B. Formalmente:
AB = {x X | x A ou x B}

(1)

Considera-se a unio entre dois conjuntos fuzzy A e B em X, denotada por AB, o


conjunto expresso pela equao (2) e definida pela funo grau de pertinncia:
(AB)(x) = max [A(x), B(x)]
para todo x X.
Exemplo 9

(2)

Supe-se que X seja o conjunto de n pacientes de um mdico, identificados pelos


nmeros 1, 2, 3, 4, 5 e sejam A e B os conjuntos que representam os pacientes em X
com Presso Alta e Febre, respectivamente. Usando a equao (2) podemos determinar
AB dos pacientes em X que tm presso alta ou febre, conforme a tabela 4:
Tabela 4 - Ilustrao da Unio dos conjuntos fuzzy A e B
Paciente
1
2
3
...
n

A=Presso Alta
0.6
1.0
0.2
...
1.0

B=Febre
0.7
1.0
0.8
...
1.0

AB
0.7
1.0
0.8
...
1.0

Os valores desta tabela so os graus com que cada paciente pertence ao conjunto
fuzzy A, B, e AB.

A prxima definio a da interseo de conjuntos.


Definio 2.3
Seja X o conjunto universo. A interseo entre dois conjuntos A e B na teoria
clssica de conjuntos denotada por AB e contm todos os elementos pertencentes a A
e a B simultaneamente. Formalmente:
AB = {x X | x A e x B}

(3)

Na teoria de conjuntos fuzzy, a interseo entre dois conjuntos fuzzy A e B


definidos no universo X denotada por AB, definida por sua funo grau de
pertinncia dada por:
(AB)(x) = min[A(x), B(x)]
para todo x X.

(4)

Exemplo 10
Como exemplo, seja A o conjunto de rios que so longos, B o conjunto de rios
navegveis. A interseo AB dada por rios que so longos e navegveis, conforme
ilustrado na tabela 5:
Tabela 5 - Ilustrao da Interseo de conjuntos fuzzy para o exemplo 10
Rio
Amazonas
Nilo
Danbio
Mississipi

A=Rio Longo
1.0
0.9
0.5
0.8

B=Navegvel
0.7
0.6
0.8
0.5

AB
0.7
0.6
0.5
0.5

Neste exemplo tem-se que o rio Amazonas tem um grau 0.7 na escala [0,1] como
sendo navegvel e longo enquanto que o rio Mississipi possui grau 0.5, de acordo com a
ltima coluna da tabela.
As particularidades do complemento de um conjunto fuzzy so descritas a seguir.
Definio 2.4
Na teoria tradicional de conjuntos, o complemento de um conjunto A denotado por
A' e composto por todos os elementos do conjunto universo X que no pertencem a A .
Mais precisamente:
A' = { x | x X e x A}

(5)

Os elementos x de A' podem ser caracterizados pela funo indicadora de A' dada
por:

I A' ( x) =
0

Se x A'
Se x A'

Na teoria de conjuntos fuzzy, dado um subconjunto fuzzy A de um conjunto


universo X, o complemento fuzzy de A outro subconjunto fuzzy A' de X que "troca" o
grau de pertinncia dos elementos de A . Isto , enquanto que para cada x X, A(x)
expressa o grau que indica o quanto x pertence a A, A'(x) expressa quanto x no pertence
a A . A funo grau de pertinncia de A' definido por
A'(x) = 1 - A(x)

(6)

Para todo x X.
Exemplo 11
Para ilustrar o complemento de um conjunto fuzzy, toma-se o exemplo 7 dos alunos
com experincia acadmica. De acordo com a definio para complemento de conjuntos
fuzzy, as funes grau de pertinncia de A e de seu complemento A' (dos alunos sem
experincia acadmica) esto representadas na figura 5

Figura 5 - Complemento de um conjunto fuzzy


Uma conseqncia da impreciso dos limites dos conjuntos fuzzy a de que h uma
sobreposio do conjunto com seu complemento. Quando um aluno pertence ao grupo
dos alunos com experincia com grau 0.8, ele tambm pertence ao grupo de alunos sem

experincia com grau 0.2, como indicado na figura 6 onde no eixo das abscissas so
colocadas as horas de crditos. Esta uma diferena fundamental entre a teoria clssica
e a teoria de conjuntos fuzzy. Na teoria clssica, um elemento ou pertence ao conjunto
ou a seu complementar.
Nesta seo discutiu-se as operaes entre conjuntos fuzzy. Na prxima ser
discutida o conceito de relaes fuzzy.

2.4 RELAES FUZZY


Associaes entre objetos tm sido assunto de grande interesse para a humanidade.
Matematicamente, as associaes entre objetos est intimamente ligada ao conceito de
relaes entre conjuntos, que por sua vez definida atravs do produto cartesiano.
Definio 2.6
O produto cartesiano X1 x X2 x .. x Xn dos conjuntos X1, X2, ..., Xn constituido
pelas n-uplas (x1, x2, ..., xn) onde cada coordenada xi um elemento do conjunto Xi.
Formalmente tem-se:
X1 x X2 x ... x Xn = {(x1, x2, ..., xn):x1 X1, x2 X2, ..., xn Xn}
A qualquer subconjunto do produto cartesiano X1 x X2 x ...x Xn d-se o nome de
Relao (R). Quando o produto cartesiano composto apenas por dois conjuntos X1 x
X2, a relao R chamada de binria e no caso em que X1 = X2 = ... = Xn = X, diz-se que
R uma relao em X.
Todos os conceitos sobre relao enunciados acima se referem teoria clssica.
Enquanto as relaes clssicas descrevem a presena ou ausncia de associao
entre os elementos de dois ou mais conjuntos, as relaes fuzzy tm a inteno de captar
o valor ou nvel da associao entre os elementos dos conjuntos.
Sendo a relao R um subconjunto do produto cartesiano, tal relao pode ser
identificada por sua funo caracterstica. Para definir uma relao fuzzy, a idia usar
a funo grau de pertinncia no lugar da caracterstica para o caso clssico.
Definio 2.7
A qualquer subconjunto fuzzy R do produto cartesiano X1 x X2 x ... x Xn, d-se o

nome de relao fuzzy. Identificando a relao fuzzy R com sua funo grau de
pertinncia, o valor R(x1, x2, ..., xn ) [0,1] indica o grau de associao entre os
elementos x1, x2, ..., xn .
A relao fuzzy assim como no caso clssico, chamada de binria quando tem-se
apenas dois conjuntos X1 x X2 compondo o produto cartesiano.
Uma relao fuzzy binria uma generalizao da relao binria tradicional no
sentido que a funo grau de pertinncia generaliza a funo indicadora.
Na teoria tradicional, a relao R:X x X{0,1} dita:
1.

Reflexiva se R(x1, x1) = 1

2.

Simtrica se R(x1, x2) = 1 implica R(x2, x1) = 1

3.

Transitiva se R(x1, x2) = R(x2, x3) = 1 implica R(x1, x3) = 1

4.

Anti-simtrica se R(x1, x2) = R(x2, x1) = 1 implica x1 = x2

H muitas maneiras de se converter estas propriedades de uma funo R:X x


X{0,1} para uma funo R:X x X[0,1]. Nguyen (1997) apresenta uma delas, para
uma relao fuzzy R em um conjunto X, para todo x1, x2 e x3 X, a relao :
1.

Reflexiva se R(x1, x1) = 1

2.

Simtrica se R(x1, x2) = R(x2, x1)

3.

Transitiva se R(x1, x3) R(x2, x3) R(x2, x3)

4.

Anti-simtrica se R(x1, x2) > 0 e R(x2, x1) > 0 implica x1 = x2


A seguir, descreve-se um exemplo de uma relao binria fuzzy.

Exemplo 12
Para exemplificar, considere a relao binria fuzzy R em um conjunto D de
documentos e um conjunto C de termos chaves usados na recuperao em um sistema
de informao de um determinado banco de dados:
D = {d1, d2, ..., dn}
C = {c1, c2, ..., cn}
Onde D pode ser um banco de dados bibliogrficos e C a lista de nomes dos autores
das informaes armazenadas.
Sua funo grau de pertinncia definida no produto cartesiano DxC. Para cada
documento d no conjunto D e para cada elemento chave c no conjunto C, o grau de
pertinncia R(d,c) pode ser interpretado neste caso como o grau de pertinncia do
documento d para o termo c.

Este grau pertence ao intervalo [0, 1], sendo que o grau igual a 1 significa que a
chave de busca fornecida permite recuperar a informao exata procurada, e um valor
igual a 0 significa que no h nenhum documento correspondente a ela no banco de
dados. Ou seja, se a chave fornecida for um nome completo e houver um documento
correspondente a ele no banco de dados, esta chave ter valor 1 para este documento. Se
no houver um documento referente a este autor, ento ela ter valor 0.
Caso seja fornecido um nome parcial, possvel que vrios documentos
correspondam a esta chave, recebendo ela um valor parcial para cada documento
fornecido. Uma chave com o contedo Francisco Ribacionka ter um valor 1 caso se
encontre algum registro correspondente a esta chave de busca. Uma chave com
contedo Francisco ter um valor menor, pois recuperar todos os registros que
contenham esta palavra.
Esta caracterizao do relacionamento entre documentos e termos chave altamente
expressiva, pois a informao buscada. Qualquer relao clssica definida no mesmo
produto cartesiano menos expressiva: requer que cada documento seja declarado como
relevante ou no para cada termo chave.
Em comparao com as relaes clssicas, relaes fuzzy substancialmente
aumentam a capacidade de expressar os conceitos de relacionamento em uma
linguagem natural.
Para um melhor entendimento destas relaes, h a sua representao grfica. Na
teoria clssica de conjuntos, as principais formas de se representar graficamente uma
relao entre conjuntos so a representao por coordenadas e representao matricial.
O mesmo ocorre na teoria de conjuntos fuzzy.

Na teoria clssica, toda relao um subconjunto do produto cartesiano que pode


ser expressa por uma lista com todos os pares que compem a relao quando os
conjuntos so finitos.
Exemplo 13
Considere a relao R={(galinha, ovos), (vaca, leite), (cabra, leite)}. A figura 6
ilustra a relao R onde os pontos marcados especificam os pares que fazem parte da
relao.

Figura 6 representao por coordenadas da relao R acima


Os graus de pertinncia dos pares ordenados que esto relacionados so todos iguais
a 1 enquanto os que no esto relacionados zero.
Uma relao fuzzy finita tambm pode ser representada por uma lista de pares
ordenados do produto cartesiano levando em conta seus graus. Os pares cujos graus so
zero usualmente so omitidos. Uma representao por coordenadas, neste caso,
precisaria de um terceiro eixo.
Exemplo 14
Suponha que a produo de leite de vaca seja o dobro da de leite de cabra. Neste
caso, se atribuir grau 1 para indicar a relao de vaca com leite, razovel que cabra
com leite deve ter grau . Assim sendo, tem-se uma relaofuzzy e faz-se necessrio

um terceiro eixo para indicar o grau. A figura abaixo ilustra este exemplo.

Figura 7 - Representao por coordenadas de uma relao fuzzy


Na teoria fuzzy, alm da representao grfica, uma outra forma de representar
relaes binrias atravs de matrizes, cujas entradas so os graus correspondentes aos
elementos do produto cartesiano envolvidos. Considere a relao binria fuzzy em XxY,
onde X={x1, x2, ... ,xn} e Y={y1, y2, ... , ym}. Seja R uma relao fuzzy de X em Y, e R(xi,
yj)=rij o grau com que xi est relacionado com yj. Uma representao matricial para R
dada pela tabela 6 abaixo.
Tabela 6 - Relao matricial XxY
R
x1
x2
...
xn

y1
r11
r21
...
rn1

y2
r12
r22
...
rn2

...
...
...
...
...

ym
r1m
r2m
...
rnm

Exemplo 15
Como exemplo, considere o conjunto X com a relao de trs grandes cidades:
X={So Paulo, Curitiba, Porto Alegre}
e R a relao fuzzy em X representando a relao muito longe de, com valores
aceitos no intervalo [0,1]. Um valor prximo de 0 significa perto, e um valor prximo

de 1 significa longe. Representando So Paulo por S, Curitiba por C e Porto Alegre


por P uma possibilidade para R pode ser dada pela matriz na tabela 7.

Tabela 7 Representao matricial da relao fuzzy L acima

S
C
P

S
0
0.4
1

C
0.4
0
0.6

P
1
0.6
0

O exemplo 13 teria a matriz da tabela 8, pois no caso clssico as entradas da matriz


seriam 0 ou 1 para se obter uma representao fuzzy binria por matrizes.
Tabela 8 Representao matricial da relao R
R
Ovos
Leite
Cereal

Vaca
0
1
0

Cabra
0
1
0

Galinha
1
0
0

Nesta seo mostrou-se que, em comparao teoria tradicional, relaes fuzzy


possibilitam uma maior capacidade de representar informaes. Na prxima seo ser
descrito o conceito de nmero fuzzy.

2.5 NMERO FUZZY


Assim como no caso clssico, aqui tambm pretende-se fazer "contas". A diferena
que aqui pretende-se, por exemplo, "somar" quantidades imprecisas. Para isto, "criase" os objetos que generalizam os nmeros reais. Tais objetos sero chamados de
nmeros fuzzy.
O conceito de nmero fuzzy vem do fato de muitos fenmenos no poderem ser
caracterizados por nmeros precisos. Precisamente, tem-se a seguinte definio:
Definio 2.8
Um conjunto fuzzy A chamado de nmero fuzzy quando o conjunto universo onde
A est definido o conjunto dos nmeros reais e A normal. Isto , A um nmero
fuzzy se A:R [0,1] e A(x)=1 para algum x, dado como certo.
Os nmeros fuzzy pertinentes a este trabalho so aqueles que expressam conceitos
como em torno de um valor preciso ou possivelmente, de um intervalo.
Segundo Klir (1997), a forma geral para expressar a funo grau de pertinncia de
um nmero fuzzy triangular :

xa
1
A( x) =
s
0

Se a - s x a + s
caso contrrio

A figura 8 contm a representao deste nmero fuzzy.

Figura 8 - Representao na forma triangular


Outra classe importante tem a forma trapezoidal. Cada elemento desta classe
caracterizada por cinco parmetros, a, b, c, d, e. Sua representao analtica tem a forma
genrica:
a x
a b

1
A( x ) =
d x
d c

Se a x < b
Se b x c
Se c < x d
caso contrrio

A figura 9 contm uma representao desta funo.

Figura 9 - Representao analtica genrica na forma trapezoidal


Funes grau de pertinncia com a forma de sino tambm so comuns. A frmula
genrica para estes casos :

(xa )
b
A( x) = e
0

se (a-s) x (a+s)
caso contrrio

A figura 10 contm uma representao desta funo.

Figura 10 - Representao analtica genrica na forma de sino


As operaes algbricas com nmeros fuzzy so as mesmas da teoria clssica.
Neste trabalho ser tratado apenas soma e subtrao de nmeros fuzzy.
A soma ou subtrao de dois nmeros fuzzy utiliza as regras de soma e subtrao de
intervalos. A adio de um intervalo dada pela frmula:
[a,b] + [c,d] = [a+c,b+d]

(7)

A subtrao de dois intervalos dada pela frmula:


[a,b] [c,d] = [a-d, b-c]

(8)

Para nmeros fuzzy triangulares, o exemplo a seguir mostra como fcil obter suas
soma e subtrao.

Exemplo 16
Os nmeros fuzzy representados na Figura 11 indicam o conceito de
aproximadamente 2 e 4, respectivamente.

Figura 11 Representao dos nmeros fuzzy 2 e 4


Para executar a adio dos nmeros dados na figura 11, primeiro soma-se os valores
centrais, 4 + 2 = 6. Este ser o valor central do resultado da soma. A soma das bases a
soma dos intervalos [3,5] + [1,3] = [4,8].
A subtrao d-se da mesma forma, 4 2 = 2, que o valor central do resultado da
subtrao, e os extremos do nmero calculado a partir da subtrao dos intervalos
[3,5] - [1,3] = [0,4] representados pela figura 12.

Figura 12 - Resultado da soma e da subtrao dos nmeros fuzzy 2 e 4


Neste captulo foram tratadas as vrias formas de apresentao dos conjuntos fuzzy
e as operaes que neles podem ser executadas. No captulo 3 ser tratado o conceito de
lgica fuzzy e sua utilizao em raciocnio aproximado.

CAPTULO 3. LGICA FUZZY


O termo Lgica Fuzzy utilizado de duas formas: a primeira, para representar e
manipular informaes imprecisas com o propsito de tomar decises. o uso da teoria
de conjuntos fuzzy e envolve todos os conceitos descritos no captulo 2; a segunda
refere-se extenso da lgica clssica, que o objetivo deste captulo.
O uso da lgica fuzzy tambm possibilita concluses imprecisas a partir de
proposies imprecisas, como tpico na linguagem natural. Esta rea usualmente
referida como raciocnio aproximado. A seguinte afirmao um exemplo de raciocnio
aproximado:
Selos antigos so usualmente colecionveis;
Selos colecionveis so caros;
Portanto, selos antigos so usualmente caros.
Esta uma inferncia dedutiva. Alguns dos predicados no so termos precisos, a
saber: antigos, usualmente e caros; por este motivo, a lgica clssica no trata estes
termos. O propsito da lgica fuzzy dar sentido formal para estas inferncias,
baseando-se em termos lingsticos imprecisos, tais como: alto, jovem, normal,
verdadeiro, falso, parecido, muito ou pouco, entre outros.
De uma forma ampla, a lgica fuzzy uma aplicao da teoria de conjuntos fuzzy.
Utiliza os conceitos, princpios e mtodos desenvolvidos na teoria de conjuntos fuzzy
para formular a teoria do raciocnio aproximado, que necessria para estabelecer a
conexo entre os graus de pertinncia de um conjunto fuzzy e os graus de verdade nas
proposies fuzzy.
No prximo tpico sero relacionados alguns conceitos da lgica tradicional e as
bases para o desenvolvimento da lgica fuzzy.

3.1 LGICA CLSSICA E MULTIVALUADA


A lgica binria, baseada no "Sim" ou "No" foi desenvolvida por Aristteles, e
chamada de "Lgica Aristotlica". Aristteles desenvolveu sua teoria a partir do
trabalho de Pitgoras e seus antecessores que acreditavam na preciso matemtica do
universo e que tudo poderia ser definido atravs de uma relao matemtica.
A partir da lgica clssica que trata do raciocnio baseado em proposies,
chamada de clculo proposicional. um sistema usado para representar conhecimento
na forma de sentenas declarativas que expressam proposies, utilizando-se letras e
smbolos lgicos para forma-las. Segundo Klir (1997), inferncias so listas de
declaraes proposicionais, onde uma delas a concluso, e as outras, premissas que
do suporte a esta concluso.
A seguir tem-se um resumo do clculo de proposies (Nguyen (1997)). Seja V =
{a, b, c, ... }. Os elementos do conjunto V so chamados de variveis lgicas.
Especifica-se trs conectivos bsicos: (e), (ou), (no) e dois conectivos lgicos,
(implica) e (equivalncia). A tabela 9 contm alguns smbolos lgicos.
Tabela 9 - conectores lgicos
Smbolo
Operao

negao
Conjuno

Disjuno

Implicao

Equivalncia

A partir dos elementos do conjunto V e estes conectivos, obtm-se expresses como


a b, a b, a (b c), etc. Estas expresses so chamadas de frmulas.
O conjunto de todas as frmulas denotado por F. Para qualquer funo
t1:V{0,1} tem-se uma funo t2:F{0,1} definida assim: para cada varivel a em

uma frmula, substitui-se t1(a) na frmula. A tabela 10 define as operaes , e para


os valores verdade {0,1}.
Tabela 10 Valores verdade para a lgica tradicional

0
1

0
1

1
1

0
1

0
0

0
1

0
1

1
0

O prximo exemplo ilustra a valorao de uma proposio da lgica clssica,


utilizando-se os conectores lgicos e as regras estabelecidas pela tabela 10.

Exemplo 17
Suponha que t1(a)=0, t1(b)=1 e t1(c)=1, ento:
t2(((a b) c) (b c))

= ((t1(a) t1(b)) t1(c)) (t1(b) t1(c)))

= (( 0 1) 1) (1 1)
= (1 1) (0 1)
=11
=1
O conector lgico tem por objetivo modelar proposies condicionais na forma
Se ... ento ..:. e o conector modelar as expressas na forma Se e somente se. A
tabela 11 mostra os valores verdade para estes conectores.
Tabela 11 Conectores lgicos (implica) e (equivalente)
a
0
0
1
1

b
0
1
0
1

1
1
0
1

a
0
0
1
1

b
0
1
0
1

1
0
0
1

Um modo de representar a inferncia dedutiva o mtodo de deduo modus


ponens, e que tem a seguinte arquitetura:
Regra:

p q

Fato:

Concluso:

onde p e q so proposies lgicas e significam "q ser verdade se p verdade".


Este argumento vlido para qualquer atribuio de valores verdade para p e q.
Fazendo ambos p q e p verdade, ento q verdade. A seguinte tabela contm as
combinaes possveis para esta regra, sendo V verdadeiro e F falso.
Tabela 12 Tabela verdade para modus ponens
p
q
pq
V
V
V
V
F
F
F
V
V
F
F
V
Klir (1997), relata que desde o incio da cincia moderna at o fim deste sculo, a
incerteza tem sido pouco tratada na cincia. Esta atitude vem gradualmente mudando
principalmente com o surgimento de mtodos estatsticos a partir do incio do sculo 20.
Aps a aceitao da teoria estocstica, esta foi amplamente aplicada em vrias reas
da cincia. No entanto, apesar de seu sucesso, tal teoria no foi capaz de capturar a
incerteza em todas as suas manifestaes. Em particular, no foi capaz de trabalhar
certos resultados da incerteza de termos lingsticos que aparecem na linguagem
natural. Estas limitaes foraram o surgimento de novas teorias para lidar com a
impreciso e com a incerteza.
Na lgica tradicional, as proposies so completamente verdadeiras ou
completamente falsas. Portanto todas as inferncias so foradas a reconhecer apenas

estas duas alternativas. Atravs da histria da lgica ocidental, ocorreu uma expanso da
rgida teoria da lgica com dois valores com a permisso do uso de variveis, onde seus
valores podem ser parcialmente verdade ou parcialmente falso.
Por exemplo, Aristteles argumentou que as proposies sobre fatos futuros no
podem ser nem verdadeiros nem falsos, mas que valores futuros so potencialmente
verdadeiros ou potencialmente falsos.
Este problema ocorre no somente em eventos futuros, mas tambm em aplicaes
de mecnica quntica, onde valores verdadeiros, de certas proposies, so
indeterminados, devido a limitaes de mtricas aplicadas ao fenmeno subatmico.
Uma alternativa para esta situao a lgica multivaluada.
Nas lgicas multivaluadas, incluem-se valores adicionais entre os extremos da
lgica tradicional e os valores verdadeiro ou falso, chamados de valores indeterminados.
No caso da lgica de trs valores, h exatamente um valor indeterminado. Em todas as
lgicas com trs valores, define-se os valores 0, 1 e para verdadeiro, falso e
indeterminado.
A introduo deste valor intermedirio naturalmente afeta a tabela-verdade definida
na lgica clssica. A tabela verdade para negao definida na tabela 13:
Tabela 13 - Negao para lgica de trs valores
p
0

p
1

0
Onde p a negao de p.

A tabela 14 ilustra a lgica de trs valores de Lukasiewicz . Verifica-se que as


definies padres da lgica clssica para os conectores , , e so as mesmas

para os valores 0 e 1. Entretanto, o novo valor faz com que tenha uma conseqncia
importante: no vale a lei do terceiro excluido (p p = 1) nem a lei da contradio (p
p = 0) e algumas outras tautologias, conforme Klir (1997).
Tabela 14 - Tabela verdade definida por Lukasiewicz
a

0
0
0

1
1
1

1
0

1
0

0
0
0
0

1
1
1
1

1
1
1

1
1
0

Mais geralmente, para qualquer valor n, os valores verdade para esta lgica de n
valores so usualmente nomeados por nmeros racionais no intervalo [0,1]. Isto define o
conjunto de valores verdade T definido por:
1
2
n 2 n 1
1
2
n2
0
Tn =
,
,
,...,
,
,
,...,
,1
= 0,
n 1 n 1 n 1 n 1
n 1
n 1 n 1 n 1
Logo, em uma lgica para 5 valores, os valores verdade so 0, , , e 1.
Os valores verdade para as frmulas envolvendo os conectivos , , e podem
ser obtidos por:
p' = 1-p

(9)

p q = min(p, q)

(10)

p q = max(p, q)

(11)

p q = min(1, 1 - p+ q)

(12)

p q = 1 - p - q

(13)

No caso de n = 2, onde T2 = {0, 1}, obtm-se a tabela verdade definida na lgica


tradicional e no caso T3 = {0, 1/2, 1}, as frmulas acima fornecem a tabela 14.
Estes valores podem ser interpretados como graus de verdade. Assim a lgica
multivaluada pode ser interpretada como um precursor da lgica fuzzy.
Na prxima seo ser tratada as proposies fuzzy.

3.2 PROPOSIES FUZZY


O clculo proposicional fuzzy generaliza o clculo proposicional clssico,
utilizando o conjunto verdade [0,1] ao invs do conjunto {0,1}. Tanto no caso da teoria
tradicional, como na teoria fuzzy, o conjunto F de frmulas lgicas construdo a partir
do conjunto V de variveis lgicas, utilizando-se os conectivos bsicos (ou), (e),
(no) e os dois conectivos lgicos, (implica) e (equivalncia).
Assim como na lgica tradicional, no clculo proposicional fuzzy a funo
t2:F[0,1] que d o valor verdade de uma frmula envolvendo variveis e conectivos
fuzzy so obtidas a partir de uma funo t1:V[0,1], substituindo-se cada elemento a
V de uma frmula lgica pelo seu valor t1(a) em [0,1].
O resultado da valorao de uma proposio fuzzy o intervalo com o grau de
veracidade da proposio.
Dado um conjunto fuzzy A, o grau de pertinncia A(x) para qualquer elemento x no
conjunto universo X, pode ser interpretado como o grau de verdade da proposio fuzzy
"x membro de A". Inversamente, dada uma proposio arbitrria "x E", onde x
membro do conjunto X e E uma expresso lingstica (como baixo, alto, muito longe,
extremamente devagar); seu grau de verdade pode ser interpretado como o grau de
pertinncia A(x) do conjunto fuzzy A, caracterizado pela expresso lingstica E no
contexto dado.
As proposies fuzzy podem ser classificadas como condicionais ou incondicionais.
As proposies condicionais so escritas na forma se-ento. So implicaes entre
proposies fuzzy. Proposies deste tipo tm a forma:

p: Se X A ento Y B

(14)

onde X e Y so variveis que assumem os valores x e y, e A, B so predicados


representados por conjuntos fuzzy.
Exemplo 18
Por exemplo, sejam X, A, Y e B conforme descrito:

X: uma varivel que assume um valor que indica a temperatura do

corpo de uma determinada pessoa e pode variar na faixa [35,50]. Um valor at 36


considerado normal e acima deste valor a temperatura considerada alta;

A: corresponde a uma varivel fuzzy que pode assumir os termos

lingsticos Baixa ou Alta;

Y: uma varivel que informa o estado da temperatura do corpo de uma

pessoa, podendo assumir os valores 0 para estado normal e 1 para indicar um estado
febril;

B: uma varivel fuzzy que pode receber os termos lingsticos Febril ou

Normal.
Neste exemplo, os valores possveis para A so Baixa ou Alta, e os valores
possveis para Y so Normal ou Febril. Duas proposies possveis so:
Se a temperatura baixa, ento o estado normal
Se a temperatura alta, ento o estado febril
Atribuindo-se o valor 38 para X ento o conjunto fuzzy A alta atingido. Como

conseqncia, Y recebe o valor 1 e o conjunto fuzzy B febril atingido. Substituindo


X, A, Y e B em (14), a proposio fuzzy condicional fica:
Se a temperatura alta, ento o estado febril
Observa-se que a temperatura, para ser alta, deve estar dentro do domnio alta,
gerando uma sada fuzzy febril.
No caso das proposies fuzzy incondicionais, a forma de apresent-las :
p: X A Y

(15)

onde X uma varivel que recebe um valor x de um conjunto de valores possveis e


A uma propriedade atribuda varivel. Esta propriedade representada por um
conjunto fuzzy. O exemplo a seguir ilustra esta forma de proposio.
Exemplo 19
Seja X a temperatura que assume um valor x igual a 380 C; A igual a propriedade
Alta e Y Febril. Substituindo os valores na expresso (15) tem-se:
A temperatura de 380 C alta febril
380 C o valor da varivel temperatura; " Alta" o predicado fuzzy atribudo ao
valor da temperatura.
Com o intuito de modelar matematicamente as proposies condicionais e fazer
inferncias que se explora o mtodo dedutivo modus ponens. Para isto, preciso, a
exemplo do caso clssico, definir os conectivos lgicos que vo compor os mtodos de
deduo na lgica fuzzy. Esta teoria desenvolvida na prxima seo.

3.3 LGICA FUZZY


O objetivo aqui definir os conectivos e, ou, no, implica e se e somente
se. Todos estes conectivos devem ser definidos com o propsito de generalizar as
tabelas verdade dos correspondentes conectivos nos casos clssicos. Isto , quando estes
conectivos so usados para valorar frmulas clssicas, as tabelas verdade devem
coincidir com as clssicas.
H na literatura muitas formas de se definir os conectivos mencionados acima
atravs dos conceitos de t-normas e t-conormas, como em Nguyen (1997) e em Gomide
(1998). Neste trabalho define-se os conectivos como foi no caso da lgica multivaluada,
ou seja, o conectivo (no) uma aplicao definida em [0,1] e os conectivos (ou),
(e), (implica) e (se e somente se) so relaes binrias definidas em [0,1] atravs
das frmulas:
a' = 1-a

(14)

a b = min(a, b)

(15)

a b = max(a, b)

(16)

a b = min(1, 1 - a+ b)

(17)

a b = 1 - a - b

(18)

Deve ser notado que cada uma das frmulas acima generalizam de fato os
conectivos do caso clssico como o caso da implicao:

0 0 = min(1,1-0+0) = 1
0 1 = min(1,1-0+1) = 1
1 0 = min(1,1-1+0) = 0
1 1 = min(1,1-1+1) = 1
A lgica fuzzy permite a construo de modelos matemticos baseados em
informaes imprecisas, onde se aplica a teoria de raciocnio aproximado para se obter
concluses a partir de premissas imprecisas. Este tpico tratado a seguir.

3.4 RACIOCNIO APROXIMADO


Raciocnio aproximado refere-se ao processo onde obtm-se concluses a partir de
premissas imprecisas. Segundo Nguyen (1997), quando esta impreciso considerada
fuzzy, o termo raciocnio fuzzy utilizado.
A seguinte forma de raciocnio comum na vida diria:

Se um tomate est vermelho, ento est maduro. Caso se tenha um tomate


vermelho, automtica sua classificao como maduro.

Se x grande, ento y pequeno. Tendo um x grande, conclui-se que y


pequeno.

Esta uma generalizao do conhecido mtodo dedutivo modus ponens. A


diferena para o modus ponens clssico so os predicados envolvidos. No caso fuzzy,
os termos lingsticos so expressos em uma linguagem natural e so modelados como
subconjuntos fuzzy.
Considere as proposies p e q:
p : x A
q : y B
Onde A e B so subconjuntos fuzzy dos conjuntos U e V, e x e y so variveis que
assumem valores em U e V; tem-se, ento, o modelo:

pq

: Se x A ento y B

p : x A
q : y B
p q uma proposio fuzzy condicional, que modelada por um subconjunto
fuzzy R de UxV, atravs da funo grau de pertinncia:
R(x,y) = A(x) B(y) = min(1,1 - A(x) + B(y))

de acordo com (17)

A implicao para o caso clssico, isto , A(x) B(y) {0,1} produz:


1 se ( x, y ) R

R( x, y ) =
0 se ( x, y ) R

de modo que

1 se y B

sup[ R( x, y ) A( x )] =
x U
0 se y B

ou seja

B ( y ) = sup[ R ( x, y ) A( x )]
x U

ou
B= Ro A
Esta igualdade pode ser interpretada assim:
Se R uma relao que representa a condicional
Se x A ento y B

e observa-se que x A conclui-se que y B, ou seja, se a entrada for A a sada B.


Com o objetivo de inferir conjuntos fuzzy, esta regra ser generalizada para uma
situao fuzzy geral.
Considerando-se a regra, Se o tomate est vermelho, ento est maduro e o fato
o tomate est quase vermelho o que se pode dizer a respeito do estado do tomate?
Esta forma de raciocnio pode ser considerada como uma generalizao do modus
ponens. A composio de regras para obter uma inferncia que pode responder a
questes como esta est descrita a seguir.
Sejam X e Y variveis em U e V, respectivamente. Sejam A, A* e B subconjuntos
fuzzy e
Regra: Se x A ento y B
Fato: x A*
Concluso:

B*

Como se obtm esta concluso?


A afirmao condicional acima uma relao binria fuzzy R, que um
subconjunto fuzzy de UxV e A* um subconjunto fuzzy de U.
Por analogia ao caso clssico, define-se:

B * ( y ) = sup{R ( x, y ) A * ( x)}
x U

Esta a forma geral da regra de inferncia composicional, proposta por Nguyen


(1997), para a resoluo de modelos fuzzy.

Por exemplo, sejam os conjuntos A={0.5/x1 + 1.0/x2 + 0.6/x3} e B={1.0/y1 +


0.4/y2}. Se A*={0.6/x1 + 0.9/x2 + 0.7/x3}, para se calcular B* tem-se:
R = 1.0 /x1,y1 + 0.9/x1,y2 + 1.0 /x2,y1 + 0.4/x2,y2 + 1.0 /x3,y1 + 0.8/x3,y2
min(1,1-0.5+1.0) min(1,1-0.5+0.4) ...
B*(y1) = max[min(0.6,1.0), min(0.9,1.0), min(0.7,1.0)]
B*(y1) = max[0.6, 0.9, 0.7] = 0.9
B*(y2) = max[min(0.6,0.9), min(0.9,0.4), min(0.7, 0.8)]
B*(y2) = max[0.6, 0.4, 0.7] = 0.7
B* = {0.9/y1 + 0.7/y2}

No prximo captulo, estuda-se o mtodo de desenvolvimento de sistemas fuzzy,


utilizando-se a teoria at aqui descrita, porm com outro mtodo de inferncia: o
mtodo de Mamdani, o qual utiliza-se, formalmente, da regra de inferncia generalizada
acima, sem exigir que a relao R(x,y) seja uma implicao fuzzy.

CAPTULO 4. METODOLOGIA PARA O DESENVOLVIMENTO DE


SISTEMAS FUZZY
Este captulo tem como objetivo mostrar um mtodo para o desenvolvimento de um
programa de computador, utilizando lgica fuzzy. Em uma primeira parte, detalha-se as
etapas para o desenvolvimento de um sistema fuzzy.
Nesta etapa feita a anlise do sistema nos moldes entrada, processamento, sada,
por um engenheiro de sistemas, conforme Pressman (1995).
Em seguida mostra-se o mecanismo de inferncia de Mamdani, que o mtodo que
melhor se aplica para o exemplo escolhido.
Posteriormente desenvolve-se um caso prtico. A metodologia desenvolvida aplicase a modelos com duas variveis de entrada, com o objetivo de gerar uma varivel de
sada. Os conjuntos fuzzy envolvidos no processo devem ser nmeros fuzzy
triangulares.

4.1 ETAPAS PARA O DESENVOLVIMENTO DE UM SISTEMA FUZZY


Segundo Pressman (1995), um sistema um conjunto de elementos, o qual
organizado para implementar certo procedimento ou controle ao processar informaes.
Um sistema fuzzy caracterizado por um conjunto de instrues para computador, que
o capacita a produzir uma funo desejada. Um sistema fuzzy um conjunto de
instrues em um programa, ou software, baseado na lgica fuzzy.
Como est descrito no Captulo 1, uma rea de grande aplicao da lgica fuzzy a
da engenharia, em controladores fuzzy. Um controlador fuzzy um dispositivo de
software e hardware com o objetivo de controlar um determinado processo e tem sido
aplicado em produtos para o consumidor final.
Um controlador fuzzy composto por quatro mdulos, assim descritos:
Mdulo de fuzificao
o mdulo onde os valores de entrada do sistema so convertidos para conjuntos
fuzzy, com as respectivas faixas de valores onde esto definidos.
Mdulo da base de regras fuzzy
Neste mdulo, define-se as proposies fuzzy que sero avaliadas de acordo com as
variveis de entrada para compor a varivel de sada.
Mdulo de inferncia fuzzy
O mdulo de inferncia fuzzy responsvel pela valorao das proposies fuzzy e
da forma como elas so combinadas para produzir a sada.
Mdulo de defuzificao
A defuzificao o processo de converso de um conjunto fuzzy de sada em um
nmero que melhor represente este conjunto. a etapa final executada por um
controlador fuzzy. A figura 13 contm a representao grfica de um controlador fuzzy.

Figura 13 - Esquema de um controlador fuzzy


Segundo Cox (1998), todo sistema deve ser visualizado e entendido pelo engenheiro
de sistemas, atravs de um trabalho conjunto com o especialista no problema a ser
modelado. Tal parceria necessria para uma melhor definio dos parmetros ou
variveis de controle.
Um parmetro de controle uma varivel do modelo cujo valor determina o
prximo estado do mesmo, ou tem o seu valor alterado por um ou mais estados. No
modelo de uma seguradora de veculos, por exemplo, tem-se como parmetro de
controle a idade do motorista, que determina faixas de desconto para cada caso.
O perfeito entendimento das variveis de controle esclarecem se o sistema pode ser
modelado usando lgica fuzzy. Modelos que tm parmetros de controle com
propriedades intrnsecas imprecisas indicam uma adequao da aplicao da teoria
fuzzy.
Um modelamento fuzzy construdo a partir de um vocabulrio bsico de conjuntos
fuzzy, que definem as propriedades semnticas do modelo. As regras so formadas para

manipular estes conjuntos e da extrair os resultados esperados. O engenheiro de


sistemas deve aprender a pensar em um alto nvel de abstrao a fim de poder codificar
apropriadamente a experincia do especialista do problema a ser modelado.
So quatro as etapas para o desenvolvimento de um sistema fuzzy:

Definir as variveis de entrada e sada que compem o sistema;

Definir os conjuntos fuzzy que compem o domnio destas variveis;

Construir a base de dados com as regras que definem como estas variveis se
relacionam;

Interpretar a sada.

Na definio das variveis de entrada e sada feita a anlise do sistema nos moldes
tradicionais de entrada, processamento, sada e a definio do modelo em partes
funcionais, localizando, no sistema global, onde pode-se aplicar a teoria fuzzy.
A primeira tarefa definir quais informaes fluem pelo sistema, quais
transformaes so executadas nestas informaes e quais so as informaes
fornecidas pelo sistema.
A segunda etapa do projeto de desenvolvimento de um sistema fuzzy, consiste na
definio e construo dos conjuntos fuzzy para cada varivel que compe o sistema. O
especialista responsvel pelo modelamento, deve particionar cada varivel que
compem o sistema em subconjuntos fuzzy, tambm chamados de faixas, com seus
respectivos domnios. Estas faixas so utilizadas na definio das proposies fuzzy que
formam a base de regras.

As proposies condicionais fuzzy descrevem o conhecimento do especialista sobre


o sistema modelado, e tem a forma:
Se proposio fuzzy, ento ao fuzzy.
Este trabalho focaliza apenas os casos com duas variveis de entrada e uma varivel
de sada. Assim, a proposio anterior toma a forma:
Se varivel_de_entrada1 =

e varivel_de_entrada2 =

ento, varivel_de_sada

=
A quantidade de regras total que formar a base de regras vai depender de quantos
conjuntos fuzzy compem cada varivel de entrada. Por exemplo, caso a
varivel_de_entrada1 e a varivel_de_entrada2 sejam compostas por trs nmeros fuzzy,
o total de regras que vai compor o referido banco ser nove.
O valor parcial da varivel de sada ou ao fuzzy, para cada proposio, decidido
pelo especialista do sistema modelado. Ao conjunto de regras atingidas aplica-se um
mtodo de inferncia para a resoluo deste conjunto de proposies.
O mtodo de inferncia utilizado neste trabalho, para o clculo da varivel de sada,
o mtodo de Mamdani. Este mtodo apresenta um processo baseado na agregao das
variveis fuzzy de entrada para obter como resultado, um conjunto fuzzy na sada. A
seguir descreve-se este mtodo.

4.2 MTODO MAMDANI DE INFERNCIA


Yager (1995), descreve o funcionamento do mtodo de Mamdani em controladores
fuzzy, tendo como base um modelo fuzzy com duas variveis de entrada, v e d e uma
varivel de sada p, definido pelas seguintes regras:
Tabela 15 Base de regras para um modelo fuzzy genrico
Se v v1 e d d1 ento p p1
Se v v1 e d d2 ento p p1
Se v v2 e d d1 ento p p2
Se v v2 e d d2 ento p p2
...
Se v vn e d dn ento p pn

onde v1, v2, ...e vn so valores lingsticos associados varivel v e definidos como
subconjuntos fuzzy do universo de discurso X1; d1, d2, ...e dn so valores lingsticos
associados varivel d e definidos como subconjuntos fuzzy do universo de discurso X2
e p1, p2, ...e pn so valores lingsticos associados varivel p e definidos como
subconjuntos fuzzy do universo de discurso Y. Com estes subconjuntos pode-se montar
uma matriz, como na tabela abaixo:

Tabela 16 Variveis v, d, p
v
v1
v2
...
p1
p2
...
d1
p1
p2
...
d2
...
...
...
...
...
...
...
dn

vn
...
...
...
pn

Os valores p1, p2, ...e pn so definidos pelo engenheiro de sistemas em conjunto com
o especialista do sistema a ser modelado. Portanto, possvel que um valor pn seja
utilizado como resultado em mais de uma regra. Conforme os valores fornecidos para as
variveis v e d, uma ou mais proposies da tabela 15 so atingidas (ou valoradas).

Cada uma destas proposies gera um conjunto fuzzy Fi dado por:


Fi = vi di pi = min(vi, di, pi)

(19)

A agregao de todas as proposies da tabela 15 que foram atingidas gera o


conjunto fuzzy F dada por:
n

F = Fi

(20)

i =1

Este o mtodo de inferncia de Mamdani, isto , a partir dos valores de entrada,


obtm-se Fi por (19) e em seguida o conjunto fuzzy F de sada definido por (20).

Ao conjunto fuzzy F, pode-se aplicar um mtodo de defuzificao para encontrar


um nmero que melhor represente a sada fuzzy F. Alguns destes mtodos sero vistos a
seguir.

4.3 INTERPRETAR A SADA - DEFUZIFICAO


Como visto na seo 4.2, cada proposio da base de regras atingida, gera um
conjunto fuzzy de sada. Por exemplo, sejam v e d duas variveis de entrada para um
determinado processo, que vai gerar a varivel p de sada; v1 e v2 nmeros fuzzy
definidos para a varivel v e d1 e d2 nmeros fuzzy definidos para a varivel d. As
seguintes proposies geram as regies fuzzy A, B e C que sero utilizadas para compor
a sada:
Se v v1 E d d1 ENTO p A;
Se v v2 E d d1 ENTO p B;
Se v v2 E d d2 ENTO p C.
Para se encontrar um nmero que melhor represente a informao dada pelo
conjunto fuzzy de sada F, utiliza-se do processo chamado de defuzificao. A figura 14
ilustra este processo.

Figura 14 - Processo de agregao e defuzificao

O mtodo de defuzificao pelo Centro de Gravidade com domnio discreto


segundo Cox (1998) :
n

P=

x A( x )
i =0
n

(21)

A( x )
i =0

Quando o domnio no discreto, o Centro de Gravidade calculado pela frmula:

P=

xA( x)dx
A( x)dx

(22)

A defuzificao pela Mdia do Mximo est representada pela figura abaixo, e


calculada tendo como base a sada fuzzy a partir da agregao dos resultados. Partindo
do exemplo da figura 14, observa-se na figura 15 os pontos p1 e p2 que compem o
valor de p atravs da frmula:
= p1 + (p2 - p1) / 2

(23)

Figura 15 - Defuzificao pela composio da Mdia do Mximo


O Centro dos Mximos encontra as duas regies com maior grau de pertinncia. O
valor calculado pela mdia dos pontos p1 e p2 indicados na figura 16.

Figura 16 - Centro dos Mximos


Outros mtodos de defuzificao so apresentados. Cox (1998), mostra outros
mtodos: Mdia dos Valores Mximos, Mdia do Conjunto Bsico, Limites Mnimos e
Mximos do Conjunto Bsico e o Mtodo da Defuzificao pelo Mximo.
Oliveira (1995), apresenta o mtodo de defuzificao SD (Subsethood
defuzzification) baseado em operaes tericas sobre conjuntos. Este mtodo tem como
caracterstica a capacidade de fornecer uma percepo da natureza da computao
envolvida nos estgios da construo da arquitetura de controladores fuzzy.
Na prxima seo ser desenvolvido um caso prtico com o objetivo de ilustrar o
desenvolvimento de sistemas fuzzy.

4.4 SISTEMA FUZZY ILUSTRATIVO


O propsito seguinte ilustrar cada passo descrito anteriormente com um exemplo
factvel nos dias atuais. O mtodo empregado pode ser aplicado a outros sistemas com
as mesmas caractersticas: duas variveis de entrada e uma de sada. Os nmeros fuzzy
envolvidos devem ser triangulares.
A idia apresentada por McNeill (1994), mostra um sistema que simula a presso
com que o motorista deve acionar os freios do veculo ao sinal de Pare em um
cruzamento.
A nvel de simplificao, no ser levado em conta outros fatores que poderiam
fazer parte do sistema, como outros veculos, pedestres, bicicletas, buracos ou animais.
O sistema vai simular, simplesmente, o que ocorre quando um veculo conduzido pelo
seu motorista se aproxima de um cruzamento, onde h um sinal de Pare. Quais
informaes so recebidas, como feito o processamento destas informaes e como
obter o resultado deste processamento, que o nvel de presso que o motorista deve
impor sobre o freio do veculo.
O primeiro passo para a construo deste sistema definir as variveis de entrada e
sada que compem o sistema.
As variveis que compem a entrada so a velocidade com que o motorista segue
com seu veculo e a distncia do veculo em relao ao sinal de Pare no cruzamento.
A informao de sada o valor da presso sobre o freio que o motorista deve impor
para diminuir a velocidade do veculo.
As variveis velocidade, distncia e presso sobre o freio, neste exemplo, devido as

caractersticas imprecisas que elas representam, devem ser tratadas pela teoria fuzzy.
Por exemplo, ao avistar o sinal, o motorista no sabe com exatido qual a sua
velocidade nem a que distncia ele se encontra do mesmo; ele sabe, por exemplo, que
est muito prximo ou prximo do mesmo e seu carro est devagar ou um pouco rpido.
Estes termos lingsticos sero representados por conjuntos fuzzy, que retratam
conceitos vagos e imprecisos de uma forma natural.
O prximo passo a definio dos valores lingsticos para cada varivel. Atribuise aqui quatro faixas de valores para velocidade: Parado, devagar, pouco
rpido e muito rpido. A varivel distncia ser definida em cinco faixas: No
sinal, muito prximo, prximo, pouco longe e muito longe. Para a varivel
presso sobre o freio tem-se as faixas nenhuma, leve, mdia e forte. As
definies destas faixas esto na tabela 17.
A figura 17 tem a representao de cada conjunto fuzzy da tabela 17.
Assume-se que para cada valor p da presso o controlador lida com as quatro faixas
lingsticas definidas para a varivel presso. Baseando-se em algum conhecimento ou
mesmo no bom senso, relativamente fcil construir proposies fuzzy condicionais da
forma:
Se V ___ e D ___ ento P ___

Tabela 17 - Definio das faixas das variveis que compem o sistema


(V) Velocidade em km/h
Parado
Devagar
Pouco rpido
Muito rpido

De
0
2
10
40

A
5
20
50
80

Sigla
PA
DE
PO
MR

(D) Distncia em metros


No sinal
Muito prximo
Prximo
Pouco longe
Muito longe

De
0
1
6
18
30

A
2
12
30
37
50

Sigla
NS
MP
PR
PL
ML

De
0%
1%
25%
65%

A
1%
30%
75%
100%

Sigla
NE
LE
ME
FO

(P) Presso sobre o freio em %


Nenhuma
Leve
Mdia
Forte

Figura 17 Representao grfica dos conjuntos fuzzy da tabela 17


Como existem quatro classificaes para velocidade e cinco para distncia, isto

resulta em vinte proposies condicionais fuzzy com o formato dos seguintes exemplos:
Se V PA e D NS ento P LE
Se V PO e D PL ento P ME
Em cada regra, os estados de V e D so chamados antecedentes e os estados de P de
conseqentes.
A tabela 18 apresenta uma "matriz" com todas as combinaes onde os "elementos"
dessa matriz so os vinte estados resultantes das combinaes de V e D que so as
classificaes para a varivel P, de acordo com o engenheiro de sistemas.
Tabela 18 - Combinao Velocidade X Distncia
Velocidade

Distncia

NS
MP
PR
PL
ML

PA
NE
NE
NE
NE
NE

DE
ME
LE
LE
NE
NE

PO
FO
FO
FO
ME
LE

MR
FO
FO
FO
ME
LE

Cada proposio atingida gera um conjunto fuzzy de sada, e todas as proposies


agregadas, atravs do mtodo de Mamdani, geram um conjunto fuzzy de sada. Sobre
esta regio final pode-se aplicar um mtodo de defuzificao, para se obter um valor
numrico que melhor a represente.

Para se obter a sada e posteriormente defuzific-la, deve-se verificar quais os


conjuntos fuzzy que foram atingidos ao se especificar determinados valores de
entrada. Para o desenvolvimento desta etapa, supe-se que o veculo est a cerca de 10
km/h e em torno de 7.5 metros do sinal de Pare, de acordo com a linguagem do
motorista ou mesmo um sensor de bordo.
Com relao primeira varivel de entrada, velocidade, estando o veculo a cerca
de 10 km/h e, consultando a tabela 17, verifica-se que o veculo est nas faixas
devagar e pouco rpido; ou seja, conforme definido pelo especialista, o veculo
nesta velocidade pode ser considerado que est se movimentando nestas duas faixas de
valores.
A segunda varivel de entrada informa que o veculo se encontra em torno de 7.5
metros do sinal de "Pare". Consultando a tabela 17, verifica-se que as faixas so
prximo e muito prximo.
Aps obter os domnios fuzzy para cada varivel de entrada, feita a devida
combinao das mesmas, compondo as proposies que devero ser calculadas. A
tabela 19 destaca as sadas atingidas por estas regras.
As regies em destaque na tabela 19 mostram o resultado da combinao das faixas
atingidas. Estas combinaes formam as proposies fuzzy que so atingidas pelos
valores de entrada fornecidos. Abaixo tem-se as quatro proposies para o exemplo
dado:

Proposio 1:Se o veculo est devagar e muito prximo do sinal ento a presso
sobre o freio leve
Proposio 2: Se o veculo est devagar e prximo do sinal ento a presso sobre
o freio leve
Proposio 3: Se o veculo est um pouco rpido e muito prximo do sinal ento a
presso sobre o freio forte
Proposio 4: Se o veculo est um pouco rpido e prximo do sinal ento a
presso sobre o freio forte
Tabela 19 - Regras atingidas estando o veculo a cerca de 10 km/h e em torno de 7.5
metros do sinal de pare

Distncia

NS
MP
PR
PL
ML

Velocidade
PA
DE
NE
ME
NE
LE
NE
LE
NE
NE
NE
NE

PO
FO
FO
FO
ME
LE

MR
FO
FO
FO
ME
LE

A sada presso ser determinada, aplicando-se o mtodo dos mnimos de


Mamdani. Cada uma das proposies atingidas ser representada por um valor fuzzy,
obtendo as sadas fuzzy de cada uma delas.
Como os nmeros fuzzy deste exemplo so nmeros triangulares, para calcular o grau
de pertinncia para a faixa "Devagar", estando o veculo em torno de 10 Km/h, utilizase a forma geral para calcular o grau de pertinncia descrita na seo 2.6. De acordo
com a tabela 17, tem-se que Devagar dado pelo nmero fuzzy triangular com

amplitude a=11 e desvio s=9. Assim,


V(x) = 1 - | x - a | / s V(10) = 1 - | 10 - 11 | / 9 = 0.89
A representao grfica deste nmero fuzzy est na figura 18.
O grau de pertinncia para "Muito prximo" do sinal, quando o veculo est em
torno de 7.5 metros :
D(x) = 1 - | x - a | / s D(7.5) = 1 - | 7.5 - 6.5 | / 5.5 = 0.82
A representao grfica deste valor distncia est na figura 19.
A primeira regra das quatro possveis atingidas dada por:
Se o veculo est devagar em 0.89 e est muito prximo em 0.82 do sinal ento a
presso sobre o freio leve
Mas leve em quanto? Para se obter a resposta usa-se o mtodo de Mandani para
obter o valor mximo do grau de pertinncia de sada desta regra, que neste caso dado
pelo "E" lgico fuzzy:
0.89 0.82 = 0.82
A figura 20 uma combinao das figuras 18 e 19 e representa o resultado da
primeira proposio, que ir compor o resultado final.

Figura 18 Grau de pertinncia para 10 km/h na faixa Devagar

Figura 19 - Grau de pertinncia para 7.5 metros na faixa "Muito prximo"

Figura 20 - Sada fuzzy para a primeira proposio

A rea em destaque, representa o conjunto fuzzy de sada que corresponde ao


resultado desta primeira proposio, a qual ser usada na composio final.
O clculo da segunda proposio atingida feita da seguinte forma:
Se o veculo est devagar e prximo do sinal ento a presso sobre o freio leve
Devagar, nesta proposio, tem o mesmo valor calculado para a proposio
anterior. Prximo tem o seguinte valor:
D(x) = 1 - | x - a | / s D(x) = 1 - | 7.5 - 18 | / 12 = 0.13
A proposio fica:
Se o veculo est devagar em 0.89 e est prximo do sinal em 0.13 ento a presso
sobre o freio leve no mximo em
0.89 0.13 = 0.13
A figura 21 representa graficamente o resultado desta proposio.

Figura 21 -Resultado da Segunda proposio


A terceira proposio "Se o veculo est um pouco rpido e muito prximo do
sinal, ento a presso sobre o freio forte". O clculo de um pouco rpido feito
atravs da frmula:
V(x) = 1 - | x - a | / s V(x) = 1 - | 10 - 30 | / 20 = 0

Como muito prximo foi calculado na primeira proposio, tem-se que:


Se o veculo est um pouco rpido em 0.00 e est muito prximo do sinal em 0.82,
ento a presso sobre o freio forte no mximo em
0.00 0.82 = 0.00
A ltima proposio "Se o veculo est um pouco rpido e prximo do sinal ento
a presso sobre o freio forte". J foi calculado um pouco rpido e prximo estando o
veculo em torno de 10 Km/h e cerca de 7.5 metros do sinal. A proposio fica:
Se o veculo est um pouco rpido em 0.00 e est prximo do sinal em 0.13 ento
a presso sobre o freio forte no mximo em
0.00 0.13 = 0.00
Aps calcular cada proposio separadamente, deve-se agreg-las, completando o
mtodo de Mamdani, para obter a sada fuzzy.
De acordo com o mtodo Mamdani de inferncia, uma regio fuzzy F gerada aps
o clculo de todas as proposies atingidas, de acordo com os valores das variveis de
entrada, combinando-se com a base de regras definidas pelo especialista.
Esta regio de sada formada pela operao OU fuzzy entre as regies fuzzy
parciais que foram geradas com as regras atingidas. A regio fuzzy F est representada
na figura 22.

F=

Figura 22 Sada fuzzy F pelo mtodo de Mamdani


Para determinar a sada fuzzy F pelo mtodo de Mamdani, usa-se a operao de
disjuno fuzzy, ou, sobre os valores obtidos:
0.82 0.13 0.00 0.00 = 0.82
A representao grfica desta operao segue na figura 23. Esta figura representa o
resultado da operao OU ( ) fuzzy, sobre os resultados das quatro proposies
consideradas como verdadeiras para o exemplo desenvolvido.
A defuzificao a etapa final deste processo, e tem como propsito converter este
conjunto fuzzy F em um nmero real que melhor o represente. O mtodo de
defuzificao representado na figura 23 o da mdia do mximo.

Figura 23 Defuzificao pela mdia do mximo


O valor de imediato, pois o nmero fuzzy leve, de 1% a 30%, e calculado pela
frmula (23), obtendo-se como resultado o valor 15.5%, ou seja, a presso sobre os
freios deve ser leve em 15.5%.
No prximo captulo tem-se a codificao deste exemplo na linguagem de
programao C.

CAPTULO 5. DESENVOLVIMENTO DO PROGRAMA


Com o propsito de ilustrar conceitos fuzzy em programao, o exemplo descrito
no captulo 4 foi codificado na linguagem C e compilado no sistema operacional Linux.
A idia de produzir o programa em um ambiente aberto como o Linux, com um
compilador C padro ANSI, foi o de se ter um programa mais facilmente adaptvel a
outros ambientes operacionais.
Este programa est preparado para aceitar modelos com duas variveis fuzzy de
entrada gerando uma sada fuzzy. Outra restrio que as funes grau de pertinncia
devem ser triangulares.
A definio dos conjuntos fuzzy de entrada e sada feita em um arquivo em disco.
Isto foi feito com o propsito de facilitar a adaptao do programa a outras situaes
fuzzy com duas entradas e uma sada.
Em uma primeira etapa h a descrio da estrutura do programa, com o
desenvolvimento do mesmo. Em seguida tem-se a concluso do trabalho com algumas
propostas de pesquisa.

5.1 ESTRUTURA DO PROGRAMA


O diagrama estrutural do programa est na figura 24.
Diagrama Estrutural
Define a estrutura
dos dados

Recebe variveis
de entrada

Verifica quais
regras so
atingidas

Verifica a 1
varivel de
entrada

Defuzifica

Verifica 2
varivel de
entrada

L o arquivo
fuzzy.dat

Mostra
resultado
final

Monta as
tabelas

Mostra as
tabelas

Verifica as
faixas de
sada

Figura 24 Diagrama Estrutural


Um ponto bsico do programa a definio das estruturas dos dados. As variveis
globais so utilizadas para manter em tempo de execuo do programa os dados
necessrios para os clculos proposicionais, a fuzificao e a defuzificao do conjunto
fuzzy de sada.
O programa interage com o usurio no momento que h a necessidade de se
informar os valores das variveis de entrada. Os dados definidos pelo especialista so
codificados em uma tabela gravada em um arquivo texto em disco segundo o padro
definido pela tabela 20. Isto possibilita a adaptao do programa para qualquer
problema que aceite a aplicao da teoria fuzzy. A nica restrio que o programa foi
preparado para aceitar modelos com duas variveis fuzzy de entrada com o objetivo de
gerar apenas uma sada fuzzy.

Como a linguagem C no tem uma implementao de funes para manipulao


dos conceitos da lgica fuzzy, a soluo encontrada foi o desenvolvimento de rotinas
que simulem esta implementao. O mtodo adotado para representar os conjuntos
fuzzy, das variveis lingsticas, foi a definio de uma estrutura de dados para
armazenar os nomes de cada varivel com os limites inferior e superior de cada domnio
dos subconjuntos destas variveis.
O comando
struct est_variaveis variaveis[3];
cria uma estrutura para trs variveis, suficiente para este trabalho, pois os sistemas
suportados tm duas variveis de entrada e uma varivel de sada.
A estrutura est_variaveis definida por
struct est_variaveis {
char nome_variavel[20];
struct est_faixa[9];
}
e utilizada para armazenar o nome da varivel e nove faixas para os subconjuntos.
Ou seja, o programa est preparado para receber at nove faixas, ou subconjuntos fuzzy,
para cada varivel.
A estrutura est_faixa est definida da seguinte forma:
struct est_faixa {
char faixa[20];

float de;
float para;
char sigla[3];
};
ou seja, o nome de cada faixa pode ter at vinte caracteres. O limite inferior de cada
subconjunto fica na varivel de e o limite superior fica na varivel para. A varivel
sigla recebe um nome curto que utilizado para substituir o nome completo, ao nvel
de simplificao.
A base de regras definida pelo especialista, e a quantidade de regras definida
pela quantidade de subconjuntos de cada varivel de entrada. Neste programa o vetor
i[3], armazena a quantidade de subconjuntos de cada varivel e o vetor regras[9][9][3],
armazena a tabela com os resultados possveis para cada proposio fuzzy.
A fuzificao feita durante o processo de leitura do arquivo fuzzy.dat. Este
arquivo contm os valores de cada domnio fuzzy para cada varivel de entrada e sada,
e deve ser preparado antes da execuo do programa. Ele pode ser criado atravs de um
editor de textos e deve ser armazenado como arquivo do tipo texto e tem o formato da
tabela 20.

Tabela 20 - Arquivo fuzzy.dat


4
5
4
Velocidade
Parado
0.0
5.0
PA
Devagar
2.0
20.0
DE
Pouco_rapido
10.0
50.0
PO
Muito_rapido
40.0
80.0
MR
Distancia
No_sinal
0.0
2.0
NS
Muito_proximo
1.0
12.0
MP
Proximo
6.0
30.0
PR
Pouco_longe
18.0
37.0
PL
Muito_longe
30.0
50.0
ML
Pressao
Nenhuma
0.0
1.0
NE
Leve
1.0
30.0
LE
Media
25.0
75.0
ME
Forte
65.0
100.0
FO
NE ME FO FO NE LE FO FO NE LE FO FO NE NE ME ME NE NE LE LE

O arquivo fuzzy.dat dividido em trs partes: a primeira, composta pela primeira


linha, contm trs valores indicando quantas faixas cada varivel possui. No exemplo
descrito neste captulo, a varivel velocidade contm 4 faixas, a varivel distncia 5 e a
varivel presso 4.
Aps abrir o arquivo e verificar se no houve erros neste processo, feita a leitura
desta primeira parte do arquivo atravs do comando
fscanf(fp,"%5d%5d%5d",&subconjuntos[0],&subconjuntos[1],&subconjuntos[2]);
armazenando no vetor subconjuntos a quantidade de domnios para cada varivel.
A Segunda parte descreve as duas variveis de entrada e a varivel de sada. Esta
parte do arquivo composta por quatro colunas: A primeira contm o nome da faixa, ou
subconjunto, a segunda e a terceira os valores iniciais e finais deste domnio, e a quarta
coluna contm duas letras que resumem o nome da faixa.

A leitura desta parte do arquivo feita atravs dos comandos


for(j=0;j<=2;j++) {
fscanf(fp,"%s",variaveis[j].nome_variavel);
for(m=0;m<subconjuntos[j];m++) {
fscanf(fp,"%20s%f%f%3s",variaveis[j].faixa[m].faixa,
&variaveis[j].faixa[m].de,
&variaveis[j].faixa[m].para,
variaveis[j].faixa[m].sigla);
}
}
A fuzificao dos dados feita neste ponto do programa, ao armazenar os valores
dos subconjuntos fuzzy na estrutura variveis.
A terceira e ltima parte deste arquivo composta por uma linha onde se descreve
os valores para os resultados possveis para a valorao das proposies fuzzy. Os
comandos correspondentes para a leitura desta tabela so:
for(m=0;m<subconjuntos[1];m++) {
for(n=0;n<subconjuntos[0];n++) {
fscanf(fp, "%3s",regras[m][n]);
}
}
A tabela com as resolues das proposies fuzzy uma tabela de duas dimenses,
e foi definida pelo especialista.

O clculo do grau de pertinncia para cada subconjunto atingido feito pela


verificao na tabela com os valores fuzificados. A rotina ver_regras contm os
comandos necessrios para estes clculos. Nesta rotina tambm feita a valorao da
proposio fuzzy correspondente aos domnios encontrados como verdadeiros para cada
varivel de entrada, com a gerao da regio fuzzy de sada.
A defuzificao pela mdia dos mximos feita pela rotina defuzifica, depois de
agregadas todas as regies fuzzy de sada geradas em cada regra; na rotina ver_regras
atravs do mtodo de Mamdani, e calcula o valor defuzificado pelo mtodo da mdia
dos mximos.
A rotina centro_gravidade calcula a defuzificao pelo mtodo de mesmo nome.
Esta rotina percorre o conjunto de sada, resultado da agregao das proposies
atingidas, em uma escala de 0,001 calculando o grau de pertinncia para cada elemento
das proposies atingidas deste conjunto. O maior destes valores armazenado para o
clculo da mdia ponderada, conforme a frmula 21.
O programa completo est listado a seguir.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

/* -----------------------------------------------------Dados globais
------------------------------------------------------ */

/* A rotina le_dados armazena em variaveis o conteudo do arquivo


fuzzy.dat em disco, com os valores dos limites inferior e
superior de cada subconjunto de seus conjuntos fuzzy.
Cada variavel de entrada e a variavel de saida sao conjuntos
fuzzy definidos pelo especialista. */

void le_dados();

/* A rotina recebe_dados faz a interface entre o operador do


programa e a parte de inferencia. Recebe os valores das
variaveis de entrada. */

float recebe_dados(int);

/* a rotina ver_regras verifica quais sao as proposicoes fuzzy


"atingidas" pelos valores fornecidos pelo usuario, atraves
da rotina recebe_dados. */

void ver_regras(float,float);

/* A rotina defuzifica completa o calculo da inferencia de


Mamdani, fazendo a defuzificacao pelo metodo da media
do maximo. */

float defuzifica(float, char[3]);


float centro_gravidade();
/* A estrutura est_faixa e est_variaveis foram criadas com o
objetivo de armazenar os limites inferior e superior dos
subconjuntos fuzzy */

struct est_faixa {
char faixa[20];

float de;
float para;
char sigla[3];
};
struct est_variaveis {
char nome_variavel[20];
struct est_faixa faixa[9];
};
struct est_variaveis variaveis[3];

/* A variavel subconjuntos[3] e' utilizada para armazenar quantas faixas,


ou subconjuntos, possui cada variavel. subconjuntos[0] e subconjuntos[1]
para as variaveis de entrada, subconjuntos[2] para a variavel de saida. */

int subconjuntos[3];

/* Os vetores var1_atg e var2_atg guardarao quais as faixas sao atingidas para


cada variavel de entrada. */

int var1_atg[9],var2_atg[9];

/* ax1 e ax2 sao utilizadas para armazenar os valores A(x) correspondente


ao grau de pertinencia ao conjunto fuzzy de cada faixa atingida */

float ax1[9],ax2[9];

/* Para armazenar o resultado das proposicoes fuzzy, na forma


Se V e' __ e D e' __ entao P e' __ */

char regras[9][9][3];

/* Variaveis utilizadas para defuzificacao */

int pilha;
float maior[9];
char valor_fuzzy[9][3];
float menorCG,maiorCG,flagCG; /* CG = Centro de Gravidade */

/* --------------------------------------------------------Rotina principal
--------------------------------------------------------- */
void main() {
float var1, var2,topo,valor_final;
int i;
char faixa[3];
for(i=0;i<9;i++) {
var1_atg[i]=0;
var2_atg[i]=0;
ax1[i]=0.0;
ax2[i]=0.0;
}
pilha = 0;
topo = 0;
flagCG = 0.0;
le_dados();
var1=recebe_dados(0);
var2=recebe_dados(1);
ver_regras(var1,var2);

/* verifica quais regras atingidas */

for(i=0;i<pilha;i++) {
if(topo < maior[i]) {
topo = maior[i];
strcpy(faixa,valor_fuzzy[i]);
}
}
valor_final = defuzifica(topo,faixa);

printf("\nValor final defuzificado: %f\n",valor_final);


valor_final = centro_gravidade();
printf("\nValor defuzificado pelo centro de gravidade: %f\n",valor_final);
return;
}

/* rotina para ler os dados das variaveis de entrada e saida */

void le_dados() {
int j,m,n;
FILE *fp;
/* testa se tudo ok com o arquivo */
if((fp = fopen("fuzzy.dat","r")) == 0 ) {
printf("\n Nao e possivel abrir o arquivo para leitura.");
}
/* a primeira linha do arquivo contem quantos subconjuntos tem
cada conjunto fuzzy. Cada variavel e' um conjunto fuzzy, dividido
em subconjuntos. &subconjuntos[0] armazena o valor correspondente a
primeira variavel de entrada, &[1] para a segunda variavel de entrada e
e &subconjuntos[2] armazena quantos subconjuntos tem a variavel de saida. */

fscanf(fp,"%5d%5d%5d",&subconjuntos[0],&subconjuntos[1],&subconjuntos[2]);

/* variaveis[0] armazena o nome da primeira variavel de entrada,


variaveis[1] armazena o nome da segunda variavel de entrada e
variaveis[2] armazena o nome da variavel de saida. */

for(j=0;j<=2;j++) {

fscanf(fp,"%s",variaveis[j].nome_variavel);

/* A quantidade de faixas, ou dominios de cada variavel esta'


armazenada em subconjuntos[j]. Na estrutura variaveis[j].faixa[m] fica

armazenado a tabela com os valores definidos pelo especialista,


definindo os limites inferior e superior para cada dominio. */

for(m=0;m<subconjuntos[j];m++) {
fscanf(fp,"%20s%f%f%3s",variaveis[j].faixa[m].faixa,
&variaveis[j].faixa[m].de,
&variaveis[j].faixa[m].para,
variaveis[j].faixa[m].sigla);
}
}

/* A tabela com as resolucoes das proposicoes fuzzy e' uma tabela de


duas dimensoes, e foi definida pelo especialista. E' a tabela
da pag. xxxx:
NE ME FO FO
NE LE FO FO
NE LE FO FO
NE NE ME ME
NE NE LE LE
A interseccao da primeira linha com a primeira coluna e' a proposta
da resolucao da proposicao fuzzy composta pela primeira faixa para
a primeira variavel de entrada com a primeira faixa da segunda
variavel de entrada. A interseccao da segunda linha com a primeira
coluna e' a proposta para a resolucao da proposicao fuzzy composta
pela primeira faixa da primeira variavel com a segunda faixa da
segunda faixa, e assim para todas as regras. Se as variaveis de
entrada tem 4 e 5 subconjuntos, respectivamente, a base de regras
sera' formada por 20 regras. */

for(m=0;m<subconjuntos[1];m++) {
for(n=0;n<subconjuntos[0];n++) {
fscanf(fp, "%3s",regras[m][n]);
}

/* para exibir as tabelas */

for(j=0;j<=2;j++) {
printf("%s\n",variaveis[j].nome_variavel);
for(m=0;m<subconjuntos[j];m++) {
printf("%20s%6.1f%6.1f%3s\n",variaveis[j].faixa[m].faixa,
variaveis[j].faixa[m].de,
variaveis[j].faixa[m].para,
variaveis[j].faixa[m].sigla);
}
}
fclose(fp);
return ;
}

void ver_regras(float var1,float var2)

{
/* Esta rotina verifica quais as faixas atingidas e calcula A(x)
var1 percorre variaveis[0], e var2 percorre variaveis[1]. */

int m,n,j;
float a,s;

printf("\nVerificando as faixas atingidas.\nVariavel %s:",


variaveis[0].nome_variavel);

/* lembrando que subconjuntos[0] contem quantas faixas tem a primeira variavel de


entrada
*/

for( m = 0; m < subconjuntos[0]; m++) {

if(var1 >= variaveis[0].faixa[m].de && var1 <= variaveis[0].faixa[m].para) {


var1_atg[m] = 1;
printf("\n%s ",variaveis[0].faixa[m].faixa);
/* A(x) = 1-|x-a|/s se a-s <= x <= a+s */
a = ((variaveis[0].faixa[m].para - variaveis[0].faixa[m].de)/2 +
variaveis[0].faixa[m].de);
s = (variaveis[0].faixa[m].para - variaveis[0].faixa[m].de)/2;
if(var1 >= a)
ax1[m] = 1 - (var1 - a) / s;
else
ax1[m] = 1 - (a - var1) / s;

printf(" A(x) = %f ",ax1[m]);

}
}

printf("\n\nVariavel %s:",variaveis[1].nome_variavel);

for( m = 0; m < subconjuntos[1]; m++) {


if(var2 >= variaveis[1].faixa[m].de && var2 <= variaveis[1].faixa[m].para) {
/* faixa atingida. */
var2_atg[m] = 1;
printf("\n%s",variaveis[1].faixa[m].faixa);

/* A(x) = 1-|x-a|/s se a-s <= x <= a+s */

a = ((variaveis[1].faixa[m].para - variaveis[1].faixa[m].de)/2 +
variaveis[1].faixa[m].de);
s = (variaveis[1].faixa[m].para - variaveis[1].faixa[m].de)/2;

if(var1 >= a)
ax2[m] = 1 - (var2 - a) / s;
else
ax2[m] = 1 - (a - var2) / s;
printf(" A(x) = %f ",ax2[m]);

}
}

/* Quais faixas para a variavel de saida sao atingidas? */

for(m=0;m<subconjuntos[1];m++) {
for(n=0;n<subconjuntos[0];n++) {
if(var2_atg[m] == 1 && var1_atg[n] == 1) {

/* Aqui se define o grau de pertinencia para a variavel de saida.


Em ax1 esta' o valor para a proposicao correspondente a primeira
variavel de entrada e em ax2 esta' o valor correspondente a
segunda variavel de entrada. Como as proposicoes deste modelo sao
condicionais na forma Se ... entao ... , a resolucao
destas proposicoes fornecem as saidas fuzzy parciais que serao
utilizadas na composicao das regras, segundo Mamdani. */

if(ax1[n] < ax2[m])


maior[pilha] = ax1[n];

else
maior[pilha] = ax2[m];

strcpy(valor_fuzzy[pilha],regras[m][n]);
pilha ++ ;
for(j=0;j<subconjuntos[2];j++) {

if(strcmp(regras[m][n],variaveis[2].faixa[j].sigla) == 0) {
if(flagCG == 0.0) { /* e' a primeira resolucao fuzzy */
menorCG = variaveis[2].faixa[j].de;
maiorCG = variaveis[2].faixa[j].para;
flagCG = 1.0;
}

else {
if(variaveis[2].faixa[j].de < menorCG)
menorCG = variaveis[2].faixa[j].de;
if(variaveis[2].faixa[j].para > maiorCG)
maiorCG = variaveis[2].faixa[j].para;
}
}
}
}
}
}

printf("\n");
return ;
}

float defuzifica(float topo,char faixa[3])


{
int j;
float a,s,ax,var,x1,x2,de,para,valor_final;
x1 = 0.0;
x2 = 0.0;
de = 0.0;
para = 0.0;
ax = 0.0;

printf("\nFaixa para defuzificacao: %s, em %f\n",faixa,topo);


for(j=0;j<subconjuntos[2];j++) {

if(strcmp(faixa,variaveis[2].faixa[j].sigla) == 0) {
de = variaveis[2].faixa[j].de ;
para = variaveis[2].faixa[j].para;
}
}
/* A(x) = 1-|x-a|/s se a-s <= x <= a+s */
a = (para - de)/2 + de;
s = (para - de)/2;
/* Defuzificacao pela media do maximo */
for(var = de;var <= para; var = var + 0.1) {
if(var >= a) {
ax = 1 - (var - a) / s;
}
else {
ax = 1 - (a - var) / s;
}

/* A variavel var e' o valor x que percorre o eixo X


Precisa-se descobrir os valores de x1 e x2 para calcular x...
A(x) !
--------! +!
! +
! + !
! +
!+ !
!
+
--------+----------+----------x1
x2
x1 e x2 sao projecoes dos pontos da linha "topo" */

if (ax > topo && x1 == 0.0) { /* chegou ao topo. Achou x1 */


x1 = var;
}
if (x1 != 0.0 && ax < topo && x2 == 0.0) { /* Achou x2 */
x2 = var;

}
/*

if(soma2 == 0) valor_final = soma1;


else valor_final = soma1 / soma2; */
valor_final = (x2 - x1) / 2 + x1;
return valor_final;

float recebe_dados(int var)


{
float var1;
printf("\nDigite %s:",variaveis[var].nome_variavel);
printf("Deve estar entre %f e %f\n",variaveis[var].faixa[var].de
,variaveis[var].faixa[subconjuntos[var]-1].para);
scanf("%f",&var1);

/* var1 contem a variavel de entrada. */

return var1;
}
float centro_gravidade()
{
int i,j;
float a,s,ax,var,x1,x2,x3,valor_final,topo;
float cg_de[9],cg_para[9];
x1 = 0.0;
x2 = 0.0;
x3 = 0.0;
ax = 0.0;

for(i=0;i<pilha;i++) {
for(j=0;j<subconjuntos[2];j++) {
if(strcmp(valor_fuzzy[i],variaveis[2].faixa[j].sigla) == 0) {
cg_de[i] = variaveis[2].faixa[j].de ;
cg_para[i] = variaveis[2].faixa[j].para;

}
}
}
for(var = menorCG;var <= maiorCG; var = var + 0.001) {
for(i=0;i<pilha;i++){
topo = maior[i];
/* A(x) = 1-|x-a|/s se a-s <= x <= a+s */
a = (cg_para[i] - cg_de[i])/2 + cg_de[i];
s = (cg_para[i] - cg_de[i])/2;

if(var >= cg_de[i] && var <= cg_para[i] ) {


if(var >= a) {
ax = 1 - (var - a) / s;
}
else {
ax = 1 - (a - var) / s;
}
}
else {
ax = 0;
}
if (ax > topo ) ax = topo;
if (ax > x1)

x1 = ax;

}
x2 = x2 + var * x1;
x3 = x3 + x1;
x1 = 0.0;
}
if(x3 == 0) x3 = 1;
valor_final = x2 / x3;

return valor_final;
}Ao executar o programa, o usurio recebe na tela do computador as tabelas com as

definies das variveis de entrada e sada. O programa solicita a digitao das duas
variveis de entrada, informando os limites inferior e superior de cada uma. Como
resultado, o programa exibe os domnios a que pertencem cada varivel com seus graus
de pertinncia a estes conjuntos. Uma sada padro do programa como segue (em
itlico, os valores digitados pelo operador do programa):
Velocidade
Parado 0.0 5.0 PA
Devagar 2.0 20.0 DE
Pouco_rapido 10.0 50.0 PO
muito_rapido 40.0 80.0 MR
Distancia
No_sinal 0.0 2.0 NS
Muito_proximo 1.0 12.0 MP
Proximo 6.0 30.0 PR
Pouco_longe 18.0 37.0 PL
Muito_longe 30.0 50.0 ML
Pressao
Nenhuma 0.0 1.0 NE
Leve 1.0 30.0 LE
Media 25.0 75.0 ME
Forte 65.0 100.0 FO

Digite Velocidade:Deve estar entre 0.000000 e 80.000000


5.0
Digite Distancia:Deve estar entre 1.000000 e 50.000000
2.0
Verificando as faixas atingidas.
Variavel Velocidade:
Parado A(x) = 0.000000
Devagar A(x) = 0.333333

Variavel Distancia:
No_sinal A(x) = 0.000000
Muito_proximo A(x) = 0.181818
Faixa para defuzificacao: LE, em 0.181818
Valor final defuzificado: 15.550034
Valor defuzificado pelo centro de gravidade: 15.502049

A tabela 21 contm os resultados de algumas execues deste programa.


Tabela 21 Resultado dos testes do programa

Velocidade 5.0
Distncia
2.0
Velocidade 20.0
Distncia

10.0

Velocidade 10.0
Distncia

7.5

Velocidade 79.0
Distncia
49.0
Velocidade 70.0
Distncia
5.0

Faixa atingida

A(x)

P(x)

Parado
No_Sinal
Devagar
Pouco_rapido
Muito_proximo
Proximo
Devagar
Pouco_rapido
Muito_proximo
Proximo
Muito_rapido
Muito_longe
Muito_rapido
Muito_prximo

0,0000

Leve
0.1818
Forte
0.5000

0.0000
0.5000
0.3636
0.3333
0.8889
0.0000
0.8181
0.1250
0.0050
0.0100
0.500
0.7272

Mdia dos
mximos
15.550034

Centro de
Gravidade
15.502049

82.549728

82.499977

Leve
0.1818

15.550023

15.500784

Leve
0.005
Forte
0.5000

15.550037

15.500149

82.549728

82.500015

Observando-se a tabela 21, verifica-se que se o veculo est muito rpido e muito
prximo, deve-se acionar os freios forte em 82,5497%. Intuitivamente este valor
parece aproximar-se da realidade, pois estando-se em uma situao real o que se faria,
tentar diminuir bruscamente a velocidade do veculo estando muito rpido e muito
prximo do sinal de pare em um cruzamento. Caso esteja muito rpido, em cerca de
79.0 km por hora mas a uma distncia considerada muito longe em torno de 49.0
metros deve-se acionar os freios levemente em torno de 15.5%.

possvel que estes valores, que foram definidos pelo especialista do sistema
modelado, sofram alteraes aps uma anlise dos resultados da execuo do programa.
uma fase de refinamento dos dados, para se obter um resultado mais aproximado do
objetivo a ser atingido.

5.2 CONCLUSO
No incio deste trabalho de pesquisa, notou-se a falta de um mtodo mais detalhado
com as orientaes de como se deve proceder para programar um computador
utilizando-se estes novos conceitos lgicos, diferentes daqueles da lgica tradicional.
Devido a importncia das reas de programao e lgica, o interesse foi imediato por
teoria fuzzy. Aliar a pesquisa de uma nova teoria lgica e programao foi o grande
agente motivador deste trabalho.
Este um trabalho inicial. Para prosseguir, tem-se como sugesto melhoramentos
na elaborao deste software embrio que se iniciou com este trabalho. Aplicar
orientao a objetos neste programa a primeira idia. Ou seja, converter este programa
para C++. A utilizao dos recursos de encapsulamento, herana, polimorfismo e outros
recursos desta linguagem tornar este programa mais eficiente e reutilizvel.
Aperfeioar o programa para aceitar mais de duas variveis de entrada gerando
como resultado uma ou mais variveis de sada e aprimorar os mtodos de defuzifao
tambm so propostas para a continuidade da pesquisa.
Muitos problemas computacionais envolvem termos vagos e imprecisos, e a teoria
fuzzy mostrou-se muito eficiente para o modelamento destes casos. Apesar da
dificuldade encontrada na implementao da lgica fuzzy nas linguagens de
programao, particularmente a linguagem de programao C, foi mostrado ser possvel
a sua implementao em um programa de computador.
As possibilidades de aplicao desta teoria so muitas, pois em todas as reas
encontram-se a incerteza e a impreciso lingsticas na representao de seus
problemas.

BIBLIOGRAFIA
Altrock, Constantin Von (1997), Fuzzy Logic & NeuroFuzzy Applications in
Business & Finance, Prentice Hall
Altrock, Constantin Von (1995), Fuzzy Logic & NeuroFuzzy Applications
Explainded, Prentice Hall
Arbex, Roberto Taiar (1996), Ambiente para Desenvolvimento de Controladores
Fuzzy, Dissertao de Mestrado, Escola Politcnica, USP
Barros, Lacio Carvalho de (1992), Modelos Determinsticos com Parmetros
Subjetivos, Dissertao de Mestrado, Instituto de Matemtica, Estatstica e
Cincia da Computao da UNICAMP
Barros, Lacio Carvalho de (1997), Sobre Sistemas Dinmicos Fuzzy Teoria e
Aplicaes, Dissertao de Doutorado, Instituto de Matemtica, Estatstica e
Cincia da Computao da UNICAMP
Blinder, Paulo Bernardo (1994), Implementao da Lgica Fuzzy em Redes Neurais
Artificiais e Aplicaes em Biologia, Dissertao de Mestrado, Instituto de
Matemtica , Estatstica e Cincia da Computao da UNICAMP
Buckles, B.P. - F. E. Petry (1983), Information-Theoretical Characterization of
fuzzy relational databases, IEEE Transactions On systems, Man, and
Cybernetics 13(1), pg. 74-77.
Cox, Earl (1998), The Fuzzy Systems Handbook, AP Professional
Cox, Earl (1995), Fuzzy Logic for Business and Industry, Charles River Media, Inc.
Gomide, Fernando & Witold Pedrycz (1998), An Introduction to Fuzzy Sets
Analysis and Design, Masachusets Institute of Technology
Kandel, Abraham - Yan-Qing Zhang (1998), On use of fuzzy logic technology in
operating systems, Fuzzy Sets and Systems 99,(1998) 241-251.
Klir, George J. - Ute H. St. Clair - Bo Yuan (1997), Fuzzy Set Theory - Foundations
and Applications, Prentice-Hall
Klir, George J. - Bo Yuan (1995), Fuzzy Sets and Fuzzy Logic - Theory and
applications, Prentice Hall
Korth, Henry F. - Abraham Silberschatz (1994), Sistema de Bancos de Dados, makron
Books.
Lee, Chuen Chien (1990), Fuzzy Logic in Control Systems: Fuzzy Logic Controller,
IEEE Transactions on systems, Man, and Cybernetics, Vol. 20, no. 2, 404-435
Maruyama, Newton (1991), Projeto e Anlise de Controladores Fuzzy, Dissertao

de Mestrado, Escola Politcnica, USP


McNeill, F. Martin (1994), Fuzzy Logic A Pratical Approach, AP Professional
Nguyen, T. Hung & Elbert A Walker (1997), A first course in fuzzy logic, CRC Press
Oliveira, Jos Valente (1995), A set-theoretical deffuzification method, Fuzzy Sets
and Systems, Vol. 76 pg. 63-71.
Pressman, Roger S. (1995), Engenharia de Software, Makron Books
Shimura, Masamichi (1975), An approach to Pattern Recognition and Associative
Memories using Fuzzy Logic, in Fuzzy Sets and Their Applications to
Cognitive and Decision Processes, Academic Press, INC
Yager, Ronald R., Dimitiar P. Filev (1995), Generalizing the modeling of fuzzy logic
controllers by parameterized aggregation operators, Fuzzy sets and systems,
vol. 70, issue 2-3, pg. 303-313.
Zadeh, Lotfi Asker (1965), Fuzzy sets, Information and Control, vol. 8, 338-353
Zadeh, Lotfi Asker (1997), Computing With Words, BISC Seminar, Computer
Science Division, Berkeley em http://http.cs.berkeley.edu/projects/Bisc
Zadeh, Lotfi Asker (1975), Calculus of Fuzzy Restrictions, in Fuzzy Sets and Their
Applications to Cognitive and Decision Processes, Academic Press, INC

REFERNCIAS BIBLIOGRFICAS
Abe, Jair Minoro (1992), Fundamentos da Lgica Anotada, Dissertao de
Doutorado, FFLCH, USP
Alencar Filho, Edgard de (1985), Teoria Elementar dos Conjuntos, NOBEL
Cubero, J.C. & J. M. Medina, O. Pons, M. A. Vila, Fuzzy loss less decompositions in
databases, Fuzzy Sets and Systems 97 (1998), 145-167
Deitel, H. M., P. J. Deitel (1994), How To Program C++, Prentice Hall
Dubois, Didier & Henri Prade (1980), Fuzzy Sets And Systems Theory and
Applications, AP Academic Press
Jang, J. S. Roger, Ned Gulley (1997), MATLAB Fuzzy Logic Toolbox User's Guide,
MathWorks
Keller, James M. (1997), Fuzzy Set Theory in Computer Vision: A prospectus,
Fuzzy Sets and Systems 90 177-182
Kickert, Walter J. M.(1978), Fuzzy Theories on Decision Making, Frontiers in
Systems Research, Vol. 3, Eindhoven University of Technology
Kochen, Koche (1975), Applications of Fuzzy Sets in Psychology, in Fuzzy Sets and
Their Applications to Cognitive and Decision Processes, Academic Press, INC
Kundu, Sukhamay & Jianhua Chen, Fuzzy Logic or Lukasiewicz logic: A
clarification, Fuzzy Sets and Systems 95 (1998), 369-379
Montevechi, Jos Arnaldo Barra (1995), Contribuio para Identificao de
Similaridades entre peas: Abordagem baseada na lgica Fuzzy em
Sistemas de Apoio Computadorizados, Dissertao de Doutorado, Escola
Politcnica, USP
Munakata, Toshinori (1998), Notes on implementing fuzzy sets in Prolog, Fuzzy Sets
and Systems, Volume 98, Issue 3, 311-317
Pedrycz, Witold (1997), Fuzzy Sets in Pattern Recognition: Accomplishments and
Challenges, Fuzzy Sets and Systems 90 171-176
Pedrycz, Witold (1998), Technological Developments, Fuzzy Sets and Systems,
Volume 96, Issue 1, 125-128

Pedrycz, Witold, Fuzzy set technology in knowledge discovery, Fuzzy Sets and
Systems 98 (1998), 279-290
Rao, Valluru B & Hayagriva V. (1995), Neural Networks & Fuzzy Logic, MIS Press.
Siarry, Patrick & Franois Guely, A genetic algorithm for optimizing Takagi-Sugeno
fuzzy rule bases, Fuzzy Sets and Systems 99 (1998), 37-47
Votre, Vilmar P. (1997), C++ Explicado e Aplicado, ZeroErro Engenharia de
Software.

Você também pode gostar