Arquivo da categoria ‘Ruby’

Algoritmo genético em Ruby

Janeiro 19, 2008

Tenho muito interesse no estudo de computação evolutiva. Em meio a pesquisas e estudos encontrei o seguinte problema:

“Given the digits 0 through 9 and the operators +, -, * and /, find a sequence that will represent a given target number. The operators will be applied sequentially from left to right as you read.”

Uma explicação mais detalhada do problema pode ser encontrada em: http://www.ai-junkie.com/ga/intro/gat3.html

Mas resumindo…

Imagine que você queira encontrar um conjunto de operações aritméticas para se chegar ao número 10. Uma provável solução seria:

10/3+7

A expressão é lida da esquerda para a direita e operações de divisão consideram somente a parte inteira ignorando o resto. No exemplo 10/3=3. Portanto, 10/3+7 = 10.

Resolvi implementar uma solução para o problema em Ruby para praticar um pouco nesta linguagem que considero bastante interessante. :)

O código-fonte tem alguns comentários para ajudar na compressão da resolução do problema. Quem tiver mais familiaridade com outras linguagens, no site supra citado tem implementações em Java e Pascal. ;)

A teoria envolvida em algoritmos genéticos é muito interessante e as suas aplicações abrangem inúmeras áreas do conhecimento.

Se você ficou curioso e deseja se aprofundar mais, seguem abaixo algumas sugestões de leitura:

Genetic Algorithms in Plain English

Introdução a algoritmos geneticos com applets Java

Boa leitura e até o próxima!

Download do código em Ruby: Implementação de um Algoritmo Genético em Ruby.

Obs: Renomear o arquivo para GA.rb e executar, por exemplo, assim: “%>ruby GA.rb 10″.