Olá, amigos. Os conceitos de evolução e adaptação são ubíquos em sistemas complexos. Como nós veremos nas unidades seguintes, os mecanismos de seleção natural de Darwin são relevantes não somente para organismos biológicos, como se tornaram centrais também para sistemas sociais e tecnológicos. Cientistas da computação têm estado interessados em simulação biológica desde quando os computadores surgiram. Nessa unidade, eu vou cobrir uma abordagem da computação inspirada na biologia, chamada algoritmos genéticos. Esses algoritmos foram desenvolvidos no começo como uma forma de modelar evolução e adaptação pelas disciplinas, mas eles também vieram a ser muito exitosos como métodos de inteligência artificial, uma forma de programas evolucionários e outros objetos computacionais, sem termos que "engenheirá-los" nós mesmos. Algumas vezes, os resultados desses algoritmos são muito surpreendentes. Eles vêm com coisas que nenhum humano teria pensado. E algumas vezes as soluções que eles trazem são mais exitosas que aquelas projetadas por humanos. Nessa unidade, cobrirei como algoritmos genéticos funcionam, e como eles têm sido usados no mundo real. 5.1 Introdução Deixe-me começar destacando os conceitos básicos da evolução pela seleção natural. Primeiro, organismos herdam características de seus pais. As características são herdadas com alguma variação, via mutação, recombinação sexual e outros mecanismos geradores de variação. Mas devido à competição por recursos limitados, os organismos melhores adaptados ao ambiente tendem a produzir mais descendentes. Essa foi a intuição de Darwin na ideia de seleção natural. Seleção se deve a competição. Dessa forma, características que produzam indivíduos adaptáveis se espalham na população. Inicialmente, cientistas da computação inspirados pela biologia, viram que isso tudo poderia acontecer não só na natureza, mas também dentro de computadores, onde organismos computacionais, tais como programas, poderiam desempenhar o papel de organismos biológicos, e poderiam evoluir via evolução Darwiniana. Uma das primeiras pessoas a desenvolver essa ideia em algum detalhe, foi o cientista da computação, John Holland, na Universidade de Michigan, que, nas décadas de 60 e 70, desenolveu a ideia de algoritmos genéticos, também conhecidos como GA's. Holland introduziu a noção de GA's em seu livro, "Adaptação em Sistemas Naturais e Artificiais", publicado em 1975. Esse livro apresentou um quadro matemático para compreender adaptação em uma forma mais geral, uma que foi além da adaptação biológica e encampou adaptação social, tecnológica e artificial em computadores. A última parte leva ao desenvolvimento de algoritmos genéticos e sua subsequente aplicação em muitos problemas do mundo real. Aqui estão alguns exemplos de uso de algoritmos genéticos no mundo real. Apenas para dar uma noção da diversidade de aplicações. GA's tem sido usados para projetar partes de aviões pela GE e Boeing. Também pela NASA para projetar antenas para naves espaciais. John Deere and Company têm usado algoritmos genéticos para otimizar o planejamento da linha de montagem. Eles têm sido usados por várias empresas para auxiliar na descoberta automatizada de remédios. GA's têm sido usados para aprender a detectar fraudes em transações financeiras e comércio financeiro. Têm sido usados para desenvolver programas para análise automatizada de imagens de satélite em Los Alamos, e eles têm sido usados para gerar animações computacionais realísticas em vários filmes, incluindo "Senhor dos Aneis" e "Troia".