A Lógica Fuzzy ou Lógica Nebulosa é baseada na teoria dos conjuntos, diferente da Lógica Clássica onde se tem valores totalmente verdadeiros ou totalmente falsos. Ela é capaz de atribuir valores intermediários entre 0 (zero) e 1 (um) o que leva a ser parcialmente verdadeira ou parcialmente falsa.
Esta Lógica trata de um raciocínio que busca classificar em números uma determinada realidade ou situação, que trabalha com muitas variáveis incertas e vagas, a fim de facilitar o trabalho ou manipulação dos computadores (KOHAGURA, 2007). A Lógica Fuzzy é considerada imprecisa, pois trabalha com aproximações de dados vagos (KOHAGURA, 2007). Através de uma determinada regra, que varia para qual fim a Lógica Fuzzy é utilizada, os dados coletados caracterizados como incertos são analisados de acordo com a regra implementada e aproximados por números para possibilitar a interpretação das máquinas e computadores.
Segundo Kohagura (2007), os conceitos dos conjuntos da Lógica Fuzzy foram criados pelo professor da Universidade da Califórnia em Berkeley Lofti Asker Zadeh a partir de 1965 para tratar do aspecto impreciso da informação. A proposta de Zadeh trata os valores intermediários que existem ao longo do 0 (zero) e 1 (um) definindo assim um “grau de pertinência” (usado pela Função de Pertinência) para que a mudança entre o pertinente e ou não pertinente dos elementos de um conjunto ocorra de forma gradual e não de forma brusca como na Lógica Clássica.
2.7.1 Função de Pertinência
Segundo Cruz (2009) a função que define o grau de pertinência de um elemento em um determinado conjunto Fuzzy denomina-se Função de Pertinência ou Função de Associação, estes elementos podem pertencer a vários conjuntos com determinado grau de pertinência.
O grau de pertinência não está definido num modelo formal dos conjuntos Fuzzy, esse se dá através de testes realizados para encontrar a melhor função que se adeque a situação a qual se queira aplicar, permitindo que especifiquemos os possíveis valores para um determinado conjunto.
Formalmente, um conjunto Fuzzy A do universo de discurso U é definido por uma função de pertinência µA: U → [0, 1]. Essa função associa cada elemento de x em U o grau µA (x) com o qual x pertence a A. A função de pertinência µA (x) indica o grau de quão compatível x é no conjunto expresso por A.
2.7.2 Variáveis Linguísticas
Segundo Barros e Bassanezi (2006) uma variável linguística x no Universo U é uma variável cujos valores assumidos por ela são subconjuntos Fuzzy de U.
Segundo Barros e Bassanezi (2006) define uma variável linguística como sendo uma representação de uma classe de palavra enquanto seus valores são adjetivos o qual são os possíveis valores permitidos para a variável. Tomemos “como exemplo a variável
“velocidade” a qual pode assumir os valores “devagar”, “média” ou rápida”.
Segundo Zimmermann (1991, apud Cruz 2009), formalmente uma variável linguística está formada pela quíntupla {X, T(X), U, G, M} onde a definição para cada elemento segue abaixo:
X = Nome do conjunto para a variável linguística.
T(X) = Conjunto de termos linguísticos sendo os adjetivos e/ou atributos.
U = Universo de discurso apresentando a faixa de valores.
G = Regra sintática para composição dos termos linguísticos.
M = Regra semântica que associa cada termo linguístico de G a um conjunto Fuzzy.
Um exemplo segue abaixo usando a definição acima aplicando aos valores para a quíntupla.
X: Velocidade;
T(Velocidade): {Devagar, Média, Rápida};
U: [0,1];
G: Devagar [X: 0,0 a 0,5]; Média [X: 0,3 a 0,7]; Rápida [X: 0,7 a 1,0];
M: µDevagar, µMedia, µRapida;
2.7.3 Controlador Fuzzy
Um controlador Fuzzy é basicamente o processo de inferência em conjuntos Fuzzy.
Neste processo basicamente estão envolvidos a etapa de fuzzificação, máquina de inferência (inferindo na base de regras) e defuzzificação (ENOMOTO, 2010), conforme exemplifica Figura 3.
Figura 2. Controlador Fuzzy.
Fonte: adaptado de Tarig (2001).
2.7.3.1 Fuzzificação
Segundo Cruz (2009) neste processo são utilizadas às funções de pertinência para mapear os valores de entradas numéricas em representações linguísticas dos conjuntos Fuzzy, esta etapa também executa a adequação dos dados de entrada reais para manipulação da máquina de inferência. Essas funções de pertinência podem ser definidas por intermédio das funções como: Gaussianas, Singletons, Sigmoides, porém as mais usadas são Triangulares e/ou Trapezoidais, essas últimas demonstradas na Figura 3.
Figura 3. Classificação para variável linguística distância.
Fonte: (CRUZ, 2009).
2.7.3.2 Base de Regras
Segundo Barros e Bassanezi (2006) a base de regras Fuzzy consiste em proposições formadas por uma coleção de regras SE-ENTÃO, tendo o formato abaixo:
SE “condição” ENTÃO “ação”
Nas proposições Fuzzy cada condição (antecedentes) e cada ação (consequentes) são valores assumidos por variáveis linguísticas os quais são modelados por conjuntos Fuzzy (BARROS; BASSANEZI, 2006).
Segundo Cruz (2009) após o processamento das regras pela máquina de inferência, é realizado a saída, definida no processo de deffuzificação.
2.7.3.3 Máquina de Inferência
Processa os valores de entrada (fuzzificação), junto com as regras, de modo a inferir as ações de controle Fuzzy, aplicando o operador de implicação Fuzzy e as regras de inferência da Lógica Fuzzy.
Segundo Barros e Bassanezi (2006) é nessa etapa que cada proposição é traduzida
“matematicamente” por meio das técnicas da Lógica Fuzzy. Essa etapa fornecerá a saída (controle) Fuzzy a ser adotado pelo controlador. A partir da entrada de cada conjunto Fuzzy.
Nesse processo pode-se citar os modelos de inferência Mandani e Kang-Takagi-Sugeno ou KTS.
2.7.3.4 Deffuzzificador
Segundo Barros e Bassanezi (2006) o processo de defuzzificação é a representação de valores do conjunto Fuzzy para valores reais (crisp). Neste processo ao utilizarmos um modelo linguístico, a saída Fuzzy é gerada pela composição das regras do algoritmo de inferência (MARTINS, 2007) usando métodos específicos.
Segundo Martins (2007) este processo consiste em converter valores do conjunto Fuzzy para valores reais através de métodos específicos. Existem vários métodos para o processo de defuzzificação cada um possuindo suas vantagens e desvantagens, os mais utilizados são Máximo, Média dos Máximos e Centróide:
Máximo: extrai o valor máximo do conjunto de saída. Este não possui um bom funcionamento quanto a saídas com intervalo;
Média dos máximos: extrai a média entre os valores máximos do conjunto de saída. Nesse método a falha ocorre ao atingir o limite superior do valor máximo do conjunto de saída e também quando a média é exatamente um valor que possui grau de pertinência zero; e
Centróide: extrai o centro de gravidade do conjunto. Este requer um maior poder computacional para obter o valor preciso, por isso nem sempre é o mais indicado.
Segundo Cruz (2009) a base de conhecimento Fuzzy necessita ser completa e consistente, garantindo que sempre haverá uma regra que satisfaça qualquer entrada e que seja única evitando ambiguidades.
Para a modelagem será utilizada a ferramenta shell FuzzyCLIPS, esta shell é uma extensão da ferramenta CLIPS usada para o desenvolvimento de Sistemas Especialistas baseada em Lógica Fuzzy desenvolvido pela Integrated Reasoning Group do Institute for Information Technology da National Research Council of Canada bastante difundido e com aceitação no meio acadêmico.