segunda-feira, 1 de dezembro de 2008

Sistemas Fuzzy

Para quebrar um pouco o jejum de posts (principalmente posts sobre coisas que não sejam relacionadas a opinião pessoal) vou falar um pouco sobre sistemas Fuzzy.

Sistemas Fuzzy são baseados em lógica fuzzy (lógico) e são constituidos de 3 partes:
  1. Fuzzyficador;
  2. Regras e inferência;
  3. Desfuzzyficador.

Descrição dos elementos do sistema fuzzy.

  • O Fuzzyficador consiste na interface entre as variáveis de entrada (valores numéricos) do fenômeno avaliado e o sistema fuzzy (conjuntos fuzzy).

  • As regras e inferência implementam a lógica entre a entrada e a saída, gerando um conjunto fuzzy de saída.

  • O Desfuzzyficador transforma o conjunto fuzzy de saída em um valor numérico.

Para dar um exemplo, vamos supor que nós precisamos controlar o nível de água em um tanque, porém este tanque tem uma entrada de água e uma saída de água.

Vamos criar os conjuntos fuzzy das variáveis de entrada do sistema (nível do tanque e volume de água que está saindo do tanque) e da variável de saída (volume de água que está entrando no tanque).
Obs.: A variável de saída é também chamada variável de controle.

Vamos criar algumas regras fuzzy para o sistema:

  1. Se o nível do tanque estiver baixo então tem que entrar muita água no tanque.
  2. Se estiver saindo pouca água do tanque e o nível estiver alto então tem que entrar pouca água no tanque.
  3. Se o nível da água estiver médio e estiver saindo muita água do tanque então tem que entrar muita água no tanque.
  4. Se o nível da água estiver alto e estiver saindo muita água do tanque então tem que entrar uma quantidade média de água no tanque.
Para cada variável (tanto faz ser de entrada ou saída) é interessante criar ao menos 3 conjuntos fuzzy (baixo, médio e alto, por exemplo).

O mais interessante na elaboração das regras é combinar todos os conjuntos de entrada, por exemplo (sendo x1 e x2 as variáveis de entrada e y a variável de saída):

  1. Se x1 é baixo e x2 é baixo então y é xxx.
  2. Se x1 é médio e x2 é baixo então y é xxx.
  3. Se x1 é alto e x2 é baixo então y é xxx.
  4. Se x1 é baixo e x2 é médio então y é xxx.
  5. Se x1 é médio e x2 é médio então y é xxx.
  6. Se x1 é alto e x2 é médio então y é xxx.
  7. Se x1 é baixo e x2 é alto então y é xxx.
  8. Se x1 é médio e x2 é alto então y é xxx.
  9. Se x1 é alto e x2 é alto então y é xxx.

Após a elaboração das regras, o sistema está pronto para ser implementado.

Para cada valor das variáveis de entrada, o grau de pertinência é computado e é feita uma inferência dos conjuntos fuzzy de entrada com os de saída, de modo a obter-se um conjunto fuzzy relativo a variável de saída.

Por fim, é usado algum método de desfuzzyficação para converter o conjunto fuzzy de saída em um valor numérico, como por exemplo o centro de massa do conjunto fuzzy.

Se alguém quiser, posso fazer novos posts mais detalhados.


Só para adiantar, o Scilab tem uma toolbox de lógica fuzzy (aqui).

Nenhum comentário: