Universidade Federal do Acre - Sistemas de Informação
Introdução
• Algoritmos genéticos são parte
da computação evolucionária
• Algoritmos genéticos (AG) foram inventados
por John Holland e desenvolvidos por ele, seus alunos e colegas. Isso resultou no livro de Holland "Adaption in Natural and Artificial Systems" publicado em 1975. Fundamentos de Biologia - Cromossomos
• Todo organismo vivo consiste de células.
• Em cada célula, existe o mesmo conjunto de
cromossomos
• Cromossomos consistem de genes –
seqüências de DNA- que servem para determinar as características de um indivíduo Fundamentos de Biologia - Reprodução • Durante o processo de reprodução ocorre-se a recombinação (ou crossover –cruzamento-). Genes dos pais se combinam para formar novos cromossomos.
• Os descendentes criados podem sofrer mutações, ou
seja, os elementos do DNA podem ser trocados
• A adaptação de um organismo pode ser medida pelo
sucesso do mesmo em sua vida Algoritmos Genéticos – Idéia Básica
• Começar com um conjunto de soluções
(representado por cromossomos) chamado população
• Soluções de uma população são escolhidas e
usadas para formar uma nova população (reprodução)
• Espera-se que a nova população seja “melhor”
que a anterior Algoritmos Genéticos – Idéia Básica
• Soluções que são escolhidas para formar
novas soluções (descendentes) são escolhidas de acordo com uma função de adaptação (função objetiva - custo)
• O processo é repetido até que uma condição
seja satisfeita Algorítmos Genéticos • Algoritmos genéticos (GA) são um ramo dos algoritmos evolucionários • Como tal podem ser definidos como uma técnica de busca baseada no processo biológico de evolução natural. • Os algoritmos genéticos são técnicas heurísticas de otimização global • São algoritmos de busca baseados nos mecanismos de seleção natural e genética. Algorítmos Genéticos • Populações de indivíduos são criados e submetidos aos operadores genéticos: – Seleção – Recombinação (crossover) – Mutação. • Estes operadores utilizam uma caracterização da qualidade de cada indivíduo como solução do problema em questão chamada de avaliação • Geram um processo de evolução natural destes indivíduos • Eventualmente gerará um indivíduo que caracterizará uma boa solução (talvez até a melhor possível) para o nosso problema. Características dos Algorítmos Genéticos • Eles se parecem com a evolução natural, que só por que encontrou um indivíduo que é instantaneamente o melhor de um certo grupo não pára de “procurar” outros indivíduos ainda melhores. Características • A evolução natural não é um processo dirigido à obtenção da solução ótima. • O processo simplesmente consiste em fazer competir uma série de indivíduos e pelo processo de sobrevivência do mais apto, os melhores indivíduos tendem a sobreviver. • Um GA tem o mesmo comportamento que a evolução natural: a competição entre os indivíduos é que determina as soluções obtidas. O algorítmo • [Início] Geração aleatória de uma população de n cromossomos • [Adaptação] Verificar a função objetiva f(x) de cada cromossomo x • [População] Cria-se uma nova população pela repetição a seguir: 1. [Seleção] Selecione um par de cromossomos da população de acordo com a adaptação de cada um (os mais bem adaptados tem maior chance de serem escolhidos) 2. [Crossover] Produza dois descendentes (filhos) realizando crossover com os cromossomos dos pais. O ponto para a realização do crossover deve ser aleatório. 3. [Mutação] Com uma certa probabilidade, o descendente sofre mutação em cada locus (posição no cromossomo). 4. [Aceitação] Coloque os descendentes em uma nova população, juntamente com a melhor solução da geração velha O algorítmo • [Troca] Substitua a população velha pela nova • [Teste] Se a condição de finalização é satisfeita, pare, e retorne a melhor solução da população atual • [Adaptação] • [Laço] Volte ao passo 1 Algorítmos Genéticos • Se você tem um algoritmo com tempo de execução longo o suficiente para solução de um problema, então não há nenhuma necessidade de se usar um algoritmo evolucionário. • Sempre dê prioridade aos algoritmos exatos. • Os algoritmos evolucionários entram em cena para resolver aqueles problemas cujos algoritmos são extraordinariamente lentos (problemas NP- completos) ou incapazes de obter solução (como por exemplo, problemas de maximização de funções multi-modais). Aplicações • Sistemas Dinâmicos não Lineares - predição, análise de dados • Projeto de Redes Neurais, ambos: determinação da arquitetura e dos pesos • Trajetória de Robôs • Desenvolvimento de programas em LISP (programação genética) • Planejamento Estratégico • Determinação da Forma de Moléculas de Proteinas • Determinação de Rotas e Sequenciamento de Tarefas • Determinação de Funções para criação de imagens