• Nenhum resultado encontrado

5 Algoritmos Avaliados

5.4 Breakout Local Search

O BLS tem uma abordagem conceitualmente simples, a qual usa as estratégias de busca local e perturbação adaptativa para melhor explorar o espaço de busca. Esse algo- ritmo foi proposto por (BENLIC; HAO, 2013), e é uma abordagem usada para resolução do QAP que vem apresentando bons resultados quando comparado com os melhores resulta- dos conhecidos na literatura, usando as instâncias disponíveis no benchmark do QAPLIB1 (BURKARD; KARISCH; RENDL, 1997).

Vale salientar que o BLS não é um algoritmo proposto para resolução do MP, mas sim do QAP, logo, conceitos como espaço de busca, ótimo local, região de exploração, entre outros aqui abordados, não estão ligados à arquitetura da NoC. O que o BLS faz neste trabalho é gerar soluções de mapeamento a partir de dois grafos genéricos, um da aplicação e outro que representa a NoC. As soluções geradas não levam em conta o modo como as tarefas são alocadas e nem em qual parte da NoC as tarefas estão agrupadas, são levados apenas em consideração o custo das informações trocadas entre cada par de tarefas e a distância dos núcleos onde elas foram alocadas com o único objetivo de fazer a minimização do somatório total do produtos entre esses custos e distâncias.

O BLS alterna entre duas fases, a primeira é a fase de busca local, que tem o objetivo de alcançar um ótimo local, e a segunda é a da perturbação dedicada, com o objetivo de descobrir regiões ainda não percorridas. De forma mais detalhada, o algoritmo parte de uma solução inicial π0, na qual é aplicado um procedimento chamado de steepest descent,

que detalharemos melhor no decorrer deste texto, para encontrar um ótimo local π. A cada

passo de iteração do procedimento steepest descent, é percorrida toda a vizinhança de π0 e

com isso, é selecionada a melhor solução vizinha que tenha o melhor valor objetivo, quando comparado com π0 e suas outras soluções vizinhas. Caso tal solução com melhor valor

objetivo não exista na vizinhança, um ótimo local foi alcançado, ou seja, foi encontrado o π. Neste ponto, se encerra a primeira fase do BLS, e então se inicia a segunda fase, onde o BLS tenta escapar deste ótimo local π, aplicando uma quantidade adequada de movimentos de perturbação dedicada em π. O π resultante após aplicação da perturbação torna-se o π0 da próxima execução do procedimento steepest descent.

Segundo (BENLIC; HAO, 2013), para se obter sucesso em qualquer abordagem de busca local, é necessária uma escolha correta do grau de diversificação aplicado na busca. Além disso, um grau de diversificação ótimo para um determinado estágio da busca, não necessa- riamente é ótimo para outro estágio. O grau de diversificação aplicado por um mecanismo de perturbação depende do número de movimentos de perturbação e do tipo de movi- mento usado, pois se a diversificação é muito fraca, a busca, muito possivelmente, poderá ficar oscilando entre dois ou mais ótimos locais, conduzindo a uma estagnação. Por outro lado, uma diversificação muito forte, tem o mesmo efeito que um reinício randômico, o que pode prejudicar a descoberta de melhores soluções nas fases seguintes da busca local. O mecanismo de perturbação empregado pelo BLS tem a ideia básica de introduzir graus de diversificação adequados, que são requeridos por determinadas fases da busca. Isso é feito dinamicamente, através da determinação do número de movimentos de perturba- ção, o qual representamos pelo símbolo L, e pela escolha adaptativa entre três tipos de movimentos de perturbação, cada qual com uma determinada intensidade.

O Algoritmo 3 apresenta o algoritmo BLS, assim como descrito em (BENLIC; HAO,

2013). Ele apresenta as seguintes seções: começando com a solução randômica inicial, o BLS aplica o procedimento steepest descent para encontrar um ótimo local π (linhas 10 - 16). O número de movimentos de perturbação L, é determinado dependendo se a busca conseguiu escapar do ótimo local, se ela retornou para o ótimo local anterior ou se a busca estagnou em uma região não promissora (linhas 26 - 39). Por último, a aplicação de L movimentos de perturbação com o objetivo de obter um novo ponto inicial para a próxima aplicação do procedimento steepest descent.

Algoritmo 3: Breakout Local Search

Data: Matrizes de fluxos F e de distâncias D com dimensões n x n. Result: Uma permutação π sobre um conjunto de locais.

1 π ←− permutação randômica de {1, ..., n}

2 c ←− C(π) /* c guarda o valor objetivo da solução atual */ 3 Computa a matriz δ inicial n x n de movimentos de ganho

4 πmelhor←− π /* πmelhorguarda a melhor solução encontrada até agora */

5 cmelhor←− C(π) /* cmelhor guarda o valor objetivo da melhor solução encontrada até agora */ 6 cp←− c /* cpguarda o melhor valor objetivo da última aplicação do steepest descent */ 7 ω ←− 0 /* ω é um contador dos consecutivos locais ótimos não melhorados */

8 L ←− L0 /* coloca em L (número de movimentos de perturbação) o seu valor default */ 9 while Condição de parada não alcançada do

10 while ∃ swap(u, v) tal que (c + δ(π, u, v) < c) do

11 π ←− π ⊕ swap(π, u, v) /* aplica o melhor movimento de troca */ 12 c ←− c + δ(π, u, v)

13 Huv←− Iter /*atualiza a quantidade de iterações de quando o movimento uv foi feito */ 14 Atualiza a matriz δ

15 Iter ←− Iter + 1

16 end

17 if c < cmelhor then

18 πmelhor←− π /* atualiza a melhor solução */ 19 cmelhor←− c /* atualiza o melhor valor objetivo */

20 ω ←− 0 /* reseta o contador dos consecutivos locais ótimos não melhorados */

21 else

22 if c ! = cpthen

23 ω ←− ω + 1

24 end

25 end

26 /* Determina L para ser aplicado em π */ 27 if ω > T then

28 /* a busca parece ter estagnado */

29 L ←− Lmax /* atribui a L um valor muito grande*/

30 ω ←− 0

31 else

32 if c = cpthen

33 /* A busca retornou para o ótimo local anterior */

34 L ←− L + 1 /* Incrementa em 1 o número de movimentos de perturbação */

35 else

36 /* A busca escapou do ótimo local anterior */

37 L ←− L0 /* Reinicia o número de movimentos de perturbação */

38 end

39 end

40 /* Aplica a perturbação no ótimo local atual π com L movimentos de perturbação */ 41 cp←− c /* Atualiza o valor objetivo do ótimo local anterior */

42 π ←− Perturbation(π, L, H, Iter, δ, ω) 43 end

Dada a ideia geral do algoritmo e a apresentação de sua implementação em Algoritmo 3, podemos agora detalhar melhor cada uma de suas partes:

Para a exploração da vizinhança, foi usado o método de trocar dois elementos de posição, o qual é chamado de dois-troca, dado que, como já visto na formulação do QAP, uma solução para o problema, π, é uma permutação de {1, ..., n}, tal que πi,

denota o local atribuído ao recurso i ∈ {1, ..., n}. (BENLIC; HAO, 2013) dá a seguinte definição para vizinhança:

Definicão 1. Vizinhança (BENLIC; HAO, 2013)

Define-se a vizinhança N (π) de uma determinada solução π, como todas as permu- tações que podem ser obtidas pela troca de quaisquer dois valores πu e πv, ou seja,

N (π) = {π0|π0

u = πv, πv0 = πu, u 6= v e π0i = πi, ∀i 6= u, v}.

O BLS usa o procedimento steepest descent para explorar toda essa vizinhança até que um ótimo local seja alcançado, ou seja, a cada iteração, o procedimento steepest descent identifica a melhor troca e a aplica em π com o objetivo de obter a melhor solução (observe as linhas de 10 a 16 do Algoritmo 3). Note que, a vizinhança N (π) possui n(n−1)2 elementos e que o algoritmo tem um custo de O(n4) para avaliar todas as soluções da vizinhança.

• Atualização do movimento de ganho:

Seja π uma solução. Definimos swap(r, s) como um movimento de troca, e π ⊕ swap(r, s) como a solução da vizinhança de π obtida pela aplicação de swap(r, s) em π, tal que r, s, ∈ {1, ..., n} e r 6= s. (BENLIC; HAO, 2013) apresenta uma forma de

calcular a variação do custo entre as duas soluções π e π0, δ(π, r, s) = C(π) − C(π0), também chamado de movimento de ganho de swap(r, s), de forma eficiente. Por simplicidade, aqui omitimos mais detalhes sobre essa abordagem feita por (BENLIC; HAO, 2013), porém citamos que ela simplifica a complexidade dos cálculos feitos,

dando um tempo de O(n2), em vez de O(n4), como é feito se for calcular a δ(π, r, s) usando diretamente a equação da própria formulação do QAP.

• Mecanismo de perturbação adaptativa:

Dado que o procedimento steepest descent, aplicado no BLS, sozinho não pode sair de ótimos locais, um mecanismo de perturbação torna-se crucial. Nas subseções seguintes, descrevemos esses mecanismos aplicados no BLS, que são dados pela variação do número de movimentos de perturbação e por três tipos de movimentos de perturbação, que são aplicados dependendo do atual estado da busca. Nas subseções também apresentamos os pseudocódigos destes mecanismos.

– Número de movimentos de perturbação:

No BLS, depois de cada fase de busca, é feito um determinado número de movimentos de perturbação L, já especificado, ou randômico, que asseguram a saída do ótimo local atual e também que não haja nenhum tipo de atração para esse ótimo local, através de sua vizinhança. Porém, se após essa aplica- ção, ainda não foi possível escapar do ótimo local, o número de movimentos de perturbação L é incrementado e a perturbação é aplicada novamente. Caso contrário, é atribuído a L o seu valor def ault. Uma perturbação mais forte é aplicada, caso se tenha uma certa quantidade T de ótimos locais sem nenhum melhoramento na qualidade de seu resultado, quando comparado ao melhor re- sultado encontrado até o dado momento. Essa perturbação mais forte assegura que a trajetória da busca não se restringe a apenas uma subparte do espaço de busca, fazendo a busca migrar para outra região ainda não avaliada. Na Figura 16, apresentamos uma ilustração de como a estratégia de busca empregada pelo BLS tenta explorar o espaço de busca.

Figura 16: Ilustração da trajetória da busca aplicada pelo BLS. Imagem obtida de (BEN- LIC; HAO, 2013).

– Os três tipos de movimentos de perturbação:

Evitando a repetida aplicação de movimentos randômicos de perturbação, o BLS alterna entre três tipos de movimentos, os quais são: direto, recente e o movimento randômico.

A perturbação direta se baseia nos princípios da busca tabu, a qual usa uma lista de movimentos proibidos. Apesar disso, o algoritmo permite a aplicação

de alguns movimentos, caso algum deles não tenha sido aplicado em uma de- terminada quantidade de iterações e a sua aplicação gere uma solução com melhor valor objetivo do que a solução atual. Logo, essa perturbação aplica os seguintes critérios: informação histórica sobre cada movimento, de acordo com o tempo em que ele foi aplicado, e a qualidade dos movimentos aplicados na perturbação, com o objetivo de não prejudicar a solução que foi perturbada. A solução escolhida por essa perturbação é obtida pela seguinte formulação:

A = {swap(u, v) | min{δ(π, u, v)}, (Huv + γ) < Iter ou (δ(π, u, v) + c) <

cmelhor, u 6= v e 1 ≤ u, v ≤ n}

onde H é a matriz que mantém o controle da quantidade de iterações quando o movimento foi feito pela última vez, Iter é a quantidade de iterações atual, c é o custo da solução atual e cmelhor é o custo da melhor solução encontrada até o

momento. Note que um alto valor para γ, implica em uma forte diversificação das soluções.

A perturbação recente, ou seja, baseada apenas em informações históricas pro- vidas pela matriz H, aplica a perturbação considerando apenas os movimentos feitos recentemente, não levando em consideração se a solução é degradada devido ao movimento de perturbação. Mais formalmente, é definido como:

B = {swap(u, v) | min{Huv}, u 6= v e 1 ≤ u, v, ≤ n}

A permutação randômica, simplesmente aplica a troca nas posições que são selecionados uniformemente de forma randômica. Mais formalmente, temos:

C = {swap(u, v) | u 6= v e 1 ≤ u, v ≤ n}

Para assegurar o melhor balanceamento possível entre a intensificação e a diversifi- cação da busca, o BLS aplica dinamicamente, dependendo do estado da busca, as probabilidades de aplicar uma das três estratégias de perturbação. A seguir apre- sentamos como é feita a probabilidade P , que é aplicada para escolha do tipo de perturbação:

P = (

e−ω/T, se e−ω/T > P0

onde ω é a quantidade de ótimos locais não melhorados, T o número máximo de ótimos locais não melhorados e P0 é um limiar que garante o menor valor que P

pode assumir.

Com isso, dado uma probabilidade P , para a aplicação da perturbação direta, a probabilidade de aplicar a perturbação recente é (1 − P ) ∗ Q e a da perturbação randômica é (1 − P ) ∗ (1 − Q), onde Q é uma constante no intervalo de [0, 1].

Algoritmo 4: Perturbation

Data: Ótimo local π, intensidade da perturbação L, matriz H, contador global de iterações Iter, matriz de movimentos de ganho δ e número de ótimos locais consecutivos não melhorados ω.

Result: Uma perturbação da solução π

1 Determina a probabilidade P , de acordo com a fórmula apresentada

2 Com probabilidade P , π ←− P erturb(π, L, H, Iter, δ, ω, A) /* Perturbação direta */ 3 Com probabilidade (1 − P ) ∗ Q, π ←− P erturb(π, L, H, Iter, δ, ω, B) /* Perturbação

recente */

4 Com probabilidade (1 − P ) ∗ (1 − Q), π ←− P erturb(π, L, H, Iter, δ, ω, C) /*

Perturbação randômica */

Algoritmo 5: Perturb

Data: Ótimo local π, intensidade da perturbação L, matriz H, contador global de iterações Iter, matriz de movimentos de ganho δ, número de ótimos locais consecutivos não melhorados ω e o conjunto de movimentos de perturbação M . Result: Uma perturbação da solução π

1 for i := 1 até L do 2 Aplique swap(u, v) 3 π ←− π ⊕ swap(π, u, v) 4 c ←− c + δ(π, u, v) 5 Huv←− Iter

6 Atualize matriz de movimentos de ganho δ e M 7 if c < cmelhor then

8 π ←− π /* Atualiza a melhor solução encontrada */

9 cmelhor ←− c /* Atualiza o valor objetivo referente a melhor solução encontrada

*/

10 ω ←− 0 /* Reseta o contador de ótimo locais consecutivos não melhorados */

11 end

12 end 13 Return π

No próximo capítulo, serão apresentados e discutidos os resultados obtidos através da execução desses algoritmos na ferramenta SiNoC, com o objetivo de avaliar os seus desempenhos com relação a algumas métricas, tais como latência da aplicação e taxa de reuso dos enlaces.

Documentos relacionados