Você está na página 1de 13

Problema do Caixeiro Viajante

Utilizando VNS e VND

Fernando Cota Viana


Ricardo Sérgio Prado
VNS – Algoritmo Básico

S  s0
While (critério de parada) do
K  1
While (k  max) do
Gerar aleatoriamente uma solução s’ pertencente à vizinhança N k(s)
Aplicar busca local a partir de s’, obtendo a solução s’’
If f(s’’) < f(s)
Then
S  s’’
K1
Else k  k + 1
End-if
End-while
End-while
VND – Algoritmo Básico
S  s0
melhoria  .verdadeiro.
While (melhoria) do
K  1
melhoria  .falso.
While (k  max) do
Aplicar busca local a partir de s utilizando a vizinhança Nk(s),
obtendo a solução s’
If f(s’) < f(s)
Then
S  s’
melhoria  .verdadeiro.
Else k  k + 1
End-if
End-while
End-while
Métodos de melhoria de roteiros

 Os mais utilizados são do tipo k-opt


– K arcos são removidos de um roteiro e
substituídos por outros k arcos;

Objetivo: Diminuir a distância total percorrida;


Na prática são considerados 2-opt e 3-opt;
Método 2-opt

 Testa as trocas possíveis entre pares de arcos;

Roteiro Básico Roteiro Modificado

2_opt_VNS
fosl= (*fo - c[s[x]][s[y]] - c[s[w]][s[z]] + c[s[x]][s[w]] + c[s[y]][s[z]]);
Método 3-opt

 Testa as trocas possíveis entre 3 arcos:


Resulta em 7 combinações possíveis:

Roteiro Básico
Método 3-opt

3.1_opt_VNS 3.2_opt_VNS 3.3_opt_VNS 3.4_opt_VNS

fosl= (*fo -c[s[a]][s[a1]]-c[s[b]][s[b1]]-c[s[d]][s[d1]]


+c[s[a]][s[d]]+c[s[b1]]
[s[a1]]+c[s[b]][s[d1]]);
Método de Descida - 2opt

 Troca de duas cidades:


S=[12345]
1>2 = [ 2 1 3 4 5 ] 2>5 = [ 1 5 3 4 2 ]
1>3 = [ 3 2 1 4 5 ] 3>4 = [ 1 2 4 3 5 ]
1>4 = [ 4 2 3 1 5 ] 3>5 = [ 1 2 5 4 3 ]
1>5 = [ 5 2 3 4 1 ] 4>5 = [ 1 2 3 5 4 ]
2>3 = [ 1 3 2 4 5 ]
2>4 = [ 1 4 3 2 5 ]
Método de Descida - 3opt

 Troca de três cidades:


S=[12345]
1>2>3 = [ 2 3 1 4 5 ] 2>3>5 = [ 1 3 5 4 2 ]
1>2>4 = [ 2 4 3 1 5 ] 2>4>5 = [ 1 4 3 5 2 ]
1>2>5 = [ 2 5 3 4 1 ] 3>4>5 = [ 1 2 4 5 3 ]
1>3>4 = [ 3 2 4 1 5 ]
1>3>5 = [ 3 2 5 4 1 ]
1>4>5 = [ 4 2 3 5 1 ]
2>3>4 = [ 1 3 4 2 5 ]
Teste: Problema lin105

 3 Estruturas de Vizinhança VNS utilizadas:


- 2 opt
- 3.3 opt
- 3.4 opt

1 Estrutura de Vizinhança VND utilizada:


- 2 opt
Resultados Obtidos:

 Solução Inicial: 17.173,4


 Tempo: 60 seg.

 1) 10.823,4
 2) 14.116,9
 3) 14.461,1
Resultados Obtidos:

 S. Inicial S. Final
Parcialmente Gulosa

69.558,6 19.669,9
69.526,4 20.828,8
70.273,9 16.563,9
Resultados Obtidos:

 S. Inicial Aleatória S. Final

130.233,8 14.581,2
130.274,9 19.502,0
127.230,1 18.281,4

Você também pode gostar