Existe uma ramificação da computação evolutiva chamada Programação Genética. As heurísticas de Programação Genética são derivadas da heurística de algoritmos genéticos que têm como base a teoria da evolução de Charles Darwin e foram propostas em 1975 por John Holland utilizando o conceito de cromossomos como estrutura básica para representação de possíveis soluções para um determinado problema (Silva, 2008).
De acordo com Ribeiro (2009), semelhante à forma como acontece nos algoritmos genéticos,
na programação genética inicialmente é criada, de forma randômica, uma população inicial onde cada indivíduo desta população é um programa de computador. Esses programas podem conter funções que sejam específicas ao domínio de um problema, operações matemáticas, funções lógicas ou operações-padrão de programação, como estruturas condicionais, loops, etc.
Conforme descrito por Lugger (2004), soluções como algoritmos genéticos podem ser eficientes por oferecerem um modelo natural para o paralelismo, pois cada parte de uma solução independe da outra. Nas soluções tradicionais da programação para resolução de um problema, por não usarem o princípio do paralelismo, frequentemente o resultado das partes de uma solução dependem completamente das outras.
Conforme descrito por Lugger (2004), soluções como algoritmos genéticos podem ser eficientes por oferecerem um modelo natural para o paralelismo, pois cada parte de uma solução independe da outra. Nas soluções tradicionais da programação para resolução de um problema, por não usarem o princípio do paralelismo, frequentemente o resultado das partes de uma solução dependem completamente das outras.
Algoritmos Genéticos
Existe um modelo de inteligência inspirado na biologia, onde soluções para problemas complexos são buscadas através da aplicação de princípios da evolução darwiniana. Um algoritmo genético utiliza um processo que se baseia no princípio da evolução: “soluções candidatas pobres tendem a desaparecer, enquanto que aquelas que se mostram mais promissoras em resolver um problema sobrevivem e se reproduzem construindo novas soluções, a partir de componentes dos seus pais bem sucedidos” (Lugger, 2004).
Ribeiro (2009), define algoritmos genéticos como:
"Os Algoritmos Genéticos, baseados na teoria evolucionista de Darwin, representam cada indivíduo de uma população como sendo um conjunto de caracteres ou bits e associam a ele uma aptidão ou adequação (fitness). Com o uso das idéias das “operações” genéticas de crossing over e mutação, novas gerações ou populações descendentes são criadas a partir de uma população inicial, sendo que as características apresentadas pelos indivíduos mais adaptados têm maiores chances de serem transmitidas às gerações posteriores" (2009, p. 21).
O “segredo” do funcionamento da programação genética, segundo Koza (1992), está na sua representação, pois ela irá manipular diretamente uma representação do problema em forma de código. Geralmente a representação de uma solução de um problema é uma estrutura hierarquizada, contendo rotinas e sub-rotinas, além de funções que dependem do domínio do problema ou não. Caso a solução seja representada por cadeias de bits de tamanhos fixos, podem dificultar o aprendizado e a geração de uma solução adequada para o problema em questão.
De acordo com Lugger (2004), os algoritmos genéticos vêem o aprendizado como uma competição num universo de possíveis soluções para um problema. O critério usado para avaliação é uma função chamada função de “aptidão” ou “adequação” (fitness), que avalia se cada solução contribuirá para a próxima geração de soluções.
BIBLIOGRAFIA:
KOZA, John R. Genetic Programming: On the Programming of Computers by Means of Natural Selection. 6ª edição. MIT Press, Cambridge, MA, EUA, 1992.
LUGER, George F. Inteligência Artificial: Estruturas e estratégias para solução de problemas complexos. 4ª edição. Porto Alegre: Bookman, 2004.
RIBEIRO, Rodrigo L. Freitas. Projeto e Construção de um Sistema de Programação Genética. Monografia (Sistemas de Informação). Instituto de Informática. PUC Minas. 2009.
RUSSEL, Stuart; NORVIG, Peter. Inteligência artificial: uma abordagem moderna. 2ª edição. Editora Campus. 2003.
Vi seu link na pagina da wikipedia sobre programação genetica, e gostaria de informação que apesar da programação genetica ser "filha" dos algoritmos geneticos, eles são completamente diferentes em objetivo e seu texto apenas tem 1 paragrafo solto sobre programação genetica e utilizou a wikipedia para se promover.
ResponderExcluir