lógica fuzzy e matlab

9
Introdução A lógica fuzzy ou lógica “nebulosa” é a lógica que permite simultânea associação entre dados numéricos e conhecimento lingüístico. Para muitos problemas existem duas formas distintas de abordagem para busca de soluções: 1. Conhecimento Objetivo: É usado todo o tempo em formulações dos problemas, identificando as variáveis e parâmetros através do uso de modelos matemáticos (equações). 2. Conhecimento Subjetivo: Representa informação lingüística que é usualmente impossível quantificar usando a matemática tradicional. São conhecimentos de especialistas que acumularam anos de experiência na forma de tratamento e resolução, com técnicas intuitivas. Exemplos de conhecimentos objetivos são: séries temporais para estudo de ações do mercado financeiro, modelos de Econometria para Macroeconomia, modelos de demanda de produto, regressões lineares e não lineares para tendências de transações financeiras, etc. Já para os conhecimentos subjetivos, tem-se como exemplo: se as ações estão subindo e o dólar caindo, comprar mais ações; se o governo não controla a inflação e a dívida interna aumenta, não investir em títulos da dívida pública, pois existe uma grande possibilidade de default (calote); se as compras estão aumentando e a produção está baixa, tem-se que subir o preço do produto vendido. Como se percebe, o conhecimento subjetivo fica difícil de ser tratado matematicamente, quando na verdade se tem um problema de transcrição lingüística para variáveis numéricas. Como representar “subir um pouco”, “comprar menos”, “vender mais”? Essa é a função da lógica fuzzy elaborada no início da década de 70. Recentemente, a lógica fuzzy fez sentir presença com aplicações no mundo dos negócios. Um sistema de avaliação de pedidos de reembolso de seguros foi projetado pela General Cologne Re, ajudando companhias de seguro identificar pedidos “legítimos” e pedidos “suspeitos” de fraude. Com isso deixou seu corpo de auditores com mais tempo para focar seus esforços em investigações potencialmente fraudulentas. O sistema foi construído usando analistas de fraude de 12 companhias européias. Hoje, mais de 20 das maiores companhias de seguro européias estão utilizando o sistema que tem demonstrado eficiência de 85%. Na área de análise de risco especialistas tem com sucesso automatizado sistemas de decisão baseado em regra fuzzy. A dominante alemã de cartão de crédito e débito em transações estrangeiras, GZS Corporation, usou a automatização de seu conhecimento em análise de risco com a lógica fuzzy. Segundo a empresa, 9 entre 10 transações de risco são automaticamente identificadas corretamente e a transação bloqueada antes da autorização. Lógica Nebulosa e Negócios Conjuntos Nebulosos

Upload: pri-santos

Post on 23-Jul-2015

323 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Lógica fuzzy e matlab

Introdução

A lógica fuzzy ou lógica “nebulosa” é a lógica que permite simultânea associação entre dados numéricos e conhecimento lingüístico. Para muitos problemas existem duas formas distintas de abordagem para busca de soluções:

1. Conhecimento Objetivo: É usado todo o tempo em formulações dos problemas, identificando as variáveis e parâmetros através do uso de modelos matemáticos (equações).

2. Conhecimento Subjetivo: Representa informação lingüística que é usualmente impossível quantificar usando a matemática tradicional. São conhecimentos de especialistas que acumularam anos de experiência na forma de tratamento e resolução, com técnicas intuitivas.

Exemplos de conhecimentos objetivos são: séries temporais para estudo de ações do mercado financeiro, modelos de Econometria para Macroeconomia, modelos de demanda de produto, regressões lineares e não lineares para tendências de transações financeiras, etc.

Já para os conhecimentos subjetivos, tem-se como exemplo: se as ações estão subindo e o dólar caindo, comprar mais ações; se o governo não controla a inflação e a dívida interna aumenta, não investir em títulos da dívida pública, pois existe uma grande possibilidade de default (calote); se as compras estão aumentando e a produção está baixa, tem-se que subir o preço do produto vendido.

Como se percebe, o conhecimento subjetivo fica difícil de ser tratado matematicamente, quando na verdade se tem um problema de transcrição lingüística para variáveis numéricas. Como representar “subir um pouco”, “comprar menos”, “vender mais”? Essa é a função da lógica fuzzy elaborada no início da década de 70.

Recentemente, a lógica fuzzy fez sentir presença com aplicações no mundo dos negócios. Um sistema de avaliação de pedidos de reembolso de seguros foi projetado pela General Cologne Re, ajudando companhias de seguro identificar pedidos “legítimos” e pedidos “suspeitos” de fraude. Com isso deixou seu corpo de auditores com mais tempo para focar seus esforços em investigações potencialmente fraudulentas. O sistema foi construído usando analistas de fraude de 12 companhias européias. Hoje, mais de 20 das maiores companhias de seguro européias estão utilizando o sistema que tem demonstrado eficiência de 85%.

      Na área de análise de risco especialistas tem com sucesso automatizado sistemas de decisão baseado em regra fuzzy. A dominante alemã de cartão de crédito e débito em transações estrangeiras, GZS Corporation, usou a automatização de seu conhecimento em análise de risco com a lógica fuzzy. Segundo a empresa, 9 entre 10 transações de risco são automaticamente identificadas corretamente e a transação bloqueada antes da autorização.

 

Lógica Nebulosa e Negócios

Conjuntos Nebulosos

Na teoria clássica de conjuntos, um conjunto A é definido como uma coleção de objetos. Nesse caso, um objeto possui apenas duas possibilidades quanto à sua relação com um conjunto A, ou seja, um dado objeto é ou não um elemento do conjunto. A representação algébrica na lógica clássica é uma função bivalente

Page 2: Lógica fuzzy e matlab

No entanto, na teoria dos conjuntos fuzzy, esse objeto possui graus variados depertinência de dentro do conjunto. Uma função indicadora multivalente leva esse conceito de pertinência representada da seguinte forma:

Veja o seguinte exemplo.Quando uma pessoa poderá ser considerada jovem?Uma pessoa não deixa de ser jovem logo que passa de uma idade. A pessoa vai deixando esse “grau” denominado jovem ao longo de sua vida. Imagine que a função em que relata a mudança na característica da pessoa seguindo a seguinte relação:

Então, o grau de jovem varia conforme a idade avança mas, de maneira contínua e não abrupta. A relação acima é traduzida em gráfico para a função “Jovem” com seus graus de juventude.

Se essa relação hipotética fosse verdade uma coleção de pessoas poderia ser denominada mais jovem, menos jovem, não tão jovem, e assim sucessivamente, dependendo do grau de juventude. Esse grau de juventude recebe o nome de grau de pertinência ao conjunto dos

jovens. Poderia se ter a seguinte tabela ao lado ( a abaixo).

Graus de Pertinência para a Juventude

Operadores Nebulosos

Page 3: Lógica fuzzy e matlab

Dados conjuntos fuzzy A e B sobre um universo X e caracterizado por funções

de pertinência   e   as operações mais usuais são:(a) União: o conjunto fuzzy   é caracterizado pela função de pertinência:

                      

                        

                                   Figura 2 – Operador União 

 

 

(b) Intersecção: o conjunto fuzzy   é caracterizado pela função de pertinência:

Page 4: Lógica fuzzy e matlab

                      

                        

                                   Figura 3 – Operador Intersecção   

Os operadores min e max, assim como outros não mencionados neste texto mas bastante difundido na literatura especializada satisfazem as seguintes propriedades:

1. Involução: 2. Comutatividade: 

3. Associatividade: 

4. Distributividade: 5. Idempotência: 

6. Absorção: 7. Identidade: 

8. Lei de Morgan:  

Essas atribuições formam as variáveis conhecidas como variáveis lingüísticas(MANDAMI,MENDEL, JANTZEN).

Variáveis Linguísticas

Page 5: Lógica fuzzy e matlab

Pensar em variáveis como objetos lingüísticos é mais fácil do que traduzir a realidade em forma de números. No mercado financeiro, sempre os analistas tentam traduzir o que os números dizem através de palavras. Assim, num conjunto fuzzy, uma variável lingüística sempre aparecerá com adjetivos: “alto”, “baixo”, “pouco”, “muito pouco”, “muito pequeno”, “muito grande”, dependendo de seu grau de pertinência.

            A função de pertinência é a representação gráfica da magnitude de participação de cada entrada no processo. Entrada num processo pode ser, por exemplo, valores de vendas, valores de compra, valores das ações, índices de inflação, etc. Essas entradas recebem então “pesos” de informação através da função de pertinência. Através de regras lógicas como SE ENTÃO, SE NÃO, E, OU e uma combinação delas fornecem um resultado de saída que poderá ser numérico ou lingüístico. Essas regras formam o que é conhecido como base de conhecimento e é essa base que liga as diversas funções de pertinência da entrada para serem interpretadas por uma caixa chamada “máquina de inferência”.

            Então, quando se usa uma representação por sistemas fuzzy, deseja-se que um usuário humano consulte o sistema especialista apresentando fatos à base de fatos. A máquina de inferência deduz informações novas ao comparar os fatos do usuário com as premissas colocadas pela base de regras.

As funções de pertinência sempre recebem algumas formas básicas de representação, sendo as mais comuns:

o Trapmf: trapezóide.o Gbelmf: sino.o Trimf: triangular.o Gaussmf: gaussiana.o Smf: curva molde – S.o Zmf: curva molde – Z.o Psigmf: curva sigmóide.

 

 

 

 

Lógica Nebulosa e Negócios

Regras Nebulosas

O conversor para variáveis nebulosas é conhecido como “Nebulizador” ou “Fuzzyficador”. Uma vez o resultado lingüístico obtido faz-se a transcrição para a variável numérica através de um “Desnebulizador” ou “Defuzzificador” (MENDEL(1995)).             Imagine que se tem um banco de dados contendo os valores percentuais de queda e

Page 6: Lógica fuzzy e matlab

alta da bolsa de valores de São Paulo, medidos pelo IBOVESPA. Então se deve seguir o seguinte esquema ao lado.

Para a decisão de investir, por exemplo, em ações da BOVESPA o gestor quer saber quando a bolsa está em baixa, para fazer aquisições de ações mais baratas. A figura 6 mostra como, num determinado dia a fuzzyficação traduz um valor numérico para a função de pertinência. Então, por exemplo, o índice passa a possuir dois graus de pertinência. Ele terá uma pertinência de 0,23 para mercado neutro e 0,72 para mercado em baixa (Figura ao lado) A regra lógica então deve ser elaborada, levando em conta a experiência do gestor. Uma regra por exemplo, poderia ser:

 

Regra:   SE (ibovespa) ~ (baixo) ENTÃO (comprar)              SE (ibovespa) ~ (neutro) ENTÃO (comprar)              SE (ibovespa) ~ (alto)   ENTÃO (não comprar)

            Logo, neste exemplo, o gestor seria informado sobre o grau de pertinencia e qual a melhor decisão. Neste caso, como a maior pertinência é 0,72 para mercado em baixa, e pelas regras, mercado em baixa é para comprar, o gestor receberia uma informação de COMPRAR.

Como são criadas essas regras? Nesse ponto é que entra o sistema especialista, ou ainda, um especialista do setor para ajudar na criação de regras mais complexas. Esse especialista, diante dos fatos observados, teria uma excelente noção dos acontecimentos, mas não saberia traduzir sua decisão em números. Por exemplo, porque comprar, ou porque tomar a decisão de vender? O especialista sabe quando, e sabe porque, mas talvez não consiga explicar matematicamente porque sabe, ou como sabe. Ele provavelmente dirá que é um instinto, é uma observação. Cabe então a quem estiver criando as regrasfuzzy traduzir essa experiência do gestor em termos das funções de pertinências e suas intersecções.  

 

 

 

 

Page 7: Lógica fuzzy e matlab

Funçõe de pertinência classícas

 Programa Computacional

Existem muitos programas de computadores disponíveis para o uso da lógica fuzzy. Devido a grande difusão da teoria fuzzy, pode-se encontrar desde programas prontos para criar as regras até ambientes onde o usuário pode criar um programa mais específico para o problema que deseja ser abordado. Neste trabalho especificamente falando, utilizou-se um ambiente de programação em Matlab, versão 6.5 ©Mathworks.

Page 8: Lógica fuzzy e matlab

Outro ambiente possível de utilização fuzzy é o Mathematica © Wolfram. Ou ainda o ambiente Mapple. Os três ambientes de programação fornecem possibilidades aos usuários de utilizar seu modo padrão de regras fuzzy através de um programa executável ou seu modo para desenvolvimento de programas mais específicos através da programação de algoritmos. No caso deste artigo, utilizou-se dos dois modos na apresentação dos exemplos em Matlab.

            Para o Matlab, o toolbox fuzzy possui o programa fuzzy.m como editor básico de regras. Esse programa possui um módulo de entrada, o módulo de regras e o módulo final das saídas já defuzzificadas. No módulo de entrada o usuário escolhe para cada variável, qual a função de pertinência mais adequada e qual a interligação entre as lingüísticas baixa, alta, média, baixa-alta, etc. A curva padrão que o Matlab oferece é a triangular, mas todas as outras podem ser escolhidas e suas inclinações e localizações no eixo x podem ser alteradas. No módulo de regras é possível usar Mandami ligando as regras e suas respectivas decisões de forma bastante simples e interativa com o usuário. Por fim, no módulo de saída, se escolhe quais as funções de pertinência da saída e suas relações com a entrada. Assim por exemplo, se a entrada é alta e a saída é baixa, respeitando o módulo das regras gera-se o resultado final numa operação denominada “view”. O módulo de regras segundo Mandami, pondera as entradas e saídas usando o centro de massa e mostra ao usuário o valor de pertinência através do desfuzzificador.

            Na parte do ambiente de programação, são necessários diversos passos e uma boa noção de programação para a utilização dos programas do Matlab do toolbox fuzzy. Primeiro é necessário a adição das variáveis do problema através do programaaddvar.m, onde se define os nomes e valores possíveis de serem atingidos para tal variável. Depois deve-se criar o domínio de entrada através da função addmf.m, programa que cria as funções de pertinência, bem como os valores dessas funções no problema e as variáveis lingüísticas: alto, média, baixo, etc. Depois cria-se as funções de pertinência usando os dois programas anteriores, apenas identificando nos mesmo que são funções de saída (output) e não de entrada(input). O terceiro passo é a criação das regras numa matriz, cuja ordem deve respeitar o número de variáveis e o número de entradas e saídas do programa. Deve-se então adicionar as regras através do programaaddrule.m.

            Por fim, os resultados são gerados através do programa evalfis.m fornecendo ao mesmo, as entradas e regras já geradas anteriormente. Como as respostas são números de pertinência, é possível fazer loops iterativos para a geração de cenários e simulação de históricos de tomadas de decisão. Todos os programas devem estar juntos num mesmo programa maior e respeitando as regras de programação de algoritmo comum a qualquer linguagem de programação, adequada é claro, ao formato do Matlab. A forma algorítmica para execução do programa seria:

Passo1: Criar o programa usando newfis.mPasso2: Criar as variáveis lingüísticas de entrada e saída usando addvar.mPasso3: Escolher as funções de pertinência e determinar os domínios de entrada e saída usando addmf.mPasso4: Criar as regras fuzzy para as funções de pertinência usando uma matriz de entradas e saídas conforme definição do Matlab e usar o programa addrule.m para inserir as regras no programa.Passo5: Avaliar a resposta fuzzy através do programa evalfis.m

            Pode-se automatizar a resposta da função de pertinência que vem do passo 5 criando entradas dentro de um loop. Essas entradas podem ser aleatórias ou entradas de valores reais para comparar os resultados de saídas com passos a frente.

http://www.mudancasabruptas.com.br/LogicaNeb3.html