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.