Ideias fundamentais Matemática 30 de agosto de 2023, 09:40 30/08/2023

Engenheiros usam a evolução para desenvolver novas invenções

Autores

Jovens revisores

Ilustração de três pessoas sentadas junto a uma mesa. Do lado esquerdo da mesa uma mulher vê em seu notebook a estrutura de uma ponte para aguentar peso. Do lado direito, outra mulher monta uma maquete de ponte de palitos, ao seu lado, um homem faz anotações.

Resumo

Você já deve ter ouvido falar sobre a evolução de plantas e animais, mas sabia que esse processo natural pode ser usado também por engenheiros para inventar coisas? Animais e plantas evoluíram de maneiras surpreendentes para sobreviver em seus ambientes. Há muito tempo os biólogos investigam como a evolução acontece. Matemáticos e cientistas da computação trabalham junto com biólogos a fim de criar programas de computador que possam desenvolver projetos para ajudar engenheiros a inventar coisas. São os chamados algoritmos de otimização evolucionária, que podem ser usados para desenvolver aviões mais rápidos, pontes mais resistentes ou mesmo videogames melhores. Neste artigo, explicaremos como esses algoritmos funcionam, apontando seus pontos fortes e fracos.

Entendendo a evolução

Evolução é a palavra que usamos para descrever o modo como as plantas e os animais mudam ao longo de longos períodos de tempo. Muitos animais de uma única espécie podem parecer semelhantes, mas todos são ligeiramente diferentes – o que significa que posso distinguir meu cachorro numa multidão de cachorros! Quando os pais têm um filho, o filho será um pouco parecido com eles. Talvez o filho tenha a mesma cor de cabelo da mãe e seja alto como o pai. A transmissão de tais semelhanças entre gerações é chamada de herança. Também haverá pequenas diferenças entre o filho e seus pais, talvez um nariz maior ou uma visão melhor. Essas diferenças são chamadas de mutações. 

Na natureza, pequenas mutações podem significar a vida ou a morte para animais e plantas. Por exemplo, se duas zebras estão fugindo de um leão em busca de almoço, a mais rápida é que escapará e sobreviverá. A zebra sobrevivente poderá então ter filhos, que talvez herdem a velocidade do pai. Filhos de zebras velozes também têm mais chances de sobreviver e procriar, de modo que, com o tempo, a população de zebras se tornará uma equipe de corredores velozes. Esse processo é chamado de seleção natural. 

Os cientistas observaram que, durante um longo período de tempo, as espécies evoluíram para sobreviver em seus ambientes. Isso se deve a uma combinação de herança, mutação e seleção natural. As criaturas evoluíram de maneiras incríveis, para fazer coisa incríveis – desde mudar de cor para se esconder de predadores, como as mariposas, até beber água pela pele, como os lagartos. A pergunta é: podemos usar essas ideias tiradas da natureza para criar invenções incríveis, capazes de fazer coisas incríveis? 

Algoritmos de otimização evolucionária

Os algoritmos de otimização evolucionária usam ideias de evolução para ajudar engenheiros a inventar coisas. Vários cientistas da computação tiveram a ideia de algoritmos de otimização evolucionária mais ou menos na mesma época, entre 1950 e 1960 [1]. Algoritmos de otimização evolucionária podem ser usados para todo tipo de coisa, como projetar aviões [2], construir níveis em videogames [3] e até mesmo criar arte [4]. A Figura 1 nos dá mais exemplos de como os algoritmos de otimização evolucionária são usados. Para explicar como eles funcionam, vamos imaginar que estamos tentando projetar uma ponte. 

Figura 1. Algoritmos de otimização evolucionária são usados para muitas coisas diferentes e é impossível listá-las todas. Esse diagrama mostra alguns exemplos de onde os algoritmos de otimização evolucionária foram bem-sucedidos. Onde mais você pensa que poderiam ser usados? 

A primeira coisa que devemos fazer é decidir o que torna um projeto de ponte bom e o que o torna ruim. Para simplificar, digamos que queremos uma ponte capaz de suportar o máximo de peso possível – esse é o nosso propósito ou objetivo. Uma vez fixado o objetivo, comparamos dois projetos de pontes e decidimos qual é o melhor – o que suporta mais peso. 

O próximo passo é criar alguns projetos de pontes iniciais. Isso poderia ser feito aleatoriamente, usando-se um computador, ou poderíamos passar algum tempo desenhando-os nós mesmos. De qualquer forma, precisaremos de muitos projetos! Chamamos esse conjunto de desenhos de nossa população. Executando simulações em um computador, conseguimos prever quanto peso cada um de nossos projetos de ponte pode suportar. Usando essas informações, colocamos nossos projetos em ordem com base em sua eficiência (Figura 2). 

Figura 2.  Depois que uma população de projetos é criada por um programa de computador ou por engenheiros, são executadas simulações computadorizadas para avaliar até que ponto cada projeto atende ao objetivo. Neste exemplo, criamos quatro projetos de ponte possíveis. Para cada projeto, medimos quanto peso a ponte pode suportar, medido em newtons, antes que ela desabe. As melhores pontes na população – aquelas que têm a capacidade de peso maior – são então usadas como “pais” que criarão “filhos” para a próxima geração. 

Uma vez que foram determinados quais projetos em nossa população podem suportar o maior peso, nós os selecionamos para ser “pais” – assim como acontece na natureza, onde só as zebras mais velozes sobrevivem para procriar. É claro que pontes não têm “filhos”, mas os cientistas podem escrever programas de computador capazes de combinar dois bons projetos para produzir um novo projeto “filho” que compartilhe características de ambos os “pais”. Talvez a ponte “filha” tenha o mesmo peso de um de seus pais, e o mesmo número de “pernas” do outro. Em seguida, aplicamos uma mutação alterando aleatoriamente alguma coisa no novo projeto. Talvez adicionemos uma “perna” extra ou dobremos o peso. Um exemplo de projetos de dois pais criando um projeto filho é mostrado na Figura 3. 

Figura 3. Selecionados os melhores projetos da população, eles são combinados pelo algoritmo para produzir “filhos”. Primeiro, criamos um novo projeto com características de ambos os pais. Neste exemplo o projeto filho herda as “pernas” de ambos os projetos de seus pais. Em seguida, aplicamos uma mutação (mudança aleatória) ao filho. Aqui, a mutação fez com que o filho perdesse uma das “pernas” herdada do Pai 2. 

Continuamos gerando novos projetos com base na herança e mutação até termos uma nova população de projetos. Em seguida, podemos executar simulações nesses novos projetos, decidir quais são os melhores e repetir o processo. Tudo isso é feito automaticamente para nós, por um computador. Após um longo período de tempo, que pode levar semanas ou meses, encontraremos projetos de pontes cada vez melhores. Por fim, se tivermos muita sorte, teremos um projeto de ponte em que ninguém jamais pensou antes! 

Em que aspectos os algoritmos de otimização evolucionária são bons e ruins? 

Algoritmos de otimização evolucionária podem ser realmente úteis quando precisamos projetar algo novo e não sabemos por onde começar. Esses programas de computador costumam surpreender engenheiros com projetos estranhos e às vezes maravilhosos. Por exemplo, a NASA usou algoritmos de otimização evolucionária a fim de projetar pequenas partes de antenas para satélites [5]. O algoritmo de otimização evolucionária criou projetos curiosos que surpreenderam os engenheiros. Quando eles testaram os projetos desenvolvidos, concluíram que funcionaram melhor que as antenas projetadas por humanos. 

Os algoritmos de otimização evolucionária usam a aleatoriedade de várias maneiras diferentes. Enquanto alguns cientistas pensam que isso é uma coisa boa, muitos engenheiros e projetistas discordam. Se você usa um algoritmo de otimização evolucionária para fazer a mesma coisa duas vezes, ele pode lhe dar duas respostas diferentes – ou seja, você nunca pode ter certeza de que o algoritmo está lhe fornecendo o melhor projeto possível. Essa aleatoriedade faz com que alguns engenheiros desconfiem dos algoritmos de otimização evolucionária [6], pois é impossível entender por que o algoritmo escolhe um projeto em vez de outro. Você voaria em um avião projetado por um algoritmo de otimização evolucionária?

Os cientistas estão atualmente tentando projetar algoritmos capazes de explicar como são tomadas as decisões, para convencer os engenheiros a acreditar nelas. A aleatoriedade também significa que os projetistas vão querer executar um algoritmo de otimização evolucionária muitas vezes, para ter certeza de que estão obtendo os melhores projetos. A execução repetida de algoritmos de otimização evolucionária pode levar muito tempo, mais tempo até do que engenheiros experientes levariam para se sentar e projetar alguma coisa por si próprios. 

Existem algumas situações em que os algoritmos de otimização evolucionária entram em conflito. Às vezes, há mais que um objetivo em mira. Ao projetar pontes, imagine se também quiséssemos saber seu comprimento e altura. Como decidiríamos quais pontes seriam as melhores considerando tanto a capacidade de peso quanto a altura/comprimento? Adicionar mais objetivos significa que o algoritmo de otimização evolucionária levará mais tempo para encontrar uma solução. Outro exemplo seria o de um engenheiro projetista de carros que precisa pensar na aparência do modelo. É difícil conseguir que um computador preveja se um projeto parecerá bom ou ruim. O algoritmo de otimização evolucionária pode projetar um carro que ninguém gostaria de ser visto dirigindo! Em casos assim, precisamos de um ser humano para decidir. 

Outro problema causado por dependermos da decisão de um algoritmo é que ele só pode decidir com base em simulações de computador, que nem sempre são acertadas. Não é incomum que um algoritmo de otimização evolucionária gaste horas para sugerir um projeto que a simulação acha bom, e que um engenheiro demore apenas segundos para perceber que ela errou. Quando isso acontece, os cientistas e os engenheiros precisam consertar os erros da simulação. Portanto, embora os algoritmos de otimização evolucionária sejam ferramentas úteis, nunca substituirão os projetistas humanos. 

O futuro dos algoritmos de otimização evolucionária

Como vimos, os algoritmos de otimização evolucionária copiam processos existentes na natureza e os usam para a solução de problemas que não conseguimos solucionar. Um dos maiores problemas que enfrentamos hoje é a mudança climática e os danos que estamos infligindo à natureza por meio da poluição. Por meio da pesquisa de algoritmos de otimização evolucionária e de novos modos de usá-los, projetaremos veículos melhores e menos poluentes. Mas, embora sempre precisemos de pessoas para projetar e usar esses algoritmos, de certa forma a natureza veio em socorro de si mesma. Que outros problemas você acha que os algoritmos de otimização evolucionária podem nos ajudar a resolver? 

Tente você mesmo!

Se você quiser projetar um carro usando um algoritmo evolucionário, experimente um jogo que criamos! Você pode baixá-lo ou jogá-lo em um navegador neste link (em inglês) para ter uma ideia de  como é trabalhar com um algoritmo evolucionário. Lembre-se de compartilhar seus melhores projetos com seus amigos! 

Glossário

Evolução: Processo pelo qual as plantas e animais mudam durante um longo período de tempo. 

Herança: Processo pelo qual traços como a cor do cabelo passam de pais para filhos.

Mutação: Mudança aleatória nos genes que causa a alteração de uma característica. 

Seleção natural: Processo pelo qual só criaturas com traços úteis vivem o suficiente para ter filhos e transmitir-lhes essas características. 

Algoritmo de otimização evolucionária: Algoritmo que adota os conceitos de evolução para otimizar algo, frequentemente usando simulações de computador. 

Otimização: Processo pelo qual tornamos uma coisa a melhor possível.

Newtons: Medimos as forças em newtons. Por exemplo, o peso é a força com a qual a gravidade puxa um objeto em direção à Terra – medida em newtons. 

Algoritmo: Processo ou conjunto de regras que devem ser seguidos para resolver um problema. 

Simulação computacional: Programa de computador que prediz o que acontecerá na vida real. Por exemplo, simulações computacionais são usadas para a previsão do tempo. As simulações nunca serão perfeitas, constituindo apenas o melhor palpite sobre o que pode acontecer. 

Conflito de interesses

Os autores declaram que a pesquisa foi conduzida sem nenhuma relação financeira ou comercial capaz de gerar um conflito de interesses. 

Agradecimentos

David Chena, Ben Vincenta e Kafyad Wasti trabalharam como pesquisadores internos no verão para ajudar na estrutura e rascunho deste artigo. BS’s são em parte financiados pela EPSRC Doctoral Training Partnership, da Universidade de Swansea. JV é financiado pelo EPRC Centre for Doctoral Training in Enhancing Human Interactions and Collaborations with Data and Intelligence Driven Systems (EP/S021892/1). 

Referências 

[1] Mitchell, M. e Taylor, C. E. 1999. “Evolutionary computation: an overview.” Annu. Rev. Ecol. Syst. 30:593–616.

[2] Naumann, D. S., Evans, B., Walton, S. e Hassan, O. 2016. “A novel implementation of computational aerodynamic shape optimisation using Modified Cuckoo Search.” Appl. Math. Model. 40:4543–59. DOI: 10.1016/j.apm.2015.11.023.

[3] Walton, S. P., Rahat, A. A. M. e Stovold, J. 2021. “Evaluating mixed-initiative procedural level design tools using a triple-blind mixed-method user study.” IEEE Trans. Comput Intell. AI Games. DOI: 10.1109/TG.2021.3086215.

[4] den Heijer, E. e Eiben, A. E. “Investigating aesthetic measures for unsupervised evolutionary art.” Swarm Evol. Comput. (2014) 16:52–68. DOI: 10.1016/j.swevo.2014 01.002.

[5] Hornby, G., Globus, A., Linden, D. e Lohn, J. 2006. “Automated antenna design with evolutionary algorithms”, em Space 2006 (Reston, VA: American Institute of Aeronautics and Astronautics). DOI: 10.2514/6.2006-7242. 

[6] Vincalek, J., Walton, S. e Evans, B. 2021. “It’s the journey not the destination: building genetic algorithms practitioners can trust”, em 2021 Genetic and Evolutionary Computation Conference Companion (GECCO’21 Companion) (New York, NY: ACM). DOI: 10.1145/3449726.3459483. 

Citação

Walton, S., Evans, B., Smith, B. e Vincalek, J. (2022). “How engineers use evolution to invent things.” Front. Young Minds. 10:776918. DOI: 10.3389/frym.2022.776918. 

Encontrou alguma informação errada neste texto?
Entre em contato conosco pelo e-mail:
parajovens@unesp.br