Conhecimento Difuso - #Leia+ Difusão do conhecimento em foco: saberes multidisciplinares ...
#Leia+ Difusão do conhecimento em foco: saberes multidisciplinares ...

O que acontece quando as coisas não são simplesmente certas ou erradas

A maioria dos sistemas lógicos que as pessoas encontram na prática falham porque tentam forçar o mundo real dentro de variáveis binárias. temperatura alta ou baixa.rápido ou lento.pessado ou leve. O resultado é sempre um sistema frágil que quebra nos limites. conhecimento difuso existe justamente porque alguém percebeu que os valores intermediários não precisam ser descartados. Fuzzy logic não é mágica. É uma estrutura matemática onde funções de pertinência mapeiam valores contínuos para graus de verdade entre 0 e 1. Em vez de dizer que 25 graus é simplesmente "quente", você define que 25 tem pertinência 0,7 a quente e 0,3 a morno. O controle resultante é suave porque todas as regras contribuem proporcionalmente.

Implementando conhecimento difuso do zero

O primeiro passo que mais gente erra é definir os universos de discurso antes de escrever qualquer regra. Um universo de discurso é simplesmente o intervalo de valores que sua variável pode assumir. Para temperatura, pode ser 0 a 50. Para velocidade do vento, 0 a 120 km/h. Defina isso errado e suas funções de pertinência vão ficar truncadas no gráfico. Depois, construa as funções de pertinência. As três formas mais comuns são triangular, trapezoidal e gaussiana. Triangulares são mais simples de calibrar mas criam descontinuidades na derivada. Trapezoidais oferecem uma zona plana que funciona bem para estados "bem definidos". Gaussianas são suaves mas exigem ajuste fino do desvio padrão. Eu uso trapézios na maior parte dos casos porque são previsíveis e fáceis de depurar.

As regras formam o núcleo do sistema. Um conjunto típico segue o formato SE-ENTÃO com conectivos AND e OR. Por exemplo: SE temperatura é alta E umidade é baixa ENTÃO ventilação é máxima. O problema real começa quando você precisa de dezenas de variáveis de entrada. A quantidade de regras cresce exponencialmente. Com 5 variáveis e 3 termos linguísticos cada, você já está em 243 regras. Ninguém mantém isso manualmente. O processo de defuzzificação converte o conjunto fuzzy de saída em um valor numérico único. O método mais usado é o de centros de gravidade (centroid). Ele calcula o ponto de equilíbrio da área acumulada sob a função de pertinência deformada pelas regras. Funciona bem na prática, mas exige integração numérica quando as funções são complexas. Para sistemas embarcados com recursos limitados, o método do máximo pode ser suficiente, embora produza saídas em degrau.

Aqui vai algo que poucos mencionam: a order of evaluation das regras importa mais do que parece. Em frameworks como Scikit-Fuzzy, as regras são avaliadas em paralelo e os resultados agregados via operador MAX. Se você tem regras conflitantes sobre a mesma variável de saída, a agregação MAX pode criar picos indesejados na superfície de resposta. Uma solução simples é usar a soma probabilística no lugar do MAX quando houver sobreposição significativa entre regras concorrentes.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Um caso específico que quebrou meu sistema

Estava construindo um controlador para um sistema de climatização com três variáveis de entrada: temperatura interna, temperatura externa e umidade relativa. Cada uma com cinco termos linguísticos. O resultado esperado era um controle suave de velocidade do ventilador e potência do compressor. O problema apareceu quando a temperatura interna estava na fronteira entre "morno" e "quente" e a externa caía rapidamente porque uma frente fria passou. O controlador oscilava violentamente entre dois valores de potência porque as funções de pertinência triangulares criavam uma transição abrupta na região de sobreposição. A derivada primeira da função de pertinência mudava de +1 para -1 instantaneamente, e o controlador interpretava isso como uma mudança brusca na condição do sistema. O usuário final ouvia o compressor ligando e desligando a cada 30 segundos.

A solução foi trocar as funções triangulares por funções Gaussianas suavizadas na região de fronteira. Especificamente, substituí as pontas dos triângulos por arcos de elipse com eccentricidade 0,3. Isso eliminou a descontinuidade na derivada sem alterar significativamente a forma geral das funções. A oscilação parou. O ajuste levou cerca de duas horas de tuning nos parâmetros das curvas elíptas.

Pegadinhas que ninguém conta

Calibrar funções de pertinência não é um exercício teórico. Vá até o campo e meça os valores reais que seu sensor entrega nos extremos. Um termômetro barato pode ter erro de ±2 graus. Se você projetou as funções baseando-se na especificação do fabricante e não na medição real, todo o seu controlador opera deslocado. Já vi sistemas inteiros desligando equipamentos por causa de kalibração de sensor negligenciada. Outro ponto cego é a sensibilidade a ruído em regiões de alta sobreposição entre termos linguísticos. Quando uma variável está numa zona onde dois conjuntos fuzzy têm pertinência semelhante e ambas as funções têm inclinação pronunciada, o menor ruído no sensor faz a saída saltar. A solução prática é aplicar um filtro passa-baixa simples na entrada antes da inferência, ou aumentar levemente a largura das funções de pertinência na região problemática.

O conhecimento difuso não resolve problemas que são fundamentalmente indeterminados. Se a variável de entrada não tem correlação mensurável com a saída desejada, nenhuma quantidade de fuzzificação vai ajudar. O método exige que exista um mapeamento funcional, mesmo que ele seja complexo e não-linear. Casos onde o conhecimento do domínio é puramente qualitativo e não permite formular regras testáveis são candidatos ruins para essa abordagem. Para projetos onde o espaço de decisão é muito grande e as regras são difíceis de especificar, sistemas híbridos com redes neurais ou algoritmos genéticos para ajuste automático das funções de pertinência costumam ser mais produtivos do que tentativa e erro manual. O custo computacional aumenta, mas o tempo de desenvolvimento cai drasticamente quando se trabalha com mais de quatro variáveis de entrada.