Você está na página 1de 51

UERJ

CTC
FEURJ
DESC

Projeto de Graduação

Sistema de Inferência Fuzzy com Geração Automática de Regras

Marcos Neves do Vale

Autorizo a Apresentação: ___________________________________


Marley Maria B. R. Vellasco

Data da Apresentação: ___/___/2001


Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

1
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Ag r a d e c i m e n t o s

Agradeço aos meus pais que sempre me incentivaram a alcançar os meus objetivos no decorrer da
minha vida, agradeço a minha namorada Ana Paula que me ajudou no que foi possível para a
concretização desse trabalho e agradeço aos excelentes professores que tive durante o curso em
especial a professora Marley que sempre teve paciência com os seus alunos mais chatos, inclusive
eu.

2
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Sistema de Inferência Fuzzy com Geração Automática de Regras

Abstract __________________________________________________________ 5
I Introdução __________________________________________________6
I. 1 Objetivos _______________________________________________________ 6
I. 2 Descrição do Trabalho____________________________________________ 6
I. 3 Estrutura do Trabalho ____________________________________________ 7
II Inteligência Computacional ___________________________________8
II. 1 Introdução _____________________________________________________ 8
II. 2 Lógica Fuzzy ___________________________________________________ 9
II. 2.1 Histórico da Tecnologia Fuzzy________________________________ 9
II. 2.2 Definição ________________________________________________ 10
II. 2.3 Conjuntos Nebulosos ______________________________________ 12
II. 2.3.1 Definição____________________________________________ 12
II. 2.3.2 Representação _______________________________________ 13
II. 2.3.3 Operações com Conjuntos Nebulosos _____________________ 14
II. 2.4 Módulo de Inferência ______________________________________ 16
II. 2.4.1 Métodos de Interseção e Implicação ______________________ 16
II. 2.4.2 Composição _________________________________________ 17
II. 2.5 Defuzificação _____________________________________________ 18
III Método de Mendel para Geração de Regras Fuzzy _______________20
III. 1 Introdução ____________________________________________________ 20
III. 2 Gerando Regras através de dados numéricos ______________________ 21
III. 3 Aplicação para o controle do caminhão____________________________ 24
III. 4 Aplicação para a previsão de série temporal________________________ 27
III. 5 Conclusão ____________________________________________________ 27
IV Descrição do Sistema Fuzzy Rules 2001 _______________________29
IV. 1 Diagrama de Blocos____________________________________________ 29
IV. 2 Entendendo o sistema__________________________________________ 29
IV. 2.1 Arquivo de Treinamento e Teste ____________________________ 31
IV. 2.1.1 Definição e Formato __________________________________ 31
IV. 2.1.2 Selecionando um arquivo ______________________________ 31
IV. 2.1.3 Exemplos___________________________________________ 32
IV. 2.2 Variáveis do Sistema______________________________________ 32
IV. 2.2.1 Definindo Variáveis ___________________________________ 33
IV. 2.2.2 Modo Edição de Variável_______________________________ 35
IV. 2.2.3 Conjuntos Nebulosos _________________________________ 35
IV. 2.2.4 Exemplos___________________________________________ 36
3
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.3 Gerando Regras__________________________________________ 37


IV. 2.3.1 Regras Automáticas __________________________________ 38
IV. 2.3.2 Sintonia Fina às Regras Geradas ________________________ 39
IV. 2.3.2.1 Adicionando, Removendo e Alterando Regras ____________ 39
IV. 2.3.3 Exemplos___________________________________________ 40
IV. 2.4 Base de Testes___________________________________________ 41
IV. 2.5 Manipulando Gráfico ______________________________________ 42
IV. 2.6 Visualização Rápida ______________________________________ 42
IV. 2.7 Salvando e Abrindo Trabalhos (projetos) _____________________ 43
IV. 2.8 Como Imprimir ___________________________________________ 44
V Alguns Exemplos do Uso do Sistema Fuzzy Rules 2001___________45
V. 1 Controle do Caminhão __________________________________________ 45
V. 2 Controle do Guindaste __________________________________________ 46
V. 3 Previsão de Série Temporal ______________________________________ 47
VI Conclusões e Trabalhos Futuros _____________________________49
VI. 1 Conclusões___________________________________________________ 49
VI. 2 Trabalhos Futuros _____________________________________________ 49
VII Bibliografia_______________________________________________50

4
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Ab s t r a c t

This project focuses on fuzzy logic concept. This concept provides a completely different, unorthodox
way to approach a control problem, focusing on what the system should do rather than trying to
understand how it works, concentrating on solving the problem rather than trying to model the system
mathematically, if that is even possible. This almost invariably leads to quicker, cheaper solutions.
This application creates a fuzzy system, generating fuzzy rules from numerical data and linguistic
informations based on the Mendel’s method. Applications to truck backer_upper control, derrick
control and time series prediction problems were tested giving good results.

5
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

I Introdução

Dizer que uma declaração é falsa ou verdadeira [2], não podendo ser ao mesmo tempo parcialmente
verdadeira e parcialmente falsa, junto a lei da não contradição, formam a base do pensamento lógico
Ocidental.
A Lógica Fuzzy (Lógica Nebulosa) [1] viola estas suposições. Um sim ou um não como resposta a
estas questões é, na maioria das vezes, incompleta. Na verdade, entre a certeza de ser e a certeza
de não ser, existem infinitos graus de incerteza. Esta imperfeição intrínseca à informação
representada numa linguagem natural tem sido tratada matematicamente no passado com o uso da
teoria das probabilidades. Contudo, a Lógica Nebulosa, com base na teoria dos conjuntos nebulosos
(Fuzzy Set), tem se mostrado mais adequada para tratar imperfeições da informação do que a teoria
das probabilidades.
A modelagem e o controle fuzzy consideram o modo como a falta de exatidão e a incerteza são
descritas e, fazendo isso, tornam-se suficientemente poderosas para manipular de maneira
conveniente o conhecimento.
A Lógica Fuzzy encontra-se entre as técnicas mais recentes de Inteligência Artificial.

I. 1 Objetivos

Uma das principais potencialidades da Lógica Fuzzy, quando comparada com outros esquemas que
tratam com dados imprecisos como redes neurais, é que suas bases de conhecimento, as quais
estão no formato de regras de produção, são fáceis de examinar e entender. Este formato de regra
também torna fácil a manutenção e a atualização da base de conhecimento.
O sistema desenvolvido se baseia no método de Mendel descrito no capítulo III para gerar uma base
de regras fuzzy a partir de dados numéricos e informações lingüísticas, dando suporte também a
testes em cima dessa base a fim de observar o comportamento do sistema criado.

I. 2 Descrição do Trabalho

O desenvolvimento deste projeto foi enfocado e utilizado a Lógica Nebulosa (Lógica Fuzzy), em
razão das suas qualidades em manusear informações qualitativas e imprecisas de uma maneira
rigorosa, resultando em um Controlador Nebuloso de Sistemas que propiciará um controle mais
acurado, além de um desempenho estável e robusto, visando divulgar e demonstrar o Controlador
Nebuloso e suas aplicações.
A grande simplicidade de implementação de sistemas de controle fuzzy pode reduzir a complexidade
a um ponto em que problemas anteriormente intratáveis passam agora a ser solúveis.

6
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

A plataforma de desenvolvimento escolhido para criar esse tipo de sistema dentro dos objetivos
anteriormente descritos foi o C++Builder (Borland), baseado nas facilidades que a ferramenta oferece
na programação orientada ao objeto e na programação visual.
Abaixo seguem algumas das principais características do aplicativo.

Ambiente de Desenvolvimento:
C++ Builder (Borland)
Sistema Operacional necessário para se rodar o aplicativo:
Windows 9x/Me/2000/ NT
Resolução de Vídeo Ideal:
800x600 ou maior
Tema Desenvolvido:
Lógica Fuzzy (Geração Automática de Regras)

I. 3 Estrutura do Trabalho

O trabalho foi dividido em seis capítulos.


O primeiro capítulo descreve em linhas gerais o tema desenvolvido no projeto, os objetivos principais
do sistema criado e a descrição do trabalho desenvolvido.
O segundo capítulo dá uma descrição sobre lógica fuzzy, desenvolvendo os principais conceitos
usados no entendimento e desenvolvimento do trabalho.
O terceiro capítulo descreve o método de Mendel, ponto fundamental do trabalho usado para gerar
regras fuzzy automaticamente.
O quarto capítulo descreve o aplicativo e suas funcionalidades, mostrando o passo-a-passo para se
criar um sistema.
O quinto capítulo exemplifica o uso do aplicativo em alguns sistemas.
O sexto capítulo conclui o trabalho e cita algumas modificações que podem ser feitas no programa a
fim de torna-lo melhor.

7
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

II Inteligência Computacional

II. 1 Introdução

A reprodução de características inteligentes em máquinas construídas pelo homem [8] é um dos


objetivos mais perseguidos pela comunidade científica e tecnológica. Muitos paradigmas simbólicos
de aprendizagem surgiram, e muitos se desenvolveram como métodos computacionais poderosos,
incluindo aquisição indutiva de conceitos, sistemas classificadores, e aprendizagem baseada em
explicações.
Um conjunto de ferramentas analíticas, conhecidas coletivamente como Inteligência Computacional
[8], tem sido utilizada para solucionar problemas relacionados à Aprendizagem de Máquinas,
permitindo assim a resolução de problemas que eram previamente difíceis ou impossíveis de serem
tratados.
A característica de destaque da Inteligência Computacional é que seu objetivo primário é alcançar
tratabilidade, robustez, baixo custo e alto MIQ (Quoficiente de Inteligência de Máquina) através de
uma exploração da tolerância à imprecisão e incerteza. O que se busca nesse contexto é uma
solução aproximada para um problema formulado imprecisamente.
Um simples exemplo é o de se estacionar um carro. Estaciona-se um carro com relativa facilidade
porque a posição final e a orientação do carro não são especificadas precisamente. Se o fossem, o
problema seria praticamente insolúvel para os seres humanos. Em contraste, quando o problema de
se estacionar é formulado imprecisamente, torna-se difícil de resolvê-lo pelos métodos
computacionais convencionais porque tais métodos não tratam do problema de se explorar a
tolerância por imprecisão.
O que esse exemplo simples quer ilustrar é o fato que, em geral, uma precisão alta acarreta um alto
custo. O desafio, portanto, é explorar a tolerância à imprecisão pela busca de novos métodos de
computação que levem a uma solução aceitável a um baixo custo. Pela sua própria natureza, a
Inteligência Computacional é muito mais próxima ao raciocínio humano do que os modos tradicionais
de computação.
Nessa combinação, os principais constituintes da Inteligência Computacional são as Redes Neurais
Artificiais [5] [3], a Lógica Nebulosa [5] [3], o Raciocínio Probabilístico e os Sistemas Caóticos. As
Redes Neurais se preocupam principalmente com a teoria da aprendizagem, a Lógica Nebulosa com
a imprecisão e o raciocínio aproximado e o Raciocínio Probabilístico (Algoritmos Genéticos) com o
gerenciamento da incerteza.

8
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

II. 2 Lógica Fuzzy

II. 2.1 Histórico da Tecnologia Fuzzy

O conceito de Conjunto Fuzzy [6] foi introduzido, em 1965, por Lotfi A. Zadeh (Universidade da
Califórnia, Berkeley). A ele é atribuído o reconhecimento como grande colaborador do Controle
Moderno. Em meados da década de 60, Zadeh observou que os recursos tecnológicos disponíveis
eram incapazes de automatizar as atividades relacionadas a problemas de natureza industrial,
biológica ou química, que compreendessem situações ambíguas, não passíveis de
processamento através da lógica computacional fundamentada na lógica booleana. Procurando
solucionar esses problemas o Prof. Zadeh publicou em 1965 um artigo resumindo os conceitos
dos Conjuntos Fuzzy, revolucionando o assunto com a criação de Sistemas Fuzzy.
Em 1974, o Prof. Mamdani, do Queen Mary College, Universidade de Londres, após inúmeras
tentativas frustradas em controlar uma máquina a vapor com tipos distintos de controladores,
incluindo o PID, somente conseguiu fazê-lo através da aplicação do raciocínio Fuzzy.
Esse sucesso serviu de alavanca para muitas outras aplicações, como em 1980, no controle
Fuzzy de operação de um forno de cimento. Vieram em seguida, várias outras aplicações,
destacando-se, por exemplo, os controladores Fuzzy de plantas nucleares, refinarias, processos
biológicos e químicos, trocador de calor, máquina diesel, tratamento de água e sistema de
operação automática de trens [1].
Estimulados pelo desenvolvimento e pelas enormes possibilidades práticas de aplicações que se
apresentaram, os estudos sobre Sistemas Fuzzy [2] e controle de processos avançam
rapidamente, culminando com a criação em 1984, da Sociedade Internacional de Sistemas Fuzzy,
constituída, principalmente, por pesquisadores dos países mais avançados tecnologicamente.
Sistemas Fuzzy foram amplamente ignorados nos Estados Unidos porque foram associados com
inteligência artificial, um campo que periodicamente se obscurecia, resultando numa falta de
credibilidade por parte da indústria. A propósito disto, e apenas a título de ilustração, mais de 30%
dos artigos até hoje publicados são de origem japonesa.
Os japoneses não tiveram este prejuízo; o interesse em Sistemas Fuzzy foi demonstrado por Seiji
Yasunobu e Soji Miyamoto da Hitachi, que em 1985 apresentou simulações que demonstraram a
superioridade de Sistemas de Controle Fuzzy para a estrada de ferro de Sendai [6]; suas idéias
foram adotadas e Sistemas Fuzzy foram usados para controle de aceleração, frenagem, e parada
quando a linha foi inaugurada em 1987.
Outro evento em 1987 ajudou a promover o interesse em Sistemas Fuzzy: durante um encontro
internacional de pesquisadores de Fuzzy em Tokyo naquele ano, Takeshi Yamakawa demonstrou
o uso de Controle Fuzzy (através de um conjunto de simples chips fuzzy dedicados) em um
experimento de um pêndulo invertido -- um problema clássico de controle em que um veículo tenta
manter um poste montado no seu topo por uma dobradiça vertical com movimentos de ida e volta.

9
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Observadores ficaram impressionados com esta demonstração, como também com os


experimentos de Yamakawa em que ele montou um copo contendo água ou até mesmo um rato
vivo no topo de pêndulo; o sistema manteve estabilidade em ambos os casos. Yamakawa
eventualmente foi organizando seu próprio laboratório de pesquisas de Sistemas Fuzzy ajudando
a explorar suas patentes no campo.
Seguindo semelhantes demonstrações, os japoneses se apaixonaram com sistemas fuzzy,
desenvolvendo tanto aplicações industriais como aplicações para consumo; em 1988 eles criaram
o Laboratório Internacional de Engenharia Fuzzy (LIFE) [4], uma cooperativa que compreendia 48
companhias para pesquisa em Sistemas Fuzzy.
Bens de consumo japoneses incorporam extensamente Sistemas Fuzzy. Trabalhos em Sistemas
Fuzzy é também um procedimento nos EUA e Europa, entretanto não com o mesmo entusiasmo
visto no Japão.
Em 1995 Maytag introduziu uma máquina de lavar pratos "inteligente" baseado em um
Controlador Fuzzy e um "one-stop sensing module" que combina um termistor (para medida da
temperatura), um sensor condutivo (para medir o nível de detergente através dos íons presentes
na água), um sensor de turvação que difundi a medida e transmite luz para medir a sujeira na
lavagem, e um sensor magnético para ler a taxa de giro. O sistema determina uma otimização no
ciclo de lavagem para qualquer carga obter os melhores resultados com o mínimo de energia,
detergente, e água.
Pesquisa e desenvolvimento estão em andamento em aplicações Fuzzy em projeto de software,
incluindo Sistemas Fuzzy Expert e Integração de Lógica Fuzzy com redes neurais, os
denominados algoritmos genéticos, com o objetivo de construção de um Sistema Fuzzy capaz de
aprender.
O desenvolvimento de técnicas de Inteligência Artificial (IA) [8] nos últimos anos ocupa cada vez
mais posição de destaque em pesquisas na área de controle de processos industriais e, aos
poucos, começam a ser implantadas em plantas industriais com enorme sucesso. Dentre as
técnicas mais utilizadas, além do Controle Fuzzy, pode-se destacar as redes neurais aplicadas a
sistemas de controle, que estão atualmente em tamanha evidência que os japoneses as
consideram como duas das mais promissoras técnicas para o século XXI.

II. 2.2 Definição

A Lógica Fuzzy (Lógica Nebulosa) [3] é a lógica que suporta os modos de raciocínio que são
aproximados ao invés de exatos. Controle fuzzy e Modelagem de sistemas são técnicas para o
tratamento de informações qualitativas de uma forma rigorosa. Derivada do conceito de conjuntos
fuzzy, a lógica fuzzy constitui a base para o desenvolvimento de métodos e algoritmos de
modelagem e controle de processos, permitindo a redução da complexidade de projeto e
implementação, tornando-se a solução para problemas de controle até então intratáveis por
10
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

técnicas clássicas. Ela difere dos sistemas lógicos em suas características e seus detalhes. Nesta
lógica, o raciocínio exato corresponde a um caso limite do raciocínio aproximado, sendo
interpretado como um processo de composição de relações nebulosas.
Na lógica fuzzy [2], o valor verdade de uma proposição pode ser um subconjunto fuzzy de
qualquer conjunto parcialmente ordenado, ao contrário dos sistemas lógicos binários, onde o valor
verdade só pode assumir dois valores: verdadeiro (1) ou falso (0). Nos sistemas lógicos multi-
valores, o valor verdade de uma proposição pode ser ou um elemento de um conjunto finito, num
intervalo, ou uma álgebra booleana. Na lógica nebulosa, os valores verdade são expressos
lingüisticamente (verdade, muito verdade, não verdade, falso, muito falso), onde cada termo
lingüístico é interpretado como um subconjunto fuzzy do intervalo unitário.
Outras características da lógica fuzzy podem ser sumarizadas como segue: nos sistemas lógicos
binários, os predicados são exatos (par, maior que), ao passo que na lógica fuzzy os predicados
são nebulosos (alto, baixo). Nos sistemas lógicos clássicos, o modificador mais utilizado é a
negação, enquanto que na lógica fuzzy uma variedade de modificadores de predicados são
possíveis (muito, mais ou menos). Estes modificadores são essenciais na geração de termos
lingüísticos, tais como: muito alto, mais ou menos perto, etc.
Na lógica clássica existem somente os quantificadores existenciais e universais. A lógica fuzzy
admite, em adição, uma ampla variedade de quantificadores como pouco, vários, usualmente,
freqüentemente, em torno de cinco, etc.
A probabilidade, no contexto da lógica clássica, é um valor numérico ou um intervalo. Na lógica
nebulosa existe a opção adicional de se empregar probabilidades lingüísticas (provável, altamente
provável, improvável), interpretados como números fuzzy e manipulados pela aritmética fuzzy.
Também em contraste com a lógica modal clássica, o conceito de possibilidade é interpretado
utilizando-se subconjuntos fuzzy no universo dos reais.
Em teorias de controle clássica e moderna, o primeiro passo para implementar o controle de um
processo, é derivar o modelo matemático que descreve o processo. O procedimento requer que
se conheça detalhadamente o processo a ser controlado, o que nem sempre é factível se o
processo é muito complicado. As teorias de controle existentes se aplicam a uma grande
variedade de sistemas, onde o processo é bem definido. Várias técnicas [4], tais como para
controle linear multivariável, estimação de estado a partir de medidas ruidosas, controle ótimo,
sistemas lineares estocásticos, além de certas classes de problemas não-lineares determinísticos,
foram desenvolvidas e aplicadas com sucesso em um grande número de problemas bem
postulados. Entretanto, todas estas técnicas não são capazes de resolver problemas reais cuja
modelagem matemática é impraticável. Por exemplo, em diversas situações um volume
considerável de informações essenciais só é conhecido a priori de forma qualitativa. Do mesmo
modo, critérios de desempenho só estão disponíveis em termos lingüísticos. Este panorama leva a
imprecisões e falta de exatidão que inviabilizam a maioria das teorias utilizadas até agora. A
modelagem e o controle fuzzy consideram o modo como a falta de exatidão e a incerteza são
descritas e, fazendo isso, tornam-se suficientemente poderosas para manipular de maneira
11
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

conveniente o conhecimento. A sua utilização em sistemas de controle de processos em tempo


real, em computadores é das mais convenientes, dado que, geralmente não envolvem problema
computacional sério. Controle fuzzy trata do relacionamento entre entradas e saídas, agregando
vários parâmetros de processo e de controle.
A lógica nebulosa pode ser aceita como a melhor ferramenta para modelar o raciocínio humano
[6], que é aproximado e parcial em sua essência. A teoria dos conjuntos nebulosos e a lógica
nebulosa objetivam modelar os modos de representação e raciocínio imprecisos que têm um
papel essencial na tomada de decisões racionais em ambientes de imprecisão e incerteza. A
diversificação de tecnologias advinda da lógica nebulosa tem também permitido sua aplicação em
diversas áreas de conhecimento. O processo pode ser controlado a partir de um conjunto de
regras nebulosas do tipo "Se-Então", capaz de coordenar conhecimentos incompletos, incertos ou
mesmo conflitantes.

II. 2.3 Conjuntos Nebulosos

II. 2.3.1 Definição

O conceito formal de conjunto nebuloso [2] [4], fundamentado da lógica nebulosa, foi introduzido
por Lotfi A. Zadeh em 1965. Na teoria clássica dos conjuntos, os conjuntos são ditos "crisp", de tal
forma que um dado elemento do universo em discurso (domínio) pertence ou não pertence ao
referido conjunto. Na teoria dos conjuntos nebulosos existe um grau de pertinência de cada
elemento a um determinado conjunto. Este conceito parece ser bastante natural e facilmente
percebido ao examinarmos a lista de conjuntos abaixo:
• Conjunto dos números naturais ( c )
• Conjunto dos caracteres ascii ( c )
• Conjunto dos números naturais muito maiores do que dez ( f )
• Conjunto dos clientes com alta renda ( f )

Existe claramente uma diferença fundamental entre os conjuntos marcados com "c" e os conjuntos
marcados com "f". Por exemplo, apresentado um caractere podemos afirmar sem nenhuma
discussão ou dúvida se esse caractere pertence ou não pertence ao conjunto dos caracteres ascii.
Esta questão não é tão simples quando lidamos, por exemplo, com o conjunto dos homens altos.
Uma pessoa que tenha 1,74 metros de altura seria considerada como pertencente a esse
conjunto? E a de 1,75? Vemos claramente que não existe uma fronteira bem definida que separe
os elementos do conjunto dos homens altos dos elementos do conjunto dos homens não altos.
Definição [2]: Um conjunto nebuloso A definido no universo de discurso U é caracterizado por uma
função de pertinência µA, a qual mapeia os elementos de U para o intervalo [0,1].
µA:U => [ 0,1]

12
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Desta forma, a função de pertinência associa com cada elemento x pertencente a U um número
real µA(x) no intervalo [0, 1], que representa o grau de possibilidade de que o elemento x venha a
pertencer ao conjunto A, isto é, o quanto é possível para o elemento x pertencer ao conjunto A.

II. 2.3.2 Representação

Uma possível função de pertinência [2] para o conjunto das temperaturas mornas é mostrada na
Fig.1. Observe que neste caso, a função de pertinência para a temperatura em torno dos 40° C
tem valor próximo de 1, indicando que estes valores de temperatura definitivamente pertencem ao
conjunto das temperaturas mornas. Enquanto que para os valores de próximos a 20 ou a 60 graus
indicam o contrário. Já uma afirmativa questionável de que as temperaturas, neste caso, próximas
dos 28 ou dos 52 graus venham a pertencer a este conjunto, é traduzida por um valor da função
de pertinência em torno de 0.5. Do ponto de vista da informação, este valor representa uma
completa falta de conhecimento sobre o assunto em questão: “temperatura morna”.

µH (x) = Exp[ -θ (x – 40)2]

Fig.1: Função de Pertinência para o conjunto das temperaturas(ºC) mornas

Para conjuntos "crisp", uma lista contendo seus elementos é suficiente para sua definição.

No caso do conjunto representar um intervalo contínuo, por exemplo, o conjunto dos números
reais menores ou iguais a quinze e maiores ou iguais a cinco, teríamos:

Note que aqui, os símbolos å e ò são usados para representar a operação de união lógica, e
portanto não representam os operadores de somatório e de integração no senso do uso comum.
Para conjuntos nebulosos a definição só estará completa com o conhecimento do grau de
pertinência de cada elemento. O grau de pertinência indica o quanto o elemento pertence ao
conjunto nebuloso A. Assim, temos:

13
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

A = { µA (x1) / x1, µA (x2) / x2, µA (x3) / x3 … µA (xn) / xn }


Ou:

Onde "/" é apenas um separador.

De forma similar, quando o universo de discurso U for contínuo, o conjunto nebuloso A é


freqüentemente escrito como:

Como exemplo: o conjunto dos números naturais aproximadamente iguais a 10, poderia ser
representado pelo conjunto nebuloso A descrito como:
A= {0.2/6, 0.4/7, 0.6/8, 0.8/9, 1/10, 0.8/11, 0.6/12, 0.4/13, 0.2/14 }

Na maioria das aplicações práticas, as funções de pertinência são do tipo gaussiana, triangulares,
trapezoidais, crescentes ou decrescentes. A Fig.2 mostra estes cinco tipos de funções de
pertinência.

Fig.2: Tipos de Funções de Pertinência.

II. 2.3.3 Operações com Conjuntos Nebulosos

• União, Interseção e Complemento [1]


O conjunto nebuloso resultante da união de dois conjuntos nebulosos é aquele cuja função de
pertinência é composta pelos máximos das funções de pertinência de A e de B para todo x
pertencente a U. A interseção, por outro lado, é composta pelo mínimo: A fig.3 exemplifica o uso
destes operadores aplicados a dois conjuntos nebulosos A e B.
14
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

i) União

ii) Interseção

iii) Complemento
A função de pertinência µØA é definida ponto a ponto para todo x ∈ U por:
µØA(x) = 1 - µA(x)

Fig.3: Exemplo dos operadores união, interseção e complemento

Com a aplicação da operação de potenciação sobre conjuntos nebulosos, definidos como:

Podemos facilmente compor a função de pertinência de conjuntos nebulosos tais como, por
exemplo, o conjunto das temperaturas muito altas, a partir do conjunto das temperaturas altas. A
Fig.4 exemplifica o uso desta operação aplicada ao conjunto das, digamos, temperaturas
confortáveis. Observe que para a positivo e menor do que 1, a operação de potenciação tem o
efeito de provocar uma dilatação (dispersão) na função de pertinência do conjunto nebuloso.
Quando a é maior do que 1 ocorre um efeito oposto, isto é, uma concentração.
15
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Fig.4: Potenciação de Conjuntos Nebulosos

II. 2.4 Módulo de Inferência

O processo de inferência [9] ocorre através da determinação do valor de cada conseqüente das
regras nebulosas, a partir dos graus de compatibilidade entre as proposições derivadas das
medidas com as respectivas proposições presentes nos antecedentes das regras.

II. 2.4.1 Métodos de Interseção e Implicação

Para definir o subconjunto gerado pelo resultado da ativação de uma regra, é preciso definir os
métodos de interseção e implicação [2] [9].

Os métodos de interseção mais comuns são os métodos de interseção mínimo e produto.


- Método de Interseção Mínimo
O grau máximo de pertinência do conjunto de saída da regra ativada será obtido pelo mínimo
grau de pertinência de seus antecedentes

- Método de Interseção Produto


O grau máximo de pertinência do conjunto de saída da regra ativada será obtido pelo
produto do grau de pertinência de seus antecedentes

Os métodos de implicação mais comuns são os métodos de implicação mínimo e produto.

- Método de Implicação Mínimo


O subconjunto gerado será o valor mínimo do conjunto da variável de saída que foi ativado e
o grau de pertinência gerado pelo método de interseção.

16
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

- Método de Implicação Produto


O subconjunto gerado será o produto entre o conjunto da variável de saída que foi ativado e
o grau de pertinência gerado pelo método de interseção.

Exemplo:
Para a regra ativada:
Se X é B e Y é M Então Z é G com µX(B) = 0,35 e µY(M) = 0,8
Implicação Mínimo: µZ (G) = 0,35 / Implicação Produto: µZ (G) = 0,28

II. 2.4.2 Composição

A contribuição de cada regra [9] é levada em consideração através da união (máximo) entre os
conjuntos nebulosos resultantes das regras.
A composição entre duas ou mais regras ativadas (relações nebulosas) é definida como o
conjunto de saída formado pela união dos subconjuntos gerados por essas regras.
A operação de composição de relações nebulosas pode tomar diversas formas. As mais comuns
destas formas são a composição max-min e a composição max-produto.

17
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

- Composição Max-Min (Máximo-Mínimo)

- Composição Max-Produto (Máximo-Produto)

II. 2.5 Defuzificação

Para fornecer um sinal de controle para o sistema controlado, o conjunto gerado pelo resultado da
inferência nebulosa necessita ser defuzificado [9].
Os métodos de defuzificação mais utilizados são:
- Média dos Máximos
- Centróide
- Altura
- Altura Limitada

18
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Os métodos utilizados pelo programa estão descritos abaixo.

Centróide
Determina o centro de área Y do conjunto nebuloso B e o utiliza como saída do sistema
nebuloso.
µB(y) dy
Y = òS yµ onde S é o suporte de B
òS µB(y) dy

Forma discreta:
Y = åi yµ
µB(yi)
åi µB(yi)

Altura Modificada
Seja yi a altura do conjunto nebuloso Bi (associada à ativação da regra Ri) e δi a medida da
extensão do suporte do conseqüente da regra Ri, temos:
Y = åi yµ δI)2
µBi(yi)/(δ
δI)2
åi µBi(yi) )/(δ

19
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

III Método de Mendel para Geração de Regras Fuzzy [10]

III. 1 Introdução

A maioria dos problemas de processamento de controle e sinal do mundo real podem ser
classificados em dois tipos: informações numéricas obtidas através de medidas, e informações
lingüísticas obtidas através de um especialista.

As aproximações de processamento de controle e sinal inteligentes mais usuais são heurísticas.


Simulações demonstram que essas novas aproximações são boas para um problema específico,
mas apresentam dois pontos fracos:
1) Depende muito do problema. Um método pode funcionar bem para um problema e não se
adequar bem ao outro.
2) Não tem uma estrutura comum para modelar e representar diferentes aspectos de
estratégias de processamento de controle ou sinal, o que torna análises teóricas para
essas aproximações muito difíceis.

O método proposto se trata de um método geral, que combina informações numéricas e lingüísticas
dentro de uma estrutura comum, uma base de regras Fuzzy.

Suponhamos que nós tenhamos o seguinte problema: um sistema de controle complexo em que o
controle humano é uma parte essencial. Esse controle humano frente ao ambiente é tão complicado
que não existe um modelo matemático para isso, ou o modelo matemático é tão não linear que
desenvolver um método para isto se torna impossível. A tarefa aqui é projetar um sistema de
controle que reponha o controle humano.

Para projetar esse tipo de sistema, precisamos primeiro ver as informações disponíveis. Vamos
assumir que não há um modelo matemático. Desde que já possuímos um especialista que controla
muito bem o sistema, teremos dois tipos de informações disponíveis:
1) A experiência do especialista
2) Pares de entrada-saída que são armazenadas quando o especialista tem êxito no controle
do sistema.

A experiência do especialista é geralmente expressa através de algumas regras lingüísticas “Se -


Então” que expressa em quais situações para quais ações devem ser tomadas.
Os pares de entrada-saída são dados numéricos que dão os valores específicos das entradas e os
correspondentes valores de saída.

20
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Cada um desses dois tipos de informações sozinhas são geralmente incompletas. Apesar do
sistema ser controlado com êxito pelo especialista, alguma informação será perdida quando ele
expressar suas experiências através de regras lingüísticas. Conseqüentemente, não é suficiente
possuir apenas regras lingüísticas para desenvolver com sucesso um sistema de controle. Do outro
lado, informações de pares de dados de entrada-saída, geralmente não são suficientes para um
projeto eficiente, pois os dados passados não cobrem todas as situações que o sistema pode
enfrentar. Se regras lingüísticas geradas por especialistas e pares de dados numéricos são as
únicas informações que nós podemos ter para o projeto de um sistema de controle, o caso mais
interessante é quando a combinação desses dois tipos de informações são suficientes para a
eficiência do projeto desse sistema.

Os controladores fuzzy atuais utilizam apenas regras lingüísticas, enquanto que os controladores
neurais utilizam apenas pares de dados numéricos.
A idéia principal dessa nova aproximação é gerar regras fuzzy através de pares de dados numéricos,
coletar essas regras junto às regras fuzzy lingüísticas em uma base comum de regras fuzzy, e
finalmente, projetar um sistema de controle ou sinal baseado na combinação dessas regras.

III. 2 Gerando Regras através de dados numéricos

Suponhamos que nos seja dado um conjunto de pares entrada-saída:

(X1 (1), X2 (1); Y(1)), (X1 (2), X2 (2); Y(2)), …

Onde X1 e X2 são entradas e Y é a saída.

Este simples caso de duas entradas e uma saída é escolhido com intuito de enfatizar e para deixar
mais clara a idéia básica dessa nova aproximação. A tarefa aqui é gerar um conjunto de regras
Fuzzy através de pares de entrada-saída, e usar essas regras Fuzzy para determinar um
mapeamento F: (X1, X2)→ Y.

Essa aproximação consiste em cinco passos:


• Passo 1 - Dividir os intervalos de entrada – saída em Regiões Fuzzy

Assumindo que o intervalo do domínio de X1, X2 e Y são [X1 (mín), X1 (máx)] * [X2 (mím), X2 (máx)] e
[Y (mín), Y (máx)], respectivamente, onde o intervalo do domínio de uma variável significa, que muito
provavelmente esta variável se encontrará dentro desse intervalo. Dividem-se cada intervalo do
domínio em 2N+ 1regiões (N pode ser diferente para diferentes variáveis e os tamanhos dessas
regiões podem ser iguais ou não). A figura 1 mostra um exemplo onde o intervalo de domínio de X1
21
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

é dividido em cinco regiões (N = 2), o domínio da região de X2 é divido em sete regiões (N = 3), e o
intervalo do domínio de Y é dividido em cinco regiões (N = 2). Outras divisões do domínio também
são possíveis, assim como conjuntos com outras formas.

• Passo 2 - Gerando Regras Fuzzy a partir de pares de dados conhecidos

Primeiro se determina os graus de X1 (i), X2 (i) e Y (i) nas diferentes regiões. Por exemplo, X1 (1) na
Figura 1 possui grau 0,8 em B1, grau 0,2 em B2 e zero nas demais regiões. Similarmente, X2 (2) na
Figura 1 tem grau 1 em CE, e zero nas demais regiões.

Segundo, designa-se para X1 (i), X2 (i) ou Y (i) a região com grau máximo. Por exemplo: X1 (1) na Figura
1 é considerado como sendo B1, e X2 (2) na Figura 1 é considerado como sendo CE.

Finalmente, determina-se uma regra para um par de dados de entrada-saída.

(X1 (1), X2 (1): Y(1)) Þ [X1(1) (0,8 em B1), X2 (1) (0,7 em s1): Y(1) (0,9 em CE)] Þ Regra 1
Regra 1Þ Se X1 é B1 e X2 é S1 então Y é CE

(X1 (2), X2 (2): Y(2)) Þ [ X1 (2) (0,6 em B1 ), X2 (2) (1em CE): Y(2) (0,7 em B1)] Þ Regra 2
Regra 2 Þ Se X1 é B1 e X 2 é CE então Y é B1

Figura 1

22
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

• Passo 3 - Designando-se um grau para cada regra

Existindo muitos pares de dados e cada um deles sendo responsável pela geração de uma regra, é
muito provável que haja algumas regras conflitantes, regras que possuem os mesmos antecedentes,
mas conseqüentes diferentes. Uma maneira de resolver esse conflito é designar um grau para cada
regra gerada, e aceitar apenas a regra que tem maior grau no grupo de conflito. Isso não apenas
acaba com o problema do conflito, mas também reduz drasticamente o numero de regras.

É utilizada a seguinte estratégia do produto para determinar o grau de cada regra: Para a regra “Se
X1 é A e X2 é B, então Y é C”, o grau desta regra é definido como:
Grau (Regra) = µA (X1) µB (X2) µC (Y)
Assim, a Regra 1 teria grau
Grau (Regra 1) = µB1 (X1) µS1 (X2) µCE (Y) = 0,8 x 0,7 x 0,9 = 0,504
E a Regra 2
Grau (Regra 2) = µB1 (X1) µCE (X2) µB1 (Y) = 0,6 x 1 x 0,7 = 0,42

Na prática, nós geralmente temos alguma informação sobre os pares de dados. Pode acontecer do
especialista sugerir que algumas regras são muito úteis, e que outras são muito improváveis, talvez
causadas por um erro nas medidas. Podemos por tanto designar um grau para cada par de dados
que representará a importância daquele par.

Suponhamos que o par de dados (X1 (1), X2 (2): Y (1)) tem grau µ (1), então redefiniremos o grau da regra
1 como:
Grau (Regra 1) = µB1 (X1) µS1 (X2) µCE (Y) µ (1)

• Passo 4 - Criando Uma Base de Regras Fuzzy Combinada

O aspecto de uma base de regras Fuzzy está ilustrado na Figura 2.

Figura 2

23
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Cada célula da base será preenchida com regras Fuzzy de acordo com a seguinte estratégia: regras
geradas por dados numéricos ou regras lingüísticas. Pode haver mais de uma regra para cada
célula, use então a regra com o grau maior. Nesse caminho, tanto as informações numéricas como
as lingüísticas estão classificadas dentro de uma estrutura comum, a base de regras Fuzzy
combinada.

• Passo 5 - Determinando um mapeamento baseado na base de regras Fuzzy

Pode ser usada a seguinte estratégia de defuzificação para determinar a saída precisa para Y
através dos dados de entrada (X1, X2): primeiro, para a entrada (X1, X2), determina-se o grau que
essa entrada terá para cada regra na base de regras, e então é usada uma fórmula de defuzificação
(cetróide, altura, altura limitada, etc.).

Para problemas de previsão de série temporal, entradas e saídas são subseqüentes da série
temporal, assim como a entrada subseqüente precede a saída subseqüente.

Este método essencialmente aprende através de exemplos e informações dadas pelo especialista
para obter um mapeamento que tem a propriedade da “generalização”, que continua dando a saída
desejada com a entrada de novos dados.

I I I . 3 Ap l i c a ç ã o p a r a o c o n t r o l e d o c a m i n h ã o

Estacionar um caminhão até uma posição definida é um exercício difícil. Trata-se de um problema
de controle não linear onde não existe um método de controle tradicional.

Figura 3

A posição do caminhão é determinada por três variáveis de estado φ, X e Y, onde φ é o ângulo do


caminhão com a horizontal como mostra a figura 3. θ é o ângulo de controle do caminhão. Só é
considerado o movimento de ré pelo caminhão por uma unidade fixa de distância por cada estágio de
24
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

movimento. Para simplificar, a variável Y não é considerada como uma entrada. A tarefa aqui é
projetar um sistema de controle que tem como entrada φ ∈ [-90º, 270º] e X ∈ [0,20], e saída θ ∈ [-40º
, 40º] , e estado final (Xf , φf) = (10º , 90º) como mostra a Figura 4.

Figura 4

Neste exemplo é considerada a situação onde nem as regras lingüísticas fuzzy e nem os pares de
entrada-saída sozinhos são suficientes para controlar com sucesso o caminhão até a posição
definida, porém a combinação de ambos é suficiente.
Estamos considerando o caso em que a primeira parte da informação é gerada através dos pares de
entrada-saída e a parte final vem de regras lingüísticas.
Os pares de entrada-saída estão relacionados na tabela abaixo.
t X φ θ
0 1,00 0,00 -19,00
1 1,95 9,37 -17,95
2 2,88 18,23 -16,90
3 3,79 26,59 -15,85
4 4,65 34,44 -14,80
5 5,45 41,78 -13,75
6 6,18 48,60 -12,70
7 7,48 54,91 -11,65
8 7,99 60,71 -10,60

25
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

9 8,72 65,99 -9,55


10 9,01 70,75 -8,50
11 9,28 74,98 -7,45
12 9,46 78,70 -6,40
13 9,59 81,90 -5,34
14 9,72 84,57 -4,30
15 9,81 86,72 -3,25
16 9,88 88,34 -2,20
17 9,91 89,44 0,00

A base de regras fuzzy gerada pelos pares de entrada-saída relacionadas na tabela acima é
mostrada na figura 5 com exceção das três lacunas que estão envolvidas por linhas mais grossas.
Essas três regras são informações vindas de regras lingüisticas que complementam a base de
regras.

Figura 5

A figura 6 mostra a simulação do sistema nos três estados que se seguem: (X0, φ0) = (3, 30º), (10,
220º) e (13, 30º).

Figura 6
O caminhão foi controlado com sucesso até a posição desejada.
26
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

I I I . 4 Ap l i c a ç ã o p a r a a p r e v i s ã o d e s é r i e t e m p o r a l

Previsão de séries temporais se trata de problemas práticos muito importantes. Aplicações desse
tipo podem ser encontradas na área de economia e planejamento de negócios, controle de produção,
previsão do tempo, processamento de sinal, controle, e muitos outros campos. Vamos assumir que
Z (K) (K = 1, 2, 3,...), e determinar Z (K + m) com m um número inteiro fixo.
A figura 10 mostra 1000 pontos de uma série caótica usada para testar o sistema.
O sistema é então testado como mostram a figura 7 usando uma divisão do intervalo de domínio em
15 e 29 regiões. Ao se dividir em intervalos menores, temos previsões quase perfeitas, mas claro
que o preço pago por isso é uma base de regras fuzzy maior.

Figura 7

III. 5 Conclusão

Foi apresentado um método para gerar regras fuzzy a partir de dados numéricos. Este método pode
ser usado como um caminho geral para combinar informações lingüísticas e numéricas em uma
estrutura comum - uma base de regras fuzzy. Esta base de regras consiste de dois tipos de regras
fuzzy: algumas obtidas por um especialista, e outras geradas por dados de medidas numéricas
usando o método apresentado até então. Foi provado que o sistema fuzzy gerado é capaz de
aproximar qualquer função contínua não linear num conjunto compacto de exatidão arbitrária. O
método foi utilizado para o problema de controle do caminhão, e foi observado que o novo método
obteve sucesso em controlar o caminhão até a posição desejada. O método também foi aplicado ao

27
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

problema de previsão de série temporal, e os resultados mostraram que o novo método trabalhou
muito bem.
As principais características e vantagens desse novo método são:

1. Ele nos fornece um método geral para combinar informações de medidas numéricas e
informações lingüísticas humanas em uma estrutura comum – uma base de regras
fuzzy combinadas. Isto pode ser visto como um primeiro passo para desenvolver
alguns algoritmos de controle que usam informações numéricas e lingüísticas.

2. É um passo simples e direto para construir procedimentos. Não há tempo gasto com
treinamento, ou seja, requer muito menos tempo para se construir esse tipo de sistema
do que uma rede neural.

3. Há muita liberdade em escolher a função dos conjuntos nebulosos, dando a


flexibilidade de projetar sistemas de acordo com as diferentes exigências.

4. Pode ter ótimo controle para alguns casos onde nem um controle de rede neural e nem
um controle fuzzy podem.

28
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV Descrição do Sistema Fuzzy Rules 2001

IV. 1 Diagrama de Blocos

IV. 2 Entendendo o sistema

Para começar a fazer uso do programa, é preciso seguir e entender alguns passos para a perfeita
utilização do sistema.
A seguir, a figura do Sistema Fuzzy Rules 2001 e algumas notações importantes.

29
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Para começar a usar o sistema, é necessário, antes de tudo, ter um arquivo que contenha
informações numéricas, pois é desse arquivo que serão extraídas a base de regras fuzzy. Esse
arquivo é aqui denominado de Arquivo de Treinamento e Teste.
Logo em seguida, definem-se as variáveis de entrada-saída do sistema afim de informa-lo como
deve ser tratado cada dado contido no arquivo definido preliminarmente.
Depois de feito isso, já é possível gerar as regras fuzzy a partir das informações numéricas e ajustar
a base de regras fuzzy.
Já com a base de regras pronta, é possível testar e visualizar o desempenho do sistema diante
dessa base de regras.

Então podemos definir quatro passos:

1 – Definir Arquivo de Treinamento e Teste;


2 – Definir variáveis de entrada-saída;
3 – Gerar base de regras fuzzy;
4 – Ajustar base de regras fuzzy;
5 – Testar base de regras;

Cada passo está mais bem detalhado nas seções a seguir.


30
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.1 Ar q u i v o d e T r e i n a m e n t o e T e s t e

IV. 2.1.1 Definição e Formato

O Arquivo de Treinamento e Teste é a denominação dada ao arquivo usado pelo programa que
contém dados numéricos de entrada-saída. O arquivo precisa ser do tipo texto (.txt) e os dados
numéricos dispostos da seguinte maneira:
<dado 1> [TAB] <dado 1> [TAB] <dado 2> ... <dado N> [ENTER]
<dado 1> [TAB] <dado 1> [TAB] <dado 2> ... <dado N> [ENTER]
.
.
.

IV. 2.1.2 Selecionando um arquivo

Para definir um arquivo de Treinamento e Teste há duas opções. Para tal, basta ir ao menu e
clicar em [Arquivo] e selecionar [Abrir Arquivo de Treinamento e Teste], ou clicar no atalho que
tem na barra de ferramentas.
Depois de feito isso, surgirá uma tela onde você deve selecionar o arquivo que será usado pelo programa,
como demonstra a figura abaixo.

31
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.1.3 Exemplos

Arquivos de Treinamento e Teste:


• Problema de Estacionamento do Caminhão
Arquivo: caminhão.txt
1 0 -19
1,95 9,37 -17,95
2,88 18,23 -16,9
3,79 26,59 -15,85
4,65 34,44 -14,8
5,45 41,78 -13,75
6,18 48,6 -12,7
7,48 54,91 -11,65
7,99 60,71 -10,6
8,72 65,99 -9,55
...

• Problema do Guindaste
Arquivo: guindaste.txt
0,0 30,0 9,96
-3 21,43 12,75
-4 21,23 14,14
-5 21,02 15,54
-7 20,75 16,93
-9 20,48 19,72
-11 20,14 22,41
-13 19,73 23,21
-15 19,32 22,56
-18 18,85 21,94
...

IV. 2.2 Variáveis do Sistema

Todos sistemas possuem variáveis de entrada-saída. Nesse aplicativo, essas variáveis precisam
estar bem definidas a fim de se obter um resultado mais próximo do esperado.

32
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.2.1 Definindo Variáveis

A definição de variáveis se trata de um passo importante no programa, pois é nessa parte que o
sistema terá informações de como tratar cada dado contido no arquivo de treinamento e teste.
Ao ser definido o arquivo de treinamento e teste, o programa fará uma análise desse arquivo e
definirá as possíveis variáveis que o problema pode ter e as nomeará como Variável[1],
Variável[2], ..., Variável[N].

O usuário deverá então definir entre uma a todas as variáveis definidas pelo programa como
variável do sistema. Ao fazer essa definição, o usuário precisa antes conhecer o problema no qual
se deseja controlar (quais são as entradas e a saída do sistema). Para melhor definição das
variáveis, é aconselhado que se visualize o arquivo de treinamento e teste.

As possíveis variáveis estarão listadas na caixa denominada “Nome da Variável”. O programa


sugere automaticamente os limites do domínio de cada variável, mas esses limites podem ser
alterados.
Para alterar o nome de cada variável listada, basta clicar na caixa “Nome da Variável” e alterar o
nome sugerido pelo programa, sendo que a alteração só será aceita caso essa variável seja
adicionada ao banco de variáveis.
Para cada variável é possível definir o número de conjuntos que elas possuem em Conjuntos por
Variável, sendo que o número de conjuntos por variável permitido pelo programa varia de 1
(variável do tipo singleton) a 29.
Não é possível, para o usuário, determinar um número de conjuntos por variável menor do que
três. Isso é feito automaticamente pelo programa ao se detectar que os limites do domínio da
variável são iguais.
Cada variável precisa ser definida como Entrada e/ou Saída, sendo que o sistema precisa ter no
mínimo uma variável do tipo entrada e uma variável do tipo saída. Para séries temporais é comum
que se tenha apenas uma variável sendo dos dois tipos.

33
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Caso se trate de um problema de série temporal, é possível definir o tamanho da janela para cada
variável do tipo entrada no módulo Série Temporal, sendo que o limite to tamanho da janela varia
de 1 ao tamanho do arquivo de treinamento e teste.
Para qualquer variável do tipo entrada em que o tamanho da janela seja maior do que 1, o
programa assumirá o problema como série temporal.

Podemos resumir a criação de uma variável com os passos descritos abaixo:


- Determinar a variável que será usada pelo sistema
- Determinar o nome dessa variável (opcional)
- Definir o limite inferior e o limite superior do domínio da variável (definido
automaticamente pelo programa)
- Definir o número de conjuntos por variável
- Para problemas de série temporal: definir o tamanho da janela para variável do tipo
entrada

Clique agora em Adicionar para adicionar a nova variável ao banco de variáveis.

Faça isso para quantas variáveis quiser adicionar respeitando o limite de variáveis definidas pelo
programa.
Caso queira remover alguma variável, basta clicar em cima da variável desejada e clicar em
Remover.
Caso queira modificar alguma variável, siga os passos descritos na seção IV.2.2.2 (Modo Edição
de Variável).
Ao selecionar uma variável, será mostrado ao lado do banco de variáveis o seu gráfico com os
seus respectivos conjuntos dentro do domínio informado pelo usuário em Limite Inferior e Limite
Superior. Para manipulação do gráfico, vá para a seção IV. 2.5 (Manipulando Gráfico).

34
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.2.2 Modo Edição de Variável

Para fazer alguma alteração em alguma variável contida no banco de variáveis, basta dar um
duplo clique na variável desejada ou seleciona-la e clicar no botão Editar. Logo em seguida, será
aberta uma janela contendo todas as informações sobre aquela variável, onde o usuário terá a
total liberdade de altera-las como é apresentado nas figuras a seguir.

O botão Sugerir Limites define em Limite Inferior e Limite Superior o domínio calculado pelo
programa da variável em questão, baseado no arquivo de treinamento e teste.
Após as alterações feitas, clique em Editar para que a variável tenha suas informações alteradas
ou clique em Cancelar para que nada seja alterado.

IV. 2.2.3 Conjuntos Nebulosos

Para cada variável criada, são construídos tantos conjuntos nebulosos quantos foram
especificadas durante a criação.
Os conjuntos nebulosos de qualquer variável podem ser visualizados no gráfico ao lado da base
de variáveis. Os conjuntos são regulares com os conjuntos da extremidade trapezoidais e os
restantes triangulares.
Para variáveis do tipo Entrada, o nome de cada conjunto começa com E seguido da ordem em
que a variável em questão se encontra na base de variáveis precedido da ordem desse conjunto
da esquerda para direita.
Para variáveis do tipo Saída e Entrada/Saída, o nome de cada conjunto começa com S e S/E
respectivamente precedido da ordem desse conjunto da esquerda para direita.

35
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.2.4 Exemplo

Para o melhor entendimento sobre a criação de variáveis, segue um exemplo.

Vamos supor que o arquivo de treinamento e teste selecionado seja um arquivo genérico qualquer
contendo 5 variáveis.
Logo em seguida, a caixa “Nome da Variável” será preenchida com cinco variáveis: Variável[1],
Variável[2], Variável[3], Variável[4] e Variável[5].

Vamos supor que o nosso sistema não se trata de uma série temporal e que precise apenas de
três variáveis (Variável[1], Variável[3] e Variável[5]). Vamos renomear as variáveis escolhidas,
defini-las e adiciona-las. Para tal, vamos definir as características de cada uma delas.

Nome Variável Limite Limite Conjuntos por Tipo da Tamanho


Original Inferior Superior Variável Variável da Janela
Variável[1] Entrada_X 0 15 5 Entrada 1
Variável[5] Entrada_Y 0 15 7 Entrada 1
Variável[3] Saída_Z 0 50 5 Saída Não
Importa

36
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Agora vamos alterar o número de conjuntos por variável da variável Entrada_Y, para isso dê um
duplo clique na variável ou selecione-a e clique em Editar. Agora altere o número de conjuntos por
variável para 9 como mostra a figura abaixo e clique em Editar.

IV. 2.3 Gerando Regras

O programa permite duas formas de gerar regras. A primeira é automaticamente e se refere a


regras obtidas através de informações de entrada-saída (dados contidos no arquivo de
treinamento e teste), e a segunda são regras obtidas através do usuário. A figura abaixo mostra
uma base de regras geradas.

As duas primeiras colunas se referem as condições SE da regra, e sempre a penúltima coluna se


refere ao ENTÃO. A última coluna é o grau com que a regra foi gerada.

37
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Para problemas de série temporal onde o tamanho da janela de uma ou mais variáveis é maior do
que um, essa variável será repetida tantas vezes quanto o tamanho de sua janela.
Exemplo:
Variável do tipo Entrada: INFLAÇÃO
Tamanho da Janela: 2
Previsão do Elemento: 3
Para esse exemplo teríamos [0]-Inflação e [1]-Inflação que corresponderiam a inflação do mês
retrasado e a inflação do mês passado e Inflação correspondendo ao mês atual.

IV. 2.3.1 R e g r a s Au t o m á t i c a s

Para gerar regras automáticas, os seguintes passos devem ser seguidos:


- Caso se trate de um problema de série temporal, definir em “Previsão do
Elemento:”, o elemento que será previsto pelas regras.
§ Exemplo: Se [Inflação do Mês retrasado] igual a [Baixo] e [Inflação do
Mês passado] igual a [Médio] então [Inflação do Mês atual] igual a [Baixo]
Para esse exemplo teríamos:
Variável do tipo Entrada-Saída: Inflação
Tamanho da Janela: 2 (Inflação dos dois meses anteriores)
Previsão do Elemento: 3 ( [Mês Retrasado] – 1, [Mês Passado] – 2,
[Mês Atual] – 3) -> prever o terceiro elemento da série.
- Definir em “Treinamento:” a base de treinamento, ou seja, a partir de qual linha até
qual linha do arquivo de treinamento e teste será usado para treinar o sistema
(gerar regras).

Depois de feito isso, basta clicar em Gerar Regras pra ter as regras geradas.

38
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.3.2 Sintonia Fina às Regras Geradas

A sintonia fina às regras se refere à possibilidade de manipular regras (adicionar, remover e


editar).
Para o usuário manipular a base de regras, é necessário antes ter sido gerado automaticamente
alguma regra.

IV. 2.3.2.1 Ad i c i o n a n d o , R e m o v e n d o e Al t e r a n d o R e g r a s

• Adicionando Novas Regras


Para adicionar novas regras a base de regras, basta clicar em Adicionar. Feito isso, abrirá
uma janela com o nome da variável contida em cada coluna da base de regras onde o
usuário deve informar o conjunto, como demonstra a figura abaixo.

• Removendo Regras
Para remover qualquer regra, basta clicar em cima de qualquer regra e então clicar no
botão Remover.

• Alterando Regras
Para alterar qualquer regra basta clicar com o botão direito do mouse em cima da
condição que se deseja alterar. Feito isso, surgirá uma lista de conjuntos daquela
determinada variável para que o usuário escolha e faça a devida alteração, como
demonstra a figura a seguir.

39
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.3.3 Exemplo

Para exemplificar, vamos utilizar o exemplo proposto na seção IV. 2.2.3.


Vamos definir os parâmetros necessários para o problema:
- Vamos definir a base de treinamento partindo da primeira linha até a décima linha
- Como não se trata de um problema de série temporal, vamos definir “Previsão do
Elemento:” como 1

Após definido os parâmetros, clicamos então no botão Gerar Regras.

Vamos adicionar duas regras:


Entrada_X Entrada_Y Saída_Z
Se E0_2 E1_2 Então S_4
Se E0_4 E1_5 Então S_6

Vamos agora alterar a primeira regra:


Entrada_X Entrada_Y Saída_Z
De Se E0_2 E1_6 Então S_4
Para Se E0_2 E1_6 Então S_5

Vamos agora apagar a segunda regra e a nossa base de regras final será essa:

40
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.4 Base de Testes

Já com a base de regras definida, o usuário tem a possibilidade de testar essa base de regras e
testar a base de testes.
Ao se realizar qualquer um dos testes, o usuário é informado do grau de acerto que os testes
geraram usando os métodos de inferência, implicação e defuzzificação. Para realizar qualquer um
dos testes, é aconselhado que o usuário modifique os métodos a fim de saber qual a combinação
de métodos que melhor se adequará ao controle do sistema.

• Testando Regras na Base de Treinamento


A base de treinamento é a base de informações que foram usadas para primeiramente se gerar
regras. Para testar o desempenho da base de regras em cima da base de treinamento, basta
clicar no botão Testar que se encontra no módulo “Regras”.

• Testando Regras na Base de Testes


A base de testes é a base de informações que é definida para testar o desempenho do sistema de
uma forma geral.
É necessário definir em “Testes:” a base de testes, ou seja, a partir de qual linha até qual linha do
arquivo de treinamento e teste será usado para testar o sistema. Para realizar o teste, basta clicar
no botão Testar que se encontra no módulo “Testes”. Feito isso, o usuário será informado sobre o
valor esperado, o valor estimado e a porcentagem de acerto para cada linha definida na base de
testes.

41
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

Esse tipo de informação pode ser visualizado também como um gráfico, para isso basta clicar no
botão Visualizar.

IV. 2.5 Manipulando Gráfico

Quaisquer uns dos gráficos gerados pelo sistema (gráfico das variáveis e o gráfico dos testes)
podem ser manipulados da seguinte forma:

- Possibilidade de dar zoom (para isso pressione o botão direito do mouse sobre o
gráfico e arraste-o da esquerda para a direita e depois solte o botão).
- Possibilidade de movimentar o gráfico (para isso pressione o botão esquerdo do
mouse sobre o gráfico e deslize sobre a mesma).
- Possibilidade de salvar o gráfico (para isso clique com o botão esquerdo do mouse
sobre o gráfico e selecione Salvar Figura).
- Possibilidade de imprimir o gráfico (para isso clique com o botão esquerdo do mouse
sobre o gráfico e selecione Imprimir Gráfico)

IV.2.6 Visualização Rápida

O programa fornece ao usuário a opção de visualizar o arquivo de treinamento e teste carregado


preliminarmente e a opção de melhor visualizar as regras contidas na base de regras fuzzy.

• Visualizando Arquivo de Treinamento e Teste


Para visualizar o Arquivo de Treinamento e Teste, você pode clicar em [Visualizar] que se
encontra no menu e logo em seguida selecionar [Arquivo de Treinamento e Teste], ou
simplesmente marcar no atalho de visualização que se encontra na barra de ferramentas
a opção [Arquivo de Treinamento e Teste], e sempre quando quiser visualizar de uma
maneira mais rápida, basta clicar nesse atalho.

42
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

• Visualizando melhor as Regras


Para melhor visualizar as regras contidas na base de regras fuzzy, você pode clicar em
[Visualizar] que se encontra no menu e logo em seguida selecionar [Regras], ou
simplesmente marcar no atalho de visualização que se encontra na barra de ferramentas
a opção [Regras], e sempre quando quiser visualizar melhor as regras de uma maneira
mais rápida, basta clicar nesse atalho.

IV. 2.7 S a l v a n d o e Ab r i n d o T r a b a l h o s ( p r o j e t o s )

Após ter começado a desenvolver um trabalho, é recomendável que se grave o trabalho feito até
então. Para isso, vá até o menu e clique em [Arquivo] e selecione a opção [Salvar Como] ou
[Salvar], ou simplesmente clique em um dos atalhos que se encontram na barra de ferramentas.
Os arquivos salvados terão a extensão (.fzy).

Para abrir um trabalho desenvolvido pela ferramenta, vá até o menu e clique em [Arquivo] e
selecione a opção [Abrir Projeto], ou simplesmente clique no atalho que se encontra na barra de
ferramentas.

43
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

IV. 2.8 Como Imprimir

• Variáveis
Para imprimir as variáveis pertencentes ao sistema, vá até o menu e clique em [Imprimir] e
então selecione [Variáveis].
• Regras
Para imprimir as regras contidas na base de regras fuzzy, vá até o menu e clique em
[Imprimir] e então selecione [Regras].
• Testes
Para imprimir o resultado dos testes, vá até o menu e clique em [Imprimir] e então selecione
[Testes].
• Projeto
Para imprimir o projeto (Variáveis, Regras e Testes), vá até o menu e clique em [Imprimir] e
então selecione [Projeto].

Para configurar a impressão basta ir até o menu, clicar em [Arquivo] e selecionar [Configurando
Impressão].

44
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

V Al g u n s E x e m p l o s d o U s o d o S i s t e m a F u z z y R u l e s 2 0 0 1

V. 1 Controle do Caminhão

- Arquivo de Treinamento e Teste: caminhao.txt


- Definindo Variáveis:

Nome Variável Limite Limite Conjuntos Tipo da Janela


Original Inferior Superior por Variável Variável
Variável[1] Distância 0 20 5 Entrada 1
Variável[2] Phy -90 270 7 Entrada 1
Variável[3] Teta -40 40 7 Saída Não
Importa

- Regras:

- Base de Treinamento: De 1 até 10


- Previsão do Elemento: 1
- Regras Geradas:

- Adicionar Regra:

Distância Ângulo Saída


Se E0_4 E1_3 Então S_3

- Testar Regras
Resultado: Diferença percentual média = 18,8 %

- Testes

- Base de Testes: De 1 até 18


- Testar Sistema

45
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

V. 2 Controle do Guindaste

- Arquivo de Treinamento e Teste: caminhao.txt


- Definindo Variáveis:

Nome Variável Limite Limite Conjuntos Tipo da Janela


Original Inferior Superior por Variável Variável
Variável[1] Ângulo -90 90 11 Entrada 1
Variável[2] Distância -10 30 11 Entrada 1
Variável[3] Força -30 30 9 Saída Não
Importa

- Regras:

- Base de Treinamento: De 1 até 50


- Previsão do Elemento: 1
- Regras Geradas:

46
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

- Adicionar Regra:

Distância Ângulo Saída


Se E0_5 E1_1 Então S_2

- Testar Regras
Resultado: Diferença percentual média = 22,74 %

- Testes

- Base de Testes: De 1 até 69


- Testar Sistema

V. 3 Previsão de Série Temporal

- Arquivo de Treinamento e Teste: E331_1.txt


- Definindo Variáveis:

Nome Variável Limite Limite Conjuntos Tipo da Janela


Original Inferior Superior por Variável Variável
Variável[1] Carga 1284,60 3681,40 25 Entrada/Saída 3

- Regras:

- Base de Treinamento: De 1 até 100


- Previsão do Elemento: 4
- Regras Geradas:
73 regras
47
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

- Testar Regras
Resultado: Diferença percentual média = 2,47 %

- Testes

- Base de Testes: De 1 até 135


- Testar Sistema

48
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

VI Conclusões e Trabalhos Futuros

VI. 1 Conclusões

Este trabalho apresentou a implementação de uma ferramenta que utiliza o método desenvolvido por
Mendel para obtenção de uma base de regras fuzzy consistente, e conceitos de lógica fuzzy para
testar a confiabilidade dessa base de regras.
Sistemas baseados na Lógica Nebulosa têm mostrado grande utilidade em uma variedade de
operações de controle industrial e em tarefas de reconhecimento de padrões que se estendem desde
reconhecimento de texto manuscrito, até a avaliação de crédito financeiro.
O aplicativo foi testado com exemplos de controle do caminhão, controle do guindaste e alguns
exemplos de série temporal e apresentou bons resultados para esses tipos de problemas, gerando
uma base de regras consistente.

VI. 2 Trabalhos Futuros

O aplicativo pode sofrer algumas melhorias e algumas implementações afim de torna-lo mais
robusto.
O layout atual foi desenvolvido pensando em tornar visível para o usuário todos os passos de
desenvolvimento de um sistema fuzzy em uma só tela, mas poderia ser subdivido de acordo com os
módulos do aplicativo.
Implementações que podem ser desenvolvidas:
- Opção de mudança no formato dos conjuntos fuzzy (trapezoidal, senoidal, triangular,
etc).
- Opção de mudança dos vértices dos conjuntos fuzzy de cada variável
- Otimização dos conjuntos fuzzy através de Algoritmos Genéticos a fim de obter um
resultado de saída mais preciso

49
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro

VII Bibliografia

[1] Jerry M. Mendel, “Fuzzy Logic Systems for Engineering: A Tutorial, Proc. of the IEEE”, vol 83, No.
3, March 95.
[2] Earl Cox, “The Fuzzy Systems Handbook: A Practitioner's Guide to Building, Using, and
Maintaining Fuzzy Systems”, AP Professional, 1994.
[3] Constantin Von Altrock, “Fuzzy Logic & NeuroFuzzy Applications Explained”, Prentice-Hall PTR,
1995.
[4] George J. Klir e Tina A. Folger, “Fuzzy Sets, Uncertainty and Information”, Prentice Hall
International, 1988.
[5] Lefteri H. Tsoukalas e Robert E. Uhrig, “Fuzzy and Neural Approaches in Engineering”, Volume 1
[6] H.-J. Zimmermann, “Fuzzy Set Theory and its applications”, Volume: 1 - Edição: 2
[7] Li-Xin Wang, “Adaptive Fuzzy Systems and Control - Design and Stability Analysis”, Volume 1
[8] Lofti A. Zadeh, “A Computational Theory of Dispositions Int. J. Intelligent Systems”, Volume 2,
1987, pp. 39-63
[9] Lofti A. Zadeh, “Fuzzy Sets Inf. Control”, Vol. 8, 1965, pp. 338-353
[10] Lx. Wang and JM Mendel, Paper “Generating Fuzzy Rules by Learning from Examples”
[11] Notas de aula

50

Você também pode gostar