Escolar Documentos
Profissional Documentos
Cultura Documentos
CTC
FEURJ
DESC
Projeto de Graduação
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
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
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
7
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro
II Inteligência Computacional
II. 1 Introdução
8
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro
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
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
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.
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”.
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
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.
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)
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
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.
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].
16
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro
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
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
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
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. 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.
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.
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.
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.
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.
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.
(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
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)
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.
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
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
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.
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
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.
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
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]
.
.
.
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
• 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
...
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
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.
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.
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
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.
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
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.
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.
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
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.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
• 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
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
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.
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.
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)
42
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro
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
• 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
- Regras:
- Adicionar Regra:
- Testar Regras
Resultado: Diferença percentual média = 18,8 %
- Testes
45
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro
V. 2 Controle do Guindaste
- Regras:
46
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro
- Adicionar Regra:
- Testar Regras
Resultado: Diferença percentual média = 22,74 %
- Testes
- Regras:
- Testar Regras
Resultado: Diferença percentual média = 2,47 %
- Testes
48
Marcos Neves do Vale Universidade do Estado do Rio de Janeiro
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.
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