130 likes | 251 Views
Problema do Caixeiro Viajante Utilizando VNS e VND. Fernando Cota Viana Ricardo Sérgio Prado. VNS – Algoritmo Básico. S s 0 While (critério de parada) do K 1 While (k max) do Gerar aleatoriamente uma solução s’ pertencente à vizinhança N k (s)
E N D
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 K1 While (k max) do Gerar aleatoriamente uma solução s’ pertencente à vizinhança Nk(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 K1 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.3_opt_VNS 3.4_opt_VNS 3.2_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 = [ 1 2 3 4 5 ] 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 = [ 1 2 3 4 5 ] 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