FUNDAMENTOS DOS ALGORITMOS GENÉTICOS “Como a fábrica do mundo é a mais perfeita e foi estabelecida pelo mais sábio Criador

, nada acontece em nosso mundo sem que um problema de máximo ou de mínimo esteja envolvido”. Leonhard Euler (1707-1783) (Grande Matemático). Bibliografia: 1- Livro: Genetic Algorithms in Search, Optmization and Machine Learning Autor: David E. Goldberg 2- Artigo: Motivação, Fundamentos e Aplicações de Algoritmos Genéticos Autor: Julio Tanomaru. Ph.D., professor da Universidade de Tokushima – Japão. Anais do II Congresso Braileiro de Redes Neurais. 3- Artigo: Introdução aos Algoritmos Genéticos. Autores: E. G. M. Lacerda e A .C. P.L. F. de Carvalho. Anais do XIX Congresso Nacional da Sociedade Brasileira de Computação 0- Introdução Algoritmos Genéticos, AGs, são métodos de otimização e busca inspirados nos mecanismos de evolução de populações de seres vivos. Foram introduzidos por John Holland [Holland, 1975] e popularizados por um de seus alunos, David Goldberg [Goldberg, 1989]. Esses algoritmos seguem o princípio da seleção natural e sobrevivência do mais apto, declarado em 1859 pelo naturalista e fisiologista inglês Charles Darwin em seu livro A Origem das Espécies. De acordo com Charles Darwin, “Quanto melhor um indivíduo se adaptar ao seu ambiente, maior será sua chance de sobreviver e gerar descendente”. Otimização é a busca da melhor solução para um dado problema. Consiste em tentar várias soluções e utilizar a informação obtida neste processo de forma a encontrar soluções cada vez melhores. Um exemplo simples de otimização é a melhoria da imagem das televisões com antena acoplada no próprio aparelho. Através do ajuste manual da antena, várias soluções são testadas, guiadas pela qualidade de imagem obtida na TV, até a obtenção de uma resposta ótima, ou seja, uma boa imagem. As técnicas de busca e otimização geralmente apresentam: • • Um espaço de busca, onde estão todas as possíveis soluções do problema; Uma função objetivo (algumas vezes chamada função de aptidão na literatura de AG’s ou de adequabilidade no artigo de Tanomaru), que é utilizada para avaliar as soluções produzidas, associando a cada uma delas uma “nota”.

e não a partir de um ponto isolado. 3.Características Primárias De modo geral. e não requerem derivadas ou qualquer outro tipo de conhecimento. AGs usam transições probabilísticas. AGs têm as seguintes características: • • • • AGs operam numa população(conjuntos) de pontos. ∀ x ∈ S . Em AGs. AGs operam num espaço de soluções codificadas. na média. os indivíduos representem soluções cada vez melhores à medida que o processo evolutivo continua 2.Uma Definição Sem afirmar que esta é a melhor possível: Algoritmos Genéticos (AGs) são métodos computacionais de busca que imitam os mecanismos de evolução natural e da genética. de modo que há um tendência de que. e não no espaço de busca diretamente. AGs necessitam somente de informação sobre o valor de uma função objetivo para cada membro da população. uma população de possíveis soluções para o problema em questão evolui de acordo com operadores probabilísticos concebidos a partir de metáforas biológicas. o problema de otimização pode ser formulado assim: Maximizar f(x) | x ∈ S Em termos de um problema de busca. o mesmo problema pode ser escrito como: Encontrar x* | f(x*) ≥ f(x).1.Problema de Otimização (Em termo matemáticos) Dada uma função f : Rn → R e um espaço de busca S ⊆ Rn. e não regras determinísticas.

31]. No caso mais simples. corresponde a um locus gênico.}20 = x 5. mas no caso geral tanto o método de representação quanto o alfabeto genético dependem de cada problema.) pode ser estacionária ou nãoestacionária... e a cada iteração a população é modificada. ou seja..Fluxo Básico Tendo definido a representação cromossômica para o problema.11111].}21 + {. o qual corresponde ao conjunto [00000. Sabemos que o máximo dessa função encontra-se no valor x=31 da variável independente. A posição de um gene num cromossomo.Representação Cromossômica Vamos desenvolver as seções seguintes usando um exemplo como ilustração. cada elemento de A é equivalente a um alelo. Um conjunto de soluções codificadas de acordo com a representação selecionada corresponde a uma população de indivíduos.}23 + {.}24 + {.. uni. e o espaço de busca S pode ser contínuo ou discreto. um valor possível para um dado gene.A função f(..) pode ser derivável ou não. mas empregadas pelos teóricos e praticantes de AGs com freqüência. cada seqüência s corresponde a um cromossomo. côncavo ou convexo. AGs são algoritmos iterativos. O problema é chamado unimodal quando há somente um ponto de máximo x * no espaço de busca.ou multidimensional. Usando algumas metáforas extremamente simplistas.1}.. Como cada gene pode assumir qualquer valor do alfabeto A. ou seja: {. . variável com o tempo.31]. P(0). Além disso. O primeiro passo para aplicação de AGs a um problema qualquer é representar cada possível solução x no espaço de busca como uma seqüência de símbolos s gerados a partir de um alfabeto finito A. gera-se um conjunto de possíveis soluções. concluímos que cada cromossomo (seqüência) irá possuir cinco símbolos. a função f(. finito ou infinito.G. Mas vamos mostrar com este exemplo simples como funciona o A. ou seja. Voltamos ao exemplo: Usando o alfabeto binário para representar a variável x no intervalo [0.}22 + {. 4.. Claro que poderíamos simplesmente calcular a função em alguns pontos e por comparação chegarmos rapidamente a este valor... ou multimodal em caso contrário. Vamos explorar o seguinte problema: Maximizar a função f(x)=x2 no intervalo [0.. chamadas de soluções-candidatas. o índice dentro da seqüência. isto é. e cada elemento de s é equivalente a um gene.. usa-se o alfabeto binário A={0.

Os métodos tradicionais necessitam de muito mais informação. Por exemplo.Inicialização . Designando cada geração por um índice t o fluxo geral de um AG simples é dado abaixo: Nos métodos tradicionais o processo de otimização tem início em um determinado ponto. se possível. calculada analiticamente ou numericamente. 5. visto que estamos calculando paralelamente a função em vários pontos do seu domínio. calculamos novos pontos até. mas sim com uma população de pontos. Ele só analisa o valor da função e verifica se de fato ele fornece um melhor valor. A seguir apresentamos o fluxo básico de um AG simples com três operadores: seleção. para o algoritmo do gradiente ascendente.Cada iteração de AG é denominada uma geração. Algumas funções são multimodais e podem atingir falsos pontos ótimos. recombinação e mutação. A procura do ponto ótimo usando uma população de valores da variável independente é um processo muito mais eficiente. atingirmos o valor ótimo da função. a valores que não correspondem ao ótimo esperado. Ao contrário o AG é completamente cego em relação a esses detalhes funcionais do problema. O AG não. para podermos subir nos picos da função (Hill Climbing). que serão visto mais adiante. necessita-se do cálculo da derivada. ele não trabalha com pontos isolados. Esta propriedade do AG é que garante a sua generalidade e robustez. embora nem todos os indivíduos de uma população seja necessariamente “filhos” de indivíduos da população na iteração anterior. A partir dele aplicando um tipo de regra qualquer que nos indique que o valor da função cresce em uma determinada direção. ALGORITMO GENÉTICO begin t←0 inicializar P(t) avaliar P(t) while (not Condição-Terminal) do begin t←t+1 selecionar P(t) a partir de P(t-1) recombinar e mutar P(t) avaliar P(t) end end Observação: P(t) é uma população qualquer num tempo t. É claro que atingir um ponto no qual encontramos um falso ótimo é estatisticamente menos provável. Esse processo nos leva em muitas circunstâncias.

Nos casos mais simples usa-se justamente o valor da função que se quer maximizar. O operador que executa esta função é uma versão simplificada da teoria Darwiniana da sobrevivência das espécies mais aptas. Devemos definir uma operação que crie novos indivíduos a partir da população inicial. 2. Escolhemos um número qualquer de indivíduos na população. quanto maior o valor da função objetivo. Ao cair cara. por exemplo. Para criarmos esses 4 indivíduos podemos. por exemplo 4 (pequeno para AG). que deve ser um valor não negativo. as quais o DNA obedece cegamente são as seguintes: 1.Mutação. A reprodução é um processo pelo qual cada sequência reproduz-se igual a si mesma. criar uma nova população e esperar que ela seja mais evoluída. a qual queremos otimizar. A função objetivo dá.Na maior parte das aplicações. .Cruzamento de partes dos cromossomos em torno de pontos específicos do DNA. ou seja. já codificada. passando parte de seu material genético a gerações posteriores. porém obedecendo a certo critério. 6. maiores são as chances do indivíduo sobreviver no ambiente e reproduzir-se. 11000 . As regras fundamentais da evolução das espécies. ou seja. ou seja. alteração do tipo de um par de bases ao longo do DNA. 01000 . ou seja. ao cair coroa escolhemos o numeral 0.Reprodução de indivíduos. É importante que a população inicial cubra a maior parte possível do espaço de busca. para cada indivíduo. jogar uma moeda sobre a mesa. 10011 A partir dessa população inicial o Algoritmo Genético cria novos indivíduos. Assim procedendo. 3. podemos obter: 01101 . O critério para a reprodução tem que se basear no fato de que as espécies mais aptas ou evoluídas têm melhores chances de pertencerem à nova geração criada. possua indivíduos melhores que a anterior. executando esse procedimento cinco vezes para cada indivíduo. No exemplo que estamos examinando podemos criar uma população inicial da variável x. numa posição aleatória. obedecendo à função objetivo. escrevemos o numeral 1.Avaliação e fitness (aptidão) AGs necessitam da informação do valor de uma função objetivo para cada membro da população. uma medida de quão bem adaptado ao ambiente ele está. Para um AG estas regras tem o mesmo sentido porém elas devem ser criadas para cada caso. a população inicial de N indivíduos é gerada aleatoriamente ou através de algum processo heurístico.

Número Sequência .) é a função de aptidão.A avaliação de cada indivíduo resulta num valor que. ou seja. giramos a roleta e obtemos um candidato. Na falta de tradução melhor.4 2 11000 576 49. decide-se se ele deve morrer ou sobreviver e produzir descendentes. Para selecionar candidatos para a nova população.9 Total ###### 1170 100 Tabela 1 O método de seleção mais conhecido é o chamado método da roleta em que se imagina uma roleta fictícia num cassino onde. 7.5 4 10011 361 30. com base na aptidão de cada indivíduo relativamente à população. emprega-se o termo aptidão (ou adequabilidade que foi usado por Tanomaru). A figura abaixo mostra a roleta para o problema que estamos resolvendo. é denominado “fitness”. Em geral gera-se uma população temporária de N indivíduos extraídos com probabilidade proporcional à aptidão relativa de cada indivíduo na população. A tabela 1 abaixo mostra os valores da função objetivo (que é a função de aptidão) e da p seleção para o exemplo em estudo: Função objetivo Probab. de f(x) Seleção(%) 1 01101 169 14. em inglês. Uma característica fundamental da roleta é que cada cavidade (casa) corresponde a um indivíduo.Seleção O mecanismo de seleção em AGs emula os processos de reprodução assexuada e seleção natural. a probabilidade de seleção de um cromossomo s é dada por p seleção = a( s) ∑ a( s ) i =1 i N onde a (.2 3 01000 64 5. de modo que indivíduos de maior aptidão têm maior probabilidade de serem selecionados. sendo a área da cavidade proporcional à aptidão.

236 1 2 0 1 O processo de seleção resulta numa população temporária de N indivíduos (no exemplo N=4). inivação e melhoria na evolução de uma população. Número 1 2 3 4 Total Sequência 01101 11000 01000 10011 ###### Probab. 8.Pode-se estimar o número de cópias de um dado indivíduo.2 5. Na figura abaixo mostramos para um cromossomo simplificado como é realizada esta troca.Recombinação Terminado o processo de seleção. multiplicandose a sua probabilidade pelo tamanho da população. No processo biológico esses novos cromossomos serão testados. nobtido é o número de cópias obtidas através do método da roleta. de Seleção(%) 14. farão parte de uma nova espécie.9 100 Tabela 2 n esperado n obtido 0. n esperado . envolve mais de um indivíduo que emula o fenômeno do “crossover”.22 1.576 1.4 49. ou seja. Como é selecionada a posição a partir da qual se . A parte final da cadeia 2 compondo com a inicial da 1 fornece um novo indivíduo com um novo código. certos cromossomos são extraídos aos pares da população resultante para recombinação. Se sobreviverem.5 30.A tabela 2 abaixo mostra esses valores e o número de cópias realmente obtidos através do método da roleta. a troca de fragmentos entre pares de cromossomos. O “cross-over” desempenha um papel fundamental no processo de multiplicação.968 0. O processo de recombinação é um processo sexuado. na qual será aplicado os operadores de recombinação e mutação.

efetuará a troca? No processo biológico ainda não sabemos como esse ponto é determinado. Contudo. o ponto de corte. A recombinação acontece em dois passos: (1) Os cromossomos da população são pareados aleatoriamente. escolhe-se um ponto de corte aleatoriamente. Então trocamos os elementos entre k + 1 e L. ainda que os processos aleatórios ajudem a causar estas circunstâncias felizes. onde L é o número de elementos (comprimento) da seqüência. x 12 25 27 16 f(x) 144 625 729 256 . Seja k o número sorteado. Neste caso não houve mutação! População depois Pares Ponto da seleção selecionados de aleatoriamente corte 0 1 1 0|1 2 4 1 1 0 0|0 1 1|0 0 0 1 0|0 1 1 1 4 3 4 2 2 Nova população 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 0 0 0 0 Tabela 3 Observando a tabela 1 e tabela 3 observe que aptidão máxima aumentou de 576 para 729. e efetua-se a troca dos seguimentos correspondentes. começamos a ver que esta melhora não ocorre por sorte. (1 0 0 1 1) e é recombinada na posição 2 (novamente aleatóriamente). a nova população. O ponto de cruzamento é escolhido aleatoriamente entre 1 e L-1. no sentido de maior aptidão. A1 = 01101 e A2 = 11000 para executarem o “crossover”. No exemplo L = 5. uma das “strings” resultantes (1 1 0 0 0) prova ser uma escolha muito melhor. o valor de x e o valor de f(x). No exemplo em estudo suponhamos que foi selecionado aleatoriamente o par de seqüências. Quando esta combina aleatoriamente com a próxima “string” melhor. A melhor “string” da primeira geração (1 1 0 0 0) recebe duas cópias (pela roleta) por causa da performance acima da média. Se k = 4 temos: A1 = 0 1 1 0 || 1 A2 = 1 1 0 0 || 0 ⇒ ⇒ 0 1 1 0 0 = A1’ 1 1 0 0 1 = A2’ A tabela 3 abaixo mostra a população depois do processo de seleção (mostrando o ponto de cruzamento). Em caso afirmativo. (2) Usando a probabilidade de recombinção precombinação decide-se se cada par deve ou não sofrer recombinação. os pares selecionados aleatoriamente.

ou seja.Aspectos relacionados à implementação Algoritmos Genéticos processam populações de “strings”. não se pode afirmar com certeza se um dado ponto ótimo corresponde a um ótimo global. normalmente usa-se o critério do número máximo de gerações ou um tempo limite de processamento para parar um AG. para o processo de recombinação.9. na maioria dos casos de interesse. rnd : retorna um valor inteiro entre um limite inferior e um limite superior Abaixo damos alguns trechos de programa em PASCAL mas que podem ser facilmente adaptados para a linguagem C: flip: function flip(probability:real):boolean. quando não se observa melhoria da população depois de várias gerações consecutivas. Os três operadores seleção( ou reprodução).Mutação O processo de mutação em AG é equivalente à busca aleatória.Condições de Término Como estamos tratando de problemas de otimização. No caso de funções multimodais. o ideal seria que o algoritmo terminasse assim que o ponto ótimo fosse encontrado. Como conseqüência. Basicamente seleciona-se uma posição num cromossomo e muda-se o valor do gene correspondente aleatoriamente para um outro alelo possível. 11. um ponto ótimo pode ser o suficiente. Um problema prático é que. 10. O processo é geralmente controlado por um parâmetro fixo pmutação que indica a probabilidade de um gene sofre mutação. Assim. 2 strings pais parent1 e parent2 geram duas strings filhas child1 e child2. recombinação( ou crossover) e mutação necessitam de três rotinas de escolha aleatória: random : retorna um número real aleatório entre 0 e 1 flip : retorna um valor verdadeiro booleano com uma probabilidade especificada. Outro critério plaulsível é parar o AG usando a idéia de estagnação. . mas pode haver situações onde todos ou o maior número possível de pontos ótimos sejam desejáveis.

begin if low >= high then i := low else begin i := trunc(random * (high – low +1) + low). if i > high then i := high.begin if probability = 1 then flip := true else flip := (random <= probability). end. rnd := i. end . high:integer):integer. end rnd function rnd(low. var i:integer.

Sign up to vote on this title
UsefulNot useful