Breve curso de Lógica borrosa y control borroso

Original de http://www.swin.net/usuarios/miguel/index.htm

Traducido del original en inglés: "A brief course in Fuzzy Logic and Fuzzy Control"
Autores: Peter Bauer, Stephan Nouak, Roman Winkler

 


Este tutorial foi traduzido por Ilan Chamovitz. a partir da tradução de
Miguel Ángel Montejo Ráez: radastan@swin.net

INDICE


Introdução

A lógica nebulosa (Fuzzy Logic) surgiu como uma ferrementa para o controle de subsistemas e processos industriais complexos, assim como para jogos eletrônicos, sistemas de diagnóstico e outros sistemas especialistas. Apesar da lógica fuzzy ter sua origem nos  Estados Unidos, o crescimento rápido desta tecnologia a partir do Japão e atualmente alcança novamente os EUA e também a Europa. A lógica fuzzy  "explodiu" no Japão, a quantidade de pedidos de patente para aplicações aumenta exponencialmente.  

Fuzzy, nebuloso, difuso, chegaram a ser palavras-chave para vender. Os artigos eletrônicos sem componentes difusos estão ficando agradualmente defasados.  Como una mordaza, que muestra la popularidad de la lógica borrosa, cada vez es más frecuente un sello con "fuzzy logic" impreso sobre el producto.
No Japão, a pesquisa sobre lógica nebulosa é apoiada amplamente com grande suporte. A Europa e os EUA se esforçam para alcançar o êxito japonês.  Por exemplo a NASA emprega a lógica nebulosa para o complexo processo de manobras de acoplamento.

No Brasil, um modelo baseado em lógica fuzzy foi desenvolvido para identificar as melhores localizações para plantio, esmagamento e usinagem do biodiesel. 

A lógica borrosa é basicamente uma lógica multivalorada que permite o uso de valores intermediários, complementando os valores convencionais como sim/não, verdadeiro/falso, preto/blanco, etc. As noções como "bem mais quente" ou "pouco frio" podem ser formuladas matematicamente e  podem ser processadas por computadores.. Desta forma tentou-se aplicar uma forma mais humanda de pensar na programação de computadores.  A Lógica Nebulosa se iniciou em 1965  por Lotfi A. Zadeh, professor de Ciência da Computaçãona Universidade da California em Berkeley.

O que é um conjnto fuzzy?

A noção mais básica de sistemas difusos é um (sub) conjunto difuso.

Por exemplo:

Em primeiro lugar consideramos um conjunto X com todos os números reais entre 0 e 10 que nós chamaremos o Universo de Discurso.  Agora, definimos um subconjunto A de X com todos os numeros reais no intervalo entre 5 e 8.

A = [5,8]

Agora mostramos o conjunto A por sua fução característica, ou seja, festa função resulta em 1 ou 0 ao elemento em X, dependendo de se o elemento está no subconjunto A ou não. Veja a figura seguinte:


Podemos interpretar os elementos que assinalam 1 como os elementos que estão no conjunto A e os elementeos que assinalam 0 como os elementos que não estão no conjunto A.

Este conceito é suficiente para muitas áreas de aplicação. Porém, podemos encontrar facilmente situações onde falta flexibilidade.  Para compreender este conceito vejamos um exemplo:

Queremos descrever o conjunto de gente jovem.  Formalmente, podemos denotar

B = {conjunto de gente jovem}

Como - em geral - a idade começa em 0, o limite inferior desde conjunto está claro.  O limite superior por outro lado, é bem mais difícil de se definir. Como primeira tentativa, colocamos com o limite superior, por exemplo, 20 anos. Para isso definimos B como o intervalo denominado:

B = [0,20]

Agora a pergunta é:  Por que alguém,  em seu aniversário de 20 anos é jovem,  e no dia seguinte não é? 

Obviamente, este é um problema estrutural, porque se movemos o limite superior do intervalo de 20 até um ponto arbitrário podemos fazer a mesma pergunta.

 

Uma forma mais natural de construir o conjunto B estaria em tornar mais suave a separação mais estrita entre o jovem e o não-jovem.  Faremos isso para permitir não somente a decisão se "ele/ela SIM está no conjunto de gente jóvem" ou "ele/ela NÃO está no conjunto de gente jovem", mas também para tornar as frases mais flexíveis - como "ele/ela pertencem um pouco mais ao conjunto de gente jovem" ou "ele/ela NÃO pertencem aproximadamente ao conjnto de gente jovem".

Continuaremos, mostrando como um conjunto difuso nos permite definir uma noção como "ele/ela é um pouco jovem".

Como constatamos na introdução,  podemos utilizar conjuntos fuzzy para tornar computadores "mais sábios", e agora temos que codificar a idéia mais formalmente. Em nosso exemplo, primeiro codificamos todos os elementos do Universo do Discurso com 0 ou 1. Uma maneira de generalizar este conceito está em permitir mais valores entre 0 e 1. Assim, são permitidas infinitas alternativas entre 0 e 1,  denominando o intervalo de unidade Yo = [0, 1].

A interpretação dos números agora assinalados a todos os elementos do Universo de Discurso é algo mais difícil.  Por exemplo, o número 1 assinalado a um elemento, significa que o elemento está no conjunto B e 0 significa que o elemento definitivamente  não está no conjunto B.  O resto dos valores significam uma pertinência gradual ao conjunto B. 

Para ilustrar melhor, vejamos graficamente o conjunto de gente jovem de forma  similar ao nosso primeiro exemplo (quem tem 20 anos é jóvem), pela sua função característica: 


Desta forma quem tem 25 anos de idade seria um jóvem ao grau de 50 por cento. Quem tem 20, teria 100% de pertinência ao conjunto jóvem e quem tem 35 possui grau 0 de pertinência ao conjunto jovem.. 

Agora sabemos o que é um conjunto fuzzy. Porém, o que se pode fazer com ele?

Operações com conjuntos fuzzy

Agora que temos uma idéia do que são conjuntos fuzzy, podemos introduzir as operações básicas sobre conjuntos fuzzy.  Assim como nas operações sobre conjuntos booleanos, podemos, também, interseccionar, unificar e negar conjuntos difusos. Em seu primeiríssimo artigo sobre conjuntos fuzzy, L. A. Zadeh sugiriu o operador mínimo para a interseção e o operador máximo para a união dos conjuntos fuzzy. É fácil ver que estes operadores coicidem com a união booleana, e interseção se considerarmos unicamente os graus de pertinência 0 e 1.  Para esclarecer isso, mostraremos vários exemplos.  Seja A um intervalo fuzzy entre 5 e 8, e B um número fuzzy "em torno de 4 " ,  As figuras correspondentes ilustram o exemplo:


A figura seguinte mostra a operação AND (Y) do conjunto fuzzy A e o número fuzzy B. O resultado está em azul e compreende os valores mínimos (And=interseção)


A operação OR (ou) do conjutno  do conjunto fuzzy A e o número fuzzy B está na próxima figura, também em azul e compreende os valores máximos (Or=união).


A próxima figura dá um exemplo da negação. A linha azul é a NEGAÇÃO do conjunto difuso  A.


Os controladores fuzzy

Os controladores difusos tem grande importância na teoria fuzzy.. Trabalham de uma forma bem diferente dos controladores convencionais;  o conhecimento especialista é utilizado ao invés das equações diferenciais para descrever um sistema.  Este conhecimento pode se expressar de uma maneira muito natural, empregando as
variaveis lingüísticas que são descritas mediante conjuntos fuzzy.

Exemplo: O péndulo invertido

O problema está em equilibrar una pértiga sobre una plataforma móvel que pode mover-se em apenas 2 direções, à esquerda ou à direita. Primeiro, teremos de definir (subjetivamente) qual é a velocidade do anden: alta, baixa, etc. Isto é necessário  para especificar as funções pertencentes ao conjunto fuzzy:


O mesmo se faz para o ângulo  entre a plataforma e a pértiga e, também, para a velocidade angular deste ángulo:


Repare que, para facilitar, supomos que no início a pértiga está em uma posição perto do centro para que um ângulo de, digamos  45 graus em qualquer direção não possa - por definição - ocorrer.

Agora daremos várias regras que dizem o que fazer  em situações concretas:

Considere por exemplo que a pértiga está na posição central (o ângulo é zero) e não se move (a velocidade angular é zero). Obviamente esta é a situação desejada, e portanto nada teremos que fazer (a velocidade é zero).

Consideremos outro caso: o pólo está na posição central como antes, mas está em movimento a baixa velocidade na direção positiva.  Naturalmente teriamos que compensar o movimento da pértiga movendo a plataforma na mesma direção, a baixa velocidade. Desta forma acabamos de construir 2 regras que podem ser apresentadas de maneira mais formal, assim:

Se o ângulo é zero e a velocidade angular é zero  então a velocidade será zero.
Se o ângulo é zero e a velocidade angular é positiva baixa  então a velocidade será positiva baixa.

Podemos resumir todas as regras aplicaveis em uma tabela:


            |            angulo
            |
      veloc |  NA    NB    C     PB    PA  
  ----------+------------------------------
  v    NA   |              NA
  .    NB   |              NB    C
  a    C    |  NA    NB    C     PB    PA
  n    PB   |        C     PB
  g    PA   |              PA

onde NA é uma  (usual) abreviatura para Negativa Alta, NB para Negativa Baixa, etc.

Continuando,  mostraremos como estas regras poden ser aplicadas com valores concretos para o ângulo e velocidade angular. Para isso, vamos  definir 2 valores explícitos para o ângulo e para a velocidade angular, para operar com eles.


Consideremos a situação seguinte:

Um valor atual para o ângulo:


Um valor atual para a velocidade angular:


Agora mostraremos como aplicar nossas regras a esta situação real. Vejamos como aplicar a regra

Se o ângulo é zero e a velocidade angular é zero  então a velocidade será zero

para os valores que havíamos definido.

Esta é a variável  lingüística "ângulo" onde nos centramos no conjunto fuzzy "zero" y o ângulo atual:


Nos damos conta que nosso valor real pertence ao conjunto difuso  "zero" em um grau de  0.75:


Agora mostramos a variável lingüística "velocidade angular" onde nos centramos no conjunto fuzzy "cero" o valor atual de velocidade angular:


Nos damos conta que nosso valor real pertence ao conjunto difuso  "zero" em um grau de 0.4:


Como as duas partes da condicao de nossa regra estao unidas por um Y (operação lógica AND) calculamos o  mín(0.75,0.4)=0.4 e cortamos o  conjunto borroso "zero" da variable "velocidad" a este nivel (segundo nossa regra):


Por sua parte, o resultado da regra

Se o ângulo é zero e a velocidade angular é negativa baixa  então a velocidade será negativa baixa.

é:


O resultado da regra

Se o ângulo é zero e a velocidade angular é positiva baixa  então a velocidade será positiva baixa.

é:


O resultado da regra
Se o ângulo é positivo baixo  e a velocidade angular é negativa baixa  então a velocidade será zero.

é:


Estas quatro regras agregadas resultam em um unico gráfico:


O resultado do controlador fuzzy é un conjunto fuzzy(de velocidade), e assim teremos que escolher um valor representativo como saida final. Existem vários métodos heurísticos (métodos de  defuzzificação), um deles toma o centro de gravidade do conjunto fuzzy:


O procedimento completo se  se denomina controlador de Mamdani.

Aplicaciones da la lógica fuzzy

O emprego de controle fuzzy é recomendado:

O emprego do controle fuzzy não é uma boa idéia se:

Conclusão

Aqui concluímos o nosso  breve curso sobre lógica fuzzy e controle fuzzy. Esperamos que aproveite e que as explicações sejam de alguma ajuda para você.

Definições

Interseção de Conjuntos

Chamamos um novo conjunto gerado a partir dos  conjuntos determinados A e B, interseção de A e B, se o novo conjunto contem exatamente esses elementos que estao contidos em  A e em B.

Unificação / União de Conjuntos

Chamamos um novo conjunto gerado a partir dos  conjuntos determinados A e B, união de A e B, se o novo conjunto contem todos os elementos que estao contidos em  A ou em B ou em ambos.

Negação de Conjuntos

Chamamos um novo conjunto que contém todos os elementeos que estão no universo de discurso mas não estão no conjunto A a negação de A.

Variáveis lingüísticas

Uma variavel  lingüística é um quíntuple (X,T(X),U,G,M,), onde X é o nome da variavel, T(X) é o término conjunto (isto é, o conjunto de nomes de valores lingüísticos de X), U é o universo de discurso, G é a gramática para gerar os nomes e M é um conjunto de regras semânticas para associar cada X com seu significado.


Original de http://www.swin.net/usuarios/miguel/index.htm
Miguel Ángel Montejo Ráez: radastan@swin.net