Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
br
[verso para impresso]
Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=32444
valores? Para responder a estas perguntas, o presente artigo apresenta os conceitos, modelagem e aplicaes prticas da
lgica fuzzy, tcnica utilizada para que processos automatizados se apropriem de particularidades do raciocnio humano,
como o processo decisrio multidisciplinar e a ponderao imprecisa.
Diariamente, precisamos lidar com informaes que, por sua natureza, no podem ser representadas por valores numricos
precisos e, apesar disso, precisamos ter a habilidade de analis-las para tomarmos nossas decises. So informaes que,
embora possam ser mensuradas, envolvem certo grau de incerteza e interpretao subjetiva, sujeitas a concluses
divergentes se apuradas por diferentes indivduos.
Por exemplo, quando precisamos nos deslocar de um ponto para outro no pensamos no nmero de passos que teremos de
caminhar para decidir se tomaremos um nibus ou se iremos a p, analisamos somente se o destino perto ou longe.
Neste contexto, os termos perto e longe esto, portanto, intrinsecamente ligados medida de distncia, mas de uma
forma subjetiva e imprecisa. O que para um indivduo considerado perto, para outro pode ser longe.
A maneira como interpretamos e analisamos estes conceitos ocorre de forma subjetiva, uma caracterstica do raciocnio
humano. Esta abstrao e a impreciso nela envolvida nos permitem, porm, levantar um interessante questionamento: a
partir de qual nmero de passos um determinado destino deixa de ser considerado perto e passa a ser considerado longe?
Para ilustrar melhor esse cenrio, imagine que uma pessoa esteja dentro de sua casa. Em um dado momento, ela comea a
caminhar e se afasta de casa, um nico passo de cada vez. A cada passo, ela analisa se a distncia para retornar para casa
considerada como perto ou longe. Em que momento especfico a distncia percorrida deixa de ser considerada perto e
passa ser considerada longe? Um nico passo percorrido entre um instante e outro poder fazer diferena em sua
avaliao, ou seja, um destino considerado perto, com um passo a mais, poder passar a ser considerado longe?
Este mesmo raciocnio foi empregado no sculo IV a.C. pelo filsofo Eubulides de Mileto, na proposio que ficou conhecida
como Paradoxo Sorites. Ele questiona: quando um monte de areia deixa de ser um monte de areia, caso retiremos um
gro de cada vez?. Em sua proposio, ele define que se n gros de areia so um monte, tambm o seriam (n1) gros.
Ou seja, um nico gro de areia no deveria fazer diferena nesta classificao. O mesmo se diz do cenrio oposto: um
gro de areia no faz um monte, e adicionando mais um nico gro, tambm no faria diferena. Mas isso significa, por
induo, que nunca teremos um monte de areia, por mais que juntemos os gros um a um.
Outro exemplo que demonstra como a impreciso est inerentemente presente em problemas no mundo real se refere ao
clssico cenrio de classificao de um copo como cheio ou vazio (Figura 1). Considere que um copo esteja inicialmente
vazio e gradativamente vai sendo preenchido com gua, uma nica gota sendo adicionada a cada vez. At que momento
poderamos dizer que o copo est vazio? A partir de que momento especfico este copo poderia ser considerado cheio?
Figura 1. Em que momento o copo deixa de ser considerado vazio, e passa a ser considerado cheio?
De fato, o que ocorre que, assim como um nico gro de areia no poder afetar de imediato a classificao no cenrio
ilustrado pelo Paradoxo Sorites, tambm no poder faz-lo aps uma nica gota ser adicionada ao copo, ou aps um nico
passo percorrido, no exemplo anterior. No mundo real, a impreciso est inerentemente presente nestas situaes. Nestes
cenrios, tanto o copo quanto o monte de areia no podem ser considerados, de imediato, como transitados de um
conjunto (vazio) para o outro (cheio), aps adicionar uma nica unidade. Na realidade, a cada unidade adicionada, esta
classificao gradativamente vai deixando de pertencer a um conjunto (ou categoria), e aumentando sua participao (ou
pertinncia) no conjunto adjacente. Ou seja, a cada gota adicionada, o copo gradativamente vai deixando de ser
considerado vazio, e aumentando a sua correspondncia com o que se define como sendo considerado cheio.
Na rea de computao, porm, comum buscarmos representaes precisas para modelar este tipo de cenrio,
desenvolvendo algoritmos que tentam quantificar estes fatores utilizando valores precisos. Nestes casos, muitas vezes
especificado um valor limtrofe, a partir do qual a classificao para o cenrio muda de um conjunto para o outro, ignorando
sua natureza invariavelmente imprecisa, podendo ocasionar perda de informaes importantes que deixaram de ser
consideradas. Por exemplo, um processo tradicional de classificao poder arbitrar como longe a distncia entre dois
pontos a partir de um valor pr-estabelecido, no permitindo ponderaes subjetivas.
A lgica fuzzy, tambm conhecida como lgica nebulosa ou difusa, uma tcnica da rea de inteligncia computacional que
nos permite representar modelos que contenham certo grau de incerteza ou impreciso, caractersticas de situaes do
mundo real. Estas tcnicas nos permitem codificar softwares que representem algoritmos mais prximos da forma como
funciona o raciocnio humano, obtendo resultados satisfatrios uma vez que valores limtrofes e incertezas do modelo no
so ignorados. Na lgica fuzzy, diferentemente da lgica clssica, um elemento pode pertencer parcialmente a um
conjunto.
O surgimento do conceito de conjuntos fuzzy atribudo Lotfi Zadeh, da Universidade da Califrnia, que, em 1965, lanou
o artigo Fuzzy Sets, introduzindo o assunto no meio acadmico [1]. Os precursores no uso prtico desta tcnica em
projetos so os japoneses, construindo um dos primeiros sistemas de controle fuzzy de uso crtico na estrada de ferro de
Sendai, no Japo, no ano de 1987, controlando acelerao, frenagem e parada das composies nas estaes metrovirias.
Sistemas baseados em lgica fuzzy podem ser utilizados em praticamente todas as reas de conhecimento, como
engenharia, matemtica, biologia, medicina, etc. Como exemplos de sua utilizao prtica, podem ser citados os seguintes
tipos de sistemas: de controle embarcado, de apoio deciso, de reconhecimento de faces ou de padres, de diagnstico
mdico, de previso do tempo, de clculo e gerenciamento de risco, de controle de trfego, de conduo de veculos
autnomos e de diversas outras finalidades [2]. O universo dos sistemas de controle embarcados um caso especial, pois
os exemplos so facilmente encontrados em nosso dia-a-dia. Diversos equipamentos domsticos e urbanos possuem
modelos que contemplam a lgica fuzzy em suas diretrizes internas [3], tais como: mquinas de lavar, aspiradores de p,
televisores, caixas registradoras, sistemas de alarme, copiadoras, micro-ondas, foco automtico em cmeras fotogrficas,
etc.
Uma das reas de aplicao em que tcnicas de lgica fuzzy so fortemente empregadas a de desenvolvimento de jogos
de computador, em funo de sua caracterstica de tentar reproduzir em um ambiente virtual particularidades do mundo
real, inclusive suas imprecises e aleatoriedades.
Sistemas que utilizam lgica nebulosa podem ter suas instrues em software e utilizar processadores de uso geral,
optando por um custo mais baixo; ou ter suas instrues presentes em hardware em Circuitos Integrados de Aplicao
Especfica (Application Specific Integrated Circuits), que acarreta em custos mais elevados, porm obtm um
processamento mais rpido.
Este artigo apresenta os principais conceitos sobre lgica fuzzy e sistemas de inferncia fuzzy, demonstrando como utilizar
estas tcnicas em sistemas Java com o componente JFuzzyLogic. Para ilustrar estes conceitos so apresentados dois casos
hipotticos: a modelagem de um sistema de apoio a deciso da rea de RH de uma empresa; e um simulador baseado em
um sistema de inferncias fuzzy, que utiliza uma base de regras para representar o algoritmo de conduo de um veculo
em direo a uma vaga de estacionamento.
Tradicionalmente, uma proposio lgica clssica possui dois extremos: ou a premissa completamente falsa, ou
completamente verdadeira. S existe um resultado possvel. Portanto, na matemtica clssica, a funo que define se um
elemento pertence ou no pertence a um determinado conjunto somente poder assumir os valores 0 (falso), ou 1
(verdadeiro), conforme a Figura 2.
consider-lo como parcialmente verdadeiro, ou parcialmente falso. Isto , um elemento pode pertencer parcialmente a
um conjunto. Desta forma, a funo de pertinncia (x) de um elemento a um conjunto fuzzy pode assumir infinitos
valores no intervalo [0,1], entre o totalmente falso e o totalmente verdadeiro, conforme descrito na Figura 3.
intervalo [0,1], que descreve a possibilidade do elemento pertencer a este conjunto. Quanto maior o valor, mais compatvel
o elemento ser em relao ao conjunto que o descreve.
Como o elemento pode pertencer parcialmente a um conjunto, possvel haver uma transio gradual da classificao de
um elemento entre um conjunto e outro. Ou seja, entre o falso e o verdadeiro que definem se um elemento pertence a um
conjunto na matemtica clssica, infinitos valores podem ser assumidos utilizando a lgica fuzzy (Figura 4).
Figura 4. Ilustrao com representao conceitual da pertinncia entre conjuntos clssicos e as infinitas possibilidades
tratadas pela lgica nebulosa.
Retornando ao exemplo apresentado pelo Paradoxo Sorites, a cada gro de areia adicionado, o cenrio gradativamente
aumenta sua participao no conjunto que o descreve como um monte de areia, aumentando o valor do seu grau de
incluso neste conjunto.
Podemos observar cenrios desta natureza em diversas situaes cotidianas como, por exemplo, quando precisamos
classificar um determinado indivduo por sua faixa etria. Para ilustrar, tomemos como base a classificao oficialmente
utilizada pelo Instituto Nacional do Semirido (INSA), em que a populao brasileira classificada conforme o seguinte
critrio, ilustrado na Figura 5.
http://www.insa.gov.br/censosab/index.php?option=com_content&view=article&id=101&Itemid=100
Este exemplo demonstra claramente um modelo em que so definidos valores limtrofes entre os conjuntos, de maneira
que a classificao de um indivduo em cada faixa etria sofrer transies abruptas medida que sua idade avana.
Segundo a tabela, uma pessoa com 11 anos, 11 meses e 30 dias considerada como uma criana. Mas, no dia seguinte, ao
completar doze anos, esta mesma pessoa ser diretamente reclassificada como adolescente, mesmo que no tenham
ocorrido mudanas biolgicas ou psicomotoras em sua constituio neste curto perodo de um dia transcorrido (um nico
gro de areia, na analogia do Paradoxo Sorites). De fato, assim como ocorre com os gros de areia, a pessoa, a cada dia
que passa, vai gradativamente mudando sua participao (grau de incluso) de um conjunto para o outro.
Na matemtica clssica, esta classificao poderia ser descrita pelo diagrama exposto na Figura 6.
indivduo avana. Podemos observar que o conjunto adolescente assumiu um formato trapezoidal, iniciando-se a partir dos
10 anos, com um grau de pertinncia zero, aumentando gradativamente at chegar a um pico aos 14 anos (onde um
indivduo ser claramente definido como adolescente) com grau de pertinncia igual a um, e depois diminuindo medida
que sua classificao transita para o conjunto seguinte, chegando novamente ao valor zero aos 21 anos.
Portanto, podemos definir que, neste exemplo, uma pessoa de treze anos pertence aos conjuntos Criana e Adolescente
em diferentes graus de incluso, mas no pertence aos conjuntos Adulto e Idoso, pois nestes dois ltimos casos o grau
de pertinncia zero. Este indivduo com treze anos pertence predominantemente ao conjunto adolescente, mas no
deixando de ser, porm, classificado tambm como criana em um menor grau de pertinncia.
Este modelo de representao aproxima-se da forma como o entendimento humano naturalmente compreende as
imprecises inerentemente presentes nas situaes cotidianas, pois no h fronteiras nitidamente definidas entre os
conjuntos, e facilita a maneira como podemos represent-las ao traduzi-las em algoritmos matemticos.
Uma vez apresentado como os conjuntos fuzzy podem ser utilizados para representar as incertezas e imprecises de um
modelo, necessrio compreender como se dar a modelagem de um algoritmo que ir utiliz-los em um sistema real.
Sistemas de inferncia fuzzy, ou Fuzzy Inference Systems (FIS), buscam representar a modelagem do raciocnio humano
em forma de regras, ao invs de um algoritmo explicitamente restrito a modelos matemticos exatos.
Comumente, quando procuramos expressar nosso raciocnio, naturalmente desenvolvemos uma descrio no formato de
um conjunto de implicaes lgicas, do tipo se (antecedente) ento (consequente). medida que a descrio se
desenvolve, combinamos diversas sentenas atravs da utilizao de operadores lgicos e e ou, como na sentena a
seguir: se (antecedente1) e (antecedente2) ento (consequente).
Para exemplificar, consideremos um cenrio hipottico de um sistema de controle de velocidade de um veculo, que analisa
sua velocidade atual e se existe algum obstculo sua frente (como outro veculo), para ento decidir a acelerao final ou
frenagem a ser empregada, conforme o caso. Naturalmente, se houver algum obstculo, o veculo dever frear, seno
dever acelerar, at atingir uma velocidade de cruzeiro satisfatria.
Neste cenrio, poderamos formar a seguinte proposio, considerando como entrada as variveis velocidade e distncia do
obstculo: se (velocidade alta) e (obstculo perto) ento (acelerao frear). Neste caso, analisando as entradas, o
sistema decidir que o veculo deve acionar a frenagem (acelerao negativa) caso haja um obstculo sua frente e sua
velocidade seja considerada alta. Observe que as regras foram descritas sem utilizar valores precisos como entrada, mas
apenas os conjuntos (ou parties) fuzzy que descrevem o intervalo lgico a ser considerado em cada proposio. Na lgica
tradicional, esta regra provavelmente seria descrita como: se (velocidade > 100km\h) e (obstculo< 50m) ento
(acelerao = -3m\s).
Cabe destacar, porm, que na lgica clssica, uma sentena somente seria inferida caso todas as suas condies fossem
verdadeiras. Isto ocorre de forma diferente nos sistemas de inferncia fuzzy, pois as premissas assumem graus de verdade.
Isto se reflete no resultado do processamento da sentena. Portanto, quanto maiores os graus de incluso das variveis de
entrada (velocidade e distncia do obstculo), maior ser o grau de incluso da varivel de sada no conjunto
correspondente, permitindo que a ao de acelerao ou frenagem possa ser executada de maneira suave e progressiva.
O conjunto de regras pode ser considerado como o principal elemento de um sistema de inferncias fuzzy, uma vez que
representa a descrio do conhecimento de um especialista a respeito do problema a que o sistema se prope a tratar. O
BOX 1 ilustra a arquitetura geral de um sistema de inferncia fuzzy.
BOX 1. Arquitetura de um Sistema de Inferncias Fuzzy
A arquitetura de um sistema de inferncia fuzzy possui quatro componentes principais: um processador de entrada (fuz
zyfier), que transforma os dados de entrada precisos em representaes nebulosas; uma base de conhecimento, repres
entada pelas variveis nebulosas, suas funes de pertinncia e um conjunto de regras descritas por um especialista; u
ma mquina de inferncia fuzzy, responsvel pela avaliao das regras e inferncia da sada; e um processador de sad
a (defuzzifier), que fornece um nmero real como sada da inferncia. A Figura 8 ilustra conceitualmente a arquitetura
geral de um sistema de inferncias fuzzy.
nebulosos (fuzzification). Estes so processados pelo ncleo de clculo, em funo do mapeamento de regras definidas e
ento, transformados novamente em dados precisos (defuzzification), que so retornados como sada pelo sistema de
inferncias. importante destacar que tanto as entradas como a sada de um sistema de inferncias fuzzy so valores
numricos, que so internamente processados utilizando-se definies fuzzy.
O exemplo a seguir um estudo de caso simples [4], que demonstra como realizado o processo completo de modelagem
de uma funcionalidade utilizando lgica fuzzy. Hipoteticamente, a necessidade sinalizada pelo setor de RH de uma
empresa, informando que preciso agregar uma nova funcionalidade ao sistema atual. O objetivo da nova funcionalidade
poupar o analista de RH da tarefa de determinao dos valores de gratificaes dadas aos funcionrios, evitando a
parcialidade e promovendo a iseno reivindicada pelo quadro de funcionrios insatisfeitos.
Atualmente, o especialista (analista de RH) atem-se a dois critrios: tempo de experincia e tempo de
Consultando mais detalhadamente o especialista, fonte de informao fundamental em um projeto com lgica fuzzy, o
projetista conclui que os critrios de experincia e de capacitao sero usados como variveis de entrada do sistema,
sendo a experincia expressa entre 0 e 30 anos, enquanto o tempo de capacitao expresso entre 0 e 15 anos. A
gratificao a varivel de sada, com valores entre R$0,00 e R$1.000,00. Estes intervalos so conhecidos como o universo
de discurso das variveis.
A prxima etapa do projeto particionar o universo de discurso, ou seja, segmentar os intervalos de modo a poder atribuir
a cada um deles um termo lingustico. Tais termos so a representao de como o especialista compreende as divises
internas dos critrios. Sendo assim, o especialista definiu que a varivel de entrada experincia se divide em trs
segmentos: pouca, mdia e muita; conforme a Figura 9. A varivel de entrada capacitao seguiu uma diviso similar em
trs parties: fraca, mdia e forte; conforme a Figura 10. E a sada, representada pela varivel gratificao, foi dividida
em cinco termos: muito baixa, baixa, mdia, alta e muito alta; conforme a Figura 11.
Com os intervalos e suas parties j especificados, o projetista precisa definir a forma dos conjuntos fuzzy, ou seja, a
geometria da rea de incluso dos conjuntos, podendo ter diversas feies como: triangular, trapezoidal, gaussiana, etc.;
sendo a mais simples e usual a forma triangular de comportamento linear. Os critrios usados para a seleo da forma do
conjunto podem ser imprecisos e incertos, por isso geralmente eles so selecionados atravs de tentativa e erro, atravs de
experimentao continuada. Para os objetivos deste exemplo, foi arbitrada a feio triangular para todos os conjuntos.
parcialmente Mdia e parcialmente Forte, pois existe um grau de incluso para estes dois conjuntos, sendo mais
presente em Mdia. De forma similar, algum com uma experincia de 20 anos estaria includo nos conjuntos Mdia e
Muita. Nota-se que os conjuntos de pertinncia, ou seja, as formas triangulares, encaminham a ponderao feita pela
lgica fuzzy, determinando a proporo de incluso nos critrios especficos.
Na sequncia, o especialista determina as regras que direcionaro a deciso feita pelo sistema. A constituio das mesmas
se faz com o encadeamento de condies e uma concluso, na forma: SE <condio1> E <condio2> ENTO
<concluso>. A concluso indica a qual conjunto a varivel de sada pertence. As regras para o problema de valorao de
gratificao, definidas pelo especialista, so as seguintes:
utilizando uma linguagem qualquer e uma API especialista que ser responsvel pela fuzzificao e defuzzificao. A API
receber as regras e os conjuntos fuzzy como parmetros alm das variveis de entrada, de forma que gere a varivel de
sada gratificao. Existem diversas APIs disponveis para executar a tarefa, sendo a JFuzzyLogic a indicada aqui.
Uma viso segmentada do processo de fuzzificao e defuzzificao pode ser observada no diagrama da Figura 12, onde
avaliado o caso de um profissional com 10 anos de capacitao e 20 anos de experincia. O processo usa a capacitao e a
experincia informada para rastrear as regras que foram ativadas e conclui que o profissional merecedor de uma
gratificao de R$600,00. Observando as regras j definidas e o diagrama da Figura 12, nota-se que as regras 5, 6, 8 e 9
foram ativadas por atenderem as condies impostas. Por exemplo, a regra 5 foi ativada porque atendeu s duas condies
necessrias: a capacitao Mdia e a experincia Mdia, levando a varivel de sada gratificao a ter um valor
proporcional ao grau de incluso das duas condies atendidas. O grau de incluso obtido no conjunto de sada em cada
regra, representado pela rea em negrito dos tringulos da varivel gratificao, definido por um clculo matemtico de
responsabilidade da API. Com os graus de incluso dos conjuntos fuzzy de gratificao j ponderados pela API (terceira
coluna na direita do diagrama), a defuzzificao efetuada, gerando a sada nica, que o valor de gratificao esperado
como resultado final do processo de deciso nebuloso.
executados pela API, de maneira que cada mtodo efetua sua formulao matemtica prpria. O que ocorre no interior da
API, como esperado, fica totalmente transparente para o projetista e seu detalhamento no faz parte do escopo deste
trabalho. Caso o leitor deseje saber mais, preciso um estudo mais aprofundado por parte do mesmo em literatura
especializada [1].
O exemplo da determinao do valor de gratificao, apoiado pela lgica fuzzy, esclarece o processo de modelagem de uma
soluo orientada a regras de negcio, encontrada no dia-a-dia de muitos sistemas corporativos. No prximo exemplo,
mais extenso, o enfoque ser dado a um sistema de controle, onde a modelagem, a formulao matemtica e a codificao
so bem detalhadas.
Para demonstrar na prtica a construo de um sistema fuzzy, ser apresentada a implementao em Java de um
controlador baseado no clssico problema do estacionamento de um veculo, amplamente referenciado na literatura tcnica
acadmica [5]. Este controlador utiliza um sistema de inferncias baseado em regras para conduzir um veculo autnomo
em direo a um local predeterminado, representado por uma vaga de estacionamento.
O simulador ser desenvolvido em dois passos: o primeiro corresponde implementao do controlador fuzzy, que o
ncleo de inferncias, que efetivamente processa as entradas e a sada em cada passo, e o responsvel por calcular a
trajetria do veculo. O segundo passo o simulador grfico, utilizado para testar e validar o comportamento do
controlador fuzzy, permitindo ao usurio visualizar a trajetria percorrida e efetuar ajustes na modelagem dos parmetros
do controlador, caso necessrio.
O objetivo do simulador estabelecer um algoritmo inteligente capaz de guiar um veculo, localizado em uma determinada
posio do ptio, em direo a uma vaga de estacionamento previamente demarcada. O veculo pode estar em uma
determinada posio x em relao ao eixo horizontal, e rotacionado em um ngulo em relao a este eixo. O sistema de
inferncias fuzzy ir atuar como se fosse o motorista do veculo, especificando o ngulo em que a roda deve ser girada para
que o veculo seja guiado em direo ao local definido. A condio de parada que o veculo esteja localizado na posio
central em relao ao eixo horizontal, e alinhado perpendicularmente a este eixo, na rea demarcada como sendo a vaga
de estacionamento.
especialista humano. Neste caso, o especialista que poder descrever como um veculo deve ser estacionado seria um
motorista. Para descrever os passos necessrios, basicamente ele explicaria que: se o veculo est localizado direita do
ponto de destino, o volante deve ser girado para a esquerda; se o veculo est direita, o volante deve ser girado para a
esquerda. Se o veculo, porm, estiver alinhado com a vaga de estacionamento, o volante deve ser mantido na posio
central, para o veculo seguir em frente. As regras devem considerar ainda o ngulo do veculo em relao ao ponto de
destino, que deve ser rotacionado para que fique alinhado verticalmente na vaga de estacionamento.
Dito isso, inicialmente iremos identificar as parties fuzzy para cada varivel de entrada e estabelecer o conjunto de regras
para representar o conhecimento do motorista na forma de um sistema de inferncias fuzzy.
Neste cenrio, consideraremos duas variveis de entrada: a posio x (distncia no eixo horizontal), e (ngulo do veculo
em relao ao eixo horizontal). O sistema de inferncias ir calcular o valor da varivel de sada (ngulo da roda do
veculo), que corresponde direo em que o veculo deve ser encaminhado enquanto se desloca a cada passo. A condio
de parada de que ele deve estar posicionado dentro da rea demarcada (posio central no eixo horizontal), em um
ngulo de aproximadamente 90 (ngulo vertical). Para simplificao do problema, a posio y do veculo no ser
considerada no clculo da inferncia. A Figura 13 representa as variveis de entrada e sada consideradas pelo simulador.
Figura 13. Esquema das variveis de entrada e sada consideradas pelo controlador fuzzy.
Ao iniciar a simulao, o veculo deve ser automaticamente direcionado por uma trajetria que o conduza para a posio
final determinada pela vaga no estacionamento. O deslocamento do veculo simulado pelo sistema em uma sequncia de
passos, de forma que a cada passo o sistema de inferncias receba como entrada a posio x e o ngulo , e calcule o
ngulo para a roda. A nova posio x e o novo ngulo do veculo sero, portanto, atualizados em funo do valor
retornado pelo controlador. A varivel w a constante que representa a distncia fixa em que o veculo deslocado a cada
passo.
A Figura 14 descreve as funes que determinam como o veculo ser movimentado a cada passo. Estas equaes de
deslocamento sero utilizadas pelo simulador grfico para movimentar o veculo em sua trajetria calculada pelo
controlador.
Cabe destacar que no passo seguinte da iterao as variveis x e atualizadas sero novamente submetidas como
entradas para o controlador, e um novo valor de sada ser calculado em cada passo. Este lao de repetio ser
executado at que a condio de parada seja atendida: a posio x deve estar prxima ao ponto central, e o ngulo
prximo a 90.
Figura 14. Equaes que descrevem as funes de movimento do veculo a cada passo.
O processo de construo e modelagem de um sistema de inferncias fuzzy ocorre de maneira iterativa. Neste cenrio, o
sistema deve ser submetido a diversos testes e ajustes em seus parmetros de modelagem, at que os resultados obtidos
sejam satisfatrios.
Uma vez construdo o controlador fuzzy, utiliza-se um ambiente de simulao que fornece uma interface para visualizar
graficamente a resposta do controlador em funo dos valores de entrada, permitindo uma melhor interpretao dos
resultados para providenciar os ajustes necessrios. A interface grfica para o ambiente de simulao objetiva reproduzir
todos os requisitos que foram especificados na construo do controlador fuzzy, simulando um ambiente prximo ao real
para a execuo dos testes. Obtendo-se resultados satisfatrios, o controlador poder ento ser implantado definitivamente
no dispositivo ou software para o qual foi projetado.
A Figura 15 ilustra a interface grfica proposta para o simulador, demonstrando a imagem estilizada do veculo a ser
movimentado, os botes para permitir o incio/pausa da simulao, o boto para rotao do veculo em ambas as direes
e a opo para habilitar o recurso de rastro de trajetria. O boto de rastro possibilita visualizar as diferentes trajetrias
percorridas pelo veculo em sucessivas simulaes. Ademais, o veculo pode ser arrastado com o mouse para qualquer
posio da tela, e rotacionado a partir dos botes de rotao, para determinar a configurao inicial da simulao. Esta
interface construda com Swing e utiliza recursos simples de Java2D para posicionamento e rotao do veculo.
No canto superior direito, um quadro apresenta a situao atual das variveis envolvidas na simulao: a posio do
O Controlador Fuzzy corresponde ao ncleo de inferncias responsvel por calcular o valor apropriado para a sada, a partir
dos valores fornecidos como entrada, considerando os parmetros definidos em uma base de conhecimento fuzzy. Neste
caso, o controlador ir determinar o ngulo da roda em funo da posio x e do ngulo de rotao do veculo.
Este ncleo de processamento deve ser independente de interface grfica. Ou seja, objetiva-se que o controlador possa ser
desenvolvido, testado e ajustado de maneira a ser posteriormente implantado em um sistema especfico, seja ele um
sistema embarcado (em um veculo autnomo), um carrinho de brinquedo ou um jogo de computador, por exemplo. Se os
critrios utilizados na modelagem permanecerem vlidos, o controlador dever responder da mesma forma em quaisquer
desses ambientes.
O primeiro passo para a construo do sistema de inferncias determinar as parties nebulosas (ou conjuntos) em que
cada varivel de entrada pode ser dividida. Cada partio representa um intervalo de dados em que o universo de discurso
poder ser dividido, e possui um termo lingustico a ela associada.
Recorrendo ao exemplo anterior da classificao etria da populao, a varivel idade foi dividida em quatro parties
nebulosas, definidas pelos termos lingusticos: criana, adolescente, adulto e idoso. Cada partio possui um intervalo de
dados vlido para cada faixa etria.
De forma semelhante, necessrio dividir as variveis de entrada em parties que representem a localizao e a rotao
do veculo, assim como o ngulo da roda a ser calculado como sada. Esta diviso feita de forma a representar a maneira
como o entendimento humano interpreta o universo de possibilidades para cada varivel, e determinada pelo especialista
podendo ocupar diferentes regies neste eixo. Analisando subjetivamente o intervalo de dados, poderamos estabelecer, a
princpio, que o veculo pode estar localizado em uma posio central neste eixo, ou estar localizado esquerda, ou
direita. Especificando um pouco melhor as possibilidades, podemos inserir mais duas regies (ou parties) a este cenrio:
a posio centro-esquerda e a posio centro-direita, localizadas respectivamente entre as posies central e esquerda, e
central e direita.
O universo de discurso referente posio x pode ser ento subdividido em cinco parties nebulosas: esquerda (LE),
centro-esquerda (LC), centro (CE), centro-direita (RC) e direita (RI). Cada partio representa um intervalo em que o
veculo pode ser posicionado. Neste exemplo, assumiremos que o eixo horizontal possui 100 pontos no total (universo de
discurso) e os intervalos para cada partio nebulosa poderiam ser especificados conforme a Figura 16, onde a posio
central concentra-se no entorno do ponto x=50.
definem o intervalo vlido para cada conjunto. O conjunto CE, por exemplo, comea no ponto x=45 com grau de incluso
zero, chega a um pice no ponto x=50, que possui grau de incluso igual a um, e por fim, no ponto x=55, retorna ao grau
de incluso zero. Esta funo triangular, portanto, definida pelos pontos {45, 50, 55}.
Seguindo a mesma linha de raciocnio, deve-se estabelecer as parties para a varivel ngulo do veculo (),
considerando que o veculo pode estar rotacionado em um ngulo qualquer dentro do universo de discurso de 360. Para
que o veculo seja corretamente estacionado, ele deve estar alinhado com a vaga de estacionamento, de maneira
perpendicular ao eixo horizontal e, portanto, em um ngulo de 90. Desta forma, a primeira regio facilmente identificvel
a que representa o ngulo vertical do veculo (VE), situada no entorno de 90. A partir dela, podemos especificar as
demais parties, medida que o veculo estiver rotacionado um pouco mais para a direita ou para a esquerda. Neste caso,
optou-se por considerar o universo de discurso no intervalo entre -90 e 270, totalizando 360, para que o conjunto
vertical, correspondendo ao ngulo de 90, possa ser representado no centro das demais parties. A Figura 17 ilustra
graficamente como estas parties esto dispostas ao longo do universo de discurso, tomando por base a posio vertical
como referncia inicial, alinhada vaga de estacionamento. Observa-se que entre as parties as fronteiras no so
claramente definidas, ou seja, existe uma gradao na transio entre as parties.
Figura 17. Representao grfica das parties para a varivel rotao do veculo ().
Desta forma, as seguintes possibilidades poderiam ser consideradas para as parties nebulosas da varivel : inferior-
direito (RB), superior-direito (RU), vertical direita (RV), vertical (VE), vertical esquerda (LV), superior esquerda (LU) e
inferior esquerda (LB). Os intervalos de dados esto descritos conforme ilustrado pela Figura 18.
Para a varivel de sada , que corresponde ao ngulo da roda, optou-se por criar sete parties para subdividir o universo
de discurso, que se situa no intervalo entre -30 a +30. Em termos gerais, esta varivel define o quanto a roda deve ser
girada para a direita, para a esquerda, ou mantida alinhada ao centro, para direcionar o veculo ao local desejado. A roda
alinhada ao centro, no entorno do ngulo de rotao de 0, representada pela partio Zero (ZE). As demais parties
foram definidas tomando esta por referncia, caso a roda seja girada em maior ou menor ngulo, positivo (para a
esquerda) ou negativo (para a direita). Portanto, as seguintes parties foram especificadas para esta varivel (Figura
19): negativo grande (NB), negativo mdio (NM), negativo pequeno (NS), zero (ZE), positivo pequeno (PS), positivo mdio
(PM) e positivo grande (PB).
posteriormente, no tpico que apresenta a implementao do controlador, para definir os parmetros necessrios aos
clculos da inferncia.
RB
LE
NB
RU
LC
NM
RV
CE
NS
VE
RC
ZE
Zero (-5, 0, 5)
LV
RI
OS
LU
PM
LB
PB
veculo
da roda
-30, -15)
-15, -5)
-5, 0)
10)
25)
30)
Uma vez definidos todos os conjuntos fuzzy para as variveis de entrada e de sada, o prximo passo definir o conjunto
de regras do sistema de inferncias fuzzy, que correlaciona as implicaes lgicas entre os conjuntos de entrada
(condies) e o conjunto de sada (consequncia).
Estas regras so construdas semelhana de como seria o raciocnio de um condutor humano nesta situao. Ou seja: se
o veculo estiver esquerda da vaga, a roda dever ser girada para a direita. Se o veculo estiver alinhado com o centro da
vaga, o ngulo da roda deve ser mantido.
Depois, algumas regras devem ser combinadas para concluir a lgica da inferncia: se o veculo estiver localizado na
posio central, mas estiver rotacionado um pouco direita (ngulo menor que 90), ento a roda deve ser girada um
pouco esquerda (em um ngulo positivo), para redirecionar o veculo.
Estas regras so ento transcritas na forma de sentenas lgicas que correlacionam as parties definidas para as variveis
de entrada com sua correspondente consequncia lgica da varivel de sada.
Utilizando as definies anteriormente descritas para as parties fuzzy, o exemplo acima seria transcrito como: se o
veculo estiver localizado na posio central (CE) e estiver rotacionado um pouco direita, em ngulo menor que 90 (RV),
ento a roda deve ser girada um pouco em um ngulo positivo (OS), para redirecionar o veculo. Isto , a regra para o
controlador fuzzy seria interpretada como: se (posio x CE) e (ngulo do veculo RV) ento (ngulo da roda OS).
A Tabela 2 descreve uma configurao completa utilizada para esta base de regras, que determina o comportamento do
algoritmo do veculo. Observe que o nmero de regras resultado da combinao direta entre o nmero de conjuntos fuzzy
disponveis nas variveis de entrada. Portanto, uma vez que a varivel posio x possui cinco conjuntos, e a varivel
ngulo do veculo possui sete conjuntos, teremos um total de 35 regras descritas para definir a cobertura de regras
completa para todas as situaes possveis. A Tabela 2 deve ser lida da seguinte maneira:
Se (x LE) e ( RB) ento ( PS);
LE
LC
CE
RC
RI
RB
PS
PM
PM
PB
PB
RU
NS
OS
PM
PB
PB
RV
NM
NS
OS
PM
PB
VE
NM
NM
ZE
PM
PM
LV
NB
NM
NS
OS
PM
LU
NB
NB
NM
NS
OS
LB
NB
NB
NM
NM
NS
Tabela 2. Base de regras para o sistema de inferncias, combinando as entradas para determinar o valor de .
Cabe destacar que no modelo do simulador ocorre um retro-processamento. Ou seja, a cada iterao, o sistema de
inferncias avalia as regras descritas para a posio atual das variveis de entrada e retorna um valor de sada. As
variveis de entrada (posio e ngulo do veculo) so atualizadas em funo do ngulo da roda calculado pelo controlador,
e no passo seguinte so novamente submetidas para processamento pelo sistema de inferncias. Por isso, durante o trajeto
do veculo, diferentes regies e regras sero ativadas, at que a condio de parada do veculo seja atendida.
A base de regras inicialmente construda a partir da representao do raciocnio de um especialista, e deve ser ajustada
em sucessivas iteraes at que os resultados sejam satisfatrios. Portanto, em sistemas fuzzy, fundamental que sejam
executados diversos ciclos de testes e ajustes nos parmetros de configurao para que se possa obter os resultados
desejados. Observado os resultados dos testes, deve-se avaliar se a base de regras est correta e oportunamente
promover ajustes no formato ou no intervalo das parties nebulosas para as variveis de entrada e sada.
O processamento dos clculos da inferncia envolve diversos clculos matemticos, que ficam a cargo do JFuzzyLogic [6],
um componente open source inteiramente escrito em Java e que implementa um Fuzzy Logic Controller (FLC) completo,
baseado na especificao IEC 61131-7. Sua utilizao objetiva evitar reescrever todo um conjunto de algoritmos e modelos
matemticos complexos necessrios ao processamento das informaes fuzzy, adotando uma ferramenta robusta e
amplamente utilizada, concentrando-se apenas no assunto principal do artigo.
As definies dos parmetros do controlador fuzzy so realizadas atravs de um arquivo texto no formato FLC, que ser
utilizado pelo JFuzzyLogic. O arquivo FLC define as variveis e parties fuzzy, alm da base de regras, sendo composto
pelos seguintes blocos:
Interface fuzzification, que traduz os valores numricos das entradas em representaes fuzzy;
Interface defuzzification, que traduz os valores fuzzy em uma sada com valor numrico.
A Listagem 1 apresenta o formato geral de um arquivo do tipo FLC. Cada bloco de definies do arquivo FLC ser descrito
nos tpicos a seguir.
nome_variavel_entrada: REAL;
END_VAR
VAR_OUTPUT
nome_variavel_saida: REAL;
END_VAR
FUZZIFY nome_variavel_entrada
// definio das parties fuzzy e seus intervalos para cada varivel de entrada
TERM PARTICAO_X := (0.0, 0) (10.0, 1) (20.0, 0)
END_FUZZIFY
DEFUZZIFY nome_variavel_saida
// definio das parties fuzzy e seus intervalos para cada varivel de sada
TERM PARTICAO_Y := (0.0, 0) (50.0, 1) (100.0, 0) ;
METHOD : COG;
DEFAULT := 0;
END_DEFUZZIFY
RULEBLOCK No1
END_RULEBLOCK
END_FUNCTION_BLOCK
O primeiro bloco do arquivo FLC declara as variveis de entrada (VAR_INPUT) e de sada (VAR_ OUTPUT) que sero
consideradas pelo controlador, atribuindo-lhes um nome que ser utilizado nos demais blocos do arquivo e tambm no
cdigo Java para a passagem de parmetros durante o clculo da inferncia. No caso do simulador de estacionamento, as
posicao_x: REAL;
angulo_veiculo: REAL;
END_VAR
VAR_OUTPUT
angulo_roda: REAL;
END_VAR
O segundo bloco (FUZZIFY) define quais parmetros sero considerados na etapa de fuzzificao para cada partio, ou
seja, como os valores de entrada sero transformados em representaes fuzzy. Esta declarao realizada a partir das
definies dos intervalos para os conjuntos fuzzy de cada varivel, conforme anteriormente apresentado. Por exemplo, a
varivel de entrada posicao_x composta por cinco conjuntos fuzzy: esquerda (LE), centro-esquerda (LC), centro (CE),
centro-direita (RC) e direita (RI). Cada conjunto possui uma funo de pertinncia que define seu grau de incluso dentro
de um intervalo vlido. Pode-se observar na Figura 11 que a funo de pertinncia para o conjunto CE inicia com um valor
zero no ponto x=45, chega ao pice (com valor 1) no ponto x=50, e retorna ao valor zero no ponto x=55. Portanto, a
funo de pertinncia triangular para este conjunto definida pelos pontos em que a funo possui o valor de mnimo
inicial, mximo e mnimo final: {45; 50; 55}. No arquivo FLC, o conjunto ser descrito pela seguinte representao: TERM
CE := (45.0, 0) (50.0, 1) (55.0, 0);.
As definies dos conjuntos fuzzy para as variveis de entrada posicao_x e angulo_veiculo esto descritas na Tabela 1, e
sua correspondente declarao no arquivo FLC ser realizada conforme a Listagem 3.
Listagem 3. Descrio dos intervalos para cada conjunto fuzzy considerado pelas variveis de entrada.
FUZZIFY posicao_x
END_FUZZIFY
FUZZIFY angulo_veiculo
END_FUZZIFY
O prximo bloco (DEFUZZIFY) corresponde s definies que sero utilizadas na etapa de defuzzificao, ou seja, como as
informaes processadas pelo controlador fuzzy sero traduzidas em nmeros precisos a serem fornecidos como sada. Este
bloco descrito da mesma maneira como o anterior, especificando as representaes do intervalo de cada conjunto fuzzy
utilizado na varivel de sada (Tabela 1), conforme a Listagem 4. Este bloco tambm define qual mtodo de
defuzzificao ser utilizado para ponderar o valor final da inferncia a partir das regras ativadas. Neste exemplo,
utilizamos o mtodo Centro de Gravidade (COG Center of Gravity), que melhor atende a maioria dos casos. Para
necessidades mais especficas, a API do JFuzzyLogic oferece outros mtodos disponveis, que podem ser consultados em
sua documentao.
END_DEFUZZIFY
A quarta e ltima etapa corresponde definio das regras que representam as implicaes lgicas entre os conjuntos
fuzzy das variveis de entrada e da varivel de sada. Esta base de regras representa o comportamento do algoritmo do
controlador, e so descritas a partir da composio apresentada pela Tabela 2. A sintaxe de declarao da regra segue o
formato if-then: if posicao_x is LE and angulo_veiculo is RB then angulo_roda is OS. A Listagem 5 apresenta as 35 regras
que compem a base de conhecimento para as inferncias do controlador fuzzy.
Ao utilizar operadores lgicos AND e OR, necessrio especificar o mtodo que ser utilizado para o processamento das
regras. comum utilizar o mtodo MIN para o operador AND, e o mtodo MAX para o operador OR. Devem-se definir
tambm os mtodos de ativao e de acumulao, onde na maioria dos casos os valores default que vm disponibilizados
no template do arquivo FLC podem ser utilizados, ou seja, MIN para ativao e MAX para acumulao. O mtodo de
ativao define como as parties de entrada de uma regra ativada afetaro a sada correspondente. O mtodo de
acumulao determina o fator de ponderao a ser aplicado quando mltiplas regras so ativadas. Alm destes, outros
mtodos tambm so disponibilizados pelo JFuzzyLogic em sua documentao, e podem ser utilizados em necessidades
mais especficas de customizao.
END_FUNCTION_BLOCK
Para facilitar a descrio do arquivo FLC, o JFuzzyLogic oferece tambm um plugin para o Eclipse, com alguns recursos
muito teis ao desenvolvedor, como: autocomplete, cdigo com sintaxe colorida, visualizao grfica das parties das
variveis, etc. As instrues para instalao e uso do plugin do Eclipse est disponvel no manual do JFuzzyLogic [7].
Uma vez concludas as definies descritas no arquivo FLC, a implementao da classe Java para o controlador fuzzy tornase muito simples. O primeiro passo carregar o arquivo FLC e obter uma instncia da classe FIS, que representa o
controlador fuzzy. Esta mesma instncia ser utilizada durante toda a simulao. Para isto, utiliza-se o mtodo load(),
especificando o local do arquivo FLC:
Opcionalmente, a instncia de FIS tambm pode ser carregada dinamicamente, a partir do contedo com as definies do
arquivo FLC, permitindo maior flexibilidade, uma vez que ele pode ser gerado dinamicamente pela aplicao:
Em cada iterao da simulao, os dados referentes posio e ngulo atuais do veculo so passados para o controlador
utilizando o mtodo setVariable() da classe FIS. O primeiro parmetro do mtodo corresponde ao nome da varivel,
como declarado no arquivo FLC, e o segundo o valor de entrada para esta varivel. Aps definir os parmetros de
entrada, deve-se chamar o mtodo evaluate() da instncia FIS do controlador, que ir processar os clculos para a
inferncia, de acordo com a base de conhecimento definida no arquivo FLC. O valor calculado para a sada, correspondente
ao ngulo da roda, obtido atravs do mtodo getVariable(ngulo_roda).getValue().
A passagem dos parmetros para a classe FIS e a lgica para o clculo da inferncia em cada passo esto encapsuladas
pelo mtodo calculaInferencia(), da classe Controlador. Este mtodo recebe como parmetros a posio e o ngulo
atuais do veculo, e retorna o valor do ngulo da roda calculado pelo controlador (Listagem 6).
O cdigo completo da classe Controlador, responsvel por instanciar a classe FIS e calcular a inferncia apresentado
Listagem 7.
this.fis.setVariable("Angulo_veiculo", anguloVeiculo);
this.fis.evaluate();
return anguloRoda;
import java.nio.file.Files;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sourceforge.jFuzzyLogic.FIS;
iniciaInferencia();
File(SimuladorEstacionamento.class.getResource("estacionamento.fis").toURI());
this.fis.setVariable("Angulo_veiculo", anguloVeiculo);
this.fis.evaluate();
return anguloRoda;
Para realizar a movimentao do veculo, o valor do ngulo da roda retornado pelo controlador deve ser utilizado para
calcular o novo ngulo de rotao e a nova posio do veculo, que ser deslocado em uma distncia fixa em cada iterao.
Este clculo realizado conforme descrito pela equao apresentada na Figura 14. A Listagem 8 apresenta o cdigo em
Java do simulador, responsvel por reposicionar e rotacionar o veculo em funo do valor retornado pela inferncia a cada
passo.
Este simples algoritmo, implementado com o componente JFuzzyLogic, suficiente para que o veculo se desloque em sua
trajetria em direo ao local pr-determinado. Cabe observar que toda a modelagem do algoritmo inteligente foi definida
no arquivo FLC, restando ao cdigo Java apenas a passagem dos parmetros e as atualizaes da interface em funo dos
valores calculados pelo controlador fuzzy.
Com o controlador fuzzy implementado, podemos utilizar a interface grfica do simulador para executar algumas rodadas
de simulao, considerando diferentes posies e ngulos iniciais para o veculo. Habilitando o recurso de rastro, podemos
observar que as trajetrias descritas durante as simulaes foram satisfatoriamente encaminhadas para a posio final
sinalizada pelo local de estacionamento, conforme ilustrado na Figura 20.
Figura 20. Interface grfica ilustrando as trajetrias do veculo em simulaes utilizando diferentes configuraes iniciais.
Aps uma bateria de experimentos para testar o controlador atravs do simulador, o controlador est pronto para se tornar
parte de um sistema de controle embarcado.
Uma interessante aplicao futura seria implementar este simulador em um modelo fsico, utilizando uma placa Arduino
como integrador de hardware e sensores de posicionamento para determinar as variveis de entrada. As mesmas
definies para o controlador fuzzy poderiam ser reutilizadas neste caso.
O exemplo do sistema autnomo de controle de direo, apoiado por lgica fuzzy, tenta elucidar o processo de modelagem
e codificao de uma soluo de automao simplificada. Solues similares so muito encontradas em plantas industriais,
onde um controlador projetado e um simulador construdo para testar a eficincia do controlador ainda em ambiente
computacional. Uma vez homologado o controlador em ambiente simulado, ele promovido para os experimentos em
ambiente real. Aps o processo de homologao, ele incorporado a um software ou hardware para uso na linha de
produo.
Alguns processos de deciso so prprios do raciocnio humano, normalmente entendidos pela maioria das pessoas como
impossveis de serem absorvidos por um processo automtico. Noo vlida, porm superada, pois h algum tempo a
lgica fuzzy j existe para contrariar este entendimento. Assim, alguns processos de deciso baseados em incerteza
podem, atravs da lgica fuzzy, ser modelados e aplicados a software e hardware de modo a serem automatizados.
A automao desejada, seja ela para um sistema corporativo, seja ela para um sistema de controle de automao
industrial, deve ser elaborada por um projetista (desenvolvedor) de forma a guiar o especialista na definio dos conjuntos
fuzzy e das regras. Uma vez munido destes insumos, o projetista pode implementar a lgica em uma linguagem como Java
utilizando uma biblioteca como a JFuzzyLogic.
A partir dos exemplos prticos apresentados aqui, pode-se observar que possvel construir solues com lgica nebulosa
mesmo com pouco conhecimento matemtico nesta rea. Inmeras necessidades podem ser solucionadas desta forma,
basta que o projetista compreenda que algumas decises humanas so suscetveis de serem automatizadas. Alm disso,
tcnicas de inteligncia computacional baseadas em lgica fuzzy podem ser utilizadas em diversas situaes na rea de
computao, especialmente em modelos que possuam alto grau de incerteza e impreciso.
Referncias
[1] Livro Fuzzy logic: a practical approach.
McNeill, F. M., & Thro, E. (2014).Fuzzy logic: a practical approach. Academic Press.
[3] Exemplos de sistemas embarcados extrados do Livro Fuzzy logic for embedded systems applications.
Ibrahim, A. (2003).Fuzzy logic for embedded systems applications. Newnes.
Links
[2] Artigo Real-Life Applications of Fuzzy Logic.
http://www.hindawi.com/journals/afs/2013/581879/
[4] Captulo do livro com o exemplo de sistema de RH.
http://ptgmedia.pearsoncmg.com/images/0135705991/samplechapter
/0135705991.pdf
[5] Artigo sobre lgica fuzzy, que menciona o clssico problema do estacionamento de um veculo.
http://www2.ica.ele.puc-rio.br/Downloads/41/LN-Sistemas%20Fuzzy.pdf
[6] Pgina do componente JFuzzyLogic.
http://jfuzzylogic.sourceforge.net/html/index.html
[7] Manual do componente JFuzzyLogic, com instrues sobre o plugin para Eclipse.
http://jfuzzylogic.sourceforge.net/html/manual.html#plugin
DevMedia