Você está na página 1de 20

Busca em vizinhança variável

Systematic change of neighborhood within a


local algorithm yields a simple and effective meta-
heuristic for combinatorial optimization denom-
inated Variable Neighborhood Search.

1
VNS ALGORITHM
Um problema de otimização pode ser representado da
seguinte forma:

mı́n{f (x) : x ∈ X, X ⊆ S}, (1)


em que S é o espaço de soluções, X é o conjunto de soluções
factı́veis, x é uma solução candidata e f é uma função que
assume valores reais. O algoritmo VNS será analisado em
um problema desse tipo.
Uma metaheurı́stica é uma estratégia de bus-
ca através do espaço de busca de um problema
complexo. A busca é realizada através de transições no
espaço de busca a partir de um ponto inicial ou de um
conjunto de pontos iniciais. Nesse contexto, a diferença
principal entre as diferentes metaheurı́sticas é a
estratégia usada para realizar as transições no
espaço de busca. VNS is a recent metaheuristic which
exploits systematically the ideia of neighborhhood change
para emcontrar soluções ótimas locais e para sair desses
ótimos locais. Nesse aspecto fundamental, VNS é significa-
tivamente diferente de outras metaheurı́sticas.

2
A maioria das metaheurı́sticas aceitam a degra-
dação da solução corrente (ou do conjunto de soluções
correntes) como uma estratégia para sair de uma solução
ótima local. O algoritmo VNS não aceita essa possibilidade.
O algoritmo VNS muda a vizinhança como
uma forma de sair de soluções ótimas locais.
Nesse processo a solução corrente também é a
incumbente o que não acontece nas outras meta-
heurı́sticas. Assim, podemos afirmar que o algo-
ritmo VNS realiza um conjunto de transições
no espaço de busca de um problema e em cada
passo a transição é realizada para a nova incum-
bente. Se o processo encontra um ótimo local
então o algoritmo VNS muda de vizinhança para
sair desse ótimo local e passar para a nova in-
cumbente. Como uma consequência dessa estratégia, se
o algoritmo VNS encontra o ótimo global então a busca fica
estagnada nesse ponto de ótimo global sem possibilidade de
sair desse ponto. Esse tipo de comportamento não acontece
com as outras metaheurı́sticas.

3
A estratégia do algoritmo VNS está inspirada em três
observações importantes:

Fact 1: A local minimum with respect to one neigh-


borhood struture is not necessary so for another.
Fact 2: A global minimum is a local minimum with
respect to all possible neighborhood strutures.
Fact 3: For many problems local minimum with re-
spect to one or several neighborhoods are relatively
close to each other.

4
La última observação é particularmente importante na
formulação de um algoritmo VNS. A observação de caráter
empı́rica implica que uma solução ótima local fornece in-
formação importante em relação ao ótimo global especial-
mente se a solução ótima local for de excelente qualidade.
Existe também a observação empı́rica de que as
soluções ótimas locais geralmente estão concen-
tradas em regiões especı́ficas do espaço de bus-
ca. Se as soluções ótimas locais estivessem uniformemente
distribuı́das no espaço de busca todas as metaheurı́sticas se
tornariam ineficientes. Portanto, se for encontrado um
ótimo local da região em que se encontra o ótimo
global então uma metaheurı́stica tipo VNS tem
grande chance de encontrar esse ótimo global.
Por outro lado, se o ótimo global se encontra em outra
região então a única possibilidade de encontrar o ótimo
global é implementar um processo de diversificação. Por
esse motivo em equilibrio entre intensificação e diversifi-
cação no processo de busca pode ser importante em uma
metaheurı́stica.

5
Existe um outro aspecto importante que deve
formar parte da lógica de implementação de um
algoritmo VNS que está relacionado com a qual-
idade de um ótimo local. Um ótimo local de
função objetivo de melhor qualidade não neces-
sariamente pode ser mais adequado para tentar
encontrar um ótimo global. Supor que existem duas
soluções ótimas locais xa e xb em que f (xa) < f (xb) para o
problema de minimização. Na análise tradicional podemos
concluir que xa é um ótimo local de melhor qualidade que
xb. Entretanto, se essas soluções devem ser usadas para ini-
ciar (ou reiniciar) o processo de busca então podemos afir-
mar que aquela solução com caracterı́sticas internas mais
próximas da solução ótima global é a mais adequada para
iniciar ( ou reinicar) a busca e, portanto, não necessária-
mente a solução xa deve ser escolhida. Assim, por exemplo,
para o problema TNEP a solução ótima local que tiver o
maior numero de elementos nij iguais com a solução ótima
é a mais adequada para iniciar (ou reiniciar) a busca. Logi-
camente, em condições normais não conhecemos a solução
ótima.

6
Entretanto, existem problemas onde a solução ótima é con-
hecida e existem vários algoritmos heurı́sticos para encon-
trar soluções ótimas locais para esse problema. Nesse con-
texto, podemos usar a observação anterior para identi-
ficar o algoritmo heurı́stico que produz soluções
ótimas locais de melhor qualidade para iniciar
a busca usando o algortimo VNS. Esse tipo de
comportamento acontece no problema TNEP em que ex-
istem instancias (sistemas elétricos) cujas soluções ótimas
são conhecidas e muitos algoritmos heurı́sticos construtivos
para encontrar excelentes soluções ótimas locais. Assim,
podemos identificar o melhor algoritmo heurı́stico constru-
tivo para ser incorporado na estrutura de solução de um
algoritmo VNS.

7
Existem várias formas de implementar o algo-
ritmo VNS e, portanto, podem ser implementa-
dos uma familia de algoritmos VNS. Neste trabalho
apresentamos apenas um desses algoritmos. Denotemos
por Nk , (k = 1, ..., kmax), um conjunto finito de
estruturas de vizinhança pré-selecionadas e se-
ja Nk (x) o conjunto de soluções ou vizinhos na
k-ésima vizinhança de x. Uma solução ótima xopt (ou
mı́nimo global) é uma solução onde o mı́nimo de (1) é al-
cançado. Dizemos que x0 é um mı́nimo local de (1) com
relação a Nk , se não existir solução x ∈ Nk (x) ⊆ X tal que
f (x) < f (x0). Assim, a idéia é definir um conjunto
de estruturas de vizinhança que podem ser us-
adas de forma determinı́stica, de forma aleatória
ou determinı́stica e aleatória. Essas formas de usar a
estrutura de vizinhança produz algoritmos VNS de desem-
penhos diferentes.

8
Existem várias propostas de algoritmos VNS
que podem ser usados de forma independentes
ou integradas em estruturas VNS mais complexas.
A forma mais simples de um algoritmo tipo VNS
é o algoritmo Variable Neighborhood Descent
(VND). O algoritmo VND is based on Fact 1 menciona-
do anteriormente, i.e., a local optimum for a first type of
move is not necessary one for another type of move. Assim,
0
o ótimo local x de x na vizinhança N1(x) não necessári-
00
amente é igual ao ótimo local x de x para a vizinhança
N2(x). O algoritmo VND assume a forma mostrada na figu-
ra 1.

9
Initilization: Select the set of neighborhood structures
Ns, s = 1, . . . , smax, that will be used in the descent; find
an initial solution x (or apply the rules to a give x);
Repeat the following sequence until no improvement is
obtained:
(1) Set s ← 1;
(2) Repeat the following steps until s = smax:
(a) Exploration of neighborhood. Find the best
0 0
neighbor x of x, (x ∈ Ns(x));
0
(b) Move or not. If the solution x thus obtained
0
is better than x, set x ← x and s ← 1;
otherwise set s ← s + 1;

Figure 1: Steps of the basic VND algorithm

10
O algoritmo VND representa a forma mais
simples de formular um algoritmo VNS. Entre-
tanto, esse tipo de algoritmo básico pode ser
integrado em uma estrutura mais complexa de
algoritmo VNS. Quando o algoritmo VND for
usado de forma independente deve-se priorizar
a busca de soluções de excelente qualidade. Por
outro lado, se o algoritmo VND é usado em es-
truturas mais complexas pode ser mais impor-
tante encontrar uma boa solução mais rapida-
mente.

11
O segundo tipo de algoritmo VNS é o chamado
Reduced Variable Neighborhood Search (RVNS).
Este tipo de algoritmo está inspirado em dois aspectos fun-
damentais no processo de busca relacionados com a inten-
sificação e a diversificação. Por um lado temos o Fact 3
que afirma que na região de um ótimo local normalmente
existem outras soluções ótimas locais que podem ser encon-
tradas a partir de um ótimo local inicial e, portanto, deve-se
montar uma estratégia de intensificação para intentar en-
contrar esses ótimos locais. Por outro lado, sair de um valley
para encontrar um ótimo local de uma região mais distante
exige uma estratégia que implique em uma mudança mais
radical na caracterização da vizinhança especialmente em
problemas que tem paisagem (landscape) complexa. Assim,
uma busca que contemple ambos aspectos (in-
tensificação e diversificação) pode permitir en-
contrar ótimos locais de uma mesma região e
pode permitir ao processo de busca sair para
ótimos locais de regiões mais distantes do ponto
de ótimo local corrente (incumbent). Esse tipo de
trabalho foi incorporado no algoritmo RVNS cuja estrutura
é mostrada na figura 2.

12
Initilization: Select the set of neighborhood structures
Nk , k = 1, . . . , kmax, that will be used in the search; find
an initial solution x; choose a stopping condition;
Repeat the following sequence until the stopping con-
dition is met:
(1) Set k ← 1;
(2) Repeat the following steps until k = kmax:
0
(a) Shaking: Generate a solution x at ran-
0
dom from the k th neighborhood of x (x ∈ Nk (x));
(b) Move or not. If this solution is better than
0
the incumbent, move there x ← x and continue the search
with N1(k ← 1); otherwise, set k ← k + 1;

Figure 2: Steps of the RVNS algorithm

13
Deve-se observar que o algoritmo RVNS pro-
duz uma escolha de vizinhos mais dinâmica es-
colhendo vizinhos de todas as estruturas de viz-
inhança (diversificação) e priorizando a primeira
estrutura de vizinhança (intensificação) nas fas-
es iniciais da busca. Entretanto, uma componente im-
portante da estrutura RVNS é a capacidade de encontrar
novas regiões promissoras (promissing) a partir de um ótimo
local. O algoritmo RVNS também pode ser usado de forma
independente ou pode ser integrado em uma estrutura mais
complexa de algoritmo VNS.

14
Algoritmos VNS mais eficientes podem ser for-
mulados integrando as caracterı́sticas do algorit-
mo VND, que permite encontrar ótimos locais
de qualidade, e do algoritmo RVNS que per-
mite encontrar novas regiões promissoras a par-
tir de um ótimo local. Assim, juntando (merg-
ing) as caracterı́sticas podem ser formulados dos
tipos de algoritmos VNS que geralmente apre-
sentam excelente desempenho. Esses algoritmos
são chamados de Basic Variable Neighborhood
Search (BVNS) e General Variable Neighbor-
hood Search (GVNS).
O algoritmo BVNS combina a busca local com systematic
changes of neighborhood around the local optimum found.
A estrutura do algoritmo BVNS é mostrada na figura 3.

15
Initilization: Select the set of neighborhood structures
Nk , k = 1, . . . , kmax, that will be used in the search; find
an initial solution x; chose a stopping condition;
Repeat the following sequence until the stopping con-
dition is met:
(1) Set k ← 1;
(2) Repeat the following steps until k = kmax:
0
(a) Shaking: Generate a point x at random
0
from the k th neighborhood of x (x ∈ Nk (x));
(b) Local search: Apply some local search
0
method with x as initial solution; denote with
00
x the so obtained local optimum;
00
(c) Move or not. If the local optimum x is better
00
than the incumbent x, move there (x ← x ), and continue
the search with N1(k ← 1); otherwise set k ← k + 1;

Figure 3: Steps of the BVNS algorithm

16
A lógica de trabalho do algoritmo BVNS é muito
interessante. Inicialmente devemos escolher as k
estruturas de vizinhança. O processo de otimização
é iniciado de uma solução x e na vizinhança
N1(x). Na sequência escolhemos de forma aleato-
0 0
ria um vizinho x de x em N1(x). A partir de x
é iniciado um processo de local search para en-
00
contrar um ótimo local x . Nesse contexto po-
00
dem acontecer 3 casos: (1) se x = x significa
que x já era o ótimo local de valley e, portanto,
devemos mudar para outro nı́vel de vizinhança
00
(N2(x) neste caso); (2) se x é de pior qualidade
que x então foi encontrado um otimo local de
pior qualidade que a incumbente x e também
00
devemos mudar de vizinhaça; e (3) se x é de
melhor qualidade que x que significa que foi en-
contrada uma solução melhor que a incumbente
e, portanto, devemos atualizar a incumbente e
reiniciar a busca a partir da nova incumbente e
permanencendo na vizinhança N1(x)).

17
Em qualquer iteração do processo sempre que a loacl
search encontra uma nova incumbente voltamos para a viz-
inhança N1(x) e sempre que o local search encontra uma
solução de igual ou pior qualidade que a incumbente então
mudamos para uma vizinhança mais complexa. Essa es-
tratégia e a escolha aleatória do vizinho da incumbente x
evita ciclagem e permite encontrar ótimos locais distantes
da incumbente corrente.
O local search no algoritmo BVNS pode ser
qualquer estratégia heurı́stica. Entretanto o lo-
cal search também pode usar uma estratégia
do algoritmo VNS. Assim, o algoritmo BVNS
pode ser transformado em um algoritmo mais
geral chamado General Variable Neighborhood
Search (GVNS). O algoritmo GVNS é obtido
generalizando o algoritmo BVNS simplesmente
usando um algoritmo VND como local search
e usando um algoritmo RVNS para melhorar a
solução inicial usada para iniciar a busca. O al-
goritmo GVNS é mostrado na figura 4.

18
Initilization: Select the set of neighborhood structures
Nk , k = 1, . . . , kmax, that will be used in the shaking
phase, and the set of neighborhood strutures ns for s =
1, . . . , smax that will be used in the local search; find an
initial solution x and improve it by using RVNS; chose a
stopping condition;
Repeat the following sequence until the stopping con-
dition is met:
(1) Set k ← 1;
(2) Repeat the following steps until k = kmax:
0
(a) Shaking: Generate a point x at random from
the k th neighborhood Nk (x) of x;
(b) Local search by VND:
(b1) Set s ← 1;
(b2) Repeat the following steps until s = smax;
- Exploration of neighborhood. Find the best
00 0 0
neighbor x of x in Ns(x );
00 0 0 00
- Move or not. If f (x ) < f (x ) set x ← x
and s ← 1; otherwise set s ← s + 1;
(c) Move or not. If this local optimum is better
00
than the incumbent, move there (x ← x ), and continue
the search with N1(k ← 1); otherwise, set k ← k + 1

Figure 4: Steps of the GVNS algorithm

19
Todas as observações realizadas para o BVNS algorithm
permanecem válidas no algoritmo GVNS. Como foi men-
cionado anteriomente, a mudança fundamental está na fase
de melhoria inicial da solução inicial usando um RVNS al-
gorithm e na fase de local search que é realizado usando um
VND algorithm. Existem outros algoritmos ou estruturas
mais complexas baseadas na lógica do algoritmo VNS que
fogem do escopo deste trabalho.

20

Você também pode gostar