s istemas c omputacionais baseados em l Ógica f …tonelli/verao-fuzzy/laecio/logic... ·...

110
UNIVERSIDADE MACKENZIE Programa de pós-graduação em Engenharia Elétrica Área de Concentração: Engenharia da Computação SISTEMAS COMPUTACIONAIS BASEADOS EM LÓGICA FUZZY Francisco Ribacionka Dissertação de Mestrado apresentada a Universidade Mackenzie como requisito parcial para a obtenção do título de Mestre em Engenharia Elétrica na área da Engenharia da Computação. Orientador: Prof. Dr. Laécio Carvalho de Barros São Paulo 1999

Upload: phamphuc

Post on 01-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

UNIVERSIDADE MACKENZIE

Programa de pós-graduação em Engenharia ElétricaÁrea de Concentração: Engenharia da Computação

SISTEMAS COMPUTACIONAIS BASEADOS EM LÓGICA FUZZY

Francisco Ribacionka

Dissertação de Mestradoapresentada a UniversidadeMackenzie como requisito parcialpara a obtenção do título de Mestreem Engenharia Elétrica na área daEngenharia da Computação.

Orientador: Prof. Dr. Laécio Carvalho de Barros

São Paulo1999

Page 2: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

R112 Ribacionka, Francisco

Sistemas Computacionais baseados em Lógica Fuzzy /

Francisco Ribacionka – São Paulo, 1999

115 f.: il; 30 cm

Dissertação (Mestrado em Engenharia Elétrica – Área de

Concentração: Engenharia da Computação) –

Universidade Mackenzie, 1999

Bibliografia: f. 115.

1. Lógica Fuzzy 2. Conjuntos Fuzzy 3. Engenharia da

Computação I. Título CDD 511.322

Page 3: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

À minha mãe (Em Memória)

Ao meu pai

Às minhas irmãs Neusa e Nanci

À minha esposa Márcia e meu filho André, pela paciência!

Page 4: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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

seguinte estória:

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 almoço estará fazendo?”. Pousa

na entrada da toca e pergunta: “- Oi amigo coelho. O que você está fazendo?”. “-

Estou digitando a minha dissertação de mestrado!”.

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

almoço de coelho!”. “- Ora! Podes me mostrar o seu trabalho?”.

“- Claro”, responde o coelho. “Entre na minha toca que eu mostro”. E foi pena para

todo lado. Após alguns minutos, palitando os dentes, o coelho comenta:

“-Realmente, o tema do meu trabalho é muito bom.”. E, com um tapinha em suas

costas, o leão completa: “- Sim, o tema é importante. Mas o orientador é muito

mais!”

Agradeço a Deus por ter colocado o Laécio no meu caminho.

Page 5: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

INTRODUÇÃO

A teoria de conjuntos fuzzy foi introduzida por Lotfi Asker Zadeh em 1965 (Zadeh

(1965)), como uma teoria matemática aplicada a conceitos vagos. Desde então a

pesquisa e aplicação desta teoria em sistemas de informática tem crescido. Uma área de

aplicação da teoria fuzzy é a chamada raciocínio aproximado, conforme Zadeh (1975),

onde um tipo de raciocínio não é totalmente certo nem totalmente errado. Este tipo de

raciocínio se aproxima da forma do raciocínio humano. Neste caso, variáveis

lingüísticas são representadas por conjuntos fuzzy, interpretando uma variável

lingüística como uma variável cujos valores são palavras ou sentenças em uma

linguagem natural. Conjuntos fuzzy proporcionam, aos métodos de desenvolvimento de

sistemas computacionais, uma forma de programação mais próxima da linguagem e do

raciocínio humano.

Atualmente, Lotfi Zadeh é diretor do BISC1 - Berkeley Initiative in Soft Computing

- na Universidade da Califórnia, em Berkeley. O seu grupo tem como objetivo a

divulgação e pesquisa das aplicações da "computação Soft", que é uma derivação da

computação tradicional. Zadeh chama a computação tradicional de "Computação Hard"

e a principal diferença entre elas é o fato da computação Soft ter uma tolerância em

relação à imprecisão, incerteza ou verdade parcial, tendo como modelo a mente

humana, conforme Zadeh (1997).

A computação Soft é baseada na Lógica Fuzzy, Teoria de Redes Neurais,

Raciocínio Probabilístico, Algorítimos Genéticos, Teoria do Caos e Teoria do

1 O endereço na Internet deste grupo de pesquisa éhttp://www.cs.berkeley.edu/projects/Bisc, e pode ser um ponto de partida parauma busca na Internet dos grupos de pesquisa sobre Lógica Fuzzy.

Page 6: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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

computação Soft uma solução mais abrangente para uma faixa maior de aplicações.

Uma conseqüência disto é que em muitos casos, um problema pode ser resolvido mais

eficientemente usando uma combinação destas teorias ao invés do uso exclusivo de uma

delas. Um exemplo são os sistemas NeuroFuzzy em aplicações industriais como mostra

Altrock (1995).

Zadeh (1997) afirma que, além de aplicações industriais, a computação Soft está

sendo aplicada em produtos para o consumidor final, como aparelhos de ar

condicionado, filmadoras e tantos outros, onde as técnicas de computação Soft aplicadas

a estes produtos incluem um indicativo de "Quociente de Inteligência de Máquina", ou

MIQ (Machine Intelligence Quotient), sendo a Lógica Fuzzy a teoria mais aplicada nos

produtos com este quociente.

Além destas aplicações, a teoria fuzzy já está incluida em programas tradicionais

para aplicações científicas e de engenharia. Dois destes programas são o MatLab da

empresa Math Works2 e o Mathematica da empresa WRI3. O programa MatLab contém

uma interface gráfica que possibilita o desenvolvimento de métodos fuzzy e

NeuroFuzzy, com geração de código fonte na linguagem C. O programa Mathematica

fornece um conjunto de recursos para criar, modificar e visualizar sistemas baseados na

Lógica Fuzzy.

Na bibliografia consultada, o termo Lógica Fuzzy é usado de duas formas:

2 O endereço na Internet com informações sobre o módulo fuzzy doprograma MatLab é http://www.mathworks.com/products/fuzzylogic

3 Na Internet o endereço para obter maiores informações sobre Lógica fuzzy noprograma mathematica é http://store.wolfram.com/view/fuzzylogic

Page 7: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

1º) Com o objetivo de generalizar a lógica clássica Aristotélica, onde as proposições

são 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 generalização de tudo que envolve conceitos fuzzy.

Neste trabalho são utilizadas as duas formas, onde é feito um estudo da teoria fuzzy

e como esta teoria pode contribuir no desenvolvimento de sistemas para solução de

problemas complexos e de difícil modelamento.

No Capítulo 1, tem-se uma visão geral das aplicações da teoria fuzzy e um histórico

de seu desenvolvimento.

No Capítulo 2, faz-se um estudo da teoria tradicional de conjuntos e da teoria de

conjuntos fuzzy, procurando mostrar as diferenças fundamentais entre estas teorias.

No Capítulo 3 faz-se um estudo da lógica tradicional e da lógica fuzzy, procurando

apresentar as diferenças fundamentais entre ambas, onde também é introduzido o

conceito de raciocínio aproximado.

No Capítulo 4 estuda-se uma metodologia para o desenvolvimento de Sistemas

Fuzzy, com a descrição de um exemplo. A codificação deste exemplo na linguagem de

programação C e a conclusão deste trabalho é feita no capítulo 5. Este programa foi

desenvolvido no ambiente operacional Linux. O fato do Linux ser um sistema aberto e

ter um compilador C padrão ANSI, proporciona o desenvolvimento de programas mais

facilmente adaptáveis a outros ambientes operacionais.

Page 8: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

CAPÍTULO 1. APLICAÇÕES DA LÓGICA FUZZY

Segundo Klir (1997), a teoria fuzzy tem se estabelecido como uma regra importante

na Ciência da Computação, tornando os recursos de armazenamento e manipulação da

informação e do conhecimento em uma forma mais compatível com o pensamento

humano. A principal vantagem de se usar teoria fuzzy nestes sistemas baseados em

computação está na capacidade adquirida de representar e manipular informação e

conhecimento expresso numa linguagem natural. Esta capacidade torna estes sistemas

mais flexíveis e realistas.

A Lógica Fuzzy surgiu há cerca de trinta anos com a publicação do artigo Zadeh

(1965), mas somente na atualidade está sendo aplicada na confecção de produtos e

sistemas. Tem sido usada como uma ferramenta em sistemas de controle de processos

industriais, aplicações domésticas e de diversão eletrônica, sistemas de diagnósticos e

outros sistemas especialistas. Criada nos Estados Unidos, esta tecnologia vem crescendo

em aplicações no Japão e na Europa e o número de patentes requeridas vem aumentando

exponencialmente. Segundo Cox (1998), a maior parte vem de aplicações de

Controladores Fuzzy.

As principais áreas de aplicação da Lógica Fuzzy são: Sistemas de Controle Fuzzy,

Tomada de Decisão, Reconhecimento de Padrões e Processamento de Imagens,

Medicina, Ecologia, Banco de Dados Fuzzy, NeuroFuzzy e Aplicações em Sistemas

Operacionais. A seguir, descreve-se cada uma destas aplicações.

Page 9: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

1.1 SISTEMAS DE CONTROLE FUZZY

Lee (1990), afirma que, sistemas de controle é a área que mais tem recebido

aplicações da teoria fuzzy, especialmente em aplicações industriais. Ele também 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 método de

tomada de decisão, baseado no raciocínio aproximado, fazendo com que o sistema se

pareça mais com a forma humana de operar o sistema controlado.

Enquanto controladores clássicos são baseados em modelos matemáticos rígidos

para controle de processos, controladores fuzzy são baseados no conhecimento da

operação humana. Este conhecimento é formulado em termos de regras de controle

fuzzy, cada um expresso por uma proposição condicional, tal como:

SE velocidade do veículo é devagar

E distância entre o veículo e o sinal de "Pare" é grande

ENTÃO pressão sobre os freios é nenhuma

onde velocidade e distância são variáveis observadas do processo controlado,

enquanto pressão é uma variável que representa a ação a ser controlada. Os termos

lingüísticos devagar, grande e nenhuma são apropriadamente representados na lógica

fuzzy.

Muitos produtos disponíveis no mercado de consumo já contêm controladores

fuzzy, segundo Zadeh (1997): Máquinas de lavar roupa, aspiradores de pó, barbeadores,

filmadoras, automóveis (sistemas de freios, transmissão automática, e outras funções),

refrigeradores e aparelhos de ar condicionado. Sistemas mais complexos são usados

Page 10: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

para controlar grupos de elevadores, sistemas de metrô urbano e controle de tráfego de

veículos.

Em Arbex (1996), a arquitetura de controladores fuzzy é apresentada em detalhes e

uma discussão a respeito dos elementos de projeto é realizada, com uma comparação

entre controladores fuzzy e controladores convencionais.

Maruyama (1991), apresenta diretrizes gerais para o desenvolvimento de projeto de

controladores fuzzy, com a apresentação da arquitetura de controladores fuzzy com uma

discussão sobre os parâmetros deste projeto.

Page 11: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

1.2 TOMADA DE DECISÃO

Tomar uma decisão é uma das atividades humanas fundamentais e o objetivo da

mesma é o estudo de como são feitas e de como elas podem levar a um maior sucesso.

Klir (1995) mostra como é feita a aplicação da teoria fuzzy sobre a teoria de tomada de

decisão, através da utilização de conceitos vagos e pouco específicos, semelhantes à

formulação humana de preferências e objetivos.

Na teoria clássica trabalha-se com um conjunto de alternativas naturais, onde a

decisão é feita sobre certas condições disponíveis para a referida resolução. A resolução

é tomada sobre condições de riscos, os quais são determinados pela distribuição

probabilística de cada ação. Quando as probabilidades das ações não são conhecidas, o

grau de risco só pode ser estimado aproximadamente, e as decisões são 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 decisão de tomada de

preço 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). São sistemas que auxiliam no processo de decisão.

Exemplo 1

Para ilustrar este método, supõe-se uma pessoa que deverá decidir-se por uma entre

quatro propostas de emprego, considerando o salário oferecido e a distância entre o

local de trabalho e sua casa.

Estas informações podem ser representadas por dois conjuntos fuzzy, sendo salário

Page 12: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

representado pela letra S e distância, 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 salário do que a proposta p1.

Para o conjunto D a pessoa atribui a seguinte seqüência 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 próximo. 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 também 0.2, pois a distância entre o local de trabalho

das propostas p3 e p4 e sua residência são iguais.

Analisando o conjunto D, conclui-se que a empresa com a proposta p2 é a que fica

mais próxima de sua casa.

Aplicando o método proposto por Klir (1995), a combinação 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

Page 13: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

para a proposta p3 e 0.2 para a proposta p4. Deste conjunto F a decisão é tomada

levando-se em conta o elemento com o valor mais próximo de 1. Neste caso a melhor

proposta de emprego é a proposta p2.

O próximo item também envolve tomada de decisão, onde o sistema deve escolher

um entre vários padrões no processamento de imagens.

Page 14: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

1.3 Reconhecimento de Padrões e Processamento de ImagensO reconhecimento de padrões está associado ao processamento de imagens. Klir

(1997), afirma que o objetivo básico é comparar as categorias identificadas nos dados

com categorias definidas em tabelas ou base de dados. Uma aplicação é o

reconhecimento óptico de caracteres, ou OCR (Optical Character Recognize), onde

através de um scanner digitaliza-se textos para posterior conversão de uma imagem em

um texto manipulável por um programa de computador. Quando se digita um texto em

um editor de textos, cada letra é um valor numérico em uma tabela. A conversão de uma

imagem em texto lida com a manipulação de imagens, pois cada letra digitalizada deve

ser convertida para um número que represente esta letra.

Shimura (1975), considera o reconhecimento de padrões essencialmente fuzzy,

porque não há uma fronteira definida entre as categorias de fontes de caracteres. Afirma

que o reconhecimento de padrões é mais um evento probabilístico do que

determinístico, pois a impressão de caracteres pode ser afetada por várias situações,

como a má qualidade de impressão ou sujeira no papel.

No caso de se ter um padrão, onde o número de modelos de exemplo para

comparação e reconhecimento é limitado, impedindo a aplicação da teoria

probabilística, um modelo fuzzy é mais útil na classificação de padrões desconhecidos

do que os métodos de classificação tradicionais.

1.4 MEDICINA

A aplicação da teoria fuzzy na medicina tem sido reconhecida desde 1970, segundo

Klir (1997). O foco principal tem sido o modelamento dos processos de diagnóstico de

doenças.

Page 15: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Exemplo 2

Por exemplo, para diagnosticar a cirrose o médico faz exames de sangue para

identificar se:

"Total de proteínas está diminuindo, α-globulina está freqüentemente diminuindo,

e γ-globulina está aumentando".

Os termos diminuindo, freqüentemente, e aumentando são valores vagos. Assim,

para representar estes termos de forma manipulável, a teoria fuzzy é uma opção.

Page 16: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

1.5 ECOLOGIA

Barros (1992, 1997), tem aplicado a teoria fuzzy em dinâmica de população

distinguindo basicamente duas situações. A primeira quando acredita-se que o ambiente

(clima, higiene, cidade, floresta, etc.) onde vivem os indivíduos, interfere fortemente na

dinâmica de suas relações; a outra trata de questões de competição ou predação entre

espécies onde tanto o conceito de presa como o de predador são cotados de maneira

subjetiva.

Um ser, como o tubarão, pode ser considerado como predador, porém seu grau de

predação certamente não é o mesmo durante toda a sua vida, podendo até sair da

condição de predador para presa quando muito jovem ou velho.

Page 17: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

1.6 BANCOS DE DADOS FUZZY

Um banco de dados informatizado tem como objetivo capacitar um usuário a

manipular e recuperar informações armazenadas eletrônicamente, como descrito em

Klir (1995). Muitos modelos para representar estas informações têm sido propostos.

Um destes modelos é chamado de modelo relacional, que consiste de um conjunto

multi-dimensional de relações manipuladas como tabelas, conforme conceitua Korth

(1994). As colunas destas tabelas correspondem a campos ou atributos e são chamados

de domínios. Cada domínio é definido em um conjunto universal apropriado. As linhas

destas tabelas são os elementos da relação e correspondem a registros, chamados de

tuplas.

O acesso ao banco de dados é feito através de operações algébricas tradicionais,

como a união ou a interseção sobre os domínios a serem operados, a fim de produzir a

informação desejada.

O modelo relacional proposto por Buckles (1983), difere do modelo tradicional no

seguinte aspecto: os elementos das tuplas, contidos em uma relação, podem ser

subconjuntos do domínio universal, permitindo a inclusão de conceitos vagos como

"tamanho igual a grande", ou "potencial igual a bom". A aplicação da algebra relacional

fuzzy utilizada para acessar um banco de dados fuzzy, providencia uma maior

flexibilidade na recuperação e manipulação das informações em uma linguagem mais

próxima da linguagem humana.

Cox (1995), propõe a aplicação da teoria fuzzy em banco de dados gerenciados pela

linguagem SQL (Structured Query Language) com a criação de novas bibliotecas de

comandos SQL, com a capacidade de manipular informações vagas ou imprecisas.

Page 18: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Segundo esta proposta, com a teoria fuzzy a capacidade de busca e recuperação de

informações através da linguagem SQL é ampliada de forma a permitir aplicações na

área financeira, para negócios e na industria com um alcance que o uso tradicional não

permite. Como os problemas das áreas citadas envolvem conceitos imprecisos, como

“situação economicamente viável”, “alta produtividade” ou “baixa liquidez” a teoria

fuzzy é bem aplicada.

A próxima seção também trata da manipulação de informações, onde, utilizando

uma base de dados, o sistema tem como objetivo o aprendizado de um determinado

comportamento.

Page 19: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

1.7 NEUROFUZZY

A combinação 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 condições, como descrito em Altrock (1997), e em Altrock (1995). O objetivo das

redes neurais é o de imitar a mente humana, a fim de processar informações através de

algoritmos que capacitem um aprendizado de um determinado comportamento. O

benefício da teoria fuzzy é o de capacitar a tomada de decisões, 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), também mostra como esta teoria tem sido utilizada em aplicações

industriais, aplicações na área financeira e de negócios.

Blinder (1994), apresenta a implementação da lógica fuzzy em redes neurais

artificiais aplicados na biologia. Mostra que a representação de problemas biológicos

tem um grande grau de incerteza e imprecisão lingüísticas e que, através da teoria fuzzy,

aliada a teoria de redes neurais, obtém-se uma ferramenta com grande poder de síntese.

Page 20: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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 compõem

este sistema.

Técnicas fuzzy podem ser usadas para um aprimoramento da qualidade de um

sistema operacional com a inclusão de algoritmos fuzzy, pois muitos elementos que

compõem um sistema de computador podem ser considerados fuzzy. Por exemplo, o

tempo de acesso a memória, que pode ser mais rápido ou não de acordo com as

condições gerais de uso do sistema, ou o tempo de resposta de um processamento, que

depende do espaço em disco disponível para uso de um determinado programa. Os

termos mais rápido e tempo de resposta são 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 execução?" são problemas que o sistema operacional

deve resolver a todo instante. Valores vagos como grandes, pequenos e menor

possibilitam a aplicação da teoria fuzzy.

Este capítulo tratou das aplicações da teoria fuzzy. No capítulo 2 será visto a teoria

de conjuntos fuzzy.

Page 21: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

CAPÍTULO 2. CONJUNTOS FUZZY

Na teoria clássica de conjuntos, um elemento ou pertence ao conjunto ou não

pertence ao mesmo. Esta dicotomia é reflexo da lógica clássica, onde cada proposição é

tratada como totalmente falsa ou totalmente verdadeira. No entanto, muitas proposições

não podem ser bem caracterizadas dessa forma.

Por exemplo, na classe das pessoas altas de uma localidade a fronteira não pode ser

precisamente determinada. Isto porque há uma transição contínua entre ser alto e não ser

alto. Não é razoável que uma pessoa com 1.69m seja considerada baixa e outra com

1.70m alta.

Há muitos outros exemplos que não podem ser representados totalmente pela teoria

clássica de conjuntos; como a classe dos altos salários em uma empresa, a linha de

custo de um produto, ou a experiência administrativa de uma pessoa. Um conjunto

fuzzy é um recurso natural para caracterizar estes conceitos.

Uma das principais motivações para a criação de conjuntos fuzzy é a representação

de conceitos imprecisos. Um indivíduo é membro do grupo de pessoas altas de acordo

com o conceito de alto. A idéia é 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 programável conceitos que

julga-se vagos ou imprecisos, como bem maior, bem menor, aproximadamente, é que

surge a idéia de conjuntos fuzzy (ou nebulosos).

Zadeh (1965) propôs então a seguinte definição matemática:

Definição 2.1

Page 22: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Um subconjunto fuzzy A de um conjunto clássico X é dado por uma função a:X →

[0,1], onde a(x) é o grau de pertinência do elemento x a a, com os graus 1 e 0

representando, respectivamente, a pertinência máxima e a não pertinência do elemento

ao conjunto fuzzy A. A função a é chamada grau de pertinência do conjunto fuzzy A.

Baseando-se na caracterização de um conjunto clássico A através da sua função

característica 1A é que definiu-se um subconjunto fuzzy por meio de uma função

"generalizando" o conceito de subconjunto clássico. Isto é, enquanto a função

indicadora (ou característica) 1A que caracteriza o subconjunto A assume apenas valores

no conjunto {0,1}, a função grau de pertinência 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 próprio conjunto fuzzy A

será usado para indicar sua função grau de pertinência.

A construção de conjuntos fuzzy é tratada na próxima seção.

Page 23: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

2.1 CONSTRUINDO CONJUNTOS FUZZY

A construção de conjuntos fuzzy tem como objetivo modelar um sistema através de

termos lingüísticos apropriados. Estes termos podem ter aplicações diferentes, conforme

o contexto. Por exemplo, o termo "jovem" tem um significado diferente quando

utilizado por crianças ou por adultos. A sua construção varia sempre para diferentes

universos.

O problema de se construir as funções grau de pertinência no contexto de várias

aplicações não é um problema da teoria fuzzy em si. É um problema relacionado a um

novo campo chamado de "Engenharia do Conhecimento", onde se concentra a aquisição

dos fatos relacionados ao conhecimento da situação. O processo de aquisição do

conhecimento envolve um ou mais especialistas na área de aplicação e um engenheiro

de conhecimento. O engenheiro deve transformar em uma forma operacional o

conhecimento fornecido pelos especialistas.

Muitos métodos para construção da função grau de pertinência têm sido

desenvolvidos, e um deles é descrito no exemplo a seguir.

Exemplo 3

Supondo que se tem em uma competição cinco mulheres para a disputa de Salto

Ornamental: Márcia, Cristina, Nanci, Neusa e Terezinha e o júri é composto por dez

juízes, descritos por J1, J2, ..., J10, que darão 1 para um bom salto e 0 para um salto ruim.

Deve-se construir uma função grau de pertinência A que capture o termo lingüístico

"excelente saltadora". Após receber os resultados dos juízes, monta-se uma tabela

como:

Page 24: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Tabela 1 - Notas fornecidas pelos Juizes

Juiz Márcia Cristina Nanci Neusa TerezinhaJ1 1 1 1 1 1J2 0 0 1 1 1J3 0 1 0 0 1J4 1 0 1 1 1J5 0 0 1 1 1J6 0 1 1 1 1J7 0 0 0 0 0J8 1 1 1 1 1J9 0 0 0 0 1J10 0 0 0 0 1

Para cada concorrente calcula-se o grau de pertinência de acordo com a média do

número total de respostas favoráveis ao número total de juízes. Este procedimento

fornece o seguinte conjunto fuzzy para a excelente saltadora:

A = 0.3 / Márcia + 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 Márcia pertence menos. Aqui utiliza-se uma

forma de representar este conjunto fuzzy. A representação de um conjunto fuzzy facilita

o seu entendimento e as formas de se representar estes conjuntos vem a seguir.

Page 25: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

2.2 REPRESENTAÇÕES DE CONJUNTOS FUZZY

A representação das funções que definem os membros de um conjunto fuzzy facilita a

visualização deste conjunto, e pode ser feita na forma tabular ou de lista, graficamente e

na forma analítica.

Para conjuntos finitos, as funções podem sempre ser representadas por tabelas. A

tabela representando um conjunto fuzzy lista todos os elementos do conjunto com seus

respectivos graus de pertinência. No seguinte exemplo tem-se uma ilustração deste

tópico.

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, Márcia 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 têm um grau de mais

estudioso, outros menos estudioso variando entre os valores 0 e 1. Para os alunos

citados tem-se a representação tabular:

Tabela 2 - Alunos e seus graus de estudo

Estudante Grau de estudoCarlos 0.3Márcia 0.7Fernando 0.8André 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), (Márcia; 0.7), (André;0.9)}

Page 26: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Esta segunda forma tabular é mais comumente escrita assim:

A = 0.8/Fernando + 0.3/Carlos + 0.7/Márcia + 0.9/André

Aqui o símbolo / é usado apenas para associar o elemento do conjunto universo X e

o seu grau de pertinência ao conjunto fuzzy A. Assim também o sinal de + não significa

soma; simplesmente conecta os elementos do grupo. A forma geral para representar o

conjunto fuzzy A quando X é finito tem a forma:

Uma outra forma de se representar um conjunto fuzzy é feita graficamente.

A representação gráfica é a mais usada na literatura fuzzy por ter uma interpretação

mais intuitiva. No caso de se fazer a representação em duas dimensões, o eixo vertical

representa a função grau de pertinência no intervalo [0,1], e o eixo horizontal contém a

informação a ser modelada.

A seguir tem-se três exemplos de representação gráfica 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 próxima ao eixo horizontal e vai crescendo até o limite de 1.

∑= xxAA /)(

Page 27: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Exemplo 5

Um conjunto fuzzy J compatível com o conceito de jovem deve, no mínimo, indicar

que, quanto menos idade um indivíduo tiver, mais jovem será. Sua função grau de

pertinência J(x) pode ser representada como na figura 1.

Figura 1 – Função grau de pertinência de jovens

Exemplo 6

O conjunto fuzzy de pessoas de meia idade poderia ser representado pela função

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 controvérsias

talvez apareçam a respeito da idade, onde há mudança do crescimento da curva.

Page 28: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Figura 2 – Conjunto de pessoas de meia idade

Exemplo 7

Suponha que uma universidade defina níveis de experiência acadêmica, de acordo

com o número de créditos feitos pelos alunos, conforme a tabela 3:

Tabela 3 - Níveis de experiência acadêmica

Nível Créditos (em horas)Iniciante 0-32

Segundanista 33-62Júnior 63-94Sênior 95-126

Ao contrário da teoria clássica de conjuntos que definiriam precisamente os níveis

de experiência, o termo vago grau de experiência acadêmica corresponde a um

genuíno conjunto fuzzy. Os créditos (em horas) é que classificam os níveis dos

indivíduos, porém há diferenças de créditos dentro de cada nível. Por exemplo, o

indivíduo com 126 créditos é mais sênior que aquele que tem 95 créditos. Uma

representação gráfica para este exemplo pode ser a seguinte:

Page 29: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Figura 3 - Representação dos níveis de experiência acadêmica

Nesta fase, em que os conjuntos fuzzy estão sendo definidos, é de fundamental

importância o trabalho conjunto do especialista e do engenheiro de conhecimento, como

descrito na seção 2.1.

A representação analítica é também bastante utilizada em teoria fuzzy.

Quando o conjunto universo X é infinito, é impossível listar todos os elementos com

seus graus. O exemplo a seguir ilustra este caso.

Exemplo 8

Por exemplo, o conjunto fuzzy A dos números reais em torno de 6 não pode ser

representado na forma tabular por motivos claros. No caso, uma representação analítica

de A é:

Se 5 ≤ x ≤ 6

Se 6 ≤ x ≤ 7

caso contrário

A figura 4 representa graficamente este conjunto.

−−

=0

7

5

)( x

x

xA

Page 30: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Figura 4 - Conjunto fuzzy dos números reais "em torno de 6"

Após examinar as diversas formas de representar conjuntos fuzzy, segue-se as

operações que podem ser feitas entre estes conjuntos.

Page 31: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

2.3 OPERAÇÕES ENTRE CONJUNTOS FUZZY

Executar operações entre conjuntos fuzzy significa combinar, comparar ou agregar

estes conjuntos. As operações entre conjuntos permitem construções que são muito

importantes em várias situações envolvendo informações e processamento de dados.

Na teoria tradicional, as operações básicas entre conjuntos são três: União,

Interseção e Complemento. Na teoria fuzzy estas são chamadas de operações básicas,

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

operações básicas.

A seguir tem-se as definições para União, Interseção e Complemento de Conjuntos,

para a teoria tradicional e para a teoria fuzzy.

Definição 2.2

Seja X o conjunto universo. A união entre dois conjuntos A e B na teoria clássica é

representada por A∪B, e definida como o conjunto que contém todos os elementos

pertencentes ao conjunto A ou ao conjunto B. Formalmente:

A∪B = {x ∈ X | x ∈ A ou x ∈ B} (1)

Considera-se a união entre dois conjuntos fuzzy A e B em X, denotada por A∪B, o

conjunto expresso pela equação (2) e definida pela função grau de pertinência:

(A∪B)(x) = max [A(x), B(x)] (2)

para todo x ∈ X.

Exemplo 9

Page 32: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Supõe-se que X seja o conjunto de n pacientes de um médico, identificados pelos

números 1, 2, 3, 4, 5 e sejam A e B os conjuntos que representam os pacientes em X

com Pressão Alta e Febre, respectivamente. Usando a equação (2) podemos determinar

A∪B dos pacientes em X que têm pressão alta ou febre, conforme a tabela 4:

Tabela 4 - Ilustração da União dos conjuntos fuzzy A e B

Paciente A=Pressão Alta B=Febre A∪B1 0.6 0.7 0.72 1.0 1.0 1.03 0.2 0.8 0.8... ... ... ...n 1.0 1.0 1.0

Os valores desta tabela são os graus com que cada paciente pertence ao conjunto

fuzzy A, B, e A∪B.

A próxima definição é a da interseção de conjuntos.

Definição 2.3

Seja X o conjunto universo. A interseção entre dois conjuntos A e B na teoria

clássica de conjuntos é denotada por A∩B e contém todos os elementos pertencentes a A

e a B simultaneamente. Formalmente:

A∩B = {x ∈ X | x ∈ A e x ∈ B} (3)

Na teoria de conjuntos fuzzy, a interseção entre dois conjuntos fuzzy A e B

definidos no universo X é denotada por A∩B, definida por sua função grau de

pertinência dada por:

(A∩B)(x) = min[A(x), B(x)] (4)

para todo x ∈ X.

Page 33: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Exemplo 10

Como exemplo, seja A o conjunto de rios que são longos, B o conjunto de rios

navegáveis. A interseção A∩B é dada por rios que são longos e navegáveis, conforme

ilustrado na tabela 5:

Tabela 5 - Ilustração da Interseção de conjuntos fuzzy para o exemplo 10

Rio A=Rio Longo B=Navegável A∩BAmazonas 1.0 0.7 0.7Nilo 0.9 0.6 0.6

Danúbio 0.5 0.8 0.5Mississipi 0.8 0.5 0.5

Neste exemplo tem-se que o rio Amazonas tem um grau 0.7 na escala [0,1] como

sendo navegável 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 são descritas a seguir.

Definição 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 não pertencem a A .

Mais precisamente:

A' = { x | x ∈ X e x ∉ A} (5)

Os elementos x de A' podem ser caracterizados pela função indicadora de A' dadapor:

Se x ∉ A'

Se x ∈ A'

=

0

1

)(' xI A

Page 34: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e 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 pertinência 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 não pertence

a A . A função grau de pertinência 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 experiência acadêmica. De acordo com a definição para complemento de conjuntos

fuzzy, as funções grau de pertinência de A e de seu complemento A' (dos alunos sem

experiência acadêmica) estão representadas na figura 5

Figura 5 - Complemento de um conjunto fuzzy

Uma conseqüência da imprecisão dos limites dos conjuntos fuzzy é a de que há uma

sobreposição do conjunto com seu complemento. Quando um aluno pertence ao grupo

dos alunos com experiência com grau 0.8, ele também pertence ao grupo de alunos sem

Page 35: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

experiência com grau 0.2, como indicado na figura 6 onde no eixo das abscissas são

colocadas as horas de créditos. Esta é uma diferença fundamental entre a teoria clássica

e a teoria de conjuntos fuzzy. Na teoria clássica, um elemento ou pertence ao conjunto

ou a seu complementar.

Nesta seção discutiu-se as operações entre conjuntos fuzzy. Na próxima será

discutida o conceito de relações fuzzy.

Page 36: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

2.4 RELAÇÕES FUZZY

Associações entre objetos têm sido assunto de grande interesse para a humanidade.

Matematicamente, as associações entre objetos está intimamente ligada ao conceito de

relações entre conjuntos, que por sua vez é definida através do produto cartesiano.

Definição 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

Relação (R). Quando o produto cartesiano é composto apenas por dois conjuntos X1 x

X2, a relação R é chamada de binária e no caso em que X1 = X2 = ... = Xn = X, diz-se que

R é uma relação em X.

Todos os conceitos sobre relação enunciados acima se referem à teoria clássica.

Enquanto as relações clássicas descrevem a presença ou ausência de associação

entre os elementos de dois ou mais conjuntos, as relações fuzzy têm a intenção de captar

o valor ou nível da associação entre os elementos dos conjuntos.

Sendo a relação R um subconjunto do produto cartesiano, tal relação pode ser

identificada por sua função característica. Para definir uma relação fuzzy, a idéia é usar

a função grau de pertinência no lugar da característica para o caso clássico.

Definição 2.7

A qualquer subconjunto fuzzy R do produto cartesiano X1 x X2 x ... x Xn, dá-se o

Page 37: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

nome de relação fuzzy. Identificando a relação fuzzy R com sua função grau de

pertinência, o valor R(x1, x2, ..., xn ) ∈ [0,1] indica o grau de associação entre os

elementos x1, x2, ..., xn .

A relação fuzzy assim como no caso clássico, é chamada de binária quando tem-se

apenas dois conjuntos X1 x X2 compondo o produto cartesiano.

Uma relação fuzzy binária é uma generalização da relação binária tradicional no

sentido que a função grau de pertinência generaliza a função indicadora.

Na teoria tradicional, a relação R:X x X⇒{0,1} é dita:

1. Reflexiva se R(x1, x1) = 1

2. Simétrica 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-simétrica se R(x1, x2) = R(x2, x1) = 1 implica x1 = x2

Page 38: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Há muitas maneiras de se converter estas propriedades de uma função R:X x

X⇒{0,1} para uma função R:X x X⇒[0,1]. Nguyen (1997) apresenta uma delas, para

uma relação fuzzy R em um conjunto X, para todo x1, x2 e x3 ∈ X, a relação é:

1. Reflexiva se R(x1, x1) = 1

2. Simétrica se R(x1, x2) = R(x2, x1)

3. Transitiva se R(x1, x3) ≥ R(x2, x3) ∧ R(x2, x3)

4. Anti-simétrica se R(x1, x2) > 0 e R(x2, x1) > 0 implica x1 = x2

A seguir, descreve-se um exemplo de uma relação binária fuzzy.

Exemplo 12

Para exemplificar, considere a relação binária fuzzy R em um conjunto D de

documentos e um conjunto C de termos chaves usados na recuperação em um sistema

de informação de um determinado banco de dados:

D = {d1, d2, ..., dn}

C = {c1, c2, ..., cn}

Onde D pode ser um banco de dados bibliográficos e C a lista de nomes dos autores

das informações armazenadas.

Sua função grau de pertinência é definida no produto cartesiano DxC. Para cada

documento d no conjunto D e para cada elemento chave c no conjunto C, o grau de

pertinência R(d,c) pode ser interpretado neste caso como o grau de pertinência do

documento d para o termo c.

Page 39: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Este grau pertence ao intervalo [0, 1], sendo que o grau igual a 1 significa que a

chave de busca fornecida permite recuperar a informação exata procurada, e um valor

igual a 0 significa que não 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

não houver um documento referente a este autor, então ela terá valor 0.

Caso seja fornecido um nome parcial, é possível que vários documentos

correspondam a esta chave, recebendo ela um valor parcial para cada documento

fornecido. Uma chave com o conteúdo “Francisco Ribacionka” terá um valor 1 caso se

encontre algum registro correspondente a esta chave de busca. Uma chave com

conteúdo “Francisco” terá um valor menor, pois recuperará todos os registros que

contenham esta palavra.

Esta caracterização do relacionamento entre documentos e termos chave é altamente

expressiva, pois é a informação buscada. Qualquer relação clássica definida no mesmo

produto cartesiano é menos expressiva: requer que cada documento seja declarado como

relevante ou não para cada termo chave.

Em comparação com as relações clássicas, relações fuzzy substancialmente

aumentam a capacidade de expressar os conceitos de relacionamento em uma

linguagem natural.

Para um melhor entendimento destas relações, há a sua representação gráfica. Na

teoria clássica de conjuntos, as principais formas de se representar graficamente uma

relação entre conjuntos são a representação por coordenadas e representação matricial.

O mesmo ocorre na teoria de conjuntos fuzzy.

Page 40: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Na teoria clássica, toda relação é um subconjunto do produto cartesiano que pode

ser expressa por uma lista com todos os pares que compõem a relação quando os

conjuntos são finitos.

Exemplo 13

Considere a relação R={(galinha, ovos), (vaca, leite), (cabra, leite)}. A figura 6

ilustra a relação R onde os pontos marcados especificam os pares que fazem parte da

relação.

Figura 6 – representação por coordenadas da relação R acima

Os graus de pertinência dos pares ordenados que estão relacionados são todos iguais

a 1 enquanto os que não estão relacionados é zero.

Uma relação fuzzy finita também pode ser representada por uma lista de pares

ordenados do produto cartesiano levando em conta seus graus. Os pares cujos graus são

zero usualmente são omitidos. Uma representação por coordenadas, neste caso,

precisaria de um terceiro eixo.

Exemplo 14

Suponha que a produção de leite de vaca seja o dobro da de leite de cabra. Neste

caso, se atribuir grau 1 para indicar a relação de vaca com leite, é razoável que cabra

com leite deve ter grau ½. Assim sendo, tem-se uma relação fuzzy e faz-se necessário

Page 41: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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

Figura 7 - Representação por coordenadas de uma relação fuzzy

Na teoria fuzzy, além da representação gráfica, uma outra forma de representar

relações binárias é através de matrizes, cujas entradas são os graus correspondentes aos

elementos do produto cartesiano envolvidos. Considere a relação binária fuzzy em XxY,

onde X={x1, x2, ... ,xn} e Y={y1, y2, ... , ym}. Seja R uma relação fuzzy de X em Y, e R(xi,

yj)=rij o grau com que xi está relacionado com yj. Uma representação matricial para R é

dada pela tabela 6 abaixo.

Tabela 6 - Relação matricial XxY

R y1 y2 ... ym

x1 r11 r12 ... r1m

x2 r21 r22 ... r2m

... ... ... ... ...xn rn1 rn2 ... rnm

Exemplo 15

Como exemplo, considere o conjunto X com a relação de três grandes cidades:

X={São Paulo, Curitiba, Porto Alegre}

e R a relação fuzzy em X representando a relação muito longe de, com valores

aceitos no intervalo [0,1]. Um valor próximo de 0 significa perto, e um valor próximo

Page 42: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

de 1 significa longe. Representando São 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 – Representação matricial da relação fuzzy L acima

S C PS 0 0.4 1C 0.4 0 0.6P 1 0.6 0

O exemplo 13 teria a matriz da tabela 8, pois no caso clássico as entradas da matriz

seriam 0 ou 1 para se obter uma representação fuzzy binária por matrizes.

Tabela 8 – Representação matricial da relação R

R Vaca Cabra GalinhaOvos 0 0 1Leite 1 1 0

Cereal 0 0 0

Nesta seção mostrou-se que, em comparação à teoria tradicional, relações fuzzy

possibilitam uma maior capacidade de representar informações. Na próxima seção será

descrito o conceito de número fuzzy.

Page 43: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

2.5 NÚMERO FUZZY

Assim como no caso clássico, aqui também pretende-se fazer "contas". A diferença

é que aqui pretende-se, por exemplo, "somar" quantidades imprecisas. Para isto, "cria-

se" os objetos que generalizam os números reais. Tais objetos serão chamados de

números fuzzy.

O conceito de número fuzzy vem do fato de muitos fenômenos não poderem ser

caracterizados por números precisos. Precisamente, tem-se a seguinte definição:

Definição 2.8

Um conjunto fuzzy A é chamado de número fuzzy quando o conjunto universo onde

A está definido é o conjunto dos números reais e A é normal. Isto é, A é um número

fuzzy se A:R → [0,1] e A(x)=1 para algum x, dado como certo.

Os números fuzzy pertinentes a este trabalho são 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 função grau de pertinência de

um número fuzzy triangular é:

Se a - s ≤ x ≤ a + s

caso contrário

−−

=0

1)( s

axxA

Page 44: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

A figura 8 contém a representação deste número fuzzy.

Figura 8 - Representação na forma triangular

Outra classe importante tem a forma trapezoidal. Cada elemento desta classe é

caracterizada por cinco parâmetros, a, b, c, d, e. Sua representação analítica tem a forma

genérica:

Se a ≤ x < b

Se b ≤ x ≤ c

Se c < x ≤ d

caso contrário

A figura 9 contém uma representação desta função.

Figura 9 - Representação analítica genérica na forma trapezoidal

Funções grau de pertinência com a forma de sino também são comuns. A fórmula

genérica para estes casos é:

se (a-s) ≤ x ≤ (a+s)

caso contrário

−−

−−

=

0

1)(

cd

xd

ba

xa

xA

( )

=−

0)(

2

b

ax

exA

Page 45: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

A figura 10 contém uma representação desta função.

Figura 10 - Representação analítica genérica na forma de sino

As operações algébricas com números fuzzy são as mesmas da teoria clássica.

Neste trabalho será tratado apenas soma e subtração de números fuzzy.

A soma ou subtração de dois números fuzzy utiliza as regras de soma e subtração de

intervalos. A adição de um intervalo é dada pela fórmula:

[a,b] + [c,d] = [a+c,b+d] (7)

A subtração de dois intervalos é dada pela fórmula:

[a,b] – [c,d] = [a-d, b-c] (8)

Para números fuzzy triangulares, o exemplo a seguir mostra como é fácil obter suas

soma e subtração.

Page 46: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Exemplo 16

Os números fuzzy representados na Figura 11 indicam o conceito de

aproximadamente 2 e 4, respectivamente.

Figura 11 – Representação dos números fuzzy 2 e 4

Para executar a adição dos números 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 subtração dá-se da mesma forma, 4 –2 = 2, que é o valor central do resultado da

subtração, e os extremos do número é calculado a partir da subtração dos intervalos

[3,5] - [1,3] = [0,4] representados pela figura 12.

Figura 12 - Resultado da soma e da subtração dos números fuzzy 2 e 4

Neste capítulo foram tratadas as várias formas de apresentação dos conjuntos fuzzy

e as operações que neles podem ser executadas. No capítulo 3 será tratado o conceito de

lógica fuzzy e sua utilização em raciocínio aproximado.

Page 47: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

CAPÍTULO 3. LÓGICA FUZZY

O termo “Lógica Fuzzy” é utilizado de duas formas: a primeira, para representar e

manipular informações imprecisas com o propósito de tomar decisões. É o uso da teoria

de conjuntos fuzzy e envolve todos os conceitos descritos no capítulo 2; a segunda

refere-se à extensão da lógica clássica, que é o objetivo deste capítulo.

O uso da lógica fuzzy também possibilita conclusões imprecisas a partir de

proposições imprecisas, como é típico na linguagem natural. Esta área é usualmente

referida como raciocínio aproximado. A seguinte afirmação é um exemplo de raciocínio

aproximado:

Selos antigos são usualmente colecionáveis;

Selos colecionáveis são caros;

Portanto, selos antigos são usualmente caros.

Esta é uma inferência dedutiva. Alguns dos predicados não são termos precisos, a

saber: antigos, usualmente e caros; por este motivo, a lógica clássica não trata estes

termos. O propósito da lógica fuzzy é dar sentido formal para estas inferências,

baseando-se em termos lingüísticos imprecisos, tais como: alto, jovem, normal,

verdadeiro, falso, parecido, muito ou pouco, entre outros.

De uma forma ampla, a lógica fuzzy é uma aplicação da teoria de conjuntos fuzzy.

Utiliza os conceitos, princípios e métodos desenvolvidos na teoria de conjuntos fuzzy

para formular a teoria do raciocínio aproximado, que é necessária para estabelecer a

conexão entre os graus de pertinência de um conjunto fuzzy e os graus de verdade nas

proposições fuzzy.

No próximo tópico serão relacionados alguns conceitos da lógica tradicional e as

bases para o desenvolvimento da lógica fuzzy.

Page 48: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

3.1 LÓGICA CLÁSSICA E MULTIVALUADA

A lógica binária, baseada no "Sim" ou "Não" foi desenvolvida por Aristóteles, e é

chamada de "Lógica Aristotélica". Aristóteles desenvolveu sua teoria a partir do

trabalho de Pitágoras e seus antecessores que acreditavam na precisão matemática do

universo e que tudo poderia ser definido através de uma relação matemática.

A partir da lógica clássica que trata do raciocínio baseado em proposições, é

chamada de cálculo proposicional. É um sistema usado para representar conhecimento

na forma de sentenças declarativas que expressam proposições, utilizando-se letras e

símbolos lógicos para forma-las. Segundo Klir (1997), inferências são listas de

declarações proposicionais, onde uma delas é a conclusão, e as outras, premissas que

dão suporte a esta conclusão.

A seguir tem-se um resumo do cálculo de proposições (Nguyen (1997)). Seja V =

{a, b, c, ... }. Os elementos do conjunto V são chamados de variáveis lógicas.

Especifica-se três conectivos básicos: ∧ (e), ∨ (ou), ‘ (não) e dois conectivos lógicos, ⇒

(implica) e ⇔ (equivalência). A tabela 9 contém alguns símbolos lógicos.

Tabela 9 - conectores lógicos

Símbolo Operação‘ negação∧ Conjunção∨ Disjunção⇒ Implicação⇔ Equivalência

A partir dos elementos do conjunto V e estes conectivos, obtém-se expressões como

a ∧ b, a ∨ b, a’∨ (b ∧ c), etc. Estas expressões são chamadas de fórmulas.

O conjunto de todas as fórmulas é denotado por F. Para qualquer função

t1:V→{0,1} tem-se uma função t2:F→{0,1} definida assim: para cada variável a em

Page 49: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

uma fórmula, substitui-se t1(a) na fórmula. A tabela 10 define as operações ∧, ∨ e ‘ para

os valores verdade {0,1}.

Tabela 10 – Valores verdade para a lógica tradicional

∨ 0 1 ∧ 0 1 ‘

0 0 1 0 0 0 0 1

1 1 1 1 0 1 1 0

O próximo exemplo ilustra a valoração de uma proposição da lógica clássica,

utilizando-se os conectores lógicos e as regras estabelecidas pela tabela 10.

Exemplo 17

Suponha que t1(a)=0, t1(b)=1 e t1(c)=1, então:

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)

= 1 ∧ 1

= 1

O conector lógico ⇒ tem por objetivo modelar proposições condicionais na forma

“Se ... então ..:”. 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 lógicos ⇒⇒ (implica) e ⇔ (equivalente)

a b ⇒⇒ a b ⇔0 0 1 0 0 10 1 1 0 1 01 0 0 1 0 01 1 1 1 1 1

Page 50: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Um modo de representar a inferência dedutiva é o método de dedução modus

ponens, e que tem a seguinte arquitetura:

Regra: p ⇒ q

Fato: p

Conclusão: q

onde p e q são proposições lógicas e significam "q será verdade se p é verdade".

Este argumento é válido para qualquer atribuição de valores verdade para p e q.

Fazendo ambos p ⇒ q e p verdade, então q é verdade. A seguinte tabela contém as

combinações possíveis para esta regra, sendo V verdadeiro e F falso.

Tabela 12 – Tabela verdade para modus ponens

p q p ⇒ qV V VV F FF V VF F V

Klir (1997), relata que desde o início da ciência moderna até o fim deste século, a

incerteza tem sido pouco tratada na ciência. Esta atitude vem gradualmente mudando

principalmente com o surgimento de métodos estatísticos a partir do início do século 20.

Após a aceitação da teoria estocástica, esta foi amplamente aplicada em várias áreas

da ciência. No entanto, apesar de seu sucesso, tal teoria não foi capaz de capturar a

incerteza em todas as suas manifestações. Em particular, não foi capaz de trabalhar

certos resultados da incerteza de termos lingüísticos que aparecem na linguagem

natural. Estas limitações forçaram o surgimento de novas teorias para lidar com a

imprecisão e com a incerteza.

Na lógica tradicional, as proposições são completamente verdadeiras ou

completamente falsas. Portanto todas as inferências são forçadas a reconhecer apenas

Page 51: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

estas duas alternativas. Através da história da lógica ocidental, ocorreu uma expansão da

rígida teoria da lógica com dois valores com a permissão do uso de variáveis, onde seus

valores podem ser parcialmente verdade ou parcialmente falso.

Por exemplo, Aristóteles argumentou que as proposições sobre fatos futuros não

podem ser nem verdadeiros nem falsos, mas que valores futuros são potencialmente

verdadeiros ou potencialmente falsos.

Este problema ocorre não somente em eventos futuros, mas também em aplicações

de mecânica quântica, onde valores verdadeiros, de certas proposições, são

indeterminados, devido a limitações de métricas aplicadas ao fenômeno subatômico.

Uma alternativa para esta situação é a lógica multivaluada.

Nas lógicas multivaluadas, incluem-se valores adicionais entre os extremos da

lógica tradicional e os valores verdadeiro ou falso, chamados de valores indeterminados.

No caso da lógica de três valores, há exatamente um valor indeterminado. Em todas as

lógicas com três valores, define-se os valores 0, 1 e ½ para verdadeiro, falso e

indeterminado.

A introdução deste valor intermediário naturalmente afeta a tabela-verdade definida

na lógica clássica. A tabela verdade para negação é definida na tabela 13:

Tabela 13 - Negação para lógica de três valores

p ‘p0 1½ ½1 0

Onde ‘p é a negação de p.

A tabela 14 ilustra a lógica de três valores de Lukasiewicz . Verifica-se que as

definições padrões da lógica clássica para os conectores ⇔, ⇒, ∧ e ∨ são as mesmas

Page 52: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

para os valores 0 e 1. Entretanto, o novo valor ½ faz com que tenha uma conseqüência

importante: não vale a lei do terceiro excluido (p ∨ ‘p = 1) nem a lei da contradição (p ∧

‘p = 0) e algumas outras tautologias, conforme Klir (1997).

Tabela 14 - Tabela verdade definida por Lukasiewicz

a b ∧ ∨ ⇒ ⇔0 0 0 0 1 1

0 ½ 0 ½ 1 ½

0 1 0 1 1 0

½ 0 0 ½ ½ ½

½ ½ ½ ½ 1 1

½ 1 ½ 1 1 ½

1 0 0 1 0 0

1 ½ ½ 1 ½ ½

1 1 1 1 1 1

Mais geralmente, para qualquer valor n, os valores verdade para esta lógica de n

valores são usualmente nomeados por números racionais no intervalo [0,1]. Isto define o

conjunto de valores verdade T definido por:

Logo, em uma lógica para 5 valores, os valores verdade são 0, ¼, ½, ¾ e 1.

Os valores verdade para as fórmulas 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)

−−

−−=

−−

−−

−−−= 1,

1

2,...,

1

2,

1

1,0

1

1,

1

2,...,

1

2,

1

1,

1

0

n

n

nnn

n

n

n

nnnTn

Page 53: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

No caso de n = 2, onde T2 = {0, 1}, obtém-se a tabela verdade definida na lógica

tradicional e no caso T3 = {0, 1/2, 1}, as fórmulas acima fornecem a tabela 14.

Estes valores podem ser interpretados como graus de verdade. Assim a lógica

multivaluada pode ser interpretada como um precursor da lógica fuzzy.

Na próxima seção será tratada as proposições fuzzy.

Page 54: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

3.2 PROPOSIÇÕES FUZZY

O cálculo proposicional fuzzy generaliza o cálculo proposicional clássico,

utilizando o conjunto verdade [0,1] ao invés do conjunto {0,1}. Tanto no caso da teoria

tradicional, como na teoria fuzzy, o conjunto F de fórmulas lógicas é construído a partir

do conjunto V de variáveis lógicas, utilizando-se os conectivos básicos ∧ (ou), ∨ (e), ‘

(não) e os dois conectivos lógicos, ⇒ (implica) e ⇔ (equivalência).

Assim como na lógica tradicional, no cálculo proposicional fuzzy a função

t2:F→[0,1] que dá o valor verdade de uma fórmula envolvendo variáveis e conectivos

fuzzy são obtidas a partir de uma função t1:V→[0,1], substituindo-se cada elemento a

∈ V de uma fórmula lógica pelo seu valor t1(a) em [0,1].

O resultado da valoração de uma proposição fuzzy é o intervalo com o grau de

veracidade da proposição.

Dado um conjunto fuzzy A, o grau de pertinência A(x) para qualquer elemento x no

conjunto universo X, pode ser interpretado como o grau de verdade da proposição fuzzy

"x é membro de A". Inversamente, dada uma proposição arbitrária "x é E", onde x é

membro do conjunto X e E é uma expressão lingüística (como baixo, alto, muito longe,

extremamente devagar); seu grau de verdade pode ser interpretado como o grau de

pertinência A(x) do conjunto fuzzy A, caracterizado pela expressão lingüística E no

contexto dado.

As proposições fuzzy podem ser classificadas como condicionais ou incondicionais.

As proposições condicionais são escritas na forma se-então. São implicações entre

proposições fuzzy. Proposições deste tipo têm a forma:

Page 55: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

p: Se X é A então Y é B (14)

onde X e Y são variáveis que assumem os valores x e y, e A, B são predicados

representados por conjuntos fuzzy.

Exemplo 18

Por exemplo, sejam X, A, Y e B conforme descrito:

• X: é uma variável 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 variável fuzzy que pode assumir os termos

lingüísticos Baixa ou Alta;

• Y: uma variável 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 variável fuzzy que pode receber os termos lingüísticos Febril ou

Normal.

Neste exemplo, os valores possíveis para A são Baixa ou Alta, e os valores

possíveis para Y são Normal ou Febril. Duas proposições possíveis são:

Se a temperatura é baixa, então o estado é normal

Se a temperatura é alta, então o estado é febril

Atribuindo-se o valor 38 para X então o conjunto fuzzy A “alta” é atingido. Como

Page 56: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

conseqüência, Y recebe o valor 1 e o conjunto fuzzy B “febril” é atingido. Substituindo

X, A, Y e B em (14), a proposição fuzzy condicional fica:

Se a temperatura é alta, então o estado é febril

Observa-se que a temperatura, para ser alta, deve estar dentro do domínio alta,

gerando uma saída fuzzy febril.

No caso das proposições fuzzy incondicionais, a forma de apresentá-las é:

p: “X é A” é Y (15)

onde X é uma variável que recebe um valor x de um conjunto de valores possíveis e

A é uma propriedade atribuída à variável. Esta propriedade é representada por um

conjunto fuzzy. O exemplo a seguir ilustra esta forma de proposição.

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 expressão (15) tem-se:

A temperatura de 380 C é alta é febril

380 C é o valor da variável temperatura; "é Alta" é o predicado fuzzy atribuído ao

valor da temperatura.

Com o intuito de modelar matematicamente as proposições condicionais e fazer

inferências é que se explora o método dedutivo modus ponens. Para isto, é preciso, a

exemplo do caso clássico, definir os conectivos lógicos que vão compor os métodos de

dedução na lógica fuzzy. Esta teoria é desenvolvida na próxima seção.

Page 57: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

3.3 LÓGICA FUZZY

O objetivo aqui é definir os conectivos “e”, “ou”, “não”, “implica” e “se e somente

se”. Todos estes conectivos devem ser definidos com o propósito de generalizar as

tabelas verdade dos correspondentes conectivos nos casos clássicos. Isto é, quando estes

conectivos são usados para valorar fórmulas clássicas, as tabelas verdade devem

coincidir com as clássicas.

Há na literatura muitas formas de se definir os conectivos mencionados acima

através 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 lógica multivaluada,

ou seja, o conectivo ‘ (não) é uma aplicação definida em [0,1] e os conectivos ∧ (ou), ∨

(e), ⇒ (implica) e ⇔ (se e somente se) são relações binárias definidas em [0,1] através

das fórmulas:

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 fórmulas acima generalizam de fato os

conectivos do caso clássico como é o caso da implicação:

Page 58: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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 lógica fuzzy permite a construção de modelos matemáticos baseados em

informações imprecisas, onde se aplica a teoria de raciocínio aproximado para se obter

conclusões a partir de premissas imprecisas. Este tópico é tratado a seguir.

Page 59: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

3.4 RACIOCÍNIO APROXIMADO

Raciocínio aproximado refere-se ao processo onde obtém-se conclusões a partir de

premissas imprecisas. Segundo Nguyen (1997), quando esta imprecisão é considerada

fuzzy, o termo raciocínio fuzzy é utilizado.

A seguinte forma de raciocínio é comum na vida diária:

• “Se um tomate está vermelho, então está maduro”. Caso se tenha um tomate

vermelho, é automática sua classificação como maduro.

• “Se x é grande, então y é pequeno”. Tendo um x grande, conclui-se que y é

pequeno.

Esta é uma generalização do conhecido método dedutivo modus ponens. A

diferença para o modus ponens clássico são os predicados envolvidos. No caso fuzzy,

os termos lingüísticos são expressos em uma linguagem natural e são modelados como

subconjuntos fuzzy.

Considere as proposições p e q:

p : “x é A”

q : “y é B”

Onde A e B são subconjuntos fuzzy dos conjuntos U e V, e x e y são variáveis que

assumem valores em U e V; tem-se, então, o modelo:

Page 60: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

p ⇒ q : “Se x é A então y é B”

p : “x é A”

q : “y é B”

p ⇒ q é uma proposição fuzzy condicional, que é modelada por um subconjunto

fuzzy R de UxV, através da função grau de pertinência:

R(x,y) = A(x) ⇒ B(y) = min(1,1 - A(x) + B(y)) de acordo com (17)

A implicação para o caso clássico, isto é, A(x) B(y) ∈ {0,1} produz:

de modo que

ou seja

ou

Esta igualdade pode ser interpretada assim:

Se R é uma relação que representa a condicional

“Se x ∈ A então y ∈ B”

∈=

Ryxse

Ryxse

yxR

),(0

),(1

),(

)](),([sup)( xAyxRyBUx

∧=∈

ARB o=

∈=∧

∈Byse

Byse

xAyxRUx

0

1

)](),([sup

Page 61: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

e observa-se que x ∈ A conclui-se que y ∈ B, ou seja, se a entrada for A a saída é B.

Com o objetivo de inferir conjuntos fuzzy, esta regra será generalizada para uma

situação fuzzy geral.

Considerando-se a regra, “Se o tomate está vermelho, então está maduro” e o fato

“o tomate está quase vermelho” o que se pode dizer a respeito do estado do tomate?

Esta forma de raciocínio pode ser considerada como uma generalização do modus

ponens. A composição de regras para obter uma inferência que pode responder a

questões como esta está descrita a seguir.

Sejam X e Y variáveis em U e V, respectivamente. Sejam A, A* e B subconjuntos

fuzzy e

Regra: “Se x é A então y é B”

Fato: “x é A*”

Conclusão: B* ?

Como se obtém esta conclusão?

A afirmação condicional acima é uma relação binária fuzzy R, que é um

subconjunto fuzzy de UxV e A* é um subconjunto fuzzy de U.

Por analogia ao caso clássico, define-se:

Esta é a forma geral da regra de inferência composicional, proposta por Nguyen

(1997), para a resolução de modelos fuzzy.

)}(*),({sup)(* xAyxRyBUx

∧=∈

Page 62: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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 próximo capítulo, estuda-se o método de desenvolvimento de sistemas fuzzy,

utilizando-se a teoria até aqui descrita, porém com outro método de inferência: o

método de Mamdani, o qual utiliza-se, formalmente, da regra de inferência generalizada

acima, sem exigir que a relação R(x,y) seja uma implicação fuzzy.

Page 63: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

CAPÍTULO 4. METODOLOGIA PARA O DESENVOLVIMENTO DE

SISTEMAS FUZZY

Este capítulo tem como objetivo mostrar um método para o desenvolvimento de um

programa de computador, utilizando lógica fuzzy. Em uma primeira parte, detalha-se as

etapas para o desenvolvimento de um sistema fuzzy.

Nesta etapa é feita a análise do sistema nos moldes entrada, processamento, saída,

por um engenheiro de sistemas, conforme Pressman (1995).

Em seguida mostra-se o mecanismo de inferência de Mamdani, que é o método que

melhor se aplica para o exemplo escolhido.

Posteriormente desenvolve-se um caso prático. A metodologia desenvolvida aplica-

se a modelos com duas variáveis de entrada, com o objetivo de gerar uma variável de

saída. Os conjuntos fuzzy envolvidos no processo devem ser números fuzzy

triangulares.

Page 64: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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 informações.

Um sistema fuzzy é caracterizado por um conjunto de instruções para computador, que

o capacita a produzir uma função desejada. Um sistema fuzzy é um conjunto de

instruções em um programa, ou software, baseado na lógica fuzzy.

Como está descrito no Capítulo 1, uma área de grande aplicação da lógica 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 módulos, assim descritos:

Módulo de fuzificaçãoÉ o módulo onde os valores de entrada do sistema são convertidos para conjuntos

fuzzy, com as respectivas faixas de valores onde estão definidos.

Módulo da base de regras fuzzyNeste módulo, define-se as proposições fuzzy que serão avaliadas de acordo com as

variáveis de entrada para compor a variável de saída.

Módulo de inferência fuzzyO módulo de inferência fuzzy é responsável pela valoração das proposições fuzzy e

da forma como elas são combinadas para produzir a saída.

Módulo de defuzificaçãoA defuzificação é o processo de conversão de um conjunto fuzzy de saída em um

número que melhor represente este conjunto. É a etapa final executada por um

controlador fuzzy. A figura 13 contém a representação gráfica de um controlador fuzzy.

Page 65: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Figura 13 - Esquema de um controlador fuzzy

Segundo Cox (1998), todo sistema deve ser visualizado e entendido pelo engenheiro

de sistemas, através de um trabalho conjunto com o especialista no problema a ser

modelado. Tal parceria é necessária para uma melhor definição dos parâmetros ou

variáveis de controle.

Um parâmetro de controle é uma variável do modelo cujo valor determina o

próximo estado do mesmo, ou tem o seu valor alterado por um ou mais estados. No

modelo de uma seguradora de veículos, por exemplo, tem-se como parâmetro de

controle a idade do motorista, que determina faixas de desconto para cada caso.

O perfeito entendimento das variáveis de controle esclarecem se o sistema pode ser

modelado usando lógica fuzzy. Modelos que têm parâmetros de controle com

propriedades intrínsecas imprecisas indicam uma adequação da aplicação da teoria

fuzzy.

Um modelamento fuzzy é construído a partir de um vocabulário básico de conjuntos

fuzzy, que definem as propriedades semânticas do modelo. As regras são formadas para

Page 66: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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

sistemas deve aprender a pensar em um alto nível de abstração a fim de poder codificar

apropriadamente a experiência do especialista do problema a ser modelado.

São quatro as etapas para o desenvolvimento de um sistema fuzzy:

• Definir as variáveis de entrada e saída que compõem o sistema;

• Definir os conjuntos fuzzy que compõem o domínio destas variáveis;

• Construir a base de dados com as regras que definem como estas variáveis se

relacionam;

• Interpretar a saída.

Na definição das variáveis de entrada e saída é feita a análise do sistema nos moldes

tradicionais de entrada, processamento, saída e a definição do modelo em partes

funcionais, localizando, no sistema global, onde pode-se aplicar a teoria fuzzy.

A primeira tarefa é definir quais informações fluem pelo sistema, quais

transformações são executadas nestas informações e quais são as informações

fornecidas pelo sistema.

A segunda etapa do projeto de desenvolvimento de um sistema fuzzy, consiste na

definição e construção dos conjuntos fuzzy para cada variável que compõe o sistema. O

especialista responsável pelo modelamento, deve “particionar” cada variável que

compõem o sistema em subconjuntos fuzzy, também chamados de faixas, com seus

respectivos domínios. Estas faixas são utilizadas na definição das proposições fuzzy que

formam a base de regras.

Page 67: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

As proposições condicionais fuzzy descrevem o conhecimento do especialista sobre

o sistema modelado, e tem a forma:

Se proposição fuzzy, então ação fuzzy.

Este trabalho focaliza apenas os casos com duas variáveis de entrada e uma variável

de saída. Assim, a proposição anterior toma a forma:

Se variável_de_entrada1 = ð e variável_de_entrada2 = ð então, variável_de_saída

= ð

A quantidade de regras total que formará a base de regras vai depender de quantos

conjuntos fuzzy compõem cada variável de entrada. Por exemplo, caso a

variável_de_entrada1 e a variável_de_entrada2 sejam compostas por três números fuzzy,

o total de regras que vai compor o referido banco será nove.

O valor parcial da variável de saída ou ação fuzzy, para cada proposição, é decidido

pelo especialista do sistema modelado. Ao conjunto de regras atingidas aplica-se um

método de inferência para a resolução deste conjunto de proposições.

O método de inferência utilizado neste trabalho, para o cálculo da variável de saída,

é o método de Mamdani. Este método apresenta um processo baseado na agregação das

variáveis fuzzy de entrada para obter como resultado, um conjunto fuzzy na saída. A

seguir descreve-se este método.

Page 68: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

4.2 MÉTODO MAMDANI DE INFERÊNCIA

Yager (1995), descreve o funcionamento do método de Mamdani em controladores

fuzzy, tendo como base um modelo fuzzy com duas variáveis de entrada, v e d e uma

variável de saída p, definido pelas seguintes regras:

Tabela 15 – Base de regras para um modelo fuzzy genérico

Se v é v1 e d é d1 então p é p1

Se v é v1 e d é d2 então p é p1

Se v é v2 e d é d1 então p é p2

Se v é v2 e d é d2 então p é p2

...Se v é vn e d é dn então p é pn

onde v1, v2, ...e vn são valores lingüísticos associados à variável v e definidos como

subconjuntos fuzzy do universo de discurso X1; d1, d2, ...e dn são valores lingüísticos

associados à variável d e definidos como subconjuntos fuzzy do universo de discurso X2

e p1, p2, ...e pn são valores lingüísticos associados à variável 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 – Variáveis v, d, p v

v1 v2 ... vn

d1 p1 p2 ... ...d d2 p1 p2 ... ...

... ... ... ... ...dn ... ... ... pn

Os valores p1, p2, ...e pn são definidos pelo engenheiro de sistemas em conjunto com

o especialista do sistema a ser modelado. Portanto, é possível que um valor pn seja

utilizado como resultado em mais de uma regra. Conforme os valores fornecidos para as

variáveis v e d, uma ou mais proposições da tabela 15 são atingidas (ou valoradas).

Page 69: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Cada uma destas proposições gera um conjunto fuzzy Fi dado por:

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

A agregação de todas as proposições da tabela 15 que foram atingidas gera o

conjunto fuzzy F dada por:

(20)

Este é o método de inferência de Mamdani, isto é, a partir dos valores de entrada,

obtém-se Fi por (19) e em seguida o conjunto fuzzy F de saída definido por (20).

Ao conjunto fuzzy F, pode-se aplicar um método de defuzificação para encontrar

um número que melhor represente a saída fuzzy F. Alguns destes métodos serão vistos a

seguir.

i

n

i

FF ∨=

=1

Page 70: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

4.3 INTERPRETAR A SAÍDA - DEFUZIFICAÇÃO

Como visto na seção 4.2, cada proposição da base de regras atingida, gera um

conjunto fuzzy de saída. Por exemplo, sejam v e d duas variáveis de entrada para um

determinado processo, que vai gerar a variável p de saída; v1 e v2 números fuzzy

definidos para a variável v e d1 e d2 números fuzzy definidos para a variável d. As

seguintes proposições geram as regiões fuzzy A, B e C que serão utilizadas para compor

a saída:

Se v é v1 E d é d1 ENTÃO p é A;

Se v é v2 E d é d1 ENTÃO p é B;

Se v é v2 E d é d2 ENTÃO p é C.

Para se encontrar um número ρ que melhor represente a informação dada pelo

conjunto fuzzy de saída F, utiliza-se do processo chamado de defuzificação. A figura 14

ilustra este processo.

Figura 14 - Processo de agregação e defuzificação

Page 71: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

O método de defuzificação pelo Centro de Gravidade com domínio discreto

segundo Cox (1998) é:

(21)

Quando o domínio não é discreto, o Centro de Gravidade é calculado pela fórmula:

(22)

A defuzificação pela Média do Máximo está representada pela figura abaixo, e é

calculada tendo como base a saída fuzzy a partir da agregação dos resultados. Partindo

do exemplo da figura 14, observa-se na figura 15 os pontos p1 e p2 que compõem o

valor de p através da fórmula:

ρ = p1 + (p2 - p1) / 2 (23)

Figura 15 - Defuzificação pela composição da Média do Máximo

O Centro dos Máximos encontra as duas regiões com maior grau de pertinência. O

valor ρ é calculado pela média dos pontos p1 e p2 indicados na figura 16.

=

==n

ii

n

iii

xA

xAx

P

0

0

)(

)(

dxxA

dxxxAP

R

R

∫∫

=)(

)(

Page 72: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Figura 16 - Centro dos Máximos

Outros métodos de defuzificação são apresentados. Cox (1998), mostra outros

métodos: Média dos Valores Máximos, Média do Conjunto Básico, Limites Mínimos e

Máximos do Conjunto Básico e o Método da Defuzificação pelo Máximo.

Oliveira (1995), apresenta o método de defuzificação SD (Subsethood

defuzzification) baseado em operações teóricas sobre conjuntos. Este método tem como

característica a capacidade de fornecer uma percepção da natureza da computação

envolvida nos estágios da construção da arquitetura de controladores fuzzy.

Na próxima seção será desenvolvido um caso prático com o objetivo de ilustrar o

desenvolvimento de sistemas fuzzy.

Page 73: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

4.4 SISTEMA FUZZY ILUSTRATIVO

O propósito seguinte é ilustrar cada passo descrito anteriormente com um exemplo

factível nos dias atuais. O método empregado pode ser aplicado a outros sistemas com

as mesmas características: duas variáveis de entrada e uma de saída. Os números fuzzy

envolvidos devem ser triangulares.

A idéia apresentada por McNeill (1994), mostra um sistema que simula a pressão

com que o motorista deve acionar os freios do veículo ao sinal de “Pare” em um

cruzamento.

A nível de simplificação, não será levado em conta outros fatores que poderiam

fazer parte do sistema, como outros veículos, pedestres, bicicletas, buracos ou animais.

O sistema vai simular, simplesmente, o que ocorre quando um veículo conduzido pelo

seu motorista se aproxima de um cruzamento, onde há um sinal de “Pare”. Quais

informações são recebidas, como é feito o processamento destas informações e como

obter o resultado deste processamento, que é o nível de pressão que o motorista deve

impor sobre o freio do veículo.

O primeiro passo para a construção deste sistema é definir as variáveis de entrada e

saída que compõem o sistema.

As variáveis que compõem a entrada são a velocidade com que o motorista segue

com seu veículo e a distância do veículo em relação ao sinal de “Pare” no cruzamento.

A informação de saída é o valor da pressão sobre o freio que o motorista deve impor

para diminuir a velocidade do veículo.

As variáveis velocidade, distância e pressão sobre o freio, neste exemplo, devido as

Page 74: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

características imprecisas que elas representam, devem ser tratadas pela teoria fuzzy.

Por exemplo, ao avistar o sinal, o motorista não sabe com exatidão qual a sua

velocidade nem a que distância ele se encontra do mesmo; ele sabe, por exemplo, que

está muito próximo ou próximo do mesmo e seu carro está devagar ou um pouco rápido.

Estes termos lingüísticos serão representados por conjuntos fuzzy, que retratam

conceitos vagos e imprecisos de uma forma natural.

O próximo passo é a definição dos valores lingüísticos para cada variável. Atribui-

se aqui quatro faixas de valores para velocidade: “Parado”, “devagar”, “pouco

rápido” e “muito rápido”. A variável distância será definida em cinco faixas: “No

sinal”, “muito próximo”, “próximo”, “pouco longe” e “muito longe”. Para a variável

pressão sobre o freio tem-se as faixas “nenhuma”, “leve”, “média” e “forte”. As

definições destas faixas estão na tabela 17.

A figura 17 tem a representação de cada conjunto fuzzy da tabela 17.

Assume-se que para cada valor p da pressão o controlador lida com as quatro faixas

lingüísticas definidas para a variável pressão. Baseando-se em algum conhecimento ou

mesmo no bom senso, é relativamente fácil construir proposições fuzzy condicionais da

forma:

Se V é ___ e D é ___ então P é ___

Page 75: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Tabela 17 - Definição das faixas das variáveis que compõem o sistema

(V) Velocidade em km/h De A SiglaParado 0 5 PA

Devagar 2 20 DEPouco rápido 10 50 POMuito rápido 40 80 MR

(D) Distância em metros De A SiglaNo sinal 0 2 NS

Muito próximo 1 12 MPPróximo 6 30 PR

Pouco longe 18 37 PLMuito longe 30 50 ML

(P) Pressão sobre o freio em % De A SiglaNenhuma 0% 1% NE

Leve 1% 30% LEMédia 25% 75% MEForte 65% 100% FO

Figura 17 – Representação gráfica dos conjuntos fuzzy da tabela 17

Como existem quatro classificações para velocidade e cinco para distância, isto

Page 76: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

resulta em vinte proposições condicionais fuzzy com o formato dos seguintes exemplos:

Se V é PA e D é NS então P é LE

Se V é PO e D é PL então P é ME

Em cada regra, os estados de V e D são chamados antecedentes e os estados de P de

conseqüentes.

A tabela 18 apresenta uma "matriz" com todas as combinações onde os "elementos"

dessa matriz são os vinte estados resultantes das combinações de V e D que são as

classificações para a variável P, de acordo com o engenheiro de sistemas.

Tabela 18 - Combinação Velocidade X Distância

Velocidade

PA DE PO MRNS NE ME FO FOMP NE LE FO FO

Distância PR NE LE FO FOPL NE NE ME MEML NE NE LE LE

Cada proposição atingida gera um conjunto fuzzy de saída, e todas as proposições

agregadas, através do método de Mamdani, geram um conjunto fuzzy de saída. Sobre

esta região final pode-se aplicar um método de defuzificação, para se obter um valor

numérico que melhor a represente.

Page 77: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Para se obter a saída 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, supõe-se que o veículo 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 relação à primeira variável de entrada, velocidade, estando o veículo a cerca

de 10 km/h e, consultando a tabela 17, verifica-se que o veículo está nas faixas

“devagar” e “pouco rápido”; ou seja, conforme definido pelo especialista, o veículo

nesta velocidade pode ser considerado que está se movimentando nestas duas faixas de

valores.

A segunda variável de entrada informa que o veículo se encontra em torno de 7.5

metros do sinal de "Pare". Consultando a tabela 17, verifica-se que as faixas são

“próximo” e “muito próximo”.

Após obter os domínios fuzzy para cada variável de entrada, é feita a devida

combinação das mesmas, compondo as proposições que deverão ser calculadas. A

tabela 19 destaca as saídas atingidas por estas regras.

As regiões em destaque na tabela 19 mostram o resultado da combinação das faixas

atingidas. Estas combinações formam as proposições fuzzy que são atingidas pelos

valores de entrada fornecidos. Abaixo tem-se as quatro proposições para o exemplo

dado:

Page 78: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

• Proposição 1:Se o veículo está devagar e muito próximo do sinal então a pressão

sobre o freio é leve

• Proposição 2: Se o veículo está devagar e próximo do sinal então a pressão sobre

o freio é leve

• Proposição 3: Se o veículo está um pouco rápido e muito próximo do sinal então a

pressão sobre o freio é forte

• Proposição 4: Se o veículo está um pouco rápido e próximo do sinal então a

pressão sobre o freio é forte

Tabela 19 - Regras atingidas estando o veículo a cerca de 10 km/h e em torno de 7.5

metros do sinal de “pare”

VelocidadePA DE PO MR

NS NE ME FO FOMP NE LE FO FO

Distância PR NE LE FO FOPL NE NE ME MEML NE NE LE LE

A saída pressão será determinada, aplicando-se o método dos mínimos de

Mamdani. Cada uma das proposições atingidas será representada por um valor fuzzy,

obtendo as saídas fuzzy de cada uma delas.

Como os números fuzzy deste exemplo são números triangulares, para calcular o grau

de pertinência para a faixa "Devagar", estando o veículo em torno de 10 Km/h, utiliza-

se a forma geral para calcular o grau de pertinência descrita na seção 2.6. De acordo

com a tabela 17, tem-se que “Devagar” é dado pelo número fuzzy triangular com

Page 79: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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

V(x) = 1 - | x - a | / s ⇒ V(10) = 1 - | 10 - 11 | / 9 = 0.89

A representação gráfica deste número fuzzy está na figura 18.

O grau de pertinência para "Muito próximo" do sinal, quando o veículo 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 representação gráfica deste valor distância está na figura 19.

A primeira regra das quatro possíveis atingidas é dada por:

• Se o veículo está devagar em 0.89 e está muito próximo em 0.82 do sinal então a

pressão sobre o freio é leve

Mas leve em quanto? Para se obter a resposta usa-se o método de Mandani para

obter o valor máximo do grau de pertinência de saída desta regra, que neste caso é dado

pelo "E" lógico fuzzy:

0.89 ∧ 0.82 = 0.82

A figura 20 é uma combinação das figuras 18 e 19 e representa o resultado da

primeira proposição, que irá compor o resultado final.

Page 80: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Figura 18 – Grau de pertinência para 10 km/h na faixa “Devagar”

Figura 19 - Grau de pertinência para 7.5 metros na faixa "Muito próximo"

Figura 20 - Saída fuzzy para a primeira proposição

Page 81: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

A área em destaque, representa o conjunto fuzzy de saída que corresponde ao

resultado desta primeira proposição, a qual será usada na composição final.

O cálculo da segunda proposição atingida é feita da seguinte forma:

• Se o veículo está devagar e próximo do sinal então a pressão sobre o freio é leve

“Devagar”, nesta proposição, tem o mesmo valor calculado para a proposição

anterior. “Próximo” tem o seguinte valor:

D(x) = 1 - | x - a | / s ⇒ D(x) = 1 - | 7.5 - 18 | / 12 = 0.13

A proposição fica:

• Se o veículo está devagar em 0.89 e está próximo do sinal em 0.13 então a pressão

sobre o freio é leve no máximo em

0.89 ∧ 0.13 = 0.13

A figura 21 representa graficamente o resultado desta proposição.

Figura 21 -Resultado da Segunda proposição

A terceira proposição é "Se o veículo está um pouco rápido e muito próximo do

sinal, então a pressão sobre o freio é forte". O cálculo de um pouco rápido é feito

através da fórmula:

V(x) = 1 - | x - a | / s ⇒ V(x) = 1 - | 10 - 30 | / 20 = 0

Page 82: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Como “muito próximo” foi calculado na primeira proposição, tem-se que:

• Se o veículo está um pouco rápido em 0.00 e está muito próximo do sinal em 0.82,

então a pressão sobre o freio é forte no máximo em

0.00 ∧ 0.82 = 0.00

A última proposição é "Se o veículo está um pouco rápido e próximo do sinal então

a pressão sobre o freio é forte". Já foi calculado um pouco rápido e próximo estando o

veículo em torno de 10 Km/h e cerca de 7.5 metros do sinal. A proposição fica:

• Se o veículo está um pouco rápido em 0.00 e está próximo do sinal em 0.13 então

a pressão sobre o freio é forte no máximo em

0.00 ∧ 0.13 = 0.00

Após calcular cada proposição separadamente, deve-se agregá-las, completando o

método de Mamdani, para obter a saída fuzzy.

De acordo com o método Mamdani de inferência, uma região fuzzy F é gerada após

o cálculo de todas as proposições atingidas, de acordo com os valores das variáveis de

entrada, combinando-se com a base de regras definidas pelo especialista.

Esta região de saída é formada pela operação OU fuzzy entre as regiões fuzzy

parciais que foram geradas com as regras atingidas. A região fuzzy F está representada

na figura 22.

F=

Page 83: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Figura 22 – Saída fuzzy F pelo método de Mamdani

Para determinar a saída fuzzy F pelo método de Mamdani, usa-se a operação de

disjunção fuzzy, ou, sobre os valores obtidos:

0.82 ∨ 0.13 ∨ 0.00 ∨ 0.00 = 0.82

A representação gráfica desta operação segue na figura 23. Esta figura representa o

resultado da operação OU ( ∨ ) fuzzy, sobre os resultados das quatro proposições

consideradas como verdadeiras para o exemplo desenvolvido.

A defuzificação é a etapa final deste processo, e tem como propósito converter este

conjunto fuzzy F em um número real que melhor o represente. O método de

defuzificação representado na figura 23 é o da média do máximo.

Figura 23 – Defuzificação pela média do máximo

O valor de ρρ é imediato, pois o número fuzzy leve, de 1% a 30%, e é calculado pela

fórmula (23), obtendo-se como resultado o valor 15.5%, ou seja, a pressão sobre os

freios deve ser leve em 15.5%.

No próximo capítulo tem-se a codificação deste exemplo na linguagem de

programação C.

Page 84: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

CAPÍTULO 5. DESENVOLVIMENTO DO PROGRAMA

Com o propósito de ilustrar conceitos fuzzy em programação, o exemplo descrito

no capítulo 4 foi codificado na linguagem C e compilado no sistema operacional Linux.

A idéia de produzir o programa em um ambiente aberto como o Linux, com um

compilador C padrão ANSI, foi o de se ter um programa mais facilmente adaptável a

outros ambientes operacionais.

Este programa está preparado para aceitar modelos com duas variáveis fuzzy de

entrada gerando uma saída fuzzy. Outra restrição é que as funções grau de pertinência

devem ser triangulares.

A definição dos conjuntos fuzzy de entrada e saída é feita em um arquivo em disco.

Isto foi feito com o propósito de facilitar a adaptação do programa a outras situações

fuzzy com duas entradas e uma saída.

Em uma primeira etapa há a descrição da estrutura do programa, com o

desenvolvimento do mesmo. Em seguida tem-se a conclusão do trabalho com algumas

propostas de pesquisa.

Page 85: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

5.1 – ESTRUTURA DO PROGRAMA

O diagrama estrutural do programa está na figura 24.

Figura 24 – Diagrama Estrutural

Um ponto básico do programa é a definição das estruturas dos dados. As variáveis

globais são utilizadas para manter em tempo de execução do programa os dados

necessários para os cálculos proposicionais, a fuzificação e a defuzificação do conjunto

fuzzy de saída.

O programa interage com o usuário no momento que há a necessidade de se

informar os valores das variáveis de entrada. Os dados definidos pelo especialista são

codificados em uma tabela gravada em um arquivo texto em disco segundo o padrão

definido pela tabela 20. Isto possibilita a adaptação do programa para qualquer

problema que aceite a aplicação da teoria fuzzy. A única restrição é que o programa foi

preparado para aceitar modelos com duas variáveis fuzzy de entrada com o objetivo de

gerar apenas uma saída fuzzy.

Diagrama Estrutural

Verifica a 1ªvariável de

entrada

Verifica 2ªvariável de

entrada

Verifica asfaixas de

saída

Verifica quaisregras sãoatingidas

Defuzifica Mostraresultado

final

Recebe variáveisde entrada

Monta astabelas

Mostra astabelas

Lê o arquivofuzzy.dat

Define a estruturados dados

Page 86: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Como a linguagem C não tem uma implementação de funções para manipulação

dos conceitos da lógica fuzzy, a solução encontrada foi o desenvolvimento de rotinas

que simulem esta implementação. O método adotado para representar os conjuntos

fuzzy, das variáveis lingüísticas, foi a definição de uma estrutura de dados para

armazenar os nomes de cada variável com os limites inferior e superior de cada domínio

dos subconjuntos destas variáveis.

O comando

struct est_variaveis variaveis[3];

cria uma estrutura para três variáveis, suficiente para este trabalho, pois os sistemas

suportados têm duas variáveis de entrada e uma variável de saída.

A estrutura est_variaveis é definida por

struct est_variaveis {

char nome_variavel[20];

struct est_faixa[9];

}

e é utilizada para armazenar o nome da variável e nove faixas para os subconjuntos.

Ou seja, o programa está preparado para receber até nove faixas, ou subconjuntos fuzzy,

para cada variável.

A estrutura est_faixa está definida da seguinte forma:

struct est_faixa {

char faixa[20];

Page 87: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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 variável de e o limite superior fica na variável para. A variável

“sigla” recebe um nome curto que é utilizado para substituir o nome completo, ao nível

de simplificação.

A base de regras é definida pelo especialista, e a quantidade de regras é definida

pela quantidade de subconjuntos de cada variável de entrada. Neste programa o vetor

i[3], armazena a quantidade de subconjuntos de cada variável e o vetor regras[9][9][3],

armazena a tabela com os resultados possíveis para cada proposição fuzzy.

A fuzificação é feita durante o processo de leitura do arquivo fuzzy.dat. Este

arquivo contém os valores de cada domínio fuzzy para cada variável de entrada e saída,

e deve ser preparado antes da execução do programa. Ele pode ser criado através de um

editor de textos e deve ser armazenado como arquivo do tipo texto e tem o formato da

tabela 20.

Page 88: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Tabela 20 - Arquivo fuzzy.dat

4 5 4VelocidadeParado 0.0 5.0 PADevagar 2.0 20.0 DEPouco_rapido 10.0 50.0 POMuito_rapido 40.0 80.0 MRDistanciaNo_sinal 0.0 2.0 NSMuito_proximo 1.0 12.0 MPProximo 6.0 30.0 PRPouco_longe 18.0 37.0 PLMuito_longe 30.0 50.0 MLPressaoNenhuma 0.0 1.0 NELeve 1.0 30.0 LEMedia 25.0 75.0 MEForte 65.0 100.0 FONE 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 três partes: a primeira, composta pela primeira

linha, contém três valores indicando quantas faixas cada variável possui. No exemplo

descrito neste capítulo, a variável velocidade contém 4 faixas, a variável distância 5 e a

variável pressão 4.

Após abrir o arquivo e verificar se não houve erros neste processo, é feita a leitura

desta primeira parte do arquivo através do comando

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

armazenando no vetor subconjuntos a quantidade de domínios para cada variável.

A Segunda parte descreve as duas variáveis de entrada e a variável de saída. Esta

parte do arquivo é composta por quatro colunas: A primeira contém o nome da faixa, ou

subconjunto, a segunda e a terceira os valores iniciais e finais deste domínio, e a quarta

coluna contém duas letras que resumem o nome da faixa.

Page 89: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

A leitura desta parte do arquivo é feita através 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 fuzificação dos dados é feita neste ponto do programa, ao armazenar os valores

dos subconjuntos fuzzy na estrutura variáveis.

A terceira e última parte deste arquivo é composta por uma linha onde se descreve

os valores para os resultados possíveis para a valoração das proposições fuzzy. Os

comandos correspondentes para a leitura desta tabela são:

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

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

fscanf(fp, "%3s",regras[m][n]);

}

}

A tabela com as resoluções das proposições fuzzy é uma tabela de duas dimensões,

e foi definida pelo especialista.

Page 90: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

O cálculo do grau de pertinência para cada subconjunto atingido é feito pela

verificação na tabela com os valores fuzificados. A rotina ver_regras contém os

comandos necessários para estes cálculos. Nesta rotina também é feita a valoração da

proposição fuzzy correspondente aos domínios encontrados como verdadeiros para cada

variável de entrada, com a geração da região fuzzy de saída.

A defuzificação pela média dos máximos é feita pela rotina defuzifica, depois de

agregadas todas as regiões fuzzy de saída geradas em cada regra; na rotina ver_regras

através do método de Mamdani, e calcula o valor defuzificado pelo método da média

dos máximos.

A rotina centro_gravidade calcula a defuzificação pelo método de mesmo nome.

Esta rotina percorre o conjunto de saída, resultado da agregação das proposições

atingidas, em uma escala de 0,001 calculando o grau de pertinência para cada elemento

das proposições atingidas deste conjunto. O maior destes valores é armazenado para o

cálculo da média ponderada, conforme a fórmula 21.

O programa completo está listado a seguir.

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include <math.h>

/* ------------------------------------------------------

Dados globais

------------------------------------------------------ */

Page 91: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

/* 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];

Page 92: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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 */

Page 93: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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);

Page 94: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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

Page 95: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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]);

}

Page 96: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

}

/* 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

*/

Page 97: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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;

Page 98: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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++) {

Page 99: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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;

Page 100: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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;

Page 101: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

}

}

/* 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;

Page 102: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

}

}

}

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 usuário recebe na tela do computador as tabelas com as

Page 103: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

definições das variáveis de entrada e saída. O programa solicita a digitação das duas

variáveis de entrada, informando os limites inferior e superior de cada uma. Como

resultado, o programa exibe os domínios a que pertencem cada variável com seus graus

de pertinência a estes conjuntos. Uma saída padrão do programa é como segue (em

itálico, 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

Page 104: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

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 contém os resultados de algumas execuções deste programa.

Tabela 21 – Resultado dos testes do programa

Faixa atingida A(x) P(x) Média dosmáximos

Centro deGravidade

Velocidade 5.0 Parado 0,0000 Leve 15.550034 15.502049Distância 2.0 No_Sinal 0.1818Velocidade 20.0 Devagar

Pouco_rapido0.00000.5000

Forte0.5000

82.549728 82.499977

Distância 10.0 Muito_proximoProximo

0.36360.3333

Velocidade 10.0 DevagarPouco_rapido

0.88890.0000

Leve0.1818

15.550023 15.500784

Distância 7.5 Muito_proximoProximo

0.81810.1250

Velocidade 79.0 Muito_rapido 0.0050 Leve 15.550037 15.500149Distância 49.0 Muito_longe 0.0100 0.005Velocidade 70.0 Muito_rapido 0.500 Forte 82.549728 82.500015Distância 5.0 Muito_próximo 0.7272 0.5000

Observando-se a tabela 21, verifica-se que se o veículo está muito rápido e muito

próximo, deve-se acionar os freios “forte” em 82,5497%. Intuitivamente este valor

parece aproximar-se da realidade, pois estando-se em uma situação real é o que se faria,

tentar diminuir bruscamente a velocidade do veículo estando muito rápido e muito

próximo do sinal de “pare” em um cruzamento. Caso esteja muito rápido, em cerca de

79.0 km por hora mas a uma distância considerada “muito longe” em torno de 49.0

metros deve-se acionar os freios “levemente” em torno de 15.5%.

Page 105: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

É possível que estes valores, que foram definidos pelo especialista do sistema

modelado, sofram alterações após uma análise dos resultados da execução do programa.

É uma fase de refinamento dos dados, para se obter um resultado mais aproximado do

objetivo a ser atingido.

Page 106: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

5.2 CONCLUSÃO

No início deste trabalho de pesquisa, notou-se a falta de um método mais detalhado

com as orientações de como se deve proceder para programar um computador

utilizando-se estes novos conceitos lógicos, diferentes daqueles da lógica tradicional.

Devido a importância das áreas de programação e lógica, o interesse foi imediato por

teoria fuzzy. Aliar a pesquisa de uma nova teoria lógica e programação foi o grande

agente motivador deste trabalho.

Este é um trabalho inicial. Para prosseguir, tem-se como sugestão melhoramentos

na elaboração deste software embrião que se iniciou com este trabalho. Aplicar

orientação a objetos neste programa é a primeira idéia. Ou seja, converter este programa

para C++. A utilização dos recursos de encapsulamento, herança, polimorfismo e outros

recursos desta linguagem tornará este programa mais eficiente e reutilizável.

Aperfeiçoar o programa para aceitar mais de duas variáveis de entrada gerando

como resultado uma ou mais variáveis de saída e aprimorar os métodos de defuzifação

também são 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 implementação da lógica fuzzy nas linguagens de

programação, particularmente a linguagem de programação C, foi mostrado ser possível

a sua implementação em um programa de computador.

As possibilidades de aplicação desta teoria são muitas, pois em todas as áreas

encontram-se a incerteza e a imprecisão lingüísticas na representação de seus

problemas.

Page 107: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

BIBLIOGRAFIA

Altrock, Constantin Von (1997), Fuzzy Logic & NeuroFuzzy Applications inBusiness & Finance, Prentice Hall

Altrock, Constantin Von (1995), Fuzzy Logic & NeuroFuzzy ApplicationsExplainded, Prentice Hall

Arbex, Roberto Taiar (1996), Ambiente para Desenvolvimento de ControladoresFuzzy, Dissertação de Mestrado, Escola Politécnica, USP

Barros, Laécio Carvalho de (1992), Modelos Determinísticos com ParâmetrosSubjetivos, Dissertação de Mestrado, Instituto de Matemática, Estatística eCiência da Computação da UNICAMP

Barros, Laécio Carvalho de (1997), Sobre Sistemas Dinâmicos Fuzzy – Teoria eAplicações, Dissertação de Doutorado, Instituto de Matemática, Estatística eCiência da Computação da UNICAMP

Blinder, Paulo Bernardo (1994), Implementação da Lógica Fuzzy em Redes NeuraisArtificiais e Aplicações em Biologia, Dissertação de Mestrado, Instituto deMatemática , Estatística e Ciência da Computação da UNICAMP

Buckles, B.P. - F. E. Petry (1983), Information-Theoretical Characterization offuzzy relational databases, IEEE Transactions On systems, Man, andCybernetics 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 inoperating systems, Fuzzy Sets and Systems 99,(1998) 241-251.

Klir, George J. - Ute H. St. Clair - Bo Yuan (1997), Fuzzy Set Theory - Foundationsand Applications, Prentice-Hall

Klir, George J. - Bo Yuan (1995), Fuzzy Sets and Fuzzy Logic - Theory andapplications, Prentice Hall

Korth, Henry F. - Abraham Silberschatz (1994), Sistema de Bancos de Dados, makronBooks.

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 Análise de Controladores Fuzzy, Dissertação

Page 108: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

de Mestrado, Escola Politécnica, 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 Setsand Systems, Vol. 76 pg. 63-71.

Pressman, Roger S. (1995), Engenharia de Software, Makron Books

Shimura, Masamichi (1975), An approach to Pattern Recognition and AssociativeMemories using Fuzzy Logic, in Fuzzy Sets and Their Applications toCognitive and Decision Processes, Academic Press, INC

Yager, Ronald R., Dimitiar P. Filev (1995), Generalizing the modeling of fuzzy logiccontrollers 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, ComputerScience Division, Berkeley em http://http.cs.berkeley.edu/projects/Bisc

Zadeh, Lotfi Asker (1975), Calculus of Fuzzy Restrictions, in Fuzzy Sets and TheirApplications to Cognitive and Decision Processes, Academic Press, INC

Page 109: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

REFERÊNCIAS BIBLIOGRÁFICAS

Abe, Jair Minoro (1992), Fundamentos da Lógica Anotada, Dissertação deDoutorado, 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 indatabases, 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 andApplications, 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 inSystems Research, Vol. 3, Eindhoven University of Technology

Kochen, Koche (1975), Applications of Fuzzy Sets in Psychology, in Fuzzy Sets andTheir Applications to Cognitive and Decision Processes, Academic Press, INC

Kundu, Sukhamay & Jianhua Chen, Fuzzy Logic or Lukasiewicz logic: Aclarification, Fuzzy Sets and Systems 95 (1998), 369-379

Montevechi, José Arnaldo Barra (1995), Contribuição para Identificação deSimilaridades entre peças: Abordagem baseada na lógica Fuzzy emSistemas de Apoio Computadorizados, Dissertação de Doutorado, EscolaPolitécnica, USP

Munakata, Toshinori (1998), Notes on implementing fuzzy sets in Prolog, Fuzzy Setsand Systems, Volume 98, Issue 3, 311-317

Pedrycz, Witold (1997), Fuzzy Sets in Pattern Recognition: Accomplishments andChallenges, Fuzzy Sets and Systems 90 171-176

Pedrycz, Witold (1998), Technological Developments, Fuzzy Sets and Systems,Volume 96, Issue 1, 125-128

Page 110: S ISTEMAS C OMPUTACIONAIS BASEADOS EM L ÓGICA F …tonelli/verao-fuzzy/laecio/logic... · 2003-05-15 · Estava o coelho digitando a sua tese de mestrado, ... programação C e a

Pedrycz, Witold, Fuzzy set technology in knowledge discovery, Fuzzy Sets andSystems 98 (1998), 279-290

Rao, Valluru B & Hayagriva V. (1995), Neural Networks & Fuzzy Logic, MIS Press.

Siarry, Patrick & François Guely, A genetic algorithm for optimizing Takagi-Sugenofuzzy rule bases, Fuzzy Sets and Systems 99 (1998), 37-47

Votre, Vilmar P. (1997), C++ Explicado e Aplicado, ZeroErro Engenharia deSoftware.