Programação Genética

 

DarwinMuito se tem falado de Charles Darwin este ano. Se fosse vivo teria agora 200 anos! Mas sabes quem ele foi, e porque se tornou famoso? E como é que isso pode estar relacionado com o teu computador?? Senta-te e embarca nesta viagem fantástica...

 

BeagleViagem fantástica foi também a que Darwin fez à volta do mundo durante quase 5 anos, a bordo do navio HMS Beagle. Era na altura um jovem e inexperiente naturalista inglês, mas os diários de viagem que foi escrevendo e enviando para Inglaterra ao longo desse tempo tornaram-no bem conhecido no mundo científico. Neles Darwin descrevia as suas observações sobre a geologia, flora e fauna dos diferentes locais de paragem do navio. Muito mais tarde, Darwin baseou-se em algumas das ideias contidas nos diários para escrever o famoso livro "A Origem das Espécies" que, ao contrário do que possa parecer, não é acerca da origem da vida, mas sim acerca de como os organismos evoluem. Darwin explicava o processo de evolução com base no conceito de 'selecção natural', por vezes também chamado de 'sobrevivência dos mais aptos'. Muito resumidamente, há certas características genéticas que conferem a alguns indivíduos de uma população uma vantagem selectiva sobre os outros. Isto significa que, não só estes indivíduos sobrevivem, como também acasalam e produzem mais descendência do que os outros. Deste modo, as suas características vantajosas são transmitidas às gerações seguintes e vão sendo multiplicadas na população ao longo do tempo.

E onde é que o teu computador entra no meio disto tudo? Bem, é que a informática não é feita somente de redes e bases de dados. Muito pelo contrário, há uma vasta área das ciências da computação que se chama Inteligência Artificial, e onde se pode fazer investigação científica muito interessante e divertida, sem necessidade de tubos de ensaio, pipetas (pi-quê? bem, não interessa...) ou luvas. Só precisas mesmo do computador, e de saber programar. Ou talvez nem precises de saber programar! Isto está a ficar confuso, não é? E Darwin, onde é que entra?? Segura-te, pois vais ter uma surpresa... Vamos falar de programas de computador que "vivem" numa população onde acasalam e produzem descendência (sim, têm filhos!), enfim, populações de programas que evoluem, tal como as populações naturais!! E o mais engraçado é que o produto final desta evolução é um programa de computador que tu não escreveste, e que pode fazer coisas em que tu nunca sequer tinhas pensado! Não, não é ficção científica! E não, (ainda) não estamos em risco de criar um Exterminador Implacável. :-)

 

Vamos ver uns exemplos, para perceberes como isto funciona. Supõe que queres escrever um programa de computador para resolver um determinado problema, mas não sabes como, pois o problema é muito complexo. Não quer dizer que o problema seja complicado de perceber, apenas é difícil de resolver. Vejamos:

Exemplos PGHmmm... afinal vamos começar com uma coisa simples. Queres encontrar a expressão (f) que transforma um par de números (x1,x2) num resultado. Tens como exemplos: f(2,3)=5, f(4,6)=10, f(5,1)=6. Não é preciso continuar, pois não? É óbvio que a expressão que procuras é f(x1,x2)=x1+x2. Para este problema não precisas da Programação Genética para nada!

Então vamos complicar um bocadinho. Agora os teus dados de entrada são 3 números (x1,x2,x3) e os exemplos de resultados são f(1,2,3)=5, f(6,2,5)=14, f(1,10,8)=7. Não mates a cabeça com isto, pois a expressão que procuras é f(x1,x2,x3)=x1-x2+2*x3. É bastante simples, mas será que chegavas lá sozinho? E se os teus dados de entrada fossem, não 2 nem 3, mas 1000 números? Como é que resolverias esse problema? A resposta é, com Programação Genética. :-)

Se estás interessado, continua a ler aqui. Vais aprender como a Programação Genética poderia resolver o segundo problema (o dos 3 números).

Encontrar expressões aritméticas não é de modo algum a única aplicação possível da Programação Genética. Na verdade é possível fazer evoluir praticamente qualquer coisa, desde que possa ser escrita sob a forma de um programa. O truque é conseguir que o computador resolva um determinado problema, sem necessidade de lhe dizer como. Com Programação Genética, um robot pode aprender a jogar xadrez ou futebol, e um helicóptero pode aprender a voar sozinho. Recentemente a NASA lançou no espaço uma nova antena que não foi inventada por humanos, mas sim pela Programação Genética. Outras aplicações incluem a identificação de objectos, o reconhecimento da fala, a síntese de novos medicamentos, e a previsão do tempo e dos mercados económicos. A Programação Genética está também presente no mercado dos jogos e filmes, e até mesmo na composição de música e outras formas de arte!

Não só a Programação Genética é de inspiração biológica. Já deves ter ouvido falar de redes neuronais, mas talvez não saibas que também o sistema imunitário serve de modelo para resolver problemas. Há muitos outros algoritmos baseados em observações simples da natureza: as colónias de formigas, os enxames de abelhas, os bandos de aves e os cardumes de peixes! Sabias que todos eles nos ajudam a resolver problemas demasiado complexos para o nosso pobre cérebro humano? E como estamos a falar de assuntos muito recentes, há muito para fazer e investigar, muito para descobrir. E não, não é preciso ser biólogo para o fazer. Na sua grande maioria, os cientistas da Inteligência Artificial são na verdade informáticos.

 

E agora, ainda achas que não se pode fazer investigação científica em informática??

Darwin sketch Wooden computer

Sara Silva 2009