• Nenhum resultado encontrado

4 Busca em Vizinhanc¸a Vari´avel

4.1.5 Extens˜oes da VNS

Em (HANSEN; MLADENOVI ´C, 2001a), propuseram v´arias extens˜oes da VNS para resolver pro- blemas de grandes instˆancias. E em (HANSEN; MLADENOVI ´C, 2003a) ´e descrito um tutorial sobre

VNS, incluindo extens˜oes, exemplos ilustrativos e quest˜oes em relac¸˜ao a implementac¸˜ao. A evoluc¸˜ao da VNS pode ser vista nas pr´oximas sec¸˜oes.

Na literatura aparecem diversas formas de estender a VNS, `as quais geralmente s˜ao acrescen- tadas algumas caracter´ısticas adicionais.

As primeiras extens˜oes derivaram-se diretamente da VNS b´asica. A BVNS ´e um m´etodo do tipo descendente obtido atrav´es da primeira melhoria com aleatorizac¸˜ao. Sem muito esforc¸o adi- cional pode ser transformado em um m´etodo ascendente-descendente: basta fazer no passo (2c)

x ← x com alguma probabilidade, ainda que a soluc¸˜ao encontrada seja pior que a soluc¸˜ao in- cumbente. Tamb´em pode ser transformado em uma busca do melhor movimento: aplicando um movimento na melhor vizinhanc¸a k∗ entre todas as kmaxvizinhanc¸as.

Outras extens˜oes da VNS consistem em encontrar a soluc¸˜ao x no passo (2a) como sendo a melhor entre b (um parˆametro) soluc¸˜oes geradas aleatoriamente na k-´esima vizinhanc¸a, ou intro- duzir kmin e kpasso, dois parˆametros que controlam o processo de troca de vizinhanc¸a: no algoritmo anterior, em vez de k← 1, fazer k ← kmin, e em vez de fazer k ← k + 1, fazer k ← k + kpasso.

4.1.5.1 VNS Inclinada: Algoritmo SVNS

Geralmente, a VNS encontra soluc¸˜oes melhores ou de igual qualidade que as heur´ısticas de partidas m´ultiplas, e soluc¸˜oes muito melhores em casos de problemas com muitos ´otimos locais. Isso ocorre devido ao Fato 3 mencionado na sec¸˜ao 4.1: muitos problemas agrupam ´otimos locais, geralmente com func¸˜ao globalmente convexas e com pouco ru´ıdo, o que significa que possuem muitas soluc¸˜oes distintas com valores parecidos, como ´e o caso do PPEST.

Por´em, pode acontecer que, em alguns casos, os ´otimos locais estejam dispersos em v´arias regi˜oes do espac¸o de busca, e possivelmente longe dos vales que contˆem as soluc¸˜oes quase ´otimas.

Uma vez que se tenha encontrado a melhor soluc¸˜ao em uma regi˜ao grande, ´e necess´ario muito esforc¸o para que se consiga obter uma soluc¸˜ao melhor. Ao se considerar vizinhanc¸as maiores, as soluc¸˜oes geradas aleatoriamente podem diferenciar-se substancialmente da soluc¸˜ao atual; e por isso a VNS se degenera em uma heur´ıstica de partidas m´ultiplas (no sentido de que se realizam, inte- rativamente, descidas com soluc¸˜oes geradas aleatoriamente). Al´em disso, se a soluc¸˜ao incumbente atual n˜ao est´a no vale mais profundo esta informac¸˜ao ´e em parte irrelevante. Seria ent˜ao interessante modificar o esquema da VNS para explorar melhor aqueles vales que est˜ao mais longe da soluc¸˜ao incumbente. Isto pode ser feito aceitando realizar um movimento para uma soluc¸˜ao de valor pr´oximo ao da incumbente atual, mas n˜ao necessariamente melhor, desde que esta soluc¸˜ao esteja longe da incumbente.

O esquema VNS modificado para esta variante chamada Skewed Variable Neighborhood Search (SVNS) ´e apresentado na Figura 4.5. Portanto a SVNS incorpora uma compensac¸˜ao da distˆancia en- tre a soluc¸˜ao gerada e a soluc¸˜ao atual para evitar este inconveniente.

—————————————————————————————————————-

Inicializac¸˜ao: Selecione um conjunto de estruturas de vizinhanc¸as Nk, para k = 1, . . . , kmax, que ser´a usado durante a busca; encontre uma soluc¸˜ao inicial x e seu valor f(x); fazer n∗ ← x, f∗ ← f(x); escolha uma condic¸˜ao de parada e um parˆametro α;

Repetir a seq¨uˆencia seguinte at´e que a condic¸˜ao de parada esteja satisfeita: (1) Fac¸a k← 1;

(2) Repetir os passos seguintes at´e que k= kmax:

(a)Agitac¸˜ao: Gerar aleatoriamente uma soluc¸˜ao xna k-´esima vizinhanc¸a de x (x ∈ Nk(x)); (b)Busca local: Aplicar algum m´etodo de busca local utilizando xcomo soluc¸˜ao inicial; denote

por xo ´otimo local encontrado;

(c)Melhorar ou n˜ao: Se f(x) < f∗fazer f∗← f(x) e n∗ ← x;

(d)Mover ou n˜ao: Se f(x) − αρ(x, x) < f(x) fazer x ← xe k ← 1; Caso contr´ario, fazer

k← k + 1.

——————————————————————————————————————

Figura 4.5: Algoritmo SVNS.

A regra relaxada para reiniciar a busca utiliza uma func¸˜ao objetivo linear em torno da func¸˜ao considerada, i.e., f(x) ´e substitu´ıda por

f(x) − αρ(x, x),

em que ρ(x, x) ´e a distˆancia de x at´e x, e α ´e um parˆametro. A m´etrica para a distˆancia entre as soluc¸˜oes pode ser, por exemplo, a distˆancia de Hamming quando soluc¸˜oes s˜ao descritas por vetores

booleanos, ou pela distˆancia Euclideana, no caso cont´ınuo. Ou ainda, a distˆancia considerada para definir as vizinhanc¸as Nkpode ser utilizada para este fim. A eleic¸˜ao do parˆametro α deve permitir a explorac¸˜ao de vales distantes de x quando f(x) ´e um pouco maior que f(x), mas n˜ao muito (caso contr´ario a soluc¸˜ao x sempre seria descartada), e deve evitar ciclagem. O valor de α deve ser determinado experimentalmente, pois depende de cada caso considerado.

Evidentemente, poderiam ser consideradas f´ormulas mais complicadas para sair de um vale. E algumas perguntas devem ser respondidas quando aplica-se a SVNS:

(i) O problema considerado apresenta func¸˜ao objetivo quase convexa, ou existem v´arios vales profundos e separados?

(ii) Como α deveria ser escolhido?

Estas perguntas podem ser respondidas, at´e certo ponto, utilizando inicialmente uma vers˜ao VNS de partidas m´ultiplas, i.e., iniciando a VNS em v´arios pontos aleat´orios e em um per´ıodo pequeno. Depois considerar aquela posic¸˜ao que se encontra o melhor ´otimo local e observar se eles est˜ao agrupados ou dispersos. Ent˜ao pode-se calcular os valores em func¸˜ao de distˆancia do ´otimo local correspondente para a melhor soluc¸˜ao conhecida e escolher α como uma frac¸˜ao da inclinac¸˜ao m´edia.

4.1.5.2 VNS com Decomposic¸˜ao: Algoritmo VNDS

A busca atrav´es de vizinhanc¸a vari´avel com decomposic¸˜ao (Variable Neighborhood Decom-

position Search, VNDS) apresentada em (HANSEN; MLADENOVI ´C; P ´EREZ, 2001) estende a VNS em um esquema de vizinhanc¸a vari´avel em dois n´ıveis baseados na decomposic¸˜ao do problema. Seus passos s˜ao apresentados na Figura 4.6.

Note que a ´unica diferenc¸a entre a VNS b´asica e a VNDS est´a no passo (2b): em vez de aplicar algum m´etodo de busca local no espac¸o completo X (comec¸ando em x ∈ Nk(x)), na VNDS se resolve, em cada iterac¸˜ao, um subproblema em um subespac¸o Xk ⊆ Nk(x) com x ∈ Xk. Quando

a busca local utilizada neste passo ´e tamb´em a VNS, aparece ent˜ao um esquema VNS em dois n´ıveis. A VNDS pode ser vista com a inclus˜ao do esquema de aproximac¸˜oes sucessivas, que histori- camente tem sido muito utilizada em otimizac¸˜ao combinat´oria, na estrutura da VNS.

4.1.5.3 VNS Paralela: Algoritmo PVNS

As buscas atrav´es de vizinhanc¸a vari´avel paralela (Parallel Variable Neighborhood Search, PVNS) constituem a terceira extens˜ao. Foram propostas em (CRAINIC et al., 2001) e (GARCIA et al.,

—————————————————————————————————————-

Inicializac¸˜ao: Selecione um conjunto de estruturas de vizinhanc¸as Nk, para k = 1, . . . , kmax, que ser´a usado durante o processo de descida; encontre uma soluc¸˜ao inicial x; escolha uma condic¸˜ao de parada; Repetir a seq¨uˆencia seguinte at´e que a condic¸˜ao de parada esteja satisfeita:

(1) Fac¸a k← 1;

(2) Repetir os passos seguintes at´e que k= kmax:

(a)Agitac¸˜ao: Gerar aleatoriamente uma soluc¸˜ao x na k-´esima vizinhanc¸a de x (x ∈ Nk(x)); denote-se por y o conjunto de atributos da soluc¸˜ao presentes em x, mas n˜ao em x, ou seja,

y= x− x;

(b)Busca local: Determinar o ´otimo local no espac¸o de y por inspec¸˜ao, ou por alguma t´ecnica heur´ıstica; denote por ya melhor soluc¸˜ao encontrada e por xa soluc¸˜ao correspondente no espac¸o completo X (x = (x\ y) ∪ y);

(c)Mover ou n˜ao: Se a soluc¸˜ao xassim obtida ´e melhor que x, fac¸a x← xe continue a busca em N1(k← 1); Caso contr´ario, k ← k + 1.

—————————————————————————————————————- Figura 4.6: Algoritmo VNDS.

2002) diversas formas de paralelizar a VNS aplicada ao problema das p-medianas. Em (GARCIA et al., 2002) s˜ao analisadas trˆes delas:

(i) Paralelizar a busca local;

(ii) Aumentar o n´umero de soluc¸˜oes obtidas na vizinhanc¸a atual e realizar buscas locais em paralelo a partir de cada uma das soluc¸˜oes;

(iii) Fazer o mesmo que em (ii), mas atualizando a informac¸˜ao sobre a melhor soluc¸˜ao encontrada.

A segunda paralelizac¸˜ao, cujos passos s˜ao descritos na Figura 4.7, ´e a que ofereceu melhores resultados (HANSEN; MLADENOVI ´C; P ´EREZ, 2003).

Foi mostrado em (CRAINIC et al., 2001) que nomeando diferentes vizinhanc¸as em cada proces- sador e interrompendo a busca assim que uma soluc¸˜ao seja melhorada, obteve-se resultados muito bons.

4.1.5.4 VNS H´ıbrida

Considerando que a troca sistem´atica de estrutura de vizinhanc¸as ´e uma ferramenta muito simples e robusta, outra forma de estender a VNS ´e incorpor´a-la a outras metaheur´ısticas.

—————————————————————————————————————-

Inicializac¸˜ao: Selecione um conjunto de estruturas de vizinhanc¸as Nk, para k = 1, . . . , kmax, que ser´a usado durante a busca; encontre uma soluc¸˜ao inicial x e escolha uma condic¸˜ao de parada;

Repetir a seq¨uˆencia seguinte at´e que a condic¸˜ao de parada esteja satisfeita: (1) Fac¸a k← 1;

(2) Repetir, em paralelo, at´e que k= kmax, para cada processador p os seguintes passos:

(a)Agitac¸˜ao: Gerar ao azar uma soluc¸˜ao xpna k-´esima vizinhanc¸a de x (xp ∈ Nk(x));

(b)Busca local: Aplicar algum m´etodo de busca local utilizando xpcomo soluc¸˜ao inicial; denote por xp o m´ınimo local assim obtido;

(c)Mover ou n˜ao: Se a soluc¸˜ao obtida xp ´e melhor que x, fazer x← xpe k← 1; Caso contr´ario, fazer k← k + 1.

—————————————————————————————————————- Figura 4.7: Algoritmo PVNS.

A busca tabu (Tabu Search, TS) (GLOVER, 1989; GLOVER, 1990; GLOVER; LAGUNA, 1997) geralmente utiliza uma estrutura de vizinhanc¸a com relac¸˜ao a qual realiza movimentos de descida e subida explorando diferentes tipos de mem´orias. A princ´ıpio, h´a duas maneiras de se fazer hib- ridismo com VNS e TS: usar algum tipo de mem´oria para orientar a busca dentro da VNS, ou usar a VNS dentro da TS. Em (BURKE et al., 2001;KOVACEVI ´C et al., 1999;BR ¨AYSY, 2001) ´e proposto hi- bridismo do primeiro tipo, e em (BRINBERG et al., 2000;DAVIDOVI ´C; HANSEN; MLADENOVI ´C, 2001), do segundo tipo.

A metaheur´ıstica GRASP (Greedy Randomized Adaptive Search Procedure) (FEO; RESENDE,

1995) apresenta duas fases: na primeira fase se constroem soluc¸˜oes utilizando um procedimento guloso aleat´orio, e na segunda, as soluc¸˜oes s˜ao melhoradas por alguma busca local ou um m´etodo enumerativo. Uma forma natural de fazer hibridismo com VNS e GRASP ´e utilizar a VNS na segunda fase de GRASP, como foi feito em (MARTINS et al., 2000;RIBEIRO; UCHOA; WERNEK, 2002; ANDREATTA; RIBEIRO, 2002; CANUTO; RESENDE; RIBEIRO, 2001; OCHI; SILVA; DRUMMOND, 2001;

FESTA et al., 2001).

A busca com partidas m´ultiplas (Multi Start Search, MS) (MARTI, 2002) ´e uma metaheur´ıstica cl´assica que, para evitar a estagnac¸˜ao de um procedimento de descida em um ´otimo local, simples- mente reinicia a busca atrav´es de outra soluc¸˜ao. Em (BELACEL; HANSEN; MLADENOVI ´C, 2002) ´e pro- posta e analisada uma heur´ıstica h´ıbrida entre a VNS e a MS, consistindo em reiniciar a VNS a partir de uma soluc¸˜ao gerada aleatoriamente no espac¸o X, quando a busca converge em um m´ınimo local, por n˜ao encontrar nenhuma melhora atrav´es das vizinhanc¸as N1(x), N2(x), . . . , Nk(x) da soluc¸˜ao x.