Nesta sub-unidade, vou demonstrar um exemplo detalhado dum algoritmo genético simples que envolve programas de controlo para robots virtuais. O nosso robot virtual chama-se "Robby". É um robot muito simples que vive num mundo simulado. Descrevi-o pela primeira vez no meu livro, "Complexidade: Uma Visita Guiada", e a sua função é andar por aí, a recolher latas vazias de soda. Robby foi inspirado por um robot real, chamado "Herbert", que funcionava nos anos 80, no Laboratório de Inteligência Artificial do MIT. Andava pelo laboratório, nas suas rodas, passeando por diferentes escritórios, recolhendo latas de soda vazias e levando-as para o cesto de reciclagem. Herbert foi a obra de Jonathan Connell, estudante no MIT a trabalhar com Rod Brooks e Peter Ning, e era um robot muito impressionante que usava apenas algoritmos muito simples para controlar o seu comportamento. A nossa versão do "Herbert" chama-se "Robby", e ele é um robot virtual que vive neste mundo simulado que consiste numa grelha de 10 por 10 quadrados. Pode pensar nos quadrados como uma espécie de "escritórios virtuais" em que cada escritório está vazio ou contém uma lata de soda vazia. Vejamos um exemplo para uma lata de soda. O trabalho do Robby é movimentar-se neste mundo a recolher as latas de soda vazias. Temos então de dar ao Robby um programa que lhe diga o que fazer a cada passo. Poderia eu mesma programá-lo para tal mas, em vez disso, vou usar um algoritmo genético para evoluir programas para fazerem esta tarefa. Então, primeiro preciso de dizer o que o Robby consegue ver e fazer. Ele é um robot muito simples e tem uma visão muito má, logo a única coisa que ele consegue ver é o conteúdo do seu próprio quadrado e dos quadrados a norte, sul, este e oeste. Então, a sua localização atual, norte, sul, este e oeste. No seu estado atual, o seu escritório ou sala atual estão vazios. A norte existe uma parede, a oeste existe uma parede, a sul existe um quadrado vazio e a este existe uma lata. E isto é tudo o que ele consegue ver. Ele usa o que consegue ver para decidir qual a ação a tomar a cada passo. E tem sete possíveis ações: pode mover-se para o norte, mover-se para o sul, mover-se para o este, mover-se para o oeste, tudo movendo-se um quadrado. Pode fazer um passo aleatório: escolher uma direção ao acaso para mover-se. Pode ficar onde está e não fazer nada, ou pode tentar levantar uma lata. E se ele tentar levantar uma lata e uma lata estiver lá, é bem-sucedido. Ou pode tentar levantar uma lata por engano, num quadrado vazio. E tem certas recompensas e penalizações que recebe por fazer estas coisas. Se levantar uma lata, recebe 10 pontos, é uma coisa boa a fazer. Se tentar levantar uma lata num espaço vazio, recebe -1 ponto, e se embater contra uma parede, recebe -5 pontos. E o seu resultado final à medida que se vai movimentando é a soma das recompensas e penalizações que vai recebendo. O objetivo é usar um algoritmo genético para evoluir um programa de controlo, isto é, uma estratégia para o Robby. Deixem-me então falar sobre o que é uma "estratégia". A definição que vou usar é um conjunto de regras que especifica uma ação para qualquer situação possível. Em que as situações possíveis são os inputs para o Robby, os inputs possíveis que ele consegue ver. Vamos então fazer uma lista das situações possíveis que o Robby pode encontrar. As situações possíveis seriam o que ele vê a norte, sul, este, oeste, a sua localização atual. E uma estratégia seria, para cada situação possível, uma ação a tomar. Aqui está uma possível situação - talvez a mais simples de todas - tudo está vazio. Ele está numa célula vazia e células em todas as direções estão vazias. É uma situação possível. Eis outra situação possível: tudo está vazio exceto que no seu sítio atual está uma lata. E poderíamos continuar e continuar a listar situações possíveis. E num segundo, vamos descobrir quantas situações possíveis existem, mas só para ter a certeza que isto é claro, vamos parar para um curto quiz. O quiz tem duas questões. A primeira diz: considere esta situação, e suponha que o Robby tem uma pontuação de zero até ao momento, e toma algumas ações: mover este, mover este, levantar lata, mover este, levantar lata, mover sul. Ele toma estas seis ações, e tem agora de responder qual é a sua situação após estas seis ações e qual é a sua pontuação. E aqui está, para recordar como é o processo de pontuação.