Baixe o app para aproveitar ainda mais
Prévia do material em texto
LÓGICA FUZZY IMPLEMENTAÇÃO COMPUTACIONAL DANILO MACHADO PIRES danilo.pires@unifal-mg.edu.br É uma teoria matemática que pode ser entendida como uma generalização da lógica booleana. Possibilita tratar de um modo mais adequado expressões inerentes a comunicação humana. Criada por Loft Zadeh em 1965. Pode sistematicamente traduzir termos difusos da comunicação humana em valores compreensíveis por computadores O conceito de dualidade “Bivalência” L. fuzzy Probabilidade Incerteza Ocorrência do evento Definição do evento ? Conjunto pessoas ricas Conjunto das pessoas altas Conjunto dos bons alunos ? ? ? ? ? ? ? ? ? ? ? ? ? ? São rígidos com pertinência {0,1} São flexíveis com pertinência [0,1] 1 0 1 0 10 50 100 10 50 100 1 se A ( ) 0 se x A A x f x ( ) [0,1]A x Conjunto Clássico Conjunto Fuzzy 1 1 µ(x) X(x) FUZZY CLÁSSICO Baixo Médio Alto 170 180 Altura (cm) Indivíduo Altura Conjunto BAIXO Conjunto MÉDIO Conjunto ALTO Paulo 179cm 0 1 0 EXEMPLO: Altura de um indivíduo Baixo Médio Alto Altura (cm) Indivíduo Altura Conjunto BAIXO Conjunto MÉDIO Conjunto ALTO Paulo 179cm 0 0,6 0,4 170 180 179 0,4 0,6 179 { ( ) / }AA x x r θ a b c a b c d 1 Gaussiana Triangular Trapezoidal 1 1 1 1 1 1 A A B B A B A B µ(x) µ(x) X(x) X(x) )()()()( xxx BABA )()()()( xBxAxBA A B A B FUZZY CLÁSSICO 1 1 A _ A _ A _ A )(1)( xx AA µ(x) A _ A X(x) _ A FUZZY CLÁSSICO 1 1 A _ A _ A _ A )(1)( xx AA µ(x) _ A A x _ A A x A X(x) _ A FUZZY CLÁSSICO 1 1 A _ A _ A _ A )(1)( xx AA µ(x) A _ A A _ A A X(x) _ A FUZZY CLÁSSICO Conjuntos Fuzzy normal Conjuntos Fuzzy Convexo (todos os níveis são conjuntos fechados) O suporte do conjunto é limitado Para utilizar números fuzzy em qualquer sistema faz necessário efetuar operações aritméticas. (Fuzzy arithmetic). Permite “estender” qualquer operação pontual para operações envolvendo conjuntos difusos. Seja A um conjunto fuzzy em X. ( )B f A :f X Y ( ) sup ( )B x Ay x f(x) x A ={um conjunto fuzzy em X} μA (x) A 1 f(x) x A ={um conjunto fuzzy em X} μA (x) A 1 f(x) x μ B ( y ) A ={um conjunto fuzzy em X} μA (x) A 1 f(x) x μ B ( y ) A ={um conjunto fuzzy em X} μA (x) A 1 f(x) x μ B ( y ) A ={um conjunto fuzzy em X} μA (x) A 1 f(x) x μ B ( y ) A ={um conjunto fuzzy em X} Conjunto fuzzy B=f(A) μB (y) =supxμA(x) μ B ( y ) μA (x) B A 1 1 f(x) x Processador De Entrada Processador De Saída Máquina de Inferência Fuzzy Base de Regras Saída Entrada Conjunto Fuzzy Conjunto Fuzzy Entrada Saída X є Rn Yє Rn Fuzzificação Defuzzificação Processador de entrada (Fuzzificação). Frio Normal Quente Jovem Adulto 0 30 50 °C Temperatura μ (T) 1 1 anos μ (t) Faixa Etária idoso 0 30 45 20 0,4 Base de Regras. SE....Então Exemplo: SE (temperatura é baixa) Então (ambiente é frio) SE (Temperatura é baixa) E (umidade é alta) Então (ambiente é desconfortável) Máquina de inferência. Regra1: SE (x é A1 e y é B1) ENTÃO (z é C1) Regra 2: SE (x é A2 e y é B2) ENTÃO (z é C2) 1 2C C DEFUZZIFICAÇÃO z0 z0 z0 Centróide Média dos Máximos Menores dos Máximos ^ 1 1 ( ) ( ) n A i i i n Ai i x x y x μ μ μ • Objetivo do sistema: – Um analista de projetos de uma empresa quer determinar o risco de um determinado projeto (%) / Saída – Quantidade de dinheiro e de pessoas envolvidas no projeto /Entrada • Representação das variáveis de entrada e da variável de saída Dinheiro Inadequado Médio Adequado Qt. Pessoas 65 Baixa Alta 30 45 60 (%) 35 Risco 10 40 60 90 (%) (%) Baixo normal Alto Problema: Qual o risco em investir 35% do dinheiro disponível e utilizar 60% dos funcionários no projeto em questão? Dinheiro QT. Pessoal Risco SE adequado ou baixa Então baixo SE médio E alta Então normal SE inadequado Então alto Base de Regras • Passo 1: Fuzzificar 25,0)35(&75,0)35( mi Dinheiro Inadequado Médio Adequado 35 .25 .75 Qt. Pessoas 60 Baixa Alta .2 .8 8,0)60(&2,0)60( ab Dinheiro QT. Pessoal Risco SE adequado ou baixa Então baixo SE médio E alta Então normal SE inadequado Então alto baixa Alta Alto Baixo normal Avaliação das regras Inadequado Adequado Médio Dinheiro Qt. Pessoal Risco ou Ou→máximo E→mínimo 0 0,2 35 Inadequado Adequado Médio baixa Alta Alto Alto Baixo normal Baixo normal baixa Avaliação das regras Inadequado Adequado Médio Alta Dinheiro Qt. Pessoal Risco ou e Ou→máximo E→mínimo 0 0,2 0,25 0,8 Dinheiro QT. Pessoal Risco SE adequado ou baixa Então baixo SE médio E alta Então normal SE inadequado Então alto 35 Alto Baixo normal Inadequado Adequado Médio Dinheiro Risco Ou→máximo E→mínimo 0,75 Avaliação das regras Dinheiro QT. Pessoal Risco SE adequado ou baixa Então baixo SE médio E alta Então normal SE inadequado Então alto Risco Risco Risco Risco 37 Então o risco de investimento é de 70,4% Risco %4,70 8,3 5,267 75,075,075,025,025,025,02,02,02,02,0 75,0*)1009080(25,0*)706050(2,0*)40302010( C 37 Então o risco de investimento é de 70,4% Modelagem Fuzzy para Estimar o Volume do Eucalyptus sp. 40 árvores para ajuste do modelo. Variáveis Lingüísticas (DAP)2,HT: Antecedentes VTC: Conseqüente. Linguagem de programação C++ Funções de pertinência do tipo triangular. Método de inferência Mandani Método de defuzzificação Centróide //variável dap ao quadrado(retorna um registro) registro DAP(double x){ registro dap; dap.classe1 = pertinenciatri(319.3, 600.3, 881.2,x); dap. classe2 = pertinenciatri(600.3, 881.2, 1162,x); dap. classe3 = pertinenciatri(881.2, 1162, 1443,x); dap. classe4 = pertinenciatri(1162, 1443, 1724,x); dap. classe5 = pertinenciatri(1443, 1724, 2005,x); dap. classe6 = pertinenciatri(1724, 2005, 2286,x); dap. classe7 = pertinenciatri(2005, 2286, 2567,x); return temp; } Regra Se E ENTÃO DAP2 HT V Min(DAP,HT,VCC) 1 dap.classe6 ht.classe5 v.classe6 Min(dap.classe6, ht.classe5, v.classe6) 2 dap.classe5 ht.classe5 v.classe6 Min(dap.classe5, ht.classe5, v.classe6) 3 dap.classe3 ht.classe5 v.classe4 Min(dap.classe3, ht.classe5, v.classe4) ⋮ ⋮ ⋮ ⋮ 26 dap.classe3 ht.classe3 v.classe3 Min(dap.classe3, ht.classe3, v.classe3) Regra Se E ENTÃO DAP2 HT V Min(DAP,HT,VCC) 1 dap.classe6 ht.classe5 v.classe6 Min(dap.classe6, ht.classe5, v.classe6) 2 dap.classe5 ht.classe5 v.classe6 Min(dap.classe5, ht.classe5, v.classe6) 3 dap.classe3 ht.classe5 v.classe4 Min(dap.classe3, ht.classe5, v.classe4) ⋮ ⋮ ⋮ ⋮ 26 dap.classe3 ht.classe3 v.classe3 Min(dap.classe3, ht.classe3, v.classe3) cl1 e 0,25 0,8 cl2 cl3 cl4 ... cl1 cl2 cl3 ... cl1 cl2 cl3 cl4 ... 900 37,5 Regra Se E ENTÃO DAP2 HT V Min(DAP,HT,VCC) 1 dap.classe6 ht.classe5 v.classe6 Min(dap.classe6, ht.classe5, v.classe6) 2 dap.classe5 ht.classe5 v.classe6 Min(dap.classe5, ht.classe5, v.classe6) 3 dap.classe3 ht.classe5 v.classe4 Min(dap.classe3, ht.classe5, v.classe4) ⋮ ⋮ ⋮ ⋮ 26 dap.classe3ht.classe3 v.classe3 Min(dap.classe3, ht.classe3, v.classe3) cl1 e 0,25 0,8 cl2 cl3 cl4 ... cl1 cl2 cl3 ... cl1 cl2 cl3 cl4 ... 900 37,5 Regra Se E ENTÃO DAP2 HT V Min(DAP,HT,VCC) 1 dap.classe6 ht.classe5 v.classe6 Min(dap.classe6, ht.classe5, v.classe6) 2 dap.classe5 ht.classe5 v.classe6 Min(dap.classe5, ht.classe5, v.classe6) 3 dap.classe3 ht.classe5 v.classe4 Min(dap.classe3, ht.classe5, v.classe4) ⋮ ⋮ ⋮ ⋮ 26 dap.classe3 ht.classe3 v.classe3 Min(dap.classe3, ht.classe3, v.classe3) cl1 e 0,25 0,8 cl2 cl3 cl4 ... cl1 cl2 cl3 ... cl1 cl2 cl3 cl4 ... 900 37,5 Regra Se E ENTÃO DAP2 HT V Min(DAP,HT,VCC) 1 dap.classe6 ht.classe5 v.classe6 Min(dap.classe6, ht.classe5, v.classe6) 2 dap.classe5 ht.classe5 v.classe6 Min(dap.classe5, ht.classe5, v.classe6) 3 dap.classe3 ht.classe5 v.classe4 Min(dap.classe3, ht.classe5, v.classe4) ⋮ ⋮ ⋮ ⋮ 26 dap.classe3 ht.classe3 v.classe3 Min(dap.classe3, ht.classe3, v.classe3) cl1 e 0,25 0,8 cl2 cl3 cl4 ... cl1 cl2 cl3 ... cl1 cl2 cl3 cl4 ... 900 37,5 0,9717 1,755 DAP2=900cm2 HT=37.5m VCC=1.02m3 Linguagem de programação C++ Gnuplot. 1 a m b μA(d) b1 b2 2 2 2 ( ) ( ) 0 d x t x t dt ( ) cos( )x t A t k m x k ( )x t t Exemplo: ( ) cos( . )x t A t 1 0.2b 0.8 1 1.2 1 0,5 0 0.9 1.1 1A Exemplo: ( ) cos( . )x t A t 1 [0.8 1 1.2] 0.8 1 1.2 1 0,5 0 0.9 1.1 6 3 -níveis N 1A 0.2b Exemplo: ( ) cos( . )x t A t 1 [0.8 1 1.2] 0.8 1 1.2 1 0,5 0 0.9 1.1 6 3 -níveis N ( ) 1 cos(1 ) 0 t x t 0.8 1A 0.2b ( ) 1 cos(1 ) 0 1 cos(1 ) 0,5 t x t 0.8 0.9 Exemplo: ( ) cos( . )x t A t 1 [0.8 1 1.2] 0.8 1 1.2 1 0,5 0 0.9 1.1 6 3 -níveis N 1A 0.2b ( ) 1 cos(1 ) 0 1 cos(1 ) 0,5 1 cos(1 ) 1 1 cos(1 ) 0.5 1 cos(1 ) 0 t x t 1 0.8 0.9 1.1 1.2 Exemplo: ( ) cos( . )x t A t 1 [0.8 1 1.2] 0.8 1 1.2 1 0,5 0 0.9 1.1 6 3 -níveis N 1A 0.2b ( ) cos( . )x t t 1 ( )x t t (15, 0.75) 1A ( ) cos( . )x t t "próximo" de 1 (15) "próximo" de -0.75x ( )x t t (15, 0.75) t x(t) μ (x(t)) t x(t) μ (x(t)) t x(t) μ (x(t)) μ (x(t)) x (t ) t μ (x(t)) x (t ) t μ (x(t)) x (t ) t x (t ) t
Compartilhar