Heurística, Estratégia e Código I

Heurística
 
Tabuleiro
     
    Tendo como referência que o robot começa no canto inferior esquerdo e o curral se localiza no canto superior direito, o pastor começa virado para a direita. Internamente, a classe que o representa, em Python, possui três atributos: localização (a sua coordenada), frente (a coordenada à sua frente) e direção (o seu sentido).
 
Paredes
     
    O código desenvolvido permite guardar a localização das paredes. Para poder localizar todas as paredes, a cada movimento o robot verifica a existência de uma parede para o local onde se pretende movimentar. Caso todas as paredes tenham sido encontradas, esta verificação deixa de ser feita. As paredes são guardadas na classe do tabuleiro, tal que este possui método para adicionar paredes. As paredes são representadas como um par de coordenadas.
 
 Estratégia
 
    Primeiramente, o grupo focou-se numa estratégia simples: o robot circunda as bordas à procura de paredes. Caso não encontre nenhuma, está livre para encontrar uma ovelha, encostá-la a uma margem e tocá-la até que chegue ao curral. É ineficiente em certos casos, com o perigo de cair em loop permanente.
 
    Para a segunda estratégia, o foco é semelhante: o robot desta vez verifica apenas a margem  superior pela ausência de paredes e tenta empurrar as ovelhas para essa margem e forçá-las a entrar no cacifo.
 
 Código

    De forma a organizar o código, este foi dividido em três ficheiros.

    O mais pequeno, "board", possui o código que implementa o tabuleiro, nomeadamente a localização das paredes. Mais ainda, guarda a localização de potenciais ovelhas e possui métodos para adicionar paredes (estas representadas como par de coordenadas).

    O maior, "dog", representa o cão pastor e inclui a sua localização atual, assim como a localização que está à sua frente usando a sua direção. Funções para o seu movimento e ações estão todas incluídas neste ficheiro.

     Finalmente, o ficheiro "main" inclui a execução das estratégias concebidas pelo grupo.

 

Comentários