quinta-feira, 21 de janeiro de 2016

Função para levar as ovelhas

Foi considerado que a melhor maneira de dirigir as ovelhas até ao curral seria analisar jogada a jogada reagindo perante o ambiente. De acordo com a posição do robô (já ao pé da ovelha) é pensado para onde se deslocará a ovelha sendo que o robô a segue da forma mais pertinente.



Função goTo - Metodologia

Parte/Função integrante do projeto. Tem apenas uma premissa: a função é chamada com as coordenadas desejadas e o robô dirige-se para tal coordenada, respeitando as regras do jogo. Segue um esquema com uma possível configuração e respetivas respostas.


Pesquisa Cega - Metodologia

Após falhar as duas iniciais soluções para a pesquisa cega, na seguinte imagem exemplifica-se a nova metodologia que se pretende abordar.

segunda-feira, 18 de janeiro de 2016

Última fase de entrega

DATA DE TRABALHO: 13 de Janeiro de 2016 até 18 de Janeiro de 2016

Inicialmente consideramos que o estudo completo ao pavimento, memorizando onde estão as barreiras e as ovelhas, seria uma abordagem ineficiente, no entanto, numa nova abordagem ao problema notamos que não seria possível o robô pensar racionalmente se não conhecia os futuros obstáculos que ao encaminhar a ovelha esta podia encontrar.

Como primeira abordagem decidimos que trataríamos os quadrados do pavimento como nós de uma árvore e de acordo com esta árvore decidimos de entre os algoritmos de pesquisa abordados na aula que faria a pesquisa da melhor forma.

1ª SOLUÇÃO: Busca em profundidade
Esta solução demonstrou várias limitações então descartamos.

2ª SOLUÇÃO: Busca em largura
Esta solução garantia que todos os nós fossem visitados, no entanto, passá-la para linhas de código em que dependendo da posição e direção os movimentos e a pesquisa aos nós filhos eram diferentes. Quando se implementou esta solução a abordagem não foi realmente a prevista e no fundo a pesquisa cega não tinha em conta a busca em largura mas sim a busca em profundidade com iterações.
Devido ao extenso código os erros tornaram-se quase impossíveis de se corrigir, mas conseguiu-se fazer com que percorresse funcionalmente até a iteração 4.

CONCLUSÃO: Nenhuma das soluções revelou-se eficiente pois deixava nós filhos por pesquisar.


ESTRATEGIA DE TRANSPORTE DAS OVELHAS ATÉ AO CURRAL:
A estratégia optada foi localizar a ovelha compreender se na posição da ovelha tem-se barreiras e de acordo com isso definir a melhor posição para "berrar" para a ovelha. Encaminhar o robô até esta posição e a partir daqui leva-la até as extremidades da matriz que contêm o curral e a partir daí leva-la até ao curral.


RESULTADOS OBTIDOS:
A solução da pesquisa cega não foi implementada de modo a se conseguir todos os níveis sem limitações ou pelo menos com o mínimo de limitações. A estrategia de transporte das ovelhas até ao curral possui algumas limitações como atropelo de ovelhas; caso berre para uma ovelha e nos arredores tenha-se uma ovelha o jogo dá-se como perdido; entre outras que poderiam surgir em outras fases de testes.



Bem agora resta definir uma solução para o estudo do terreno ótima e mais simples de converter em código. Melhorar todas as limitações inerentes a estratégia de jogo no que toca a levar as ovelhas para o curral.