Escolar Documentos
Profissional Documentos
Cultura Documentos
• 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).
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.
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.
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.
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.
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.
• 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
FUNÇÃO DE AVALIAÇÃO –
FITNESS = F ( FUNÇÃO ) NA
QUAL VAI AVALIAR A ADEQUAÇÃO
DA SOLUÇÃO E RESOLUÇÃO DO
PROBLEMA.
POPSIZE – NÚMERO DA
POPULAÇÃO = QUANTIDADE DE
CROMOSSOMO OU SOLUÇÕES
IRÁ PROPOR
MAXITER - GERAÇÕES =
QUANTIDADES DE GERAÇÕES
SERÃO OTIMIZADAS.
SUMARY – RESULTADOS
APLICAÇÕES