Técnicas de Inteligência
Artificial para Resolução do
Sokoban
Aluna: Jacqueline Rodrigues
Orientadora: Leliane de Nunes Barros
Introdução
O que é o sokoban ?
➔
➔
Objetivo
Regras
figura 1
Motivação
Este jogo tem despertado a atenção de pesquisadores na área de jogos
em Inteligência Artificial pois apesar da simplicidade das regras do
sokoban, existem tabuleiros de grande complexidade, o que o torna um
jogo muito interessante.
Principal desafio: evitar deadlocks
Deadlock de esquina
Deadlock de parede
Implementações
Representação do problema: "modelo de transição de
estados".
Algoritmo para percorrer esse modelo: IDA*
Como o IDA* funciona?
Heurística de Limite
Inferior
Para melhorar o desempenho da busca, é preciso usar uma função heurística
sofisticada que estime a distância de um determinado estado para um
estado solução, dada em termos de número de movimentos de caixas. Essa
distância é considerada um limite inferior, dado que a distância real
será sempre maior considerando-se também os movimentos do sokoban e os
movimentos que rewsolvem conflitos entre os blocos. Técnicas
envolvidas:
–
–
–
–
–
–
Minmatching
Detecção de deadlocks (becos sem saída)
Melhoria de entrada
Posição do homem
Conflitos lineares
Atualizações dinâmicas
Tabela de Hash
Tabelas de Hash são usadas para evitar que o algoritmo visite estados
que já foram visitados anteriormente e que podem ser alcançados por
•diversos caminhos. Hash tables também eliminam ciclos na busca.
Ordenação de Movimentos
Ao invés de visitar estados sucessores em uma ordem arbitrária, essa
técnica permite visitar os melhores estados sucessores antes dos
demais.
Quando usamos o algoritmo IDA*, ordenar os movimentos nos nós
internos não afeta em nada o desempenho da busca, com exceção da
última iteração (profundidade com o maior número de nós a serem
visitados). Como a ultima iteração é a maior de todas e ela será
abortada quando encontrarmos uma solução, se a solução for encontrada
rapidamente pode levar a grandes ganhos de desempenho.
Tabelas de deadlocks
Um programa que roda antes da busca, IDA*, acha todos os deadlocks de
tamanho 5x4 e armazenam esses padrões em um banco de dados que pode
ser consultado durante a busca. Antes de um movimento ser gerado, sua
configuração é consultada no banco de deadlocks, se for considerada um
deadloack, o movimento não é gerado.
Macro Túnel
Túnel - restringe a mobilidade do agente a apenas uma direção.
Macro Túneis tratam esses corredores como se fossem apenas uma única
localização.
Túnel
Macro Meta
O procedimento Macro Meta é chamado pela busca quando uma pedra entra
na área de armazenamento. Macro Meta posiciona as pedras na posição
correta dentro da área de armazenamento de forma eficiente. Essa
técnica reduz drasticamente o tamanho da árvore de busca.
Podas de Metas
Quando usamos a técnica de Macro Meta para posicionar as pedras em sua
posição correta dentro da área de armazenamento, o programa considera
aquela pedra como resolvida (poda de metas)e descarta todas as outras
alternativas de movimentos para aquela caixa.
Busca de Padrões
É um algoritmo que é chamado pela busca IDA* e aprende, em tempo real,
as condições mínimas para detectar um deadlock. Esse algoritmo usa o
aprendizado adquirido para eliminar partes irrelevantes da árvore de
busca. Essa técnica melhora a eficiência da busca do programa.
Podas Relevantes
Essa técnica tenta imitar a noção que os humanos têm de relevância dos
movimentos que fazem no jogo. Ao analisarmos a árvore de busca gerada
pelo IDA* percebemos que o algoritmo gera movimentos que os humanos
jamais considerariam. Com a adição da técnica relevant cuts, ao invés de
buscar em todos os movimentos possíveis nos nós internos, alguns nós
que são irrelevantes para movimentos anteriores são podados.
Caixas B e C influenciam A, estão no
caminho ótimo de A até uma meta
2 sub-problemas que podem
ser resolvidos separadamente
Heurística de Limite
Superior
Ao invés de usar a heurística de limite inferior para calcular a
distância das caixas até a meta, é usada uma estimativa mais
informativa que as vezes superestima essa distância.
•WIDA*
•Limite superior com padrão (pattern overestimation)
Resultados
Após a implementação de algumas dessas técnicas o meu algoritmo
foi capaz de resolver algumas configurações
•Detecção offline de deadlocks
•IDA*
•Heurística de limite inferior
•Posição do homem
•Detecção online de deadlocks
•Tabelas de Hash
Bibliografia
A. Junghanns. Pushing the limits: New development in single agent search.
Ph.D. Thesis, University of Alberta, Department of Computing Science, 1999.
S. Russel e P. Norvig. Inteligência Artificial
• Figura 1 - http://www.pdatungsteno.com/wp-content/imagenes/sokoban2.png
• Figura 2 e 3 - http://www.geocities.com/erimsever/sokoban
• Figuras restantes - A. Junghanns Ph.D. Thesis
Download

Apresentação