quarta-feira, 15 de janeiro de 2014

Algoritmos Genéticos - Busca Genética

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