Concluimos que a função capaz de conduzir as ovelhas ao curral tem o seguinte funcionamento:
É de funcionamento recursivo sendo que na analise das barreiras, caso não esteja numa situação de vitória toma em conta dois movimentos em frente, ou seja as barreiras a uma e a duas casas de distância, conhecidas já na função de reconhecimento.
Com base nas barreiras adjacentes toma então a decisão com base num conjunto de possíveis movimentos.
De modo ao robô não entrar num loop infinito foi definido que caso não haja um conjunto de passos adequado ou caso sejam alcançados 100 passos o processo de procura do caminho termina, devolvendo um indicador de insucesso.
Antes de iniciar o seu movimento, o robô analisa as 4 posições em redor de cada ovelha escolhendo para cada ovelha a melhor posição inicial para conduzi-la. Com base no número de passos para levar cada ovelha e levada primeiro a que serão necessários menos passos e por fim a que serão necessários mais passos.
Um dos casos de insucesso encontrado foi o seguinte:
Chegou-se à conclusão durante a apresentação que a resolução deste caso passava pelo recurso à aleatoriedade da ovelha até uma posição conveniente.
Encontrou-se também um caso em que as ovelhas conseguiam entrar no curral apenas num sentido (contra ponteiros do relógio):
Semelhante a este caso há um que só permite a entrada das ovelhas no sentido do ponteiro do relógio.
Na última fase as principais alterações foram então o planeamento do caminho para condução das ovelhas no momento inicial e a correção do andamento do robô que por vezes era feito com 4 movimentos quando só podia dar 2. Foram também analisadas com mais atenção as situações em que seria preferencial gritar, elaborando-se esquemas das principais:
Como exemplo de funcionamento do robô tomou-se o seguinte exemplo:







