• Nenhum resultado encontrado

3. META-HEURÍSTICAS E O PROBLEMA DE SINTONIZAÇÃO DE

3.2 META-HEURÍSTICAS

3.2.3 Algoritmo Genético

O Algoritmo Genético (em Inglês, Genetic Algorithm - GA) é um algoritmo de otimização numérica inspirado no processo de seleção natural e na genética (COLEY, 1999). Esses algoritmos são de base populacional e caracterizam um modelo computacional do processo evolutivo (BLUM e ROLI, 2003; TALBI, 2009).

Os GA operam sobre uma população (conjunto de soluções de um problema) e fornecem uma maneira intuitiva para explorar o espaço de soluções (MITCHELL, 1998). Originalmente, o GA proposto em Holland (1975) foi inspirado no princípio de sobrevivência enunciado a partir da teoria da evolução das espécies de Darwin de 1858.

Um típico GA utiliza um conjunto de operadores para (i) selecionar indivíduos de uma população, com base em sua aptidão, (ii) recombinar e (iii) modificar esses indivíduos selecionados, para produzir novas gerações com indivíduos mais adaptados. Sucintamente, a ideia dos operadores é transformar uma população através de gerações sucessivas, mantendo as características de adaptação das gerações ascendentes.

Figura 11 - Pseudocódigo da meta-heurística GA.

Entrada: µ, N, pc, pm // Tamanho da população, número de gerações e taxas de cruzamento e mutação

Saída : P*

// Melhor solução encontrada 1. P ← {}; // População inicial 2. P*

← ();

3. Para µ vezes Faça

4. P ← P ∪ {novo indivíduo escolhido ao acaso}; 5. Fim Para;

6. g ← 0;

7. Para g < N Faça 8. Para p' ∈ P Faça

9. // Testar a aptidão de cada indivíduo (p')

10. Se aptidão(p') > aptidão(P*) Então 11. P* ← p'; // atualizar melhor solução 12. Fim Se;

13. Fim Para;

14. // Criar uma nova população de descendentes 15. Q ← {};

16. Para µ/2 vezes Faça

17. // Aplicar operadores (seleção, cruzamento e mutação) 18. P' ← selecionar(P); 19. P'' ← selecionar(P); 20. (C', C'') ← cruzamento(P', P'', pc); 21. (M', M'') ← mutação(C', C'', pm); 22. Q ← Q ∪ {M', M''}; 23. Fim Para; 24. P ← Q; // Nova geração 25. g ← g + 1; 26. Fim Para; 27. Retornar P* ;

Em um GA, cada iteração corresponde a uma nova geração. Seu princípio básico de funcionamento consiste em aplicar operadores (seleção, cruzamento e mutação) nos indivíduos da população a cada geração. O processo é interrompido quando satisfaz alguma condição de parada (GLOVER et al., 2003). A estrutura geral de um GA é ilustrada no pseudocódigo da Figura 11. Inicialmente, uma população de indivíduos é criada ao acaso.

Durante o processo evolutivo, a aptidão de cada indivíduo da população é avaliada quanto a sua capacidade de se adaptar ao (meio-)ambiente. Alguns membros da população são mantidos pelo operador de seleção, mas suas características devem variar a partir de cruzamentos e mutações a fim de gerar novos indivíduos para as gerações descendentes. Tipicamente, o processo de reprodução é repetido até que o número máximo de gerações seja excedido.

No GA, uma população é uma coleção de soluções candidatas arbitrariamente distribuídas no espaço de soluções. Ao longo das gerações, novos membros são incluídos na população, enquanto outros são excluídos. Os membros da população são indivíduos que, no GA, representam uma solução única. Os indivíduos são codificados na forma de cromossomos, em que a posição de um gene é denominada locus e seu valor é chamado de alelo. A Figura 12 apresenta uma representação ilustrativa dos indivíduos de uma população, em que cada linha da matriz corresponde a um cromossomo e cada coluna é um gene. A aptidão de um indivíduo é medida em termos de quanto uma solução é boa em relação à população. Quanto melhor uma solução, maior sua aptidão (THEDE, 2004).

Figura 12 - Representação da população no GA.

C ro m o s s o m o s 1 2 3 4 5 6 7 8 9 10 a 1 0 1 1 0 1 1 0 1 1 b 1 0 1 0 1 1 0 1 0 1 c 0 1 1 1 0 1 0 1 1 1 d 0 1 0 0 1 0 1 0 1 0 e 0 1 1 1 1 0 1 0 0 0 f 0 0 1 0 0 1 0 1 1 0 g 1 0 1 1 1 0 1 0 1 1 h 1 0 0 1 1 1 0 1 0 1 i 0 0 1 1 0 0 1 0 1 0 j 0 0 1 1 0 1 0 1 1 1 Fonte: (MITCHELL, 1998), adaptado pelo autor.

A escolha dos indivíduos para compor as próximas gerações é realizada pelo operador de seleção. Geralmente, o processo de seleção aplica estratégias intuitivas semelhantes à seleção natural. Uma estratégia denominada roleta, consiste em selecionar n indivíduos de uma lista com m progenitores. Os progenitores são selecionados proporcionalmente à sua aptidão, de modo que indivíduos com maior aptidão podem ser selecionados mais vezes. Por

outro lado, na estratégia elitista, n indivíduos com maior aptidão prevalecem sobre os menos adaptados para compor as próximas gerações. Na seleção por torneio, um subconjunto de indivíduos formados por k de uma população de tamanho n é sorteado ao acaso. Os indivíduos com maior aptidão são selecionados para decidir quais irão se reproduzir. Por exemplo, quando k = 2, dois indivíduos competem entre si e o melhor, aquele com maior aptidão, torna-se um dos pais. A torna-seleção por torneio permite a escolha de indivíduos menos tendenciosos, uma vez que não considera a classificação do indivíduo na população (EIBEN e SMITH, 2003).

O operador de recombinação gênica ou cruzamento é responsável pela a troca genética entre dois indivíduos de maneira semelhante ao que ocorre com organismos naturais. O processo de cruzamento consiste em escolher pares de indivíduos selecionados pelo processo de seleção e trocar arbitrariamente as características (alelos) entre eles para obtenção de novos indivíduos descendentes (Figura 13). Por exemplo, um processo denominado corte em 1-ponto seleciona ao acaso um 1-ponto de corte nos pares de cromossomos, dividindo-os em duas partições, uma à direita e outra à esquerda do corte. Os indivíduos descendentes são formados pela junção da partição à esquerda (direita) de um progenitor com a partição à direita (esquerda) do outro progenitor. Outras estratégias clássicas de fácil implementação computacional são:

Cruzamento com corte em n-pontos; e • Cruzamento com corte uniforme.

Figura 13 - Processo de cruzamento com corte em 1-ponto. (a) Progenitores. 1 2 3 4 5 6 7 8 9 10 a 0 0 0 1 0 1 1 0 1 1 b 1 1 1 0 1 1 0 1 0 1 (b) Descendentes. 1 2 3 4 5 6 7 8 9 10 a 0 0 0 0 1 1 0 1 0 1 b 1 1 1 1 0 1 1 0 1 1 Fonte: (MITCHELL, 1998), adaptado pelo autor.

O processo de cruzamento com corte em n-pontos (n > 1) consiste em dividir os pares de cromossomos em n partições. Os indivíduos descendentes são formados pela junção das partições de um progenitor com as partições do outro progenitor. Já no cruzamento uniforme, cada gene é associado aos valores da distribuição uniforme. Os genes do primeiro indivíduo com valores α < 0,5, por exemplo, são oriundos de um progenitor. Caso contrário, se α ≥ 0,5, do outro progenitor. O segundo indivíduo é gerado pelo mapeamento inverso.

Além dos processos apresentados anteriormente, existem também cruzamentos com o uso de múltiplos progenitores, baseadas na sequência dos alelos ou em operações numéricas sobre os alelos (EIBEN E SMITH, 2003).

No mundo real, vários processos podem causar modificações gênicas, sendo o mais simples conhecido como erro de replicação (COLEY, 1999). Nos GA, o operador de modificação gênica ou mutação tem a finalidade de promover a variabilidade ou alterações de estruturas nos indivíduos de uma população. A partir da mutação, os indivíduos descendentes herdam algumas características de seus progenitores, embora não sejam idênticos (Figura 14). O objetivo das mutações é simular o processo de evolução e procurar obter um aumento da aptidão em novas gerações. Deste modo, alguns indivíduos de uma população podem ser transformados para compor uma geração descendente

Figura 14 - Processo de mutação. (a) Progenitor. 1 2 3 4 5 6 7 8 9 10 a 0 0 0 1 0 1 1 0 1 1 (b) Descendente. 1 2 3 4 5 6 7 8 9 10 a 0 1 0 0 1 1 0 1 0 1

Fonte: (MITCHELL, 1998), adaptado pelo autor.

O desempenho do GA é fortemente influenciado por um conjunto de parâmetros. Tipicamente, o número de gerações, bem como, as taxas de cruzamento e mutação influenciam o algoritmo. Em geral, os indivíduos são recombinados a uma taxa entre 0,4 e 0,9. Por exemplo, se a taxa for fixada em 0,5, então metade da população será formada a partir da seleção e cruzamento. Sem cruzamento, a aptidão média da população deve aumentar até se igualar com a taxa de aptidão do melhor indivíduo. A partir desse ponto, só poderá haver melhoria por meio de mutação. A taxa de mutação é da ordem de 0,001.

Entretanto, esse valor pode variar de acordo com o problema sob análise. Uma maneira de defini-la é usar 1/L ou 1/(LN1/2), em que L é o comprimento de um indivíduo e N o tamanho da população (COLEY, 1999).