Fundamentos da lógica Fuzzy

Os conjuntos fuzzy foram inicialmente propostos por Zadeh em 1965 [1] como uma extensão da teoria clássica de Conjuntos e, desde então, tem sido utilizada nas mais diversas áreas, tai como: tomada de decisão [2], clusterização [3], predição de séries temporais [4], dentre diversas outras.

Na lógica clássica, o valor verdade de uma proposição assumirá somente dois valores: Verdadeiro (1) ou Falso (0), não havendo outra possibilidade. Além disso, os predicados são termos exatos como: igual a, maior que, menor que, etc. Portanto, os elementos de um conjunto A em determinado universo X simplesmente pertencem ou não àquele conjunto. Isso pode ser descrito pela função:

Na lógica fuzzy, o valor verdade de uma proposição pode assumir uma infinidade de proposições, chamadas de expressões linguísticas, interpretadas como subconjuntos fuzzy em um intervalo [0, 1]. Os predicados, definidos aqui, são termos subjetivos e imprecisos, como: quente, frio, alto, gordo. Sendo assim, o uso da lógica fuzzy é aconselhada para problemas em que a informação seja de natureza imprecisa ou incompleta, tornando assim, mais fácil a incorporação de conhecimento ao sistema, pois fornece um modo para um especialista traduzir o seu conhecimento sem uma abordagem matemática. A seguir são apresentadas as definições básicas acerca da lógica fuzzy.

Definição 1. Um conjunto fuzzy  A do universo de discurso  U , é caracterizado por uma função de pertinência  \mu_A: U \rightarrow [1,0] . Essa função associa a cada elemento de  x  de  A  o grau  \mu_A(x) , com a qual  x  pertence ao conjunto  A  [1].

Sendo assim, a partir da definição 1, pode-se concluir que a função de pertinência  \mu_A(x)  indica o grau de compatibilidade entre  x e o conceito expresso por  A.

  •  \mu_A(x) = 1  indica que  x é completamente compatível com A.
  •  \mu_A(x) = 0  indica que  x é completamente incompatível com A.
  •  0 < \mu_A(x) < 1  indica que  x é parcialmente compatível com A, com grau de pertinência  \mu_A(x) .

Portanto, um conjunto A da lógica clássica pode ser visto como um conjunto fuzzy específico, denominado usualmente como “crisp”, no qual o grau de pertinência é do tipo “tudo ou nada”, e não gradual como nos conjuntos fuzzy. A lógica clássica esta contida na lógica fuzzy.

Definição 2. Uma variável linguística é uma entidade utilizada para representar de modo impreciso (linguístico) um conceito ou uma variável de um dado problema. Admite-se como valores expressões linguísticas que, por sua vez, são representados por conjuntos fuzzy existentes no universo U [1].

Para se obter uma avaliação lógica de uma sentença fez-se necessário o conceito de variável linguística. Intuitivamente, uma variável linguística é um substantivo, enquanto seus valores são adjetivos representados por um conjuntos fuzzy. Um exemplo rápido: temperatura é uma variável linguística que pode assumir os atributos quente ou frio (além de outras, é claro). No fim deste artigo, é apresentado um exemplo mais completo.

Números Fuzzy

Muitas pessoas se perguntam qual a diferença entre os conjuntos fuzzy e os números fuzzy. Essa pergunta é respondida com as seguintes definições:

Definição 3: O suporte de um conjunto fuzzy A, simbolizado por sup_A, é o conjunto clássico de todos os elemento x \in U cuja função de pertinência tem valor diferente de zero.

sup_A ={x \in U | A(x) > 0}

Definição 4:\alpha-cut de um conjunto fuzzy A são os subconjuntos clássicos dos números reais, definidos por:

[A]^{\alpha} = {x \in \mathbb{R} | A(x) \geq \alpha}

Definição 5: Um conjunto fuzzy A é chamado de número fuzzy quando o conjunto universo, onde A está definido, é o conjunto \mathbb{R} e satisfaz as seguintes condições:

  1. Todos os \alpha-cuts de A são não vazios com 0 \leq\alpha-cut \leq 1
  2. Todos os \alpha-cuts de A são intervalos fechados em \mathbb{R}
  3. O suporte de A é um conjunto limitado

Existem vários tipos de números fuzzy, e a escolha de com qual trabalhar nada mais é do que uma opção de projeto. A Fig. 1 mostra as formais mais conhecidas como: triangular, trapezoidal e gaussiana, sendo que cada modelo tem sua forma particular de calcular a função de pertinência de x ao número.

 

Fig. 1: Formas usuais utilizada para função de pertinência

Exemplo de utilização

Se o leitor é iniciante neste assunto e/ou não se da bem com definições lógicas e afins, preparei um pequeno exemplo para maior compreensão do que foi exposto até aqui (normalmente aprendemos mais com exemplos do que com definições, pelo menos comigo funciona melhor rs). Imagine o seguinte diálogo entre os famosos Joãozinho e Zezinho:

– Nossa Joãozinho você viu aquele carro que passou correndo na rua?
– Sim. Será qual a velocidade dele?
– Acho que por volta de uns 100 km/h, Joãozinho.

Observe que no simples diálogo Zezinho utilizou um rótulo, por volta de uns 100 km/h, para expressar a velocidade de um carro para Joãozinho. Rótulos como esse nós utilizamos diariamente para expressar uma infinidade de eventos. Fica claro que uma pessoa só responderia Joãozinho com exatidão se tivesse em mãos um velocímetro, sem ele a resposta é incerta.

Bom, seguindo em frente, a expressão por volta de uns 100 km/h pode ser modelada por um número fuzzy triangular, como ilustra a Fig. 2. Perceba que para qualquer velocidade pertencente ao intervalo ]30, 100[ a mesma faz parte do sup_A, que é limitado, e todos seus \alpha-cuts são maiores que zero, satisfazendo todas as condições para o conjuntos ser chamado de número fuzzy.

Fig. 2: Função de pertinência para variável linguística velocidade

Os valores maiores e menores que 100 km/h são distribuídos, com grau de pertinência máximo em 100 km/h, sugerindo a ideia de que quanto mais próximo desta velocidade, mais o valor se identifica com o rótulo proposto por Zezinho. O mesmo conjunto também pode ser modelado para qualquer uma das formas ilustradas na Fig. 1, isso é simplesmente uma opção de projeto.

De maneira geral, conceitos humanos são expressos de forma qualitativa, como: “por volta de”, “aproximadamente”, “levemente”, “mais ou menos”, ao invés de valores quantitativos. Elementos qualitativos podem ser representados por meio de variáveis linguísticas, as quais assumem valores dentro de um conjunto de termos linguísticos. Retornando ao exemplo da representação da velocidade como variável linguística, esta pode assumir rótulos como: muito Baixa (MB), baixa (B), média (M), alta (A), muito alta (MA). Para atribuir significado aos termos linguísticos, associa-se cada um deles a um conjunto fuzzy, sobre um mesmo universo de discurso e definido com base na experiência ou intuição de um ser humano, como mostra a Fig. 3.

Fig. 3: universo de discurso da variável linguística velocidade e seus rótulos

A principal função das variáveis linguísticas é fornecer uma maneira sistemática para uma caracterização aproximada de fenômenos complexos ou mal definidos. Em essência, a utilização do tipo de descrição linguística empregada por seres humanos, e não de variáveis quantificadas, permite o tratamento de sistemas que são muito complexos para serem analisados através de modelos matemáticos convencionais.

Espero que este artigo tenha sido útil de alguma forma. Em um próximo post vou apresentar uma implementação, em MATLAB, de operações entre números fuzzy triagulares e trapezoidais.

Referências

[1] Zadeh, L. A. Fuzzy Sets, Information and Control, v. 8, p. 338-353, 1956

[2] Krohling, R.A., & Campanharo, V. C. Fuzzy TOPSIS for group decision making: A case study for accidents with oil spill in the sea. Expert Systems with Applications, v. 38, p. 4190-4197, 2011.

[3] Ghaffarian S., & Ghaffarian S. Automatic histogram-based fuzzy C-means clustering for remote sensing imagery. ISPRS Journal of Photogrammetry and Remote Sensing
v. 97, p. 46–57, 2014.

[4] CHEN, S.M. Forecasting enrollments based on fuzzy time series. Fuzzy Sets Systems, Elsevier North-Holland, Inc., v. 81, n. 3, p. 311–319, 1996.

[5] ZADEH, L. A. Fuzzy sets and applications. USA: John Wiley & Sons, 684 p. 1987.

Gostou? Então compartilhe!