1 / 23

A Assombrosa Caverna do Wumpus

A Assombrosa Caverna do Wumpus. Versão Life Ioram Sette. Estrutura do Programa. Inicialização da Interface Gráfica Inicialização do Ambiente Inicialização das Percepções Inicialização do Agente Passo do Agente Subpasso 1 - Atualizar conhecimento com novas percepções

adila
Download Presentation

A Assombrosa Caverna do Wumpus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Assombrosa Caverna do Wumpus Versão Life Ioram Sette

  2. Estrutura do Programa • Inicialização da Interface Gráfica • Inicialização do Ambiente • Inicialização das Percepções • Inicialização do Agente • Passo do Agente • Subpasso 1 - Atualizar conhecimento com novas percepções • Subpasso 2 - Escolher a próxima ação • Subpasso 3 - Atualizar o Ambiente segundo a ação • Subpasso 4 - Atualizar o Conhecimento • Subpasso 5 - Atualizar o Objetivo • Regras do jogo: subpassos 1, 3 e 4 • Estratégia de exploração: subpassos 2 e 5

  3. Inicialização da Interface • Programa dividido em 4 Janelas: • Tabuleiro 10x10 onde será construido e exibido o ambiente do jogo. • Tabuleiro 10x10 onde será exibido o conhecimento do agente sobre o ambiente • Janela de Mensagens indicando o que o usuário deve fazer para usar o programa • Janela de informação que dá avisos durante o jogo.

  4. Inicialização do Ambiente • Escolha da posição do Wumpus, Ouro e Buracos,clicando-se sobre as casas da janela de ambiente. • 1 psi-term p/ Ambiente::env(monstro=>list, ouro=>list, buracos=>list). • monstro, ouro e buracos são listas de coordenadas com as localizações dos mesmos no tabuleiro::coord(x=>int,y=>int). • Variáveis New_Env e Old_Env p/ passar ambiente entre predicados.

  5. Inicialização das Percepções • 1 psi-term p/ Percepções::perc(brisa=>list, fedor=>list, brilho=>list). • Botão Iniciar Percepções gera lista das coordenadas onde existirão brisas e fedores (em volta dos buracos e do Wumpus, considerando-se as excessões:cantos) e brilho (na mesma coordenada do ouro). • Variáveis Old_Perc e New_Perc para passar percepções entre predicados.

  6. Inicialização do Agente • Psi-term usado para o Agente e seu conhecimento:::agent(pos=>coord, obj=>goal, wumpus=>list, morto=>bool, ok=>list, objs=>list, vis=>list, fedor=>list, brisa=>list, pw=>list, nw=>list, pb=>list, nb=>list).goal := {acharouro;acharsaida} • Variável persistente para representar o Agente:persistent(agente)?

  7. Passos • Engloba os 5 subpassos • Pode ser dado todo de uma vez, ou dividido em seus subpassos • Existem 2 variáveis persistentes estado e subestado que indicam o número do passo e do subpasso respectivamente. • O subpasso recebe as variáveis Env, Perc, Acao e retorna New_Env, New_Perc e retorna as variáveis New_Env, New_Perc e New_Acao

  8. Subpasso 1Agente atualiza seu conhecimento com suas novas percepções • Agente percebe se em sua posição atual existe brisa ou fedor, e descobre se as casas ao seu redor são seguras ou se existem riscos (wumpus? ou buraco?) ** colocar regras que implementam esse raciocínio ** • Remove os riscos do wumpus? E buracos? das casas que ele sabe que estão seguras ** colocar regras disso ** • Tenta descobrir onde está o Wumpus. • porque não com os buracos, explica estratégia • Pinta Janela do Agente

  9. Subpasso 2Escolhendo a Ação • De acordo com seu objetivo, escolhe uma das possíveis acoes:acao := {andar;pegar;atirar;voltar;fim}. • Se o objetivo for achar ouro, as ações podem ser: • Pegar, se o agente está numa casa com brilho! • Atirar se o agente sabe onde está o Wumpus! • Andar, caso contrário. • Se o objetivo for achar saída, ele volta (voltar) até a casa 1,1 e termina o jogo (fim).

  10. Estratégia de Andar e Voltar • Andar sempre em casa seguras, dando preferência às menos visitadas. • Ordem de preferência: Direita, Esquerda, Baixo, Cima. • Voltar sempre em casas já visitadas. • Ordem de preferência: Esquerda, Cima, Direita, Baixo. • Evita girar • Evita também choque nas paredes (explicar como faz)

  11. Subpasso 3Atualização do Ambiente • Atualizar ambiente nos casos: • do Agente matar Wumpus e • do Agente pegar o Ouro

  12. Subpasso 4Atualização do Agente • Caso a ação seja atirar: • retirar a flecha dos objetos do agente • retirar fedor de suas percepções • retirar wumpus! de seu conhecimento. • Caso a ação seja pegar: • adicionar ouro aos objetos • Caso a ação seja andar ou voltar: • atualizar posição do agente. • ** mostrar código **

  13. Subpasso 5 Atualização do Objetivo • Caso a ação seja pegar, o objetivo será alterado de acharouro para acharsaida.

  14. Hierarquia de Tipos • item := {monstro;ouro;buraco}. • percept := {brisa;brilho;fedor}. e’ grito, choque na parede? • goal := {acharouro;acharsaida}. • acao := {andar;pegar;atirar;voltar;fim}. • objeto := {ouro;arco;flecha}.

  15. Hierarquia de Classes • ::coord(x=>int, y=>int). • ::env(monstro=>list, ouro=>list, buracos=>list). • ::perc(brisa=>list, fedor=>list, brilho=>list). • ::agent(pos=>coord, obj=>goal, wumpus=>list, morto=>bool, ok=>list, objs=>list, vis=>list, fedor=>list, brisa=>list, pw=>list, nw=>list, pb=>list, nb=>list).

  16. Regras • Preferência a regras que funções. • Não é trivial utilizar-se funções e predicados conjuntamente. • Ex.: Determinar se coordenada contida numa lista de coordenadas: contem(X,[]) :- fail.contem(X,[Y|S]) :- (X.x =:= Y.x, X.y =:= Y.y) ; contem ( X, Y).

  17. Funções • As únicas utilizadas foram as do ambiente gráfico, event_handler e handle_event. • event_handler (Old_Env) -> handle_event1(xGetEvent(wumpuswindow, eventmask=>wumpusmask), Old_Env).

  18. Predicados X Psi-Terms • xmonstro(X,Y). xouro(X,Y). xburaco(X,Y).::env(monstro=>list, ouro=>list, buracos=>ist). • xcheiro(X,Y), xbrisa(X,Y), xbrilho(X,Y).::perc(brisa=>list, fedor=>list, brilho=>list). • ouro, monstro, buraco, brilho, cheiro, brisa::agent(pos=>coord, obj=>goal, wumpus=>list, morto=>bool, ok=>list, objs=>list, vis=>list, fedor=>list, brisa=>list, pw=>list, nw=>list, pb=>list, nb=>list).

  19. Discussões • Assert, Retract X Old_Var, New_Var • Assert, Retract X Persistent(var)? • ** mostra codigo comparando uso de um x o outro ** • + e - de OldVar NewVar x Persistent(var)

  20. Demonstração AoVivo Local: Laboratório C6 Dia: 28/01 Horário: NOW! Estão todos convidados!! :)

More Related