Beruflich Dokumente
Kultur Dokumente
Rafael P. Laufer
rlaufer@gta.ufrj.br
Lógica Fuzzy
Importância relativa da precisão
Respostas imprecisas às vezes são mais eficientes
Um peso de
1500 kg se
aproxima da
sua cabeça a
27.3 m/s! CUIDADO!
1500 kg 1500 kg
Lógica Fuzzy
Maneira conveniente de mapear um espaço de entradas em
um espaço de saídas
Exemplo:
dado o serviço de um restaurante, qual a gorjeta ideal ?
classificação do caixa
serviço de hoje
preta gorjeta de hoje
Conjunto Fuzzy
Conjunto sem fronteiras rígidas e bem definidas
Ex.: dias do fim-de-semana
Segunda-feira Quarta-feira
Sábado
Sexta-feira
Terça-feira Domingo Quinta-feira
Dias do fim-de-semana
0 0
5ª 6ª Sáb. Dom. 2ª 5ª 6ª Sáb. Dom. 2ª
1 1
Fim-de-semana
0 0
5ª 6ª Sáb. Dom. 2ª 5ª 6ª Sáb. Dom. 2ª
Dias da semana Dias da semana
1 Gordo (µ = 1.0)
1 Definitivamente
gordo (µ = 0.87)
Grau de
Pertinência (µ)
Pouco gordo
0 Não é gordo (µ = 0.0) 0 (µ = 0.14)
Peso(Kg) Peso(Kg)
0 0
trimf trapmf
1 1 1
0 0 0
gaussmf gauss2mf gbellmf
0 0 0
sigmf dsigmf psigmf
1 1 1
0 0 0
zmf pimf smf
Operações Lógicas
A AND B Æ min(A,B)
A OR B Æ max(A,B)
NOT A Æ 1 - A
1 1
Lógica de 0 0
dois valores
1 1
0 0
1 1
Lógica de 0 0
vários valores
1 1
0 0
AND OR NOT
min(A,B) max(A,B) (1 – A)
Regras se-então
Usadas para formular as expressões condicionais que
englobam a lógica fuzzy
Se x é igual a A, então y é B
antecedente conseqüente
O antecedente representa uma interpretação que retorna
um número entre 0 e 1
O conseqüente é a designação de todo um conjunto fuzzy B
para a variável de saída y
Ex.: Se o serviço é bom, a gorjeta é média
“serviço é bom” representa um número entre 0 e 1
média é representada por um conjunto fuzzy
Copyright © 2003 Rafael P. Laufer. Todos os direitos reservados.
Bases da Lógica Fuzzy
Regras se-então
A entrada para uma regra é o valor da variável de entrada
A saída é todo um conjunto fuzzy
Interpretação das regras se-então envolvem partes:
Avaliação do antecedente
Fuzzyficação da entrada
0.1
Aplicar operador
fuzzy OR (max) MAX() 0.8
0.8 Grau de pertinência
0.1
Aplicar operador
fuzzy OR (max) MAX() 0.8
0.8 Grau de pertinência
Regras se-então
Avaliação do antecedente
Fácil em lógica de dois valores
Usando vários valores
Se o antecedente é verdadeiro em algum grau de pertinência, o
conseqüente também é verdadeiro no mesmo grau
Número de 0 a 1 é gerado (grau de pertinência)
Aplicação do resultado ao conseqüente
Conjunto fuzzy de saída modificado pela função de implicação
Modificação influenciada pelo grau de pertinência
Maneiras mais comuns
Truncamento, usando a função min()
Dimensionamento, usando a função prod()
Σ
Se o serviço é bom, então a Saída
gorjeta é média gorjeta (5-15%)
Entrada 2
comida (0-10)
Regra 3
Se o serviço é excelente ou a
comida é deliciosa, então a
gorjeta é generosa
Entradas são números Regras são processadas Resultado das regras é O resultado é um número
(não-fuzzy) dentro de em paralelo agregado e defuzzyficado (não-fuzzy) dentro de
uma faixa uma outra faixa
0.1 Resultado da
fuzzyficação
serviço = 6
serviço = 6 comida = 8
deliciosa
0.1 0.8
generosa generosa
ruim péssima
baixa baixa
5 15%
serviço é ruim ou comida é péssima então gorjeta é baixa
serviço = 6 comida = 8
ruim péssima
baixa baixa
5 15%
serviço é ruim ou comida é péssima então gorjeta é baixa
serviço = 6 comida = 8
ruim péssima
baixa baixa
5 15%
serviço é ruim ou comida é péssima então gorjeta é baixa
excelente deliciosa
generosa generosa
5 15%
serviço é excelente ou comida é deliciosa então gorjeta é generosa
serviço = 6 comida = 8
ruim péssima
baixa baixa
5 15%
serviço é ruim ou comida é péssima então gorjeta
a é baixa
excelente deliciosa
generosa
erosa generosa
5 15%
serviço é excelente ou comida é deliciosa então gorjeta é generosa
Passo 5 – Defuzzyficação
Obtém valor numérico que representa a saída do sistema
Entrada é o conjunto fuzzy gerado na agregação
Saída é um número dentro da faixa estipulada
Métodos
Centróide
Bisetor
Média dos máximos
5 15%
Maior dos máximos Resultado da
gorjeta = 13,5% defuzzyficação
Menor dos máximos (centróide)
ruim péssima
bom
excelente deliciosa
serviço = 6 comida = 8
ruim péssima
bom
excelente deliciosa
serviço = 6 comida = 8
ruim péssima
baixa baixa
5 15%
serviço é ruim ou comida é péssima então gorjeta é baixa
excelente deliciosa
generosa generosa
5 15%
serviço é excelente ou comida é deliciosa então gorjeta é generosa
serviço = 6 comida = 8
ruim péssima
baixa baixa
5 15%
serviço é ruim ou comida é péssima então gorjeta é baixa
excelente deliciosa
4 - Agregação
generosa generosa
5 15%
serviço é excelente ou comida é deliciosa então gorjeta é generosa
serviço = 6 comida = 8
5 15%
Copyright © 2003 Rafael P. Laufer. Todos os direitos reservados.
Sistemas Fuzzy
1 – Fuzzyficação das entradas 2 – Aplicação do operador fuzzy 3 – Aplicação de operador de implicação
ruim péssima
baixa baixa
5 15%
serviço é ruim ou comida é péssima então gorjeta é baixa
excelente deliciosa
4 - Agregação
generosa generosa
5 15%
serviço é excelente ou comida é deliciosa então gorjeta é generosa
Editor SIF
Visualizador Visualizador
de regras de superfície
Copyright © 2003 Rafael P. Laufer. Todos os direitos reservados.
Matlab Fuzzy Toolbox
®
Nome do sistema é
mostrado aqui. Pode
ser mudado salvando
o sistema
Nome do sistema é
mostrado aqui. Pode
ser mudado salvando
o sistema
Nome do sistema é
mostrado aqui. Pode
ser mudado salvando
o sistema
Nome do sistema é
mostrado aqui. Pode
ser mudado salvando
o sistema
Construindo o “gorjetador”
Construindo o “gorjetador”
Construindo o “gorjetador”
Nome da variável de
entrada alterado para
“serviço
Construindo o “gorjetador”
Nome da variável de
entrada alterado para
“serviço
Construindo o “gorjetador”
Nome da variável de
entrada alterado para
“serviço
Construindo o “gorjetador”
Nome da variável de
entrada alterado para
“serviço
Construindo o “gorjetador”
Nome da variável de
entrada alterado para
“serviço
“comida”
Construindo o “gorjetador”
Nome da variável de
entrada
saída alterado
alterado
para
para
“serviço
“comida”
“gorjeta”
Área da “Palheta de
Variáveis”. Clique na
variável para editar
suas funções
Área da “Palheta de
Variáveis”. Clique na
variável para editar
suas funções
Área da “Palheta de
Variáveis”. Clique na
variável para editar
suas funções
Área da “Palheta de
Variáveis”. Clique na
variável para editar
suas funções
Nome, tipo e
Nome, tipo da variável, parâmetros numéricos
alcance e o alcance da função são exibidos
mostrado são exibidos ou alterados aqui
ou alterados aqui
Construindo o “gorjetador”
Construindo o “gorjetador”
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Nome, e parâmetros
numéricos da função
alterados
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Nome, e parâmetros
numéricos da função
alterados
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Nome, e parâmetros
numéricos da função
alterados
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Nome, e parâmetros
numéricos da função
alterados
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Construindo o “gorjetador”
Nome, e parâmetros
numéricos da função
alterados
Alcance e alcance
mostrado alterados
para o intervalo [0 10]
Editor de Regras
Editor de Regras
Editor de Regras
Editor de Regras
Editor de Regras
Editor de Regras
Editor de Regras
Editor de Regras
Editor de Regras
Escolha do operador
fuzzy usado em cada
regra
Editor de Regras
Escolha do operador
fuzzy usado em cada
regra
Editor de Regras
Escolha do operador
fuzzy usado em cada
regra
Editor de Regras
Escolha do operador
fuzzy usado em cada Aqui estão os butões
regra para deletar, criar ou
modificar uma regra.
Além disso, ainda é
Barra de status mostra
possível especificar o
as operações mais
peso que cada regra
recentes
tem no resultado final
Copyright © 2003 Rafael P. Laufer. Todos os direitos reservados.
Matlab Fuzzy Toolbox
®
Construindo o “gorjetador”
Construindo o “gorjetador”
Construindo o “gorjetador”
Construindo o “gorjetador”
Construindo o “gorjetador”
Visualizador de Regras
Visualizador de Regras
Visualizador de Regras
Visualizador de Regras
Visualizador de Regras
Visualizador de Superfície
Visualizador de Superfície
Use o mouse para
rotacionar o gráfico
Visualizador de Superfície
Use o mouse para
rotacionar o gráfico
Menu de especificação
das variáveis de
entrada e saída
Visualizador de Superfície
Use o mouse para
rotacionar o gráfico
Menu de especificação
das variáveis de
entrada e saída
Visualizador de Superfície
Use o mouse para
rotacionar o gráfico
Menu de especificação
das variáveis de
entrada e saída
Visualizador de Superfície
Use o mouse para
rotacionar o gráfico
Menu de especificação
das variáveis de
entrada e saída
Visualizador de Superfície
Use o mouse para
rotacionar o gráfico
Menu de especificação
das variáveis de
entrada e saída