Um algoritmo genético (AG) é uma técnica de busca utilizada na ciência da computação para achar soluções aproximadas em problemas de otimização e busca, fundamentado principalmente pelo americano John Henry Holland. Algoritmos genéticos são uma classe particular de algoritmos evolutivos que usam técnicas inspiradas pela biologia evolutiva como hereditariedade, mutação, seleção natural e recombinação (ou crossing over).
Algoritmos genéticos são implementados como uma simulação de computador em que uma população de representações abstratas de solução é selecionada em busca de soluções melhores. A evolução geralmente se inicia a partir de um conjunto de soluções criado aleatoriamente e é realizada por meio de gerações. A cada geração, a adaptação de cada solução na população é avaliada, alguns indivíduos são selecionados para a próxima geração, e recombinados ou mutados para formar uma nova população. A nova população então é utilizada como entrada para a próxima iteração do algoritmo (Wiki).
Deixei aqui um exemplo de código, escrito em Linguagem C que implementa um Algoritmo Genético que tenta descobrir uma string-"alvo" (no caso a string é "FRANCISCO") :
https://drive.google.com/file/d/0B0T8omiWkMq8V0E1cTdoVUFYdXc/edit?usp=sharing
O codigo em questão pode ser compilado e simulado no ambiente gratuito DevC++;
Cada tentativa é um pouco melhor do que a anterior. A função "fitness" avalia o quanto bom é um determinado individuo gerado pelo cruzamento das populações, e print_best(*population) imprime na tela o melhor individuo gerado naquela população.Os individuos são strings e quanto mais eles se aproximam da string-alvo ("Francisco") melhor adaptado é.
Nenhum comentário:
Postar um comentário