Você está na página 1de 27

ALGORITMOS GENÉTICOS

• FUNDAMENTO HISTÓRICO
• CARACTERÍSTICAS PRINCIPAIS
• EXEMPLO DE CODIFICAÇÃO E FUNÇÃO
APLICAÇÕES DOS ALGORÍTMOS GENÉTICO
FUNDAMENTO HISTÓRICO
• 1833 - Charles Babbage, um dos fundadores da computação moderna e amigo pessoal de Darwin
desenvolveu sua máquina analítica
• 1858 - Charles Darwin apresentou sua teoria de evolução através de seleção natural, simultaneamente
com outro naturalista inglês Alfred Russel Wallace.
• 1866 - foi publicado um trabalho que ficou conhecido como a base da genética: “Experimentos em
hibridização de plantas”, de Gregor Johann Mendel.
• 1900 – O trabalho de Gregor Mendel foi redescoberto pelos cientistas e teve grande influência sobre os
futuros trabalhos relacionados à evolução.
• Este princípio foi desenvolvido durante os anos 1930 e 1940, por biólogos e matemáticos de importantes
centros de pesquisa. Nos anos 1950 e 1960, muitos biólogos começaram a desenvolver simulações
computacionais de sistemas genéticos. Entretanto, foi John Holland quem começou, seriamente, a
desenvolver as primeiras pesquisas no tema. Holland foi gradualmente refinando suas idéias e em 1975
publicou o seu livro Adaptation in Natural and Artificial Systems, hoje considerado a Bíblia de Algoritmos
Genéticos. Desde então, estes algoritmos vêm sendo aplicados com sucesso nos mais diversos problemas
de otimização e aprendizado de máquina.
INTRODUÇÃO AG’S
Algoritmos são uma sequência de passos que resolvem um problema, no computador essa ideia é
traduzida numa linguagem que o mesmo possa entender.

Algoritmos Genéticos são uma família de modelos computacionais inspirados no princípio Darwiniano da
evolução das espécies e na genética. São algoritmos probabilísticos que fornecem um mecanismo de busca
paralela e adaptativa baseado no princípio de sobrevivência dos mais aptos e na reprodução. Eles
incorporam uma solução potencial para um problema específico numa estrutura semelhante a de um
cromossomo e aplicam operadores de seleção e "crossover" a essas estruturas de forma a preservar
informações críticas relativas à solução do problema. Normalmente os AG's são vistos como otimizadores
de funções, embora a quantidade de problemas para o qual os AG's se aplicam seja bastante
abrangente.

Cromosso Gene -
Aptidão Aptidão
mo representaç
bruta - normalizad
(genótipo) ão de cada Geração - Aptidão
População saída a: Aptidão
- cadeia de parâmetro iteração máxima -
- conjunto gerada pela aptidão média -
bits que de acordo Fenótipo - completa melhor
de pontos função bruta aptidão
representa com o cromossom do AG que indivíduo
(indivíduos) objetivo normalizad média da
uma alfabeto o codificado gera uma da
no Espaço para um a, entrada população
solução utilizado nova população
de Busca indivíduo para o corrente
possível (binário, população corrente
da algoritmo
para o inteiro ou
população de seleção.
problema. real).
ALGORITMOS GENÉTICOS
Algoritmos genéticos são uma classe particular de algoritmos de computação evolutiva que é
uma área em crescimento da inteligência artificial. Eles usam técnicas inspiradas pela biologia
evolutiva como hereditariedade, mutação, seleção natural e cruzamento (ou crossover).

São algoritmos de otimização global, baseados nos mecanismos de seleção natural e da


genética.

Eles empregam uma estratégia de busca paralela e estruturada, mas aleatória, que é voltada
em direção ao reforço da busca de pontos de "alta aptidão", ou seja, pontos nos quais a
característica a ser minimizada (ou maximizada) tem valores relativamente baixos (ou altos).

A função dos Algoritmos Genéticos não é retornar um resultado certo ou errado, mas sim, qual
o resultado que mais se adapta a minha função-Objetivo.
FUNÇÃO-OBJETIVO
A função-objetivo é o objeto de nossa
otimização. Pode ser um problema de
otimização, um conjunto de teste para
identificar os indivíduos mais aptos, ou
mesmo uma "caixa preta" onde sabemos
apenas o formato das entradas e nos
retorna um valor que queremos otimizar. A
grande vantagem dos algoritmos genéticos
está no fato de não precisarmos saber como
funciona esta função objetivo, apenas tê-la
disponível para ser aplicada aos indivíduos
e comparar os resultados.
OPERADORES DE ALGORITMOS GENÉTICOS
Os principais operadores são:
CRUZAMENTO (CROSSOVER) E MUTAÇÃO
• O princípio básico dos operadores genéticos é transformar a
população através de sucessivas gerações, estendendo a
busca até chegar a um resultado satisfatório.
• Eles são utilizados para assegurar que a próxima geração
seja totalmente nova, mas possuí, de alguma forma,
características de seus pais, ou seja, a população se
diversifica e mantém características de adaptação
adquiridas pelas gerações anteriores.
• Para prevenir que os melhores indivíduos não desapareçam
da população pela manipulação dos operadores genéticos,
eles podem ser automaticamente colocados na próxima
geração, através da reprodução elitista.
• A atuação desses operadores visam a adaptação de um
organismo que é medida pelo sucesso do organismo na vida
(sobrevivência).
CRUZAMENTO (CROSSOVER)
• O cruzamento, ou crossover é um processo que imita o processo biológico homônimo
na reprodução sexuada: os descendentes recebem em seu código genético parte do
código genético do pai e parte do código da mãe. Esta recombinação garante que os
melhores indivíduos sejam capazes de trocar entre si as informações que os levam a
ser mais aptos a sobreviver, e assim gerar descendentes ainda mais aptos.
• O cruzamento é o operador responsável pela recombinação de características dos pais
durante a reprodução, permitindo que as próximas gerações herdem essas
características. Ele é considerado o operador genético predominante, por isso é
aplicado com probabilidade dada pela taxa de crossover, que deve ser maior que a taxa
de mutação.

Cromossoma 1 11011 | 00100110110

Cromossoma 2 01001 | 11000011110

Descendência 1 11011 | 11000011110

Descendência 2 01001 | 00100110110


MUTAÇÃO
Depois que um cruzamento é realizado, acontece a mutação. A mutação tem a intenção de
prevenir que todas as soluções do problema dessa população caiam em um ponto ótimo
local. A operação de mutação muda aleatoriamente a descendência criada pelo cruzamento.
O operador de mutação é necessário para a introdução e manutenção da diversidade genética
da população, alterando arbitrariamente um ou mais componentes de uma estrutura escolhida,
fornecendo assim, meios para introdução de novos elementos na população.
No caso de uma codificação binária, podemos mudar aleatoriamente alguns bits escolhidos de
1 para 0, ou de 0 para 1. A mutação pode então ser ilustrada como a seguir:

Descendência Original 1 1101111000011110

Descendência Original 2 1101100100110110

Descendência Mutada 1 1100111000011110

Descendência Mutada 2 1101101100110110


TAXA DE CRUZAMENTO X
TAXA DE MUTAÇÃO
Taxa de Cruzamento
A taxa de cruzamento deve em geral ser alta,
cerca de 80%-95%. Entretanto, alguns
resultados mostram que para alguns tipos de
problemas, uma taxa de cruzamento de cerca
de 60% é o melhor.
Taxa de Mutação
Por outro lado, a taxa de mutação deve ser
muito baixa. As melhores taxas parecem estar
na faixa de 0.5%-1%. A mutação não deve
ocorrer com muita frequência porque senão o
AG tornar-se-á de fato, uma busca aleatória.
FUNCIONAMENTO DE UM ALGORITMO
GENÉTICO
[Início] Gere uma [Adequação] Atribua [Nova população] Crie [Seleção] Selecione de
população aleatória um valor de uma nova população acordo com sua adequação
repetindo os passos dois indivíduos para serem os
de n indivíduos adequação para cada pais.
indivíduo seguintes até que a nova
(soluções adequadas população esteja (melhor adequação, mais
para o problema) (Índice de aptidão) completa chances de ser selecionado)

[Cruzamento] Com a [Substitua] Utilize a


probabilidade de [Mutação] Com a
cruzamento, cruze os pais probabilidade de mutação, [Aceitação] Coloque nova população
para formar a nova geração. altere os cromossomas da a nova descendência gerada para a
Se não realizar cruzamento, a nova geração nos locus na nova população próxima rodada do
nova geração será uma cópia (posição nos cromossomas).
exata dos pais. algoritmo

[Teste] Se a condição [Repita] Se a


final foi atingida, condição ideal não
pare, e retorne a for atingida:
melhor solução da
população atual Vá para o passo 2
SELEÇÃO
O princípio básico do funcionamento dos AGs é que um critério de seleção vai fazer com que, depois
de muitas gerações, o conjunto inicial de indivíduos gere indivíduos mais aptos. A maioria dos
métodos de seleção são projetados para escolher preferencialmente indivíduos com maiores notas
de aptidão, embora não exclusivamente, a fim de manter a diversidade da população. Um método de
seleção muito utilizado é o Método da Roleta, onde indivíduos de uma geração são escolhidos para
fazer parte da próxima geração, através de um sorteio de roleta.

Neste método, cada indivíduo da população é representado na roleta proporcionalmente ao seu


índice de aptidão. Assim, aos indivíduos com alta aptidão é dada uma porção maior da roleta,
enquanto aos de aptidão mais baixa é dada uma porção relativamente menor da roleta. Finalmente,
a roleta é girada um determinado número de vezes, dependendo do tamanho da população, e são
escolhidos, como indivíduos que participarão da próxima geração, aqueles sorteados na roleta.
TAMANHO DA POPULAÇÃO
• Pode ser um pouco surpreendente que
populações de tamanho muito grande,
normalmente não aumentam o desempenho do
AG (no sentido de aumentar a velocidade com
que são encontradas as soluções).

• Um bom tamanho para a população é cerca de


20-30, entretanto às vezes tamanhos de 50-100
são relatados como os melhores.

• Alguns autores também mostram que o melhor


tamanho da população depende do tamanho da
série codificada (cromossomas). Isto significa
que se você tem cromossomas com 32 bits, a
população deve ser maior do que se você
tivesse cromossomos com 16 bits.
EXEMPLIFICAÇÃO DE ALGORITMOS GENÉTICOS

100% 90% 70% 60% 50% 30% 15% 1%


Besouro
Amarelo;
Besouro
15%
Verde;
30%

Besouro
Besouro Azul; 90%
Vermelho;
Seleção Elitista do 50% Exclusão Elitista do
mais apto com mais inapto com
100% de chances Besouro Besouro chances mínimas de
Marrom; Cinza; 70%
de adaptação 60% adaptação
RESULTADO DO CRUZAMENTO
A primeira rodada da roleta escolheu o besouro azul para fazer o cruzamento com o besouro
preto, gerando um indíviduo com um tom de azul muito escuro, dando-lhe um nível de aptidão
de 95%. O Outro cuzamento selecionado foi do besouro cinza com o besouro vermelho, gerando
um indivíduo marrom com 60% de aptidão.
Porém descobriu-se que os besouros muito aptos para se camuflar, por serem os mais escuros,
também tinham dificuldades de serem percebidos pelas fêmeas durante o cruzamento. Ou seja,
foi criado um novo problema que deve ser solucionado em uma proxima geração através de
outros tipos de cruzamentos ou mutações.
MUTAÇÃO
Uma possível mutação para proporcionar a melhor
adaptação destes indivíduos mais escuros, gerados
pelo cruzamento, seria o aparecimento de alguma
característica que permitisse o reconhecimento e
localização entre os indivíduos sem prejudicar a
capacidade de camuflagem.
Através da mutação, obtivemos um individuo quase
ideal, formado por um corpo bastante escuro mas
com a cabeça vermelha.
Note que o indivíduo que tinha a característica ideal
para isto era o vermelho. Por isso o processo de
seleção não pode ser exclusivamente elitista, pois
teríamos perdido os genes do vermelho para dar
origem ao besouro com maiores chances de
sobrevivência e cruzamento.
Ponto de cruzamento único – um ponto de cruzamento é
escolhido, a série binária desde o começo do cromossoma até
o ponto de cruzamento é copiada do primeiro pai e o resto pais
e o resto copiado do outro pai.

Dois pontos de cruzamento – são definidos dois pontos de


cruzamento, a série binária desde o início do cromossoma até
o primeiro ponto de cruzamento é copiada do primeiro pai, a
parte do primeiro ponto de cruzamento até o segundo é
copiada do outro pai e o resto do cromossoma é copiada do
primeiro pai novamente

Cruzamento uniforme – os bits são copiados


aleatóriamente do primeiro e segundo pai

Mutação / inversão do bit – determinados bits são


invertidos

Cruzamento Aritmético – crossover. É realizada uma


operação aritmética para obter uma nova geração.
Combina pedaços do cromossomo de dois genitores
gerando filhos mais aptos e consequentemente com o
passar das gerações a população tende a evoluir.
CODIFICAÇÃO POR PERMUTAÇÃO
CRUZAMENTO
Ponto de cruzamento único – um ponto de cruzamento é selecionado e a
(1 2 3 4 5 6 7 8 9) + (4 5 3 6 8 9 7 2 1) permutação é copiada até o ponto de crossover ser selecionada do
= (1 2 3 4 5 6 8 9 7) primeiro pai até o ponto de cruzamento, daí o outro pai é rastreado e se o
número ainda não estiver na descendência, é adicionado.

Mutação
Mudança de ordem – dois números são escolhidos e
(1 2 3 4 5 6 8 9 7) => (1 8 3 4 5 6 2 9 7) trocados entre si

CODIFICAÇÃO DE VALORES
Cruzamento

(1.29 5.68 2.86 4.11 5.55) => Todos os cruzamentos de codificação binária podem ser usados

(1.29 5.68 2.73 4.22 5.55) Mutação – adicionando um número pequeno ( para codificação de valores
reais) – um número pequeno é adicionado a ( ou subtraído de ) valores
selecionados
CODIFICAÇÃO EM ÁRVORE
Cruzamento - um ponto de cruzamento é escolhido em ambos os pais, os
pais são divididos nesse ponto e as partes abaixo do ponto de cruzamento
são trocadas para produzir a descendência
Mutação – Mudando o operador – os nós escolhidos são mudados
EXEMPLOS DE CODIFICAÇÃO
Codificação Binária

Codificação Binária é a mais comum principalmente porque foi a que os primeiros pesquisadores
de AG usaram e devido à sua relativa simplicidade.
Na Codificação Binária, cada cromossoma é uma série de bits - 0 ou 1.

Codificação Binária permite muitos possíveis cromossomas, mesmo com pequenos número de
alelos. Por outro lado, esta codificação não é natural para muitos problemas e algumas vezes é
necessário fazer correções antes dos cruzamentos e/ou mutações.

Exemplo de Problema: Problema da Mochila

O problema: É dada uma lista de coisas com preços e tamanhos. É fornecido o valor da
capacidade da mochila. Escolha as coisas de forma a maximizar o valor das coisas que cabem
dentro da mochila, sem ultrapassar sua capacidade.

Codificação: Cada bit é usado para dizer se a coisa correspondente está ou não na mochila.
CODIFICAÇÃO POR PERMUTAÇÃO
A Codificação por Permutação pode ser usada em problemas que envolvem ordenação como o
"Problema do Caixeiro-Viajante" ou problemas de ordenação de tarefas.

Na Codificação por Permutação, cada cromossoma é uma série de números que representa
uma posição em uma sequência

A Codificação por Permutação é útil para solução de problemas de ordenação. Para alguns tipos
de cruzamentos e mutações, são necessárias correções para que os cromossomas fiquem
consistentes (isto é contenham sequências reais) para alguns
problemas.
Exemplo de Problema: Problema de uma transportadora
O problema: São dadas cidades e as distâncias entre elas. A transportadora tem que visitar todas
elas, sem viajar mais do que o necessário. A solução do problema consiste em encontrar a
sequência de cidades em que as viagens devem ser feitas de forma que a distância percorrida seja
a mínima possível.
Codificação: Os cromossomas descrevem a ordem em que a transportadora visitará as cidades.
CODIFICAÇÃO DE VALORES
A codificação direta dos valores pode ser usada em problemas em que são usados valores mais
complicados tais como números reais. Usar codificação binária para esse tipo de problema seria muito
difícil.
Na Codificação de Valores, cada cromossoma é uma sequência de alguns valores. Esses valores
podem ser qualquer coisa relacionada com o problema, tais como: números reais, caracteres ou
qualquer outro objeto.

Codificação de Valores é uma boa escolha para alguns problemas especiais. Entretanto, para essa
codificação, é frequentemente necessário desenvolver um método de cruzamento e mutação
específico para o problema.

Exemplo de Problema: Cálculo de Pesos para uma Rede Neural

O problema: É dada uma rede neural com arquitetura definida. Encontre os pesos entre os neurônios
da rede de forma a obter a resposta desejada da rede.

Codificação: Valores reais dos cromossomas representam os pesos da rede neural.


SOFTWARE QUE TRABALHA COM ALGORITMOS GENÉTICO

• RSTUDIO
• MLROSE
• PYTHON
• ONEMAX
• JAVA
• MATLAB
Exemplo de aplicação de algoritmo na prática aplicação no R.
Dois atributos em correlacionados – pontos e peso dos itens

Ponto é a importância do item


Peso é o corpo que eventualmente excede a bagagem
Passo – criar combinação que otimize os pontos sem passar da restrição de 15kg
Numa primeira eventual possibilidade de elabora um plano das restrições, nós buscaremos os
maiores pontos até chegar os 15kg. Sendo isso uma possiblidade óbvia. Mas necessariamente
não seria a melhor solução ! pois terá a possibilidade de deixar de incluir peso com mais pontos .
Para o algoritmo genético cada item será um bit, ele irá nos passar uma sugestão de
configuração de bits
Item com bit 1 deverá ser incluído.
Item com bit 0 não deverá ser incluído
O AG realizara as melhores combinações usando as técnicas de crossover, elitismo, mutação
para chegar a melhor combinação possível, nós implementamos uma função
de avaliação que irá dizer para nós se é a melhor opção .
Logo basta nós analisarmos se a opção é a mas válida
• Criar um data frame com
todos os itens relacionados com
pontos e pesos que estão na
tabela.
• Função de adaptação – recebe
do algorítmo genético uma
combinação de bits onde cada
bits corresponde ser está ou não
incluída.

• Ler a função e soma os pontos


e peso e efetua a contagem
o algoritmo genético irá trabalhar
até encontrar uma série de
combinações possíveis
TIPO DE MODELO - BINÁRIO

FUNÇÃO DE AVALIAÇÃO –
FITNESS = F ( FUNÇÃO ) NA
QUAL VAI AVALIAR A ADEQUAÇÃO
DA SOLUÇÃO E RESOLUÇÃO DO
PROBLEMA.

NÚMERO DE BITS – QUANTIDADE


DE BITS DE CORDO COM A
QUANTIDADE DE ITEM

POPSIZE – NÚMERO DA
POPULAÇÃO = QUANTIDADE DE
CROMOSSOMO OU SOLUÇÕES
IRÁ PROPOR

MAXITER - GERAÇÕES =
QUANTIDADES DE GERAÇÕES
SERÃO OTIMIZADAS.

NAMES – NOMES DO OBJETO

SUMARY – RESULTADOS
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 proteínas
•Determinação de rotas e sequenciamento de tarefas
•Determinação de funções para criação de imagens
•Mecanismos de busca na Internet
FIM DA APRESENTAÇÃO
• ERIVALDO ROCHA
• ERIVALDO SOUZA
• FELIPE DUARTE
• CLESCIO SANTANA

Você também pode gostar