• Nenhum resultado encontrado

5 Algoritmos Heurísticos

5.5 Busca Tabu

A literatura ainda é escassa em termos de algoritmos de Busca Tabu para problemas de Otimização Multiobjetivo. Em um dos poucos trabalhos na área Hansen (1997) pro- põem o MOTS (Busca Tabu para Otimização Multiobjetivo, do inglês, Tabu Search for Multiobjective Optimization). Assim como o NSGA-II, o MOTS não foi pensado para um problema específico, mas para servir como um framework para implementação de algorit- mos de Busca Tabu multiobjetivos. Propomos, pois, o emprego do arcabouço do MOTS, com adaptações, para a solução do problema da AGQA-bi.

O MOTS otimiza de modo simultâneo um conjunto de soluções iniciais em direção ao conjunto de soluções eficientes. As soluções iniciais são espalhadas de maneira uniforme e, a cada iteração, escolhe-se uma direção para modificar a solução que está sendo manipulada na tentativa de que a solução se aproxime da fronteira de Pareto e mantenha distância das outras soluções no conjunto (HANSEN, 1997).

Algoritmo 6 Algoritmo Transgenético Gere a população inicial pop

Inicie o repositório do hospedeiro

probP lasmideo ← probabilidade inicial para plasmídeos probT ransposon ← 1.0 − probP lasmideo

para i ← 1 até um máximo de iterações faça

Atualize as probabilidades dos agentes se preciso e gere conjunto de plasmídeos para j ← 1 até o número de indivíduos na população faça

se random() < probP lasmideo então resp ← ManipulaçãoPlasmídeo(pop[j])

se resp domina pop[j] ou é inserida no conjunto de não-dominadas então pop[j] ← resp

fim se senão

resp ← ManipulaçãoTransposon(pop[j])

se resp domina pop[j] ou é inserida no conjunto de não-dominadas então pop[j] ← resp

fim se

Atualize o repositório do hospedeiro fim se

fim para fim para

Retorne o conjunto de soluções não-dominadas

No caso do trabalho de Hansen (1997), a direção a ser explorada por cada solução é definida com base em uma estratégia determinística que leva em conta as relações de dominância entre cada par de soluções do conjunto. A princípio, também empregamos esta mesma estratégia. Entretanto, os resultados preliminares mostraram que a escolha aleatória de um vetor de escalarização poderia produzir resultados melhores e em um tempo computacional relativamente inferior. Nesse sentido, optamos pelo vetor escolhido de forma aleatória.

O procedimento adotado neste trabalho para iniciar as soluções do conjunto é o mesmo empregado para iniciar as soluções dos algoritmos NSGA-II, NSTA e Transgenético. Após iniciar as soluções e escolher aleatoriamente um vetor de escalarização, o algoritmo segue, para cada iteração, visitando uma solução sol. Nesse sentido, o algoritmo busca uma solução sol′, vizinha de sol, que minimiza o valor escalarizado da função-objetivo do

problema e que não é movimento Tabu. A única situação em que uma restrição Tabu não é levada em consideração é no caso em que a solução sol′ gerada atende ao critério de

aspiração. No caso, o critério de aspiração usado é que a solução seja não-dominada em relação ao conjunto atual de soluções não-dominadas. Caso isso ocorra, o movimento será realizado mesmo que seja tabu.

O método usado para gerar a vizinhança é uma adaptação da busca ejection chain proposta na Seção 5.1. Tendo em vista que a busca Tabu apresenta seu próprio laço prin- cipal, optamos por realizar apenas o laço mais interno da busca ejection chain proposta em 5.1. A cada passo, uma aresta é escolhida para ser removida e outra para ser inse- rida na solução. A aresta a ser removida é a que mais contribui para o custo total da árvore, de acordo com o vetor de escalarização definido. A aresta que vai entrar, por sua vez, é a aresta que permite a melhor troca e cuja inserção não gera ciclo, com base no mesmo vetor de escalarização. A solução vizinha α gerada é, então, submetida ao conjunto de soluções não-dominadas atual, listaSND. Caso o vizinho seja não-dominado, a troca é efetivamente realizada e a solução vizinha é inserida em listaSND. Além disso, um contador de falhas é zerado e as soluções de listaSND que sejam dominadas por α são removidas do conjunto. Caso contrário, verifica-se se a troca constitui movimento tabu. Se o movimento não for tabu, mesmo que a solução α gerada não entre no conjunto de soluções não-dominadas, a troca é efetuada. De qualquer forma, o contador de falhas é in- crementado em uma unidade. Esse processo de remoção e inserção de arestas continua até que o número total de falhas atinja um valor máximo dado pelo parâmetro #maxF alhas. Enquanto #maxF alhas não é atingido, as trocas bem sucedidas vão se acumulando na solução, de forma que uma aresta que foi removida não pode entrar novamente e uma aresta inserida não pode deixar a solução. O conjunto de trocas realizadas corresponde à cadeia de trocas do ejection chain.

Após a geração do vizinho, as informações Tabu são atualizadas. Hansen sugere, no MOTS, que essa informação seja um atributo do movimento de sol para sol′, de forma

que a revisita de soluções seja evitada. No algoritmo Tabu implementado para esta tese de doutorado, seguimos a ideia de Cordone e Passeri (2012), em que há um limite mínimo de iterações para que uma aresta seja inserida ou removida da solução, dado que essa aresta já esteve envolvida em um procedimento de troca. A informação tabu consiste, pois, no movimento de inserção ou remoção de uma aresta e o valor da iteração em que cada uma das arestas está habilitada a participar de uma troca representa o tabu tenure.

Hansen (1997) também propõe que, de tempos em tempos, as soluções sejam atu- alizadas de forma que se gere diversificação. No caso, implementamos esse critério pela substituição de uma solução do conjunto atual por uma solução do conjunto de não- domi- nadas. O método AGA de arquivamento também foi utilizado neste algoritmo. A seguir, apresentamos o pseudo-código da busca tabu implementada.

Algoritmo 7 Algoritmo Busca Tabu CriarConjuntoInicial(conj[TAMCONJ]) para itr ← 1 até NUMITER faça

para i ← 1 até TAMCONJ faça

gerarVizinhosEjectionChain(pop[i],i,itr)

se critério de diversificação for satisfeito então conj[i] ←Solução aleatória ∈ listaSN D fim se

fim para fim para

6

Experimentos Computacionais –