Lógica Fuzzy


A lógica digital tradicional lida com variáveis assumindo apenas dois possíveis estados: falso e verdadeiro. Em boa parte dos casos, esta representação é suficiente, mas há situações em que desejamos que valores intermediários.

Poderíamos usar valores analógicos, mas aí cairíamos em equações matemáticas complexas que nem sempre nos resultariam no resultado desejado. É aí que entra a lógica fuzzy.

Fuzzy, em inglês, significa incerto, duvidoso. Expressa exatamente os valores com que lida. Com lógica fuzzy, não tratamos uma variável como tendo apenas um estado atual, mas sim com n estados, cada um com um grau de associação. Em outras palavras, não afirmarmos que uma casa é grande, mas sim que ela é 0.8 grande, 0.2 média e 0.0 pequena. Isto faz com que definamos conjuntos em que um dado valor pode ser enquadrado. Voltando ao exemplo da casa teríamos três conjuntos: casas grandes, médias e pequenas. Mas nada impede que tenhamos cinco conjuntos: casas enormes, grandes, médias, pequenas e minúsculas. O número de conjuntos nos diz quão precisamente estamos lidando com uma variável.

Assim como na lógica convencional, definimos regras nas quais associamos entradas para produzir saídas. Por exemplo, definimos em lógica digital: a E b = c, isto significa que quando a E b assumirem valores verdadeiros c será verdadeiro, caso contrário será falso. Podemos ainda utilizar os operadores OU e NÃO. Com fuzzy, ao definirmos uma regra, informamos que quando uma variável assumir um dado conjunto E outra variável outro conjunto, teremos na saída tal variável com tal conjunto. Um típica construção de uma regra fuzzy seria: se a for muito positivo E b for pouco negativo então c é zero.

Finalmente, definimos um sistema fuzzy, que será uma coleção de variáveis de entrada (sendo cada uma coleção de conjuntos), uma coleção de conjuntos para a variável de saída e uma coleção de regras que associam as entradas para resultar em conjuntos para a saída.

É necessário ainda uma função que "desfuzzifique" a saída, ou seja que a partir dos graus de participação de cada variável de uma regra, retorne o grau de participação da saída e conseqüentemente o valor real da saída.
 
 

Lógica Fuzzy e C++

A linguagem C++ é suficientemente poderosa para podermos utilizá-la nos sistemas de lógica fuzzy, pois seus recursos sofisticados de orientação a objetos permitem a criação de objetos que representam desde um simples conjunto até todo o sistema em si.