Você está na página 1de 14

Rafael Vasconcelos

João Lucas

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