2.5
A Metaheur´ıstica VNS
2.5.1
Metaheur´ısticas
O termo metaheur´ıstica vem de uma jun¸c˜ao de duas palavras gregas meta (al´em) e heuriskein (encontrar). H´a diversas defini¸c˜oes para os termos heur´ıstica e metaheur´ıstica. Adopta-se a seguinte defini¸c˜ao [Gendreau e Potvin 2008]:
Heur´ıstica ´e uma t´ecnica de resolu¸c˜ao espec´ıfica de um problema. Ela n˜ao garante a qualidade da solu¸c˜ao obtida. Uma metaheur´ıstica ´e uma heur´ıstica gen´erica que se pode adaptar a cada problema.
As metaheur´ısticas s˜ao convenientes em problemas de otimiza¸c˜ao NP-dif´ıcil ou NP-completo nos quais n˜ao existem algoritmos ou m´etodos para resolvˆe-los em tempo polinomial. As metaheur´ısticas s˜ao assim usadas nestes casos para obter uma solu¸c˜ao de boa qualidade e em tempo computacional razo´avel.
Principais caracter´ısticas de uma metaheur´ıstica:
∙ Usam estrat´egias que permitem guiar a busca de uma boa solu¸c˜ao;
∙ O objectivo ´e explorar o espa¸co de busca de forma eficiente a fim de determinar solu¸c˜oes (quase) ´otimas.
∙ As t´ecnicas usadas variam de simples procedimento de busca local a processos de aprendizagem complexa;
∙ S˜ao geralmente n˜ao determin´ısticas e n˜ao garantem uma solu¸c˜ao ´otima;
∙ Podem conter mecanismos que evitem que a busca de solu¸c˜oes fique bloqueada em uma regi˜ao;
∙ Os conceitos b´asicos de uma metaheur´ıstica podem ser abstratos, sem mencionar um problema espec´ıfico;
∙ As metaheur´ısticas podem fazer uso da experiˆencia acumulada durante o processo de busca do ´otimo para melhor guiar o resto do processo.
Diversas metaheur´ısticas j´a foram propostas para resolver o problema de aloca¸c˜ao ´
otima de PMUS [Nazari-Heris e Mohammadi-Ivatloo 2015] devido a natureza combinat´oria do problema e por ser um problema NP-completo [Haynes et al. 2002].
O VNS (Variable Neighborhood Search) ´e uma metaheur´ıstica proposta pela primeira vez por [Mladenovi´c e Hansen 1997] e vem sendo aplicado em v´arios problemas com sucesso [Hansen et al. 2010,Caporossi e Hansen 2004]. Este algoritmo foi projetado para encontrar solu¸c˜oes aproximadas e emprega-se em problemas de programa¸c˜ao linear,
30 Cap´ıtulo 2. Revis˜ao Bibliogr´afica
programa¸c˜ao inteira, programa¸c˜ao n˜ao linear e outras. O VNS ´e uma metaheur´ıstica que se baseia em mudan¸cas sistem´aticas da vizinhan¸ca das solu¸c˜oes para resolver problemas de otimiza¸c˜ao combinat´oria. Do levantamento bibliogr´afico n˜ao identificou-se nenhum trabalho que aplicasse esta metaheur´ıstica ao problema de otimiza¸c˜ao da aloca¸c˜ao de PMUs.
2.5.2
Algoritmo VNS - Variable Neighbourhood Search
Antes de introduzir o algoritmo enumera-se algumas defini¸c˜oes:
Uma estrutura de vizinhan¸ca (ou vizinhan¸ca) ´e uma fun¸c˜ao N que associa um subconjunto Ω a todas as solu¸c˜oes x ∈ Ω. Uma solu¸c˜ao x’ ∈ N(x) ´e dito um vizinho de x.
Uma solu¸c˜ao x ∈ Ω ´e um m´ınimo local de uma vizinhan¸ca N se f(x) ≤ f(x’), para todo x ∈ N(x).
Uma solu¸c˜ao x ∈ Ω ´e um m´ınimo global ou ´otima se f(x) ≤ f(x’), para todo x ∈ Ω. As vizinhan¸cas dependem do problema e por isso s˜ao definidas genericamente numa metaheur´ıstica.
O VNS (ou Busca em vizinhan¸ca Vari´avel em portuguˆes) baseia-se no m´etodo de vizinhan¸cas vari´aveis:
∙ Considera-se um conjunto de vizinhan¸cas {N1, N2, ..., Nkmax } parametrizados pelo
´ındice k ;
∙ Quanto maior for k maiores e mais afastados ser˜ao as vizinhan¸cas. A id´eia ´e deslocar- se de vizinhan¸cas mais pr´oximas para as mais afastados buscando-se fugir de ´otimos locais;
∙ Muda-se de vizinhan¸ca (k ← k + 1) sempre que se est´a ”preso”em uma solu¸c˜ao; ∙ Um m´ınimo local de uma vizinhan¸ca n˜ao ´e for¸cosamente de uma outra vizinhan¸ca; ∙ Em caso de sucesso (redu¸c˜ao de f ), retorna-se para N1;
∙ Normalmente, permite-se v´arios ciclos de k =1 `a k = kmax.
O VNS portanto, explora vizinhan¸cas progressivamente mais distantes da solu¸c˜ao corrente e move-se para outra solu¸c˜ao se esta for melhor que a precedente. Esta metaheur´ıs- tica possui dois est´agios na procura de novas solu¸c˜oes cada vez mais longe de ´otimos locais: (1) o Shaking (perturba¸c˜ao) que permite mudar (variar) progressivamente a vizinhan¸ca da solu¸c˜ao corrente; e (2) Descend que ´e um procedimento de busca local. Esta metaheur´ıstica tem compromisso com a simplicidade e a eficiˆencia.
2.5. A Metaheur´ıstica VNS 31
A fase de perturba¸c˜ao ´e necess´aria para que a solu¸c˜ao se afaste de ´otimos locais. O m´etodo de perturba¸c˜ao ´e parametrizado por k (amplitude de perturba¸c˜ao) e muda cada vez mais a solu¸c˜ao corrente `a medida que k aumenta. Cada valor de k corresponde a uma vizinhan¸ca diferente Nk. A busca ´e cada vez mais global e diversificada quando n˜ao h´a progressos na solu¸c˜ao. Se a busca local conseguir melhorar a solu¸c˜ao pr´evia `a perturba¸c˜ao ent˜ao a nova solu¸c˜ao ´e adotada e a perturba¸c˜ao ´e retomada com valor k=1. Este processo ´
e iterativo e prossegue at´e se atingir um crit´erio de parada.
A seguir apresenta-se a estrutura b´asica do VNS embora haja algumas varia¸c˜oes do algoritmo [Mladenovi´c e Hansen 1997]:
Pseudo-c´odigo da Metaheur´ıstica VNS 1 Escolher uma solu¸c˜ao x ∈ Ω
2 k ← 1
3 Enquanto um crit´erio de parada n˜ao ´e satisfeito
4 x’ ← shaking (x,k ), escolher aleatoriamente uma solu¸c˜ao x’ em Nk(x )
5 x” ← descend (x’) 6 Se f(x”) <f(x)
7 x ← (x”)
8 k ← 1
9 Se k < kmax, fa¸ca k ← k + 1
10 Sen˜ao, fa¸ca k ← 1
Esta metaheur´ıstica caracteriza-se pela simplicidade e eficiˆencia e prop˜oe-se us´a-la na implementa¸c˜ao do algoritmo para resolver o problema aqui proposto.
Na Figura8 mostra-se o funcionamento do algoritmo em uma ilustra¸c˜ao gr´afica. Inicia-se com uma solu¸c˜ao 𝑥𝑘 e de seguida faz-se uma perturba¸c˜ao de acordo com o
parˆametro k obtendo-se uma solu¸c˜ao provis´oria x’ (b). Aplica-se ent˜ao uma busca local sobre esta nova solu¸c˜ao e obtem-se a mesma solu¸c˜ao anterior `a perturba¸c˜ao. Como a solu¸c˜ao n˜ao melhorou, aumenta-se o valor do parˆametro k e faz-se o mesmo procedimento. Percebe-se que a perturba¸c˜ao vai aumentando cada vez mais o espa¸co de busca. Na terceira perturba¸c˜ao a vizinhan¸ca da solu¸c˜ao ´e ainda maior, mas esta permitir´a encontrar uma solu¸c˜ao melhor que os anteriores. Esta nova solu¸c˜ao 𝑥𝑘+3 ser´a a solu¸c˜ao ´otima.
32 Cap´ıtulo 2. Revis˜ao Bibliogr´afica xk+1 xk+1 xk xk x’=shaking(xk,1) x”=descend(x’) x’=shaking(xk,1) x’=shaking(xk,2) x’=shaking(xk,2) x”=descend(x’) xk+2 xk+2 x’=shaking(xk,3) xk+2 x’=shaking(xk,3) x”=descend(x’)=xk+3 (a) (b) (c) (d) (e) (f) (g) (h) (i)
33