3.4 Um algoritmo evolutivo para a busca de sítio
3.4.3 Desenho do AE para o problema de busca de sítio
Na implementação do AE de Xiao (2006), cada solução individual é representada por uma cadeia de números inteiros que identificam os vértices de um sítio válido. A informação dos arcos do grafo G de entrada é armazenada em uma lista que é usada pelo operador evolutivo para manter a contiguidade de cada solução individual (no caso do AE proposto essa informação não é armazenada, pois pode ser facilmente obtida através da informação dos vértices da solução e da estrutura da grade regular do problema de busca de sítio proposto no presente trabalho).
109
Uma operação de inicialização (denominada INIT-SITE) é desenhada para gerar uma variedade de sítios com uma forma relativamente regular ou compacta (Figura 24).
INIT-SITE chama um processo de crescimento de sítios (denominado ACCRETE-SITE) que começa a partir de um vértice semente e continua a construir um sítio parcial contíguo até que o tamanho desejado seja alcançado (Figura 24). No procedimento ACCRETE-SITE, um conjunto é mantido para guardar os vértices que podem ser adicionados à solução parcial sem violar a restrição de contiguidade. O passo 4 em ACCRETE-SITE seleciona todos os vértices adjacentes aos vértices do sítio parcial. A Figura 25 ilustra o processo de crescimento de sítio a partir de uma célula semente realizado pelo algoritmo ACCRETE-SITE.
Procedimento ACCRETE-SITE(V, E, p, v) 1
2 ; ; 3 Enquanto faça
4 5 Se então
6 Adiciona todos os vértices em para
7 Senão
8 Aleatoriamente adiciona vértices em para
9
10 11 Retorna
Procedimento INIT-SITE(V, E, p)
1 Seleciona aleatoriamente um vértice semente de 2 Retorna ACCRETE-SITE(V, E, p, v)
Figura 24 - Inicialização usando um procedimento de crescimento de sítios (XIAO, 2006).
110
Figura 25 – Processo de crescimento de sítio a partir de uma célula semente usado pelo algoritmo ACCRETE-SITE, onde a célula semente é indicada em azul escuro. As células em azul mais claro
indicam o processo de crescimento do sítio a partir da célula semente.
Xiao (2006) apresenta um operador específico de busca local para cumprir o papel explotatório da operação de recombinação em AEs com o argumento de que em problemas de busca de sítio pode ser difícil recombinar duas soluções pais em um novo sítio, pois nem sempre os sítios pais possuem algum vértice em comum, especialmente quando o tamanho da solução é muito menor que o número de vértices do grafo . Xiao (2006) cita que em Xiao et al. (2002) um operador de recombinação específico foi desenvolvido para transferir uma solução pai para a localização da outra. Entretanto, essa operação é limitada a grafos regulares (por exemplo, um modelo raster) não sendo adequada para grafos em geral. Esse operador poderia ser facilmente implementado no AE proposto no presente trabalho que é baseado em um modelo raster.
O algoritmo de busca local é projetado com base no conceito de vizinhança de uma solução , que é definida como um conjunto de soluções que são consideradas próximas de usando várias métricas, como a distância Euclideana ou distância de Manhattan (XIAO, 2006). O algoritmo de busca local (denominado LOCAL-SITE) proposto por Xiao (2006) ajusta a solução atual para um novo local que pode possuir um melhor valor da função objetivo (Figura 26). Os ajustes são repetidos nlocal vezes e desse modo à contiguidade do sítio é mantida durante a operação. Esse algoritmo é controlado por uma probabilidade plocal que normalmente recebe um valor alto (por exemplo, 0,9).
Durante cada iteração do algoritmo LOCAL-SITE, duas funções são executadas sequencialmente. A primeira função (FIND-MOVEABLE-RAND) retorna um vértice movível que pode ser removido sem criar um sítio parcial fragmentado (não contíguo) (por
111
exemplo, o vértice 7 na Figura 22); a segunda função (FIND-ELIGIBLE-GREEDY) retorna um vértice elegível que pode se adicionado em um sítio parcial sem resultar em sítio fragmentado (por exemplo, na Figura 22 se o vértice 7 é removido, os vértices 2, 5, 11, 13 e 14 são elegíveis). A função FIND-MOVEABLE-RAND seleciona aleatoriamente dois vértices da solução atual . Se o vértice de maior custo é movível, então ele será retornado, caso contrário o processo é repetido vezes até que um vértice movível seja encontrado. Se nenhum vértice movível for encontrado em iterações, a solução atual não será alterada.
Xiao (2006) sugere que a definição do parâmetro igual a é suficiente para que esse procedimento retorne um vértice movível na maioria dos casos na prática. A função FIND-ELIGIBLE-GREEDY encontra todos os vértices e retorna aquele com o menor valor de custo que é então adicionado a solução. A Figura 27 ilustra o funcionamento do algoritmo LOCAL-SITE. 1 Encontra todos os vértices elegíveis
2 Retorna o vértice elegível que possui o menor valor de custo Procedimento LOCAL-SITE(V’,plocal,nlocal)
1 Gera um número aleatório uniformemente distribuído entre 0 e 1 2 Se o número aleatório é maior do que plocal, então
3 Retorna
4 Repete nlocal vezes
5 Encontra um vértice móvel usando FIND-MOVEABLE-RAND 6 Se então mantém e vá para o passo 4
7 Senão
8 Remove de
9 Encontra um vértice elegível usando FIND-ELIGIBLE-GREEDY
10 Adiciona a
11 Retorna
Figura 26 - Algoritmo de busca local (XIAO, 2006).
112
1) Solução original 2) Seleciona um vértice movível aleatoriamente
3) Encontra Vértice elegíveis
4) Seleciona o Vértice elegível de menor custo
Figura 27 - Exemplo da execução do algoritmo LOCAL-SITE. Em (1) as células em azul compõe a solução, em (2) as células movíveis são marcadas em verde, (3) apresenta a célula movível selecionada aletoriamente está em azul escuro e as células elegíveis para fazer parte da solução estão em cinza, e (4)
mostra a solução modificada destacando a célula movida em azul escuro.
No AE proposto, uma modificação baseado no conceito de lista tabu é implementada na função LOCAL-SITE. Nesse procedimento modificado, o vértice removido em cada iteração do laço no passo 4 do algoritmo LOCAL-SITE é armazenado e mantido em uma lista tabu por certo número de iterações. Durante um número predefinido de iterações os vértices contidos na lista tabu são inelegíveis.
O algoritmo de mutação (denominado MUTATE-SITE) é um processo de reinicialização adaptativo que funciona de uma maneira iterativa (Figura 28). O algoritmo INIT-SITE é inicialmente chamado para criar um sítio usando como semente um vértice do grafo selecionado aleatoriamente. Então, o vértice com o menor valor de custo do sítio criado é usado como o vértice semente para criar outro sítio usando a função ACCRETE-SITE, e esse processo é repetido por nmutat vezes (parâmetro especificado pelo usuário).
Semelhante ao algoritmo de busca local, o algoritmo de mutação é controlado pela probabilidade pmutat que normalmente recebe um valor baixo (por exemplo, 0.1).
113
Procedimento MUTATE-SITE(V’, pmutat, nmutat)
1 Gera um número aleatório uniformemente distribuído entre 0 e 1 2 Se o número aleatório é maior do que pmutat, então Termina 3 INIT-SITE(V, E, p)
4 Repete nmutat vezes
5 Encontra o vértice com o menor valor de custo 6 ACCRETE-SITE(V, E, p, v)
7 Retorna
Figura 28 - Operador de mutação para o problema de busca de sítio (XIAO, 2006). As funções INIT-SITE e ACCRETE-INIT-SITE são listadas na Figura 24.
Com as operações definidas acima o procedimento AE para o problema de busca de sítio é montado (denominado SITE-EA) (Figura 29). Os parametros gen e popsize indicam o número total de iterações (ou gerações) a ser conduzido durante cada execução do AE e o número de indivíduos contidos população do AE. A avaliação dos indivíduos da população no passo 4 do SITE-EA é realizado utilizando a função de aptidão proposta por Xiao (2006):
(15)
Onde é o valor da função objetivo do indivíduo em (12), e e são o valores mínimo e máximo dos valores de função objetivo da população respectivamente.
Procedimento SITE-EA
8 Aplica LOCAL-SITE ao indivíduo selecionado
9 Copia o individuo filho criado a
10 Aplica MUTATE-SITE ao novo filho
11 Até todos os indivíduos em serem criados
Figura 29 - O algoritmo evolutivo para problemas de busca de sítio (XIAO, 2006).
Conforme pode ser observado na Figura 29, uma boa solução terá uma chance maior de ser submetida à busca local, que em geral melhora a solução. Devido à característica aleatória da busca local, diferentes execuções do algoritmo irão resultar em diferentes soluções, apesar de que a diferença pode ser pequena em relação à configuração
114
espacial. Por outro lado, o operador de mutação é utilizado para ajudar o processo de busca a fugir de um ótimo local. Esses mecanismos combinados irão aumentar a chance do AE de encontrar solução de alta qualidade (XIAO, 2006).