• Nenhum resultado encontrado

5.2 Evoluindo Rede Neural Neuromodulada para a Emergência de Comporta-

5.2.2 Estudo de Caso 1: Comportamento de Forrageamento com Sensores de Proximidade

5.2.2.1 Descrição do Experimento

Para avaliar o controlador proposto, ele foi colocado para controlar um robô virtual estilo Khepera em uma tarefa de forrageamento. O ambiente consiste de frutas e venenos aleatoriamente distribuídos. A simulação foi desenvolvida utilizando o motor gráfico Irrlicht 3D Engine1, com física provida pelo motor de física Bullet Physics Engine2.

O robô, que é exibido na Figura 5.5, possui um corpo cilíndrico com uma caixa preta que desempenha os papéis de olho e boca. O robô “come” uma fruta ou um veneno sempre que a caixa os tocar.

(a) (b)

Figura 5.5: O robô. (a) Robô no ambiente. A caixa preta é, ao mesmo tempo, seu olho e sua boca. (b) Os três sensores distribuídos no olho e os respectivos campos de sensibilidade, com ângulo de 20◦cada. A máxima distância sensível é de seis vezes o diâmetro do robô.

A rede neural é conectada ao corpo e o ambiente recebendo como entrada os sinais

1http://irrlicht.sourceforge.net/ 2http://bulletphysics.org/

gerados pelos sensores do robô. Existem três sensores alinhados lado a lado na extensão do olho (Figura 5.5b), cada um capaz de capturar a distância normalizada ([0,1]) à fruta e ao veneno mais próximos dentro de seu “Campo de Sensibilidade” (CdS). Isso implica na geração de seis valores. Existe também o sentido proprioceptivo de energia, permitindo ao robô sentir seu nível de gasto de energia, que varia de 0 (o robô está completamente energizado) a 1 (o robô está totalmente exaurido). Dessa forma, a força do sinal indica ao robô quando sua energia está acabando. Considerando-se todos os sensores, a rede neural precisa, então, de sete neurônios aferentes.

Um robô inicia com 50.000 unidades energéticas (ue). Esse valor aumenta 10.000ues toda vez que uma fruta é comida (até o valor máximo de 50.000ues) e diminui em duas situações: (1) quando o robô está vivo, sua energia decai continuamente em proporção às forças dos sinais aplicados ao motor, (2) sempre que um robô come um veneno, sua energia é reduzida diretamente para 10.000ues. Na segunda situação, se o nível de energia do robô for menor ou igual a 10.000ues, ela é zerada. Em qualquer caso, se a energia acabar, o robô morre.

O robô possui dois motores, um para movê-lo para frente e para trás e outro para rotacioná-lo à esquerda ou à direita, cada um controlado por um neurônio eferente. Quando o primeiro motor recebe um valor positivo, o robô move-se para frente e, se recebe um valor negativo, move-se para trás. Com um valor positivo, o segundo motor faz uma rotação do robô à direita, caso contrário, causa uma rotação à esquerda.

As ações dos motores não são fisicamente precisas, uma vez que a amplitude do sinal é diretamente aplicada como velocidade do robô. Entretanto, a interação entre o corpo do robô e os corpos das frutas e venenos, isto é, as forças de reação, são devidamente calculadas, provendo a possibilidade do robô deslocar outros objetos. Essa dinâmica cria um ambiente mais desafiador para a realização da tarefa de colher as frutas.

Cada controlador decodificado dos cromossomos de um indivíduo é colocado para controlar um robô de cada vez. Cada tentativa começa na mesma posição e as frutas e venenos são sempre redistribuídas aleatoriamente para impedir a “memorização” das posições pelo algoritmo genético. Uma tentativa termina quando a energia do robô acaba. O algoritmo genético gera a primeira população aleatoriamente. Os seguintes parâmetros, escolhidos empiricamente, foram utilizados:

• Tamanho da população: 100 indivíduos

• Tamanho do cromossomo de rede: 100 genes (3200 bits) • Tipo de crossover: Monoponto (um ponto de quebra)

• Probabilidade de crossover: 60% • Probabilidade de mutação: 0,1% 5.2.2.2 Resultados

O algoritmo genético foi capaz de evoluir com sucesso a rede neural para controlar o robô na tarefa de forrageamento. A Figura 5.6 mostra a evolução das médias de avaliações em 80 gerações. 0 50 100 150 200 250 300 350 400 0 10 20 30 40 50 60 70 80 Geração A valiação

Figura 5.6: Evolução das médias de avaliações das populações.

O robô adquiriu com sucesso o comportamento de colher frutas apenas, evitando os venenos, como mostrado na Figura 5.7a. Observe que, apesar da função de avaliação do algoritmo genético selecionar explicitamente aqueles indivíduos que coletam o maior número de frutas, não existe informação direta sobre venenos. Entretanto, pode-se notar o comportamento de “fuga” dos venenos (Figura 5.7b), como consequência do fato dos indivíduos que comem esse elemento poderem “morrer” mais cedo.

Uma característica importante a apontar sobre o comportamento do robô é como o comportamento de forrageamento de alto nível é realizado com comportamentos de baixo nível de ajuste de direção. Um sensor do olho isolado não pode determinar a direção a seguir a fim de capturar a fruta sentida, uma vez que ele apenas indica a distância até a fruta. Logo, o robô precisa modificar sua posição para ser capaz de usar os três sensores para encontrar a informação que falta. Esse comportamento é mostrado na Figura 5.8, onde é possível ver o robô realizando uma rotação à esquerda para usar o lado direito de um CdS de um sensor para seguir a fruta. Uma vez que os três sensores estão levemente deslocados um em relação ao outro (Figura 5.5b), quando a fruta sai do CdS de um sensor, é possível determinar para que lado um ajuste de direção é necessário.

-35 -30 -25 -20 -15 -10 -5 0 0 2 4 6 8 10 12 14 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 0 500 1000 1500 2000 2500 X Z Passo de Tempo (a) (b) S inal

Figura 5.7: Comportamento do robô. (a) A linha representa o caminho do robô, iniciando em (0,0). Note que o caminho passa pelas frutas (+) enquanto desvia dos venenos (◦). A linha não está sempre tocando as frutas pois, na simulação, a malha do olho apenas precisa tocar a malha da fruta, enquanto o gráfico mostra o centro dos objetos. (b) Atividade motora e sentido de veneno. Observe que, quando um veneno é sentido (valores positivos na linha sólida), existe um pico de sinal negativo na atividade motora (linha pontilhada), levando a um movimento de recuo do robô.

Figura 5.8: Comportamento de ajuste de direção. Observe que, para capturar a fruta, o robô aproxima-se dela usando o lado direito do CdS, ao invés do centro do CdS. Os quadros superiores mostram o momento no qual o robô sente a fruta e, então, vira à esquerda. Os quadros inferiores mostram o robô capturando a fruta seguindo o seu “sentido lateral”.

Quanto à atividade modulatória, um controlador em particular evoluiu com neurô- nios moduladores. Com essa ação, o robô exibiu dois modos de busca. Uma rotação local, procurando por comida próxima a ele e, quando nenhuma fruta era encontrada, o robô aumentava gradualmente seu raio de rotação até que uma fruta fosse encontrada e, então, passava à busca local novamente. A Figura 5.9 mostra a atividade conjunta do neurônio modulador, estimulado com o sentido de energia (o sinal cresce continuamente enquanto nenhuma fruta é coletada), e a mudança da atividade motora.

0 0.2 0.4 0.6 0.8 1 0 2000 4000 6000 8000 10000 Passo de tempo S inal

Figura 5.9: Atividade motora (linha pontilhada), sinal do sentido de energia (linha tracejada) e atividade de modulação (linha sólida). Observe que essas três atividades estão sincronizadas. Quando o robô captura uma fruta (aumento de energia e consequente queda na linha tracejada), ele busca outra localmente (queda na linha pontilhada: redução da atividade motora). Se nenhuma fruta é comida, o robô gradualmente aumenta o raio de busca (aumento na linha sólida, isto é, ativação da alteração dos pesos das sinapses, levando a um aumento na atividade motora, refletido no aumento na linha pontilhada).