• Nenhum resultado encontrado

Métodos Heurísticos

3.4 Metaheurísticas 29 3.3.1Método de Descida3.3.1Método de Descida

3.4.2 Algoritmos evolutivos

A computação evolutiva surgiu nos ano 50, e tem, como idéia básica, a aplicação do processo de evolução natural como um modelo de solução de problemas, a partir de sua implementação em computador.

Segundo Von-Zuben (2000), a principal vantagem da computação evolutiva está na possibilidade de resolver problemas pela simples descrição matemática do que se espera de uma solução, não havendo necessidade de se indicar explicitamente os passos até o resultado, que certamente seriam específicos para cada caso. É lógico que os algoritmos evolutivos correspondem a uma seqüência de passos até a solução,

3.4 Algoritmos evolutivos 33 procedimento Multi-Start (·)

1 f

← ∞; 2 iter ←0;

3 enquanto (iter < MSmax) faça 4 s← ConstroiSolução(); 5 s ←BuscaLocal(s); 6 Se (f(s )< f) faça 7 s ←s; 8 f ←f(s); 9 fim-se; 10 iter ←iter+ 1; 11 fim-enquanto; 12 Retorne s; fim Multi-Start();

Figura 3.6: pseudocódigo do Método Multi-Start.

mas estes passos são os mesmos para uma ampla gama de problemas, fornecendo robustez e flexibilidade.

Apesar de não garantir a otimalidade da solução, essas técnicas são capazes de solucionar problemas intratáveis por outros métodos. Uma descrição das pesquisas em computação evolutiva pode ser encontrada em Bäck et al. (2000a) e Bäck et al. (2000b).

Os métodos evolutivos operam sobre uma população de candidatos em paralelo. Assim, eles podem fazer a busca em diferentes áreas do espaço de solução, através da colocação de um número de pontos adequado para a busca em várias regiões.

Um dos primeiros algoritmos evolutivos desenvolvidos foram os Algoritmos Ge-néticos (AG), propostos inicialmente por Holland (1975) e popularizados por um dos seus alunos, David Goldberg (Goldberg, 1989). Os AG se mostraram bastante eficientes para encontrar soluções ótimas ou aproximadamente ótimas.

O método se baseia nos conceitos da evolução genética, segundo a qual quanto melhor um indivíduo se adaptar ao seu meio, maior será sua chance de sobreviver e gerar descendentes. É um processo composto por diversos passos, que podem apresentar grandes variações. Daí a razão pela qual estes algoritmos são chamados de “um Algoritmo Genético”, em vez de “o Algoritmo Genético”. Os detalhes deste método são apresentados a seguir.

3.4.2.1 Algoritmos Genéticos

Algoritmos Genéticos (AG) são algoritmos de otimização baseados nos princípios da seleção natural e da genética. Segundo a teoria da seleção natural, dada uma população, os indivíduos com características genéticas mais favoráveis têm maiores chances de sobreviver e gerar descendentes cada vez mais aptos, enquanto indivíduos menos aptos tendem a serem extintos.

3.4 Algoritmos evolutivos 34 Os AG utilizam uma estratégia de busca paralela e aleatória, com a busca voltada para pontos de alta aptidão (pontos nos quais a função a ser minimizada (maximi-zada) assumem valores relativamente baixos (altos)).

Apesar de serem compostos por procedimentos aleatórios, os AG não são um mecanismo de busca aleatório não-direcionado, pois exploram informações históricas para encontrar novos e promissores pontos no espaço de busca. O processo de busca é iterativo, no qual cada iteração é chamada de geração.

Nos AG, cada indivíduo da população representa uma solução do problema. Em cada geração, os mecanismos de seleção e reprodução são aplicados a uma população de candidatos (que varia com a complexidade do problema).

Através da seleção, determinam-se quais indivíduos conseguirão se reproduzir, gerando um determinado número de descendentes para a próxima geração. A pro-babilidade de um indivíduo ser selecionado é proporcional ao seu nível de aptidão. A Fig. 3.7 mostra o pseudocódigo de um AG simples.

procedimento Algoritmo Genético 1 t ←0;

2 Gerar a população inicialP(t); 3 Avaliar P(t);

4 enquanto(os critérios de parada não estiverem satisfeitos) faça

5 t←t+ 1;

6 Gerar P(t)a partir de P(t−1); 7 AvaliarP(t);

8 Definira população sobrevivente; 9 fim-enquanto;

fim AlgoritmoGenetico;

Figura 3.7: pseudocódigo de um AG simples. A seguir são apresentados os principais elementos de um AG. Representação da solução

Para que possam ser aplicados os operadores genéticos, é necessário que os indivíduos estejam codificados em cromossomos. Cada cromossomo representa uma variável do problema. No caso de apenas uma variável, o indivíduo e o cromossomo têm o mesmo significado.

A codificação mais usada é a binária, em função da facilidade de implementação do algoritmo. Nela, os indivíduos são representados por vetores binários, nos quais cada elemento denota a presença (1) ou ausência (0) de uma determinada caracte-rística. Entretanto, se for necessário trabalhar com maior precisão em problemas com parâmetros contínuos, provavelmente serão utilizados longos cromossomos para representar as soluções, necessitando de uma grande quantidade de memória. Além disso, não existe uniformidade nos operadores. Por exemplo, mutação nos primeiros bits do gene afeta mais a aptidão que mutação nos últimos bits do gene.

3.4 Algoritmos evolutivos 35 Outra codificação bastante difundida é a representação do cromossomo usando valores reais. Essa representação apresenta a vantagem de ser naturalmente com-preendida pelo ser humano e requer menos memória que aquela usando uma cadeia de bits (Michalewicz, 1992). Outra vantagem da representação real é a possibilidade de criar novos operadores e variações dos operadores existentes.

Função de aptidão

A avaliação dos indivíduos é feita através de uma função que representa o problema e tem, por objetivo, fornecer uma medida de aptidão de cada indivíduo na popu-lação corrente. Nem sempre a função de aptidão corresponde à função objetivo do problema (função a ser otimizada).

A função objetivo e a função de aptidão não são as mesmas, por exemplo, quando o objetivo do problema é a minimização da uma função. Isso porque os AG são de-finidos para problemas de maximização, ou seja, buscam indivíduos com as maiores aptidões. Nesse caso, por exemplo, pode-se tomar a função de aptidão como o in-verso da função objetivo. Assim, quanto menor o valor da função objetivo, maior o valor da função de aptidão. Essa conversão, no entanto, pode, em alguns casos, fazer com que a função de aptidão assuma valores muitos próximos (tornando a seleção aleatória). É o que ocorre no exemplo a seguir, no qual são dados os valores da função objetivos de dois indivíduos de um problema de minimização:

fobjetivo(s1) = 500

fobjetivo(s2) = 600

Invertendo-se o valor da função objetivo, obtém-se os seguintes valores para a função de aptidão:

faptidão(s1) = 0,0020

faptidão(s2) = 0,0017

Como pode ser visto, soluções com uma diferença importante na função objetivo tornam-se soluções muito próximas se for feita apenas a inversão dos valores. Uma alternativa para se obter a função de aptidão sem tais distorções é a utilização de um método de escalamento linear. Neste método, a aptidão do indivíduo é obtida através de uma equação linear. Este método, utilizado neste trabalho, é descrito no Capítulo 4.

Seleção dos indivíduos

A seleção corresponde à seleção natural que ocorre entre os seres vivos, que escolhe os indivíduos mais aptos para sobreviver e gerar descendentes. No caso do AG, são selecionados os indivíduos com maior valor na função de aptidão para gerar filhos através dos operadores de recombinação e mutação.

Existem diversos métodos de seleção, mas em todos eles os melhores indivíduos terão uma probabilidade maior de sobrevivência e reprodução.

Na estrutura do AG, proposto por Holland, a população se mantém fixa durante todas as gerações. Por isso, a cada geração devem ser selecionados quais indivíduos irão se reproduzir e quais vão desaparecer da população. Após a seleção, seguida

3.4 Algoritmos evolutivos 36 pela reprodução, todos os indivíduos estão sujeitos aos operadores de recombinação e mutação.

O método apresentado por Holland (1975) para seleção é conhecido como método da roleta. Neste método, cada indivíduo tem uma probabilidade (aptidão relativa) de ser escolhido de acordo com a sua aptidão fapt.

A Tabela 3.1 ilustra um exemplo da aplicação deste método de seleção. O pro-cesso se inicia com a soma de todas as funções de aptidão dos indivíduos da popula-ção corrente. Em seguida, calcula-se a porcentagem de cada indivíduo com relapopula-ção a essa soma. Após esse cálculo, é feita uma lista com as porcentagens acumuladas.

O próximo passo é o sorteio de um número aleatório r (retirado de uma distri-buição uniforme) no intervalo [0, soma], conforme mostra a Tabela 3.2. Por fim, o indivíduo selecionado é o primeiro que possuir uma aptidão acumulada maior que

r. O processo é repetido até que toda a população seja preenchida. A Fig. 3.8 apresenta o processo.

Tabela 3.1: Método da Roleta: análise de aptidão.

Indivíduo i 1 2 3 4 5 6 7 8 9 10

Aptidão fapt(i) 8 2 17 7 2 12 11 7 3 7

Apt. Relativa % 10,5 2,6 22,4 9,2 2,6 15,8 14,5 9,2 3,9 9,2 Apt. Rel. Acumulada % 10,5 13,1 35,5 44,7 47,3 63,1 77,6 86,8 90,7 99,9

Tabela 3.2: Método da Roleta: seleção. no aleatório r 23 49 76 30 1 38 57 Indivíduo selecionado 3 7 10 4 1 6 7 4 9 2 7 1 3 10 6 5 8

Figura 3.8: Representação da Roleta - Seleção do primeiro indivíduo.

Como se pode observar, no método da roleta, apesar dos indivíduos mais aptos possuírem maior probabilidade de sobreviverem, todos indivíduos, inclusive os menos aptos, têm chances de sobrevivência.

3.4 Algoritmos evolutivos 37 A cada dois indivíduos escolhidos desta maneira são gerados dois novos indiví-duos (idênticos aos selecionados). O processo de seleção termina quando é selecio-nado um número de indivíduos igual ao tamanho da população anterior. Quando isso ocorre, a população antiga é substituída por essa nova população.

Reprodução

Os operadores genéticos de recombinação e mutação são utilizados para garantir que a próxima geração se renove, mas que mantenha, de certa forma, as características adquiridas pelas gerações anteriores. Estes operadores são os principais mecanismos de busca dos AG para explorar regiões desconhecidas do espaço de soluções.

Recombinação O operador de recombinação é aplicado a um par de indivíduos retirados da população selecionada pela roleta (população intermediária), gerando dois indivíduos filhos.

Um exemplo simples de recombinação, para um AG com representação binária, é a recombinação de um ponto. Nele, cada um dos cromossomos pais tem sua cadeia de bits cortada em uma posição aleatória, produzindo duas partes. Essas partes são trocadas, gerando dois novos cromossomos.

Quando se utiliza a representação real, é possível a utilização de diversos ope-radores de recombinação. Neste trabalho, as soluções para os dois problemas de corte originam indivíduos representados por número inteiros. Por isso, no algoritmo desenvolvido para a solução do PCDA, foi utilizado um operador conhecido como Order recombinação- OX, específico para o tipo de representação (descrito no Capí-tulo 4). No algoritmo evolutivo para o PCEB, utilizou-se o recombinação uniforme, descrito no Capítulo 5.

O operador de recombinação é aplicado com uma dada probabilidade a cada par de cromossomos selecionados, sendo que, na prática, essa probabilidade varia entre 60% e 90% (como na natureza, nem todos os casais têm filhos). Caso não ocorra a recombinação, os filhos serão iguais aos pais, permitindo, assim, que algumas soluções sejam preservadas.

Mutação Após a recombinação, o operador de mutação é aplicado, com dada probabilidade, em cada elemento dos dois filhos. Quando se usa o código binário, a mutação consiste em simplesmente inverter os valores de bits, ou seja, mudar o valor de um dado bit de 1 para 0 ou de 0 para 1.

A mutação tem o objetivo de introduzir e manter a diversidade dos indivíduos na população. Por outro lado, pode destruir informações contidas nos indivíduos. Por isto, a probabilidade de mutação deve ser pequena (geralmente entre 0,1% a 5%), mas suficiente para assegurar a diversidade.

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. Esta operação é conhecida como elitismo.

3.5 Otimização Combinatória Multiobjetivo 38 Critério de Convergência

Como os algoritmos estocásticos não são capazes de indicar se foi encontrado o ótimo global, é necessário determinar critérios de convergência para que se limite o tempo de execução do algoritmo.

O critério utilizado neste trabalho é encerrar o algoritmo após um número má-ximo de gerações. Assim, quando o AG alcança uma determinada geração, é fina-lizado, e a solução é o melhor indivíduo obtido até então. Para obter o número máximo de gerações, geralmente são realizadas análises de convergência para várias simulações.

Documentos relacionados