Lógica fuzzy

A lógica fuzzy é uma teoria matemática que lida com conceitos imprecisos ou vagos, permitindo que a linguagem natural seja utilizada para representar e manipular informações imprecisas.

Ela é uma extensão da lógica clássica binária, que utiliza apenas valores verdadeiro ou falso, permitindo a utilização de valores parcialmente verdadeiros em níveis de pertinência ou graus de verdade.

A lógica fuzzy é amplamente utilizada em sistemas de controle, inteligência artificial, robótica, análise de dados e tomada de decisões.

Lógica convencional: sim/não, verdadeiro/falso

Lógica Fuzzy:

  • Muito similar ao pensamento humano;
  • Tenta modelar o nosso senso de palavras, tomada de decisão ou senso comum
  • Trabalha com uma grande variedade de informações vagas e incertas, as quais podem ser traduzidas por expressões do tipo: a maioria, mais ou menos, talvez, etc.

Conjuntos com limites imprecisos

A = Conjunto de pessoas altas

Suponha que desejássemos representar de forma fuzzy a altura de Alice (1,65 m), Bob (1,75 m), Carlos(2,0m) e Denise(1,45 m). Nossas proposições serão da forma "X é alto", e serão:

  • A = Alice é alta, μ(A)=0,55
  • B = Bob é alto, μ(B)=0,75
  • C = Carlos é alto, μ(C) = 1,0
  • D = Denise é alta, μ(D) = 0,0

Um conjunto fuzzy A definido no universo X é caracterizado por uma função de pertinência uA, a qual mapeia os elementos de X para o intervalo [0,1]

Um conjunto fuzzy é totalmente caracterizado por sua função de pertinência

Função de Pertinencia para dados continuos

Função de pertinencia : Universo discreto

É uma partição do universo de discurso X representando “idade”, formada pelos conjuntos fuzzy “jovem”, “adulto” e “idoso”

Sistems de controle fuzzy

Componentes de um sistema de controle fuzzy

  • Definição das variáveis fuzzy de entrada e de saída: forma e valores das variáveis
  • Regras fuzzy
  • Técnica de defuzzificação

Definição das variáveis

Etapa na qual as variáveis linguísticas são definidas de forma subjetiva, bem como as funções membro (funções de pertinência)

Engloba

  • Análise do Problema
  • Definição das Variáveis
  • Definição das Funções de pertinência
  • Criação das Regiões

Na definição das funções de pertinência para cada variável, diversos tipos de espaço podem ser gerados:Triangular, Trapezoidal, Gaussiana, ...

Exemplos de variáveis fuzzy

Regras Fuzzy

SE condição ENTÃO conclusão , mas com variáveis linguísticas (fuzzy)

  • Se a fruta é verde então o gosto é azedo
  • Se a fruta é amarela então o gosto é pouco-doce
  • Se a fruta é vermelha então o gosto é doce

Exemplo prático:

Vamos pesnar em um sistema fuzzy para tentar identificar a aderencia de uma pessoa ao curso de computação.

Na linguagem R para trabalharmos com fuzzy vamos utilizar o pacore: sets

Vamos definir nosso universo em valores que vão de 1 até 100

  • sets_options("universe", seq(1,100, 1))

Variáveis linguisticas:

  • Gosta_exatas
  • Rel_interpess
  • Escre_codigo
  • Pefil_lider
  • Gosta_Estudar
  • Habilidade_comunicao
  • Classificacao
  • Na linguagem R teriamos

    • fuzzy_partition(varnames = c( min = 5, men = 15, med = 50, maior=75, max=90), sd = 10)

    Para o problema acima vamos inicializar as váriaveis conforme mostrado abaixo.

    • Gosta_exatas = fuzzy_partition(varnames = c( gemin = 5, gemen = 15, gemed = 50, gemaior=75, gemax=90), sd = 10)
    • Rel_interpess = fuzzy_partition(varnames = c( rimin = 30, rimen = 35, rimed = 55, rimaior=75,rimax=85), sd = 10)
    • Escre_codigo = fuzzy_partition(varnames = c( ecmin = 10, ecmen = 25, ecmed = 50, ecmaior=75,ecmax=95), sd = 10)
    • Pefil_lider = fuzzy_partition(varnames = c( plmin = 30, plmen = 50, plmed = 70, plmaior=90,plmax=95), sd=10)
    • Gosta_Estudar = fuzzy_partition(varnames = c( gsmin = 20, gsmen = 40, gsmed = 60, gsmaior=80,gsmax=90), sd=10)
    • Habilidade_comunicao = fuzzy_partition(varnames = c( hcmin = 40, hcmen = 50, hcmed = 60, hcmaior=70, hcmax=75), sd=10)
    • Classificacao = fuzzy_partition(varnames = c( baixa = 10, media = 50, alta = 75, altissima=95), sd=10)

    variaveis = set(v1,v2,v3,....)

    Apos a inicialização das variáveis nós teriamos que montar as regras:

    • fuzzy_rule( Gosta_exatas %is% gemax && Rel_interpess %is% rimin && Escre_codigo %is% ecmax && Pefil_lider %is% plmin && Gosta_Estudar %is% gsmax && Habilidade_comunicao %is% hcmin , Classificacao %is% altissima )

    Quanto mais regras conseguirmos reproduzir, mas competo será nosso sistema

    Para o nosso exemplo vamos construir 12 regras.

    No R as regas serão agrupadas conforme abaixo

    • regras <- set(regra1, regra2, regra3 ...)

    A resposta é dado pelo comando:

    • sistema <- fuzzy_system(variaveis, regras)

    Construção das inferencias:

    inferencia <- fuzzy_inference(sistema, list(v1 = 90 , v2 = 30, v3 = 95, v4 = 30, v5= 90, v6=40 ))

    Impressão das respostas

    Plotar

    • sistema
    • sistema$variables$Classificacao
    • adicionar com o comando lines a inferencia: lines(inferencia, col = "red", lwd=4)

    Pegar uma resposta: ,gset_defuzzify(inferencia, "centroid")

    Parte visual: O objetivo é construir uma página conforme mostrado abaixo

    Novos componentes visuais

    sliderInput("id", "Texto",min = Valor minimo, max = Valor máximo,step = passo,value = padrão)

    Trabalho

    Trabalho de lógica fuzzy

    Alternar Menu