Inteligência Artificial para Jogos - Lógica Difusa

17
Inteligência Artificial para Jogos Lógica Difusa GT-JEDI – Jogos Digitais Inteligência Artificial para Jogos UNISINOS Prof. MSc. João Ricardo Bittencourt Update: 20 Set. 2010 [email protected] Agradeço e dedico estas aulas ao Prof. Osório “Tome a pílula vermelha”

description

Aula 7 - Inteligência Artificial para Jogos Curso de Jogos Digitais - UNISINOS www.unisinos.br/jogos (Aula criada com apoio do Prof.Dr. Fernando Osório) Licença: Creative Commons - Atribuição-Uso não-comercial-Compartilhamento (BY-NC-SA) http://creativecommons.org/licenses/by-nc-sa/2.5/br/

Transcript of Inteligência Artificial para Jogos - Lógica Difusa

Page 1: Inteligência Artificial para Jogos - Lógica Difusa

Inteligência Artificial para Jogos

Lógica Difusa

GT-JEDI – Jogos DigitaisInteligência Artificial para Jogos

UNISINOS

Prof. MSc. João Ricardo Bittencourt

Update: 20 Set. [email protected]

Agradeço e dedico estasaulas ao Prof. Osório

“Tome a pílulavermelha”

Page 2: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Sumário Conceitos básicos de lógica Conjuntos difusos Variáveis linguisticas Regras difusas Métodos de fuzzification/defuzzification Considerações Finais

Page 3: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Conceitos básicos Amplia a lógica booleana. Proposta por Loft

Zadeh em 1965. Considera termos do tipo: muito, pouco, alguns,

parcial, estável, fraco, forte, alto, baixo,... São termos difíceis de estabelecer um valor fixo O termo difuso está relacionado com o conceito

de imprecisão

Page 4: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Conceitos básicos Um elemento pode estar contido em vários

termos com graus de pertinência diferentes Por exemplo:

Na lógica booleana: Agora é dia OU é noite Na lógica difusa: Agora é dia E noite (com

graus diferentes de persistência)

Page 5: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Conjuntos difusos Define o quanto que um objeto pertence a um

conjunto São usadas as funções de pertinência

(membership function) Podem ser usadas diferentes funções

Linear, normal, gaussiana, ascendente, descedente, sigmóide, constante, triangular, trapezoidal,...

Page 6: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Conjuntos difusosTriangular

Trapezoidal

Descendente

Ascendente

Page 7: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Variáveis lingüísticas Trata-se de uma associação de um adjetivo à um

conjunto difuso Uma determinada variável pode ser adjetivada

com vários termos (funções difusas) Idade Muito jovem, jovem,velho, muito velho→

Page 8: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Variáveis lingüísticas Temperatura Muito baixa,baixa, normal, alta, →

muito alta

temperature

Otemperature

0

1

353227 36.5 37.5 40 41 43

very_highhighnormallowvery_low

Page 9: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Variáveis lingüísticas Sarampo Nula, Baixa, Pode ser, Alta→

sarampo

Osarampo

0

1

5

highmaybelownull

10 5030 8070 95

Page 10: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Regras difusas São regras do tipo IF ... THEN entretanto utiliza

variáveis linguísticas Todas as regras difusas são ativadas na

inferência com graus diferentes

IF age IS very_young THEN sarampo IS high IF age IS old AND febre IS alta THEN sarampo IS

maybe IF age IS very_old THEN sarampo IS null ...

Page 11: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Regras difusasTemperature

very_low low normal high very_high

Age

very_young null low maybe high highyoung null null low maybe highold null null null low lowvery_old null null null null low

Quadro resumo das regras

Page 12: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Inferência difusa

Page 13: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Inferência difusa As variáveis precisas (crisp) são lidas do ambiente

(exemplo, idade = 48 anos) Precisam ser “fuzzyficadas” aplicar o valor sob os →

conjuntos difusos da variável linguística very_young = 0.0 young = 0.25 old = 0.25 very_old = 0.0

Todas as variáveis de entrada precisam passar por este processo de fuzzification

Page 14: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Inferência difusa Agora para cada regra difusa aplica-se as variáveis

difusas na condicional A variável difusa da conseqüência da regra (THEN)

recebe um grau a partir das variáveis antecedentes A operação AND O menor valor dos conjuntos→

Se o valor do grau da conseqüência for maior que seu grau atual então o grau é substituído pelo maior

Page 15: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Inferência difusa Exemplo

IF age IS old AND febre IS alta THEN sarampo IS pode_ser

Se old é 0.25, alta é 0.1, then poder_ser da variável sarampo recebe 0.1

No término da inferência todas as variáveis de saída possuem seus termos com algum grau de pertinência

É feito o processo de defuzzification para tornar as variáveis precisas novamente

Page 16: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Inferência difusa Podem ser usados os seguintes métodos:

Máximo, média dos máximos, média local dos máximos, centro de gravidade (centróide), centro da área, centro da média

Page 17: Inteligência Artificial para Jogos - Lógica Difusa

UNISINOS - João Ricardo Bittencourt

Considerações Finais Isto tudo pode ser usado em jogos???

Claro! Pode ser usado como módulo de controle dos agentes

É um sistema especialista só com regras difusas Já foram feitos alguns projetos finais no curso

usando Lógica Difusa Veja o site do FuzzyF

Framework desenvolvido em Java distribuído sob a licença GNU GPL

http://www.inf.unisinos.br/~jrbitt/fuzzyf