Você está na página 1de 3

Inteligência Artificial

Ficha Prática #6: Agentes de procura com pyafai

1 Conceito
Neste projecto vamos fazer uso dos conceitos aprendidos nas aulas teóricas sobre agentes
de procura, para implementar um sistema de procura de caminhos (pathfinding), num
ambiente próximo ao encontrado em jogos do tipo RTS (Real-time Strategy). Vamos,
nomeadamente, utilizar o algoritmo de procura A*.

2 Ambiente
Neste projecto vamos utilizar um ambiente a duas dimensões, em grelha e fechado. Na
Figura 1 pode encontrar um exemplo de implementação deste ambiente. Neste nosso
mundo em grelha serão colocados vários obstáculos intransponíveis (e.g. paredes), e
outros obstáculos que apenas dificultam a passagem dos agentes (e.g. montanhas). No
ambiente exemplo apresentado podemos ver o agente (círculo vermelho), e vários
obstáculos intransponíveis (quadrados brancos).

À semelhança do que acontece em jogos, o nosso agente terá de navegar pelo mapa,
escolhendo o melhor caminho da sua posição actual, para uma posição final indicada pelo
utilizador. A interação com o utilizador poderá ser feita através do rato. O utilizador ao
carregar no botão esquerdo do rato numa posição do ambiente dá ordem ao agente de se
movimentar para essa posição. Para implementar este tipo de interacção poderá derivar a
classe Display da plataforma. Por exemplo:

Arlindo Oliveira da Veiga


2/3

from pyglet.window import mouse

class MyDisplay(pyafai.Display):

def on_mouse_release(self, x, y, button, modifiers):

super(MyDisplay, self).on_mouse_release(x, y, button,


modifiers)

if button == mouse.LEFT:

x1, y1 = self.world.get_cell(x, y)

#Send agent to x1, y1

.
Figura 1: um mundo com obstáculos
3/3

3 Exercícios
Implemente um ambiente semelhante ao introduzido na secção anterior, colocando um
agente que utilize o algoritmo A* para encontrar o melhor caminho para o destino indicado
pelo utilizador (por exemplo utilizando o rato). Implemente uma primeira versão onde
existem apenas obstáculos intransponíveis, e em seguida uma segunda versão
acrescentando obstáculos que apenas dificultam a passagem.

Material de Apoio

• IAFA, Capítulo 3

Você também pode gostar