Project Page Link: https://nelsondiaas.github.io/genetic-monkey
O fato de a vida ter evoluído a partir de quase nada, cerca de 10 bilhões de anos após o universo ter evoluído a partir de literalmente nada, é um fato tão surpreendente que eu ficaria louco em tentar palavras para fazer justiça a ele ”.
— Richard dawkins
O Teorema do macaco infinito afirma que um macaco digitando aleatoriamente em um teclado por um intervalo de tempo infinito irá quase certamente criar um texto qualquer escolhido, como por exemplo a obra completa de William Shakespeare.
O algoritmo genético é um método para resolver problemas de otimização restritos e não restritos que é baseado na seleção natural, o processo que impulsiona a evolução biológica. O algoritmo genético modifica repetidamente uma população de soluções individuais. Em cada etapa, o algoritmo genético seleciona os indivíduos aleatoriamente da população atual para serem pais e os utiliza para produzir as crianças para a próxima geração. Ao longo de gerações sucessivas, a população "evolui" em direção a uma solução ótima. Você pode aplicar o algoritmo genético para resolver uma variedade de problemas de otimização que não são adequados para algoritmos de otimização padrão, incluindo problemas nos quais a função objetivo é descontínua, não diferenciável, estocástica ou altamente não-linear.
O algoritmo genético usa três tipos principais de regras em cada etapa para criar a próxima geração da população atual:
-
As regras de seleção selecionam os indivíduos, chamados pais, que contribuem para a população na próxima geração.
-
As regras de crossover combinam dois pais para formar filhos para a próxima geração.
-
As regras de mutação aplicam alterações aleatórias a pais individuais para formar filhos.