• Nenhum resultado encontrado

Adjacência de Arestas

2.4 Revisão da Literatura para os Problemas da AGMQ e da AGMQA

2.4.9 Sundar e Singh (2010)

Sundar e Singh (2010) propõem uma abordagem via colônia artificial de abelhas para lidar com o problema da AGMQ. Essa abordagem é inspirada no comportamento das abelhas para aquisição de alimentos. As abelhas reais são classificadas em três grupos: empregadas, escoteiras e observadoras. As empregadas estão associadas a uma fonte de alimento. São elas que trazem os carregamentos de néctar para a colméia. As observadoras ficam na colméia à espera das abelhas empregadas, as quais, por meio de uma dança, informaram as abelhas observadoras sobre a qualidade das fontes de alimento encontradas. Já as escoteiras, são as abelhas que, em um dado momento, estão à procura de fonte de alimento na vizinhança da colméia. Nesse sentido, os autores afirmam que, em termos de algoritmos, as abelhas empregadas e observadoras realizam explotação enquanto as escoteiras são responsáveis pela exploração (SUNDAR; SINGH, 2010).

No algoritmo descrito pelos autores, uma solução (árvore geradora) é representada de acordo com a codificação por conjuntos de arestas, conforme Raidl e Julstrom (2003). O procedimento de inicialização do algoritmo associa uma árvore gerada aleatoriamente a cada uma das abelhas empregadas. Os custos quadráticos e linear de cada aresta são reunidos em um único custo, denominado custo potencial da aresta, P OTi , o qual pode

ser calculado como na Expressão em 2.44.

P OTi = wi+ m

X

j=1,j6=i

(cij + cji), ∀i, 0 < i ≤ m (2.44)

Sendo assim, as soluções randômicas iniciais são obtidas por meio de um procedi- mento construtivo similar ao algoritmo de Prim (1957) que considera o custo da aresta como sendo o custo potencial. Além disso, ao invés de selecionar a aresta de menor custo que conecta um vértice na árvore em construção a um vértice fora dela, a adaptação do algoritmo de Prim (1957) usa roleta para escolher uma aresta aleatoriamente dentre as todas as candidatas. Nessa perspectiva, a probabilidade de escolher uma aresta é inver- samente proporcional ao seu custo. A cada árvore gerada (uma para cada empregada) a melhor solução já encontrada pelo algoritmo é atualizada, se for o caso.

Depois do processo de inicialização, o algoritmo de Sundar e Singh (2010) se constitui basicamente de um laço de repetição, até que um critério de parada seja satisfeito.

O primeiro passo dentro do laço tenta gerar, para cada uma das abelhas empregadas i, uma nova fonte de alimento F Ai′ que esteja na vizinhança da respectiva fonte atual F Ai

. Esse procedimento segue o Algoritmo de Determinação de Fonte de Alimento Vizinha (ADFAV) , o qual será explicado adiante. Se, para alguma empregada i, a árvore F Ai′

gerada for vazia, isso significa que o ADFAV não conseguiu gerar uma nova árvore e, pois, F Ai é substituída por uma solução (fonte de alimento) gerada randomicamente. Senão,

caso F Ai′ seja melhor que F A

i, F Ai é substituída por F Ai′ e checa-se a possibilidade

de a solução ótima até o momento ter sido melhorada. Por outro lado, se o ADFAV não conseguir melhorar F Ai por um determinado número limite de iterações, então F Ai é

substituída por uma solução aleatória.

De acordo com Sundar e Singh (2010), o método ADFAV recebe como entrada uma solução, denominada s, a qual é copiada para a solução s′. O ADFAV escolhe randomica-

mente uma aresta er para ser removida da árvore s′. Para que s′ volte a ser uma árvore

geradora, faz-se necessário, pois, re-conectar os dois componentes criados. Para tanto, o ADFAV escolhe aleatoriamente uma solução u diferente de s′. Procura-se, em u, uma

aresta eg diferente de er que possa re-conectar s′ ao menor custo possível dentre todas

as arestas candidatas presentes em u. Tal custo é analisado com base no custo linear de eg e nos intercustos de eg com as arestas remanescentes em s′. No caso de não haver

aresta candidata eg tal que seja possível realizar a substituição de er por eg, a aresta er

é re-estabelecida na árvore. A aresta er é inserida em uma lista tabu para que não possa

ser selecionada novamente nas próximas iterações. O algoritmo continua escolhendo no- vas arestas a serem removidas e adicionadas segundo o procedimento detalhado acima até que alguma substituição seja efetuada. Se o algoritmo falhar mesmo após um determinado número de iterações, retorna-se um conjunto vazio indicando que a população precisa ser diversificada. Senão, retorna-se s′.

Ainda dentro do laço principal do algoritmo colônia de abelha, após a manipulação das soluções das abelhas empregadas, o algoritmo de Sundar e Singh (2010) tenta gerar, para cada abelha observadora j uma fonte de alimentação F Aj. O procedimento de se-

leção de uma fonte de alimentação para uma abelha observadora emprega a estratégia de seleção de torneio binário. Duas soluções são escolhidas aleatoriamente do conjunto de soluções manipuladas pelo algoritmo. A melhor dentre as duas soluções é escolhida para ser associada à abelha observadora com uma probabilidade bt. A pior dentre as duas soluções é associada à observadora com probabilidade 1 − bt. Logo após, tenta-se gerar, utilizando a heurística ADFAV, uma nova fonte de alimentação F Aj′ na vizinhança de

F Aj. Se F Aj′ for vazio ou pior que F Aj, F Aj não é atualizado com F Aj′. Caso contrário,

F Aj é atualizado com F Aj′ e checa-se a possibilidade de a solução ótima até o momento

ter sido melhorada. A qualquer momento, se uma árvore gerada for melhor que a árvore ótima armazenada, a solução ótima é atualizada.

Após o laço principal do algoritmo, Sundar e Singh (2010) utilizam um procedimento de busca local com o objetivo de melhorar ainda mais a qualidade da solução ótima encontrada até o momento. Tal busca local consiste em um processo iterativo. A cada iteração, a busca local considera cada aresta da solução isoladamente. A aresta em questão é excluída da árvore. Todas as arestas do grafo que podem conectar os dois componentes resultantes são avaliadas. A aresta que resultar no menor valor possível para a nova solução será inserida na árvore. A busca local é aplicada até que uma iteração completa falhe em melhorar a solução.

O algoritmo implementado por Sundar e Singh (2010) foi comparado ao algoritmo genético proposto por Zhou e Gen (1998) e a dois algoritmos genéticos propostos em Soak, Corne e Ahn (2006). Segundo os autores, o algoritmo de colônia de abelhas foi

melhor que todos os outros em termos de qualidade da solução encontrada. No quesito tempo computacional, o algoritmo proposto no artigo em análise também demonstrou excelente desempenho, sendo superado apenas pelo algoritmo de (ZHOU; GEN, 1998) que

apresentou os piores resultados em termos de qualidade de solução dentre os algoritmos testados.