Mundo do Wumpus
Beatriz F. M. Souza
Prof. Orivaldo Lira Tavares
Inteligência Artificial
15 de junho de 2014
Departamento de Ciência da
Computação
Universidade Federal do Espírito Santo
(UFES),
Vitória, ES – Brasil
1
Conteúdo
• Breve Histórico
• Mundo do Wumpus
•
•
•
•
•
•
•
O jogo proposto
Enredo
Personagens
Ambiente
Sensores
Pontuação
Atuadores
• O núcleo
• Interface
• Comunicação entre o núcleo e a interface
2
Breve Histórico
• Em 1972 Gragory Yob, um design de jogos americano
nascido no Oregon, idealizou o Mundo de Wumpus,
porque estava cansado dos jogos da época que eram
baseados em grades cartesianas;
• A primeira versão foi feita inicialmente em Basic,
depois disso diversas outras versões foram implantadas
e diversas variações do jogo foram idealizadas;
• Gragory Yob falesceu em 2005.
3
Mundo do Wumpus – o jogo proposto
• Mundo de Wumpus foi implementado com base no
item 7.2 do livro “Artificial Intelligence - A Modern
Approach” .
4
Mundo do Wumpus - Enredo
• O jogador, também conhecido como agente, está
dentro de uma caverna, na qual ele possui visão
limitada ao seu redor.
• Dentro desta caverna há um ouro, buracos e um
monstro, o Wumpus.
• O objetivo do jogo é matar o monstro, localizar o ouro e
de posse do ouro, voltar até a entrada da caverna.
• Se cair num buraco o jogador morre, se for comido pelo
Wumpus. Só há uma flecha para o jogador matar o
monstro, não a desperdice.
5
Mundo do Wumpus - Personagens
• Os personagens são:
– O Wumpus, o monstro horripilante;
– Vários jogadores humanos;
– Vários jogadores robos, também conhecidos como agentes.
6
Mundo do Wumpus - Ambiente
• O ambiente é disposto da seguinte maneira:
– Define-se uma matriz quadrada de tamanho variável;
– Os agentes e os jogadores iniciam o jogo na posição [1,1], e
deverão terminar seu desafio neste mesmo lugar;
– Dentro desta matriz, define-se a posição do Wumpus
(estática), que não se modifica no decorrer do jogo;
– Dentro desta matriz, também se encontram 3 buracos, que
não se modificam no decorrer do jogo, aqui há uma variação
pois o jogo original proposto pelo livro sugere um cálculo para
determinação do número de buracos, mas por questões
práticas utilizamos um número fixo de buracos;
7
Mundo do Wumpus - Ambiente
• O ambiente é disposto da seguinte maneira:
– Dentro da matriz há uma posição onde se encontra o ouro,
que também é definida e não se modifica no decorrer do
jogo;
– Nenhum objeto fixo (Wumpus, buracos e ouro) da matriz
poderá ser definido no mesmo local de um outro objeto ao
mesmo tempo;
– Todos os objetos fixos da matriz são dispostos
randomicamente em suas posições.
8
Mundo do Wumpus - Sensores
• Os agentes possuem 5 sensores (sentidos), são eles:
– Sente o mau cheiro exalado pelo Wumpus, nas posições da
matriz (horizontais ou verticais) ao seu redor ;
– Percebe uma brisa ao redor dos buracos, nas posições da
matriz (horizontais ou verticais) ao seu redor ;
– Visualiza um brilho ao redor do ouro, nas posições da matriz
(horizontais ou verticais) ao seu redor ;
9
Mundo do Wumpus - Sensores
• Os agentes possuem 5 sensores (sentidos), são eles:
– Ouve um ruído de "bum", indicando que encostou em uma
parede (horizontais ou verticais) ao seu redor;
– Ouve um grito quando o Wumpus é morto pela sua flecha,
este grito no jogo proposto no livro pode ser ouvido em
qualquer lugar da caverna, mas decidimos criar uma
dificuldade a mais fazendo com que apenas o agente que
atirou preste atenção e ouça o grito interpretando-o como a
morte do monstro, assim os outros jogadores ou agentes só
saberão da morte do monstro caso sejam informados via
mensagem.
10
Mundo do Wumpus - Pontuação
• A pontuação é distribuída como a seguir:
+1000 pontos por escalar a caverna e sair com o ouro;
-1000 pontos se cair em um buraco ou ser comido pelo
Wumpus;
-10 pontos ao usar a flecha;
-10 pontos se estiver atuando em uma casa com fedor e com
vento;
-5 pontos se estiver atuando em uma casa apenas com fedor;
-5 pontos se estiver atuando em uma casa apenas com vento;
-2 pontos se estiver atuando em uma casa sem percepções de
vento, fedor ou brilho;
11
Mundo do Wumpus - Pontuação
• A pontuação é distribuída como a seguir:
-1 se tentar atirar uma flecha sem tê-la;
-1 se bater em uma parede;
-1 se esbarrar no Wumpus morto;
-1 se tentar sair antes de pegar o ouro;
-1 por qualquer outra ação tomada;
0 pontos se acertar o Wumpus com um tiro;
0 pontos se estiver atuando em uma casa com brilho,
prevalecendo as casas com fedor e/ou vento.
12
Mundo do Wumpus - Pontuação
• As ações propostas aos agentes ou jogadores são:
– Mover-se de posição em posição da matriz;
– A movimentação do agente ou jogador na matriz, deve
ocorrer apenas na horizontal e na vertical, não sendo
permitido movimentações na diagonal;
– A movimentação só ocorre de uma em uma iteração, não
sendo permitido executar saltos;
– O agente pode encostar nas paredes, e repetirá a ação;
– O agente pode esbarrar no cadáver do Wumpus, e repetirá a
ação;
– O agente pode atirar uma flecha em linha reta, na direção
para a qual o agente está virado;
13
Mundo do Wumpus - Pontuação
• As ações propostas aos agentes ou jogadores são:
– A flecha se movimenta até encontrar uma parede ou até
acertar o Wumpus;
– A flecha não acerta seus companheiros e passa por cima dos
buracos e do ouro;
– O agente ou jogador só possui uma única flecha para cada
um;
– O agente ou jogador morre se cair em um buraco, se for
comido pelo Wumpus ou se sua energia acabar.
– O agente ou jogador, quando está na posição [1,1], pode
escalar até a saída da caverna, se ele ou algum outro agente
ou jogador já estiver de posse do ouro.
14
O núcleo em Prolog
• Definição de um vocabulário;
–
–
–
–
–
–
–
–
–
–
–
–
–
–
WPS = Wumpus;
AGT = Agente;
AUR = Ouro;
BLH = Brilho;
PPA = Passei por aqui (posição visitada);
BRC = Buraco;
VNT = Vento ou brisa;
FDR = Fedor;
PLV = Posição livre;
FCH = Flecha;
BUM = Barulho da parede;
GRT = Grito do Wumpus;
PRD = Parede.
e outras mais.
15
O núcleo em Prolog
• Definição da matriz;
• Definição dos jogadores:
– Jogador humano;
– Jogador agente;
• Definição dos objetivos;
–
–
–
–
WUMPUS = Matar o Wumpus;
OURO = Pegar o ouro;
IMPASSE = Quando não há mais opções;
SAIR = Sair da caverna.
16
O núcleo em Prolog
• Divisão das bases de conhecimento (KBs);
– KB = 0 -> Base de conhecimento do jogo onde são
armazenadas informações como: tamanho da
matriz, disposição dos artefatos na matriz, e as suas regras;
– KB > 0 -> Base de conhecimento dos 'n' jogadores ou agentes,
sendo primeiramente os 'KB' agentes e a seguir os 'KBH'
jogadores humanos, por exemplo, para 2 agentes e 2
humanos teremos: KB = 1 para o primeiro agente, KB = 2 para
o segundo agente, KB = 3 para o primeiro jogador e KB = 4
para o segundo jogador;
– KB = -1 -> Base de conhecimento para troca de mensagens e
comunicação com a interface, onde são guardadas as
mensagens enviadas e processadas as respostas de leitura
destas mensagens.
17
O núcleo em Prolog
• Comunicação entre as KBs (mensagens);
msg(<KB de mensagens>, <Identificador único da mensagem>, <KB
destino>, <KB origem>, <Tipo da mensagem>, <Conteúdo da mensagem>)
• Calculo situacional;
– AGENTE REATIVO PURO
– AGENTE COM MODELO DE MUNDO
– AGENTE BASEADO EM OBJETIVO
18
O núcleo em Prolog
• Definição da estratégia;
–
–
–
–
–
Prefere posições não visitadas,
Prefere posições cujo risco de morte é menor,
Prefere atirar se já inferiu o monstro, exceto se já atirou,
Pode atirar a esmo se o risco de morte for grande,
Prefere posições visitadas livres em caso de não haver outra
possibilidade não visitada,
– Realiza inferências com base nas mensagens recebidas e no
seu próprio comportamento,
– Dá prioridade ao pegar o ouro e só em caso eventual mata o
monstro,
– Procura uma saída usando posições livres e já visitadas.
19
A interface em Java
• Baseada na existência de uma biblioteca nativa do
próprio SwiProlog para interface com o Java (JPL.jar);
• Utilização de comunicação por JSON e pela capacidade
de interpretação dessa linguagem por ambas as
ferramentas.
• Biblioteca LWJGL
(Lightweight Java Game Library);
• FrameWork Slick2D.
20
A interface em Java
21
Comunicação entre o núcleo e a interface
• Criação de um conjunto de predicados para geração e
transmissão das informações do núcleo em Prolog para a
interface em Java:
– json_inic -> para inicialização da matriz e seus objetos;
– json_mat -> para retornar o tamanho da matriz;
– json_fdrs, json_blhs e json_vnts -> para posicionamento dos fedores,
brilhos e ventos;
– json_inic_agt -> para inicializar cada agente e retornar suas percepções
inicias;
– json_inic_hum -> para inicializar cada jogador humano e retornar suas
percepções inicias;
– json_passo -> para retornar o resultado de cada ação de um dado jogador
ou agente após um passo do jogo (após executar sua ação);
– json_msg -> para retornar o "pool" de mensagens de cada agente ou
jogador para a interface após um passo do jogo (após executar sua ação);
– json_fim -> para retornar o fim do jogo.
22
Comunicação entre o núcleo e a interface
• Criação de um servidor web para envio das informações
no formato JSON:
– server(Port) :- http_server(http_dispatch, [port(Port)]).
• Criação de uma série de predicados especiais para
filtragem das informações a serem enviadas de modo
que sempre ocorra um retorno no formato adequado,
mesmo quando não há informação a ser enviada;
23
Comunicação entre o núcleo e a interface
• Criação de um conjunto de predicados para execução
especificamente pela interface Java, com a finalidade de
simples execução do jogo:
– main4j(M,KB,KBH) -> execução principal e inicialização do
jogo com uma matriz de tamanho 'M', 'KB' agentes (jogadores
robôs) e 'KBH' jogadores humanos;
– passo4j(A,O,KB,T) -> execução de cada passo para executar a
ação 'A', em uma orientação 'O' de um jogador ou agente do
tipo 'T' identificado por 'KB';
24
Para maiores informações
• Wiki do trabalho:
http://mundodowumpus.pbworks.com/w/page/73596
191/Mundo%20do%20Wumpus%20%20Projeto%20Final%20de%20IA
• Wiki pessoal:
http://bmartins.pbworks.com/w/page/70054670/Front
Page
• E-mail: [email protected]
25
Demonstração
26
Referências
• Russell, S.; Norvig, P.; “Artificial Inteligência - A Modern
Approach”; Prentice Hall; 2010, ed3.
• SWI Prolog 6.6.1 (x64): http://www.swiprolog.org/Download.htm
• Eclipse Kepler 4.3.1
(x64): http://www.eclipse.org/downloads/
• Java 7: http://www.java.com/pt_BR/download
• Tiled Map Editor: http://www.mapeditor.org
• Slick 2D: http://slick.ninjacave.com/
• Lightweight Java Game Library
(LWJGL): http://lwjgl.org/
27
Perguntas
28
Download

Seminary – 2014/1