Introdução a Algoritmos Genéticos Tiago da Conceição Mota Laboratório de Inteligência Computacional Núcleo de Computação Eletrônica Universidade Federal do Rio de Janeiro Outubro de 2007 O Que São? • Busca estocástica por soluções aproximadas • Inspirados na evolução das espécies • Normalmente empregados em problemas cujo espaço de busca é grande, irregular ou pouco conhecido Genética nos Seres Vivos • Cromossomos • Cadeias de DNA • Instruem a produção de diferentes proteínas • Carregam os genes • Responsáveis por características específicas de cada ser • Podem assumir diferentes valores (alelos) • Diferentes combinações de valores (genótipos) levam a diferenças em características do ser (fenótipos) Genética nos Seres Vivos • Cromossomos encontrados em pares (seres que se reproduzem sexuadamente) • Produzem gametas, com um representante de cada par de cromossomos • Gametas de dois indivíduos se unem para formar um novo indivíduo Genética nos Seres Vivos • Cromossomos encontrados em pares (seres que se reproduzem sexuadamente) • Produzem gametas, com um representante de cada par de cromossomos • Gametas de dois indivíduos se unem para formar um novo indivíduo • Durante a produção dos gametas • Recombinação: troca de parte das cadeias de um par • Mutação: alteração em uma ou mais posições dos cromossomos Genética nos Seres Vivos • Fenótipos: adaptação dos indivíduos ao ambiente • Maior adaptação, mais chances de sobreviver • Maior sobrevivência, mais chances de se reproduzir e gerar novos indivíduos Genética nos Seres Vivos • Fenótipos: adaptação dos indivíduos ao ambiente • Maior adaptação, mais chances de sobreviver • Maior sobrevivência, mais chances de se reproduzir e gerar novos indivíduos • Novos indivíduos carregam informações dos pais, tendo boa possibilidade de serem tão bem adaptados ao ambiente quanto estes • Seleção natural: escolha de fenótipos através da sobrevivência dos mais adaptados Genética nos Seres Vivos • Evolução • Seleção natural • Alterações genéticas Fundamentos • Imitar a evolução das espécies para resolver problemas, “evoluindo” soluções Fundamentos • Imitar a evolução das espécies para resolver problemas, “evoluindo” soluções • Exemplo de problema: • Achar o máximo da função 7 g(x1 , x2 ) = 2 + (x1 + x2 ) × cos πx1 × (sin (2πx2 )) 2 • 0 ≤ x1 , x2 < 1 Fundamentos Função g(x1 , x2 ) Fundamentos Biologia × Algoritmos Genéticos • Cromossomo • Estrutura na qual são codificadas as soluções • Exemplo: vetor de 10 bits Fundamentos Biologia × Algoritmos Genéticos • Cromossomo • Estrutura na qual são codificadas as soluções • Exemplo: vetor de 10 bits • Gene • Parte da estrutura responsável por um componente da solução • Exemplo: segunda metade dos 10 bits é responsável pela codificação de x2 Fundamentos Biologia × Algoritmos Genéticos • Cromossomo • Estrutura na qual são codificadas as soluções • Exemplo: vetor de 10 bits • Gene • Parte da estrutura responsável por um componente da solução • Exemplo: segunda metade dos 10 bits é responsável pela codificação de x2 • Genótipo • Codificação da solução na estrutura • Exemplo: 0110010101 Fundamentos Biologia × Algoritmos Genéticos • Produção de proteínas • Decodificação do genótipo • Exemplo: (01100)2 = (12)10 ⇒ (10101)2 = (21)10 ⇒ 12 = 0,375 25 21 x2 = 5 = 0,65625 2 x1 = Fundamentos Biologia × Algoritmos Genéticos • Produção de proteínas • Decodificação do genótipo • Exemplo: (01100)2 = (12)10 ⇒ (10101)2 = (21)10 ⇒ 12 = 0,375 25 21 x2 = 5 = 0,65625 2 x1 = • Fenótipo/indivíduo • Solução gerada a partir da decodificação do genótipo • Exemplo: x = (0,375; 0,65625) Fundamentos Biologia × Algoritmos Genéticos • Adaptação ao ambiente • Função de avaliação da solução • Exemplo: f0110010101 = g(0,375; 0,65625) = 2,4764 Fundamentos Biologia × Algoritmos Genéticos • Adaptação ao ambiente • Função de avaliação da solução • Exemplo: f0110010101 = g(0,375; 0,65625) = 2,4764 • População • Conjunto de soluções • Exemplo: P = {0110010101, 1101010011, 0001000110, 1110110010} Fundamentos Biologia × Algoritmos Genéticos Biologia Cromossomo Gene Genótipo Produção de proteínas Fenótipo/indivíduo Adaptação ao ambiente População Algoritmos Genéticos Estrutura Componente da estrutura Codificação da solução Decodificação Solução Avaliação da solução Conjunto de soluções Fundamentos Seleção • Seleciona indivíduos de uma população • Corresponde à sobrevivência e à possibilidade de reprodução dos mais adaptados • Baseada na avaliação de cada indivíduo • Quanto maior a avaliação, maior a chance de ser selecionado • Um indivíduo pode ser selecionado mais de uma vez, bem como nenhuma vez Fundamentos Seleção • Método da Roleta • Simulação de sorteio usando roleta • Cada indivíduo corresponde a um trecho da roleta • Trecho da roleta proporcional à avaliação do indivíduo • Probabilidade de um indivíduo i ser selecionado: pi = fi n X fj j=1 • fi é a avaliação do indivíduo i • fi tem de ser não negativa para todo i Fundamentos Seleção gere aleatoriamente um número r no intervalo [0, 1) para i de 1 até n faça se r < pi então retorna indivíduo i senão r ← r − pi fim de se fim de para Fundamentos Recombinação • A partir de dois indivíduos • Gera indivíduos cujos cromossomos são combinações dos cromossomos dos indivíduos originais • Informações sobre as soluções são combinadas com o objetivo de gerar soluções melhores Fundamentos Recombinação • Troca de informações a partir de um ponto de corte • Exemplo: • De 0110010101 1101010011 com ponto de corte no oitavo bit, obtemos 0110010011 1101010101 Fundamentos Recombinação • Normalmente há uma probabilidade de aplicação de recombinação • Um par de indivíduos pode não ter a recombinação aplicada sobre ele • Valores comumente utilizados para a probabilidade de recombinação: entre 60% e 90% Fundamentos Mutação • Aplicado sobre um único indivíduo • Altera elementos do cromossomo do indivíduo • Auxilia na variabilidade genética, gerando soluções que poderiam não ser geradas através apenas de recombinação Fundamentos Mutação • Feita sobre cada posição do cromossomo • Inversão do bit que sofrer mutação • De 0110010101 para 0111000101 • Valores típicos da probabilidade de aplicação da mutação: por volta de 1% Fundamentos Algoritmo Genético Básico gere aleatoriamente a população inicial P (1) avalie cada indivíduo de P (1) t ←1 enquanto a condição de parada não estiver satisfeita faça P (t+1) ← ∅ enquanto |P (t+1) | < n faça selecione e faça cópias de 2 indivíduos de P (t) faça a recombinação dos 2 indivíduos com uma certa probabilidade faça mutação em cada posição dos 2 indivíduos com uma certa probabilidade insira os 2 indivíduos em P (t+1) fim de enquanto avalie cada indivíduo de P (t+1) t ←t +1 fim de enquanto Variações Operadores Genéticos • Seleção, recombinação e mutação podem ser vistos como operadores que agem sobre uma população, alterando seus indivíduos Variações Operadores Genéticos • Seleção, recombinação e mutação podem ser vistos como operadores que agem sobre uma população, alterando seus indivíduos • Seleção: gera uma nova população selecionando indivíduos da população atual • Recombinação: forma pares de indivíduos e recombina cada par • Mutação: para cada indivíduo, altera elementos de seu cromossomo Variações Elitismo e Criacionismo • Elitismo • Preserva os melhores indivíduos da geração durante a aplicação de um operador • Seleção: melhores indivíduos são copiados diretamente, sem sorteio • Recombinação e mutação: não são aplicadas sobre os melhores indivíduos • Criacionismo • Gerar novos indivíduos aleatoriamente Variações Algoritmo Genético Genérico gere a população inicial P (1) avalie cada indivíduo de P (1) t ←1 enquanto a condição de parada não estiver satisfeita faça P (t+1) ← P (t) para cada operador genético oper faça P (t+1) ← oper P (t+1) fim de para avalie cada indivíduo de P (t+1) t ←t +1 fim de enquanto Resolvendo Problemas com AGs • Problemas do algoritmo genético clássico Resolvendo Problemas com AGs • Problemas do algoritmo genético clássico • Codificação binária é simples, porém limitada Resolvendo Problemas com AGs • Problemas do algoritmo genético clássico • Codificação binária é simples, porém limitada • Recombinação clássica pode não ser suficiente para gerar bons indivíduos Resolvendo Problemas com AGs • Problemas do algoritmo genético clássico • Codificação binária é simples, porém limitada • Recombinação clássica pode não ser suficiente para gerar bons indivíduos • Mutação clássica apenas para variação de valores, subutilizada Resolvendo Problemas com AGs • Problemas do algoritmo genético clássico • Codificação binária é simples, porém limitada • Recombinação clássica pode não ser suficiente para gerar bons indivíduos • Mutação clássica apenas para variação de valores, subutilizada • Deve-se utilizar codificações e operadores próprios para cada problema Resolvendo Problemas com AGs • Problemas do algoritmo genético clássico • Codificação binária é simples, porém limitada • Recombinação clássica pode não ser suficiente para gerar bons indivíduos • Mutação clássica apenas para variação de valores, subutilizada • Deve-se utilizar codificações e operadores próprios para cada problema • Devemos levar o algoritmo genético ao problema, e não o contrário Resolvendo Problemas com AGs Exemplo • Função g(x1 , x2 ) Resolvendo Problemas com AGs Exemplo • Função g(x1 , x2 ) • Codificação por valor: cromossomo composto por 2 números de ponto flutuante, representando os valores reais de x1 e x2 Resolvendo Problemas com AGs Exemplo • Função g(x1 , x2 ) • Codificação por valor: cromossomo composto por 2 números de ponto flutuante, representando os valores reais de x1 e x2 • Recombinação aritmética: u0 = a × u + (1 − a) × v 0 = (1 − a) × u + a × v v Resolvendo Problemas com AGs Exemplo • Função g(x1 , x2 ) • Codificação por valor: cromossomo composto por 2 números de ponto flutuante, representando os valores reais de x1 e x2 • Recombinação aritmética: u0 = a × u + (1 − a) × v 0 = (1 − a) × u + a × v v • Mutação aritmética: ui0 = ui + rand([−b, +b])