-
Programa de simulação da evolução de carros usando algoritmo genético
- O objetivo é fazer formas aleatórias de 2 rodas evoluírem para carros ao longo de gerações usando algoritmo genético
- É baseado no BoxCar2D, mas foi reescrito do zero, usando apenas o mesmo motor de física (
box2d) - Usa a biblioteca
seedrandom.jsde David Bau
-
Controles e configurações
- Há uma função
Save/Restore Populationque permite salvar e restaurar localmente a população atual - O toggle
Surprisepermite desligar e ligar o desenho para acelerar a simulação New Populationreinicia apenas a população de carros, mantendo a pista- A mesma seed sempre gera a mesma pista, permitindo competir com amigos
Mutation rateé a probabilidade de cada gene de cada indivíduo sofrer mutação para um valor aleatório quando uma nova geração nasceMutation sizeé o intervalo em que cada gene pode sofrer mutação; quanto menor o número, mais próximo do valor originalElite clonessignifica os n melhores carros que serão copiados para a próxima geraçãoView top replaypausa a simulação atual e mostra o carro de melhor desempenho
- Há uma função
-
Gráfico
- Vermelho: melhor pontuação de cada geração
- Verde: média dos 10 melhores carros de cada geração
- Azul: média geral de todas as gerações
-
Composição do genoma
- Forma (1 por vértice, total de 8 genes)
- Tamanho da roda (1 por roda, total de 2 genes)
- Posição da roda (1 por roda, total de 2 genes)
- Densidade da roda (1 por roda, total de 2 genes) - quanto mais escuro, maior a densidade
- Densidade do chassi (1 gene) - quanto mais escuro, maior a densidade
-
Observações adicionais
- Como a simulação não é determinística, o melhor carro pode não apresentar desempenho consistente
- A complexidade do terreno aumenta conforme a distância
- Agora o código está disponível no GitHub com contribuições da comunidade
1 comentários
Comentários do Hacker News
Em resumo:
boxcar2dé semelhante, mas implementado sem Flash)