Evolução de criaturas virtuais: Alguns detalhes (opcional) Os detalhes dos algoritmos usados por Karl Sims para evoluir as criaturas virtuais são bastante complicados e eu não abordarei os detalhes, vou apenas passar a idéia geral. Esta parte é opcional, apenas se você estiver interessado em como isto é implementado. Você também pode ler os artigos técnicos de Karl Sims sobre o assunto acessando o link na página de materiais do curso. Como mencionei, o algoritmo evolui tanto a morfologia dos corpos como as redes neurais que controlam os corpos. A morfologia dos corpos das criaturas é representada a partir de "gramáticas", que são pequenos programas repetitivos que produzem estruturas repetitivas, como essas. Os cérebros, ou redes neurais, são redes de neurônios, a rede neural tem como entrada valores dos sensores e saída valores de efetor, ou forças nas articulações da criatura. Os sensores incluem sensores de ângulo de articulação onde cada articulação retorna o valor do seu ângulo, sensores de contato, que retornam 1.0 se existe contato com alguma estrutura e -1.0 caso não haja contato, e foto-sensores, que retornam as coordenadas da fonte de luz. Você pode ver que isto é um pouco complicado, e obviamente isto é tudo virtual, não é um robô, são tudo simulações computacionais. Nos cérebros das criaturas, cada neurônio calcula o seu valor de saída a partir dos valores de entrada. O algoritmo genético irá evoluir a rede neural e a função de saída de cada neurônio. O sistema possui "efetores", que você pode interpretar como músculos, onde cada efetor controla o grau de liberdade da articulação e cada efetor tem como entrada o valor de um único neurônio, ou sensor, e como saída a força sobre a articulação. Aqui temos uma figura de um dos artigos de Karl Sims mostrando todo o sistema, com o genótipo, que é evoluído para produzir um fenótipo, o corpo. A rede neural também evolui para produzir um fenótipo. Então ambos são evoluídos simultâneamente: o corpo e o cérebro. Dentro desta simulação física, que é implementada em paralelo em uma "Máquina de Conexões", que é uma máquina de cálculos paralelos. Como você pode imaginar, este algoritmo demanda muitos cálculos. Aqui temos a evolução das criaturas: a criatura cresce a partir da sua descrição genética e possui a sua aptidão calculada. A sua simulação é feita durante um período de tempo, com os sensores fornecendo dados sobre o mundo, o cérebro produzindo forças de efetores para mover a criatura, e a aptidão calculando o quanto bem-sucedido foi o comportamento desejado, para nadar, saltar, seguir a luz ou competir ao final de um período de tempo. Isto é tudo sobre a minha rápida revisão deste algoritmo extremamente complicado. Mas eu tenho certeza que você concorda que os resultados são bastante interessantes de se observar e proporcionam muitas reflexões.