![Page 1: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/1.jpg)
VARIABLE NEIGHBOURHOOD
SEARCH
Nuno Miguel Duarte Sequeira André
Optimization and decision support techniquesPDEEC 2007
![Page 2: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/2.jpg)
Introdução
● A meta-heurística VNS (Variable Neighbourhood Search) é bastante recente
● Esta meta-heurística tem por base a pesquisa em vizinhanças diferentes
● Nesta exploração o objectivo será descer até mínimos locais e tentar escapar dos vales que os contêm
![Page 3: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/3.jpg)
Pesquisa local● A meta-heurística VNS faz uso da pesquisa
local● Uma pesquisa local consiste na movimentação
de uma solução para a outra de acordo com regras pré estabelecidas
● Uma estratégia de pesquisa local possível começa com uma solução arbitrária e em cada passo uma nova solução é escolhida sendo testada
![Page 4: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/4.jpg)
Vizinhança● Isto pressupõe a escolha de uma vizinhança
que pode ser considerada como todas as soluções que se obtêm ao fazer uma troca 2opt por exemplo
● Podemos testar todas as possibilidades de uma vizinhança, nesse caso vamos explorar totalmente a vizinhança
● Para descer até um mínimo local podemos tentar alterações aleatórias ou sistemáticas do caminho e testar se essa solução é menor que a actual
![Page 5: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/5.jpg)
Vizinhança● Temos assim a função F(x) que queremos
minimizar, na vizinhança V(xn) encontramos o mínimo local xn mas temos um vale próximo
![Page 6: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/6.jpg)
Vizinhança● Com as alterações aleatórias podemos ou não
conseguir achar melhoria, mas se não acharmos melhoria não garantimos que chegamos ao mínimo local da vizinhança, a não ser que exploremos a vizinhança toda, o que é mais complicado de fazer com números aleatórios
● Com uma pesquisa sistemática podemos pesquisar até não conseguirmos melhoria, assim sendo chegamos ao mínimo local
![Page 7: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/7.jpg)
Introdução
● Para conseguir chegar a um vale temos de implementar alguma forma de pesquisa que deve ser bastante rápida
● No VNS podemos considerar dois tipos de evolução na pesquisa– Steepest descent - descida mais inclinada– First descent - primeira descida
![Page 8: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/8.jpg)
Steepest Descent
● Escolhemos uma vizinhança
● (Repetir)● Testamos a vizinhança completamente● Achamos o mínimo da vizinhança● Esse mínimo passa a ser a nova solução
![Page 9: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/9.jpg)
First Descent
● Escolhemos uma vizinhança
● (Repetir)● Testamos a próxima alteração● Se for menor que a solução actual essa passa
a ser a nova solução
![Page 10: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/10.jpg)
Variable Neighbourhood Descent
● A combinação das duas heurísticas anteriores dá origem ao VND (Variable Neighbourhood Descent)
● Ao aplicar o VND vamos tentar chegar ao mínimo local o mais rápido possível em termos de descida, não em termos de tempo computacional
● Em cada alteração de solução queremos a maior descida possível
![Page 11: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/11.jpg)
Variable Neighbourhood Descent
● Devemos antes de aplicar fazer as seguintes questões:– Qual a complexidade das diferentes trocas– Qual a melhor ordem para as aplicar– São as trocas consideradas suficientes para
permitir uma exploração satisfatória da solução?– Quão precisa queremos que a solução seja
![Page 12: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/12.jpg)
Variable Neighbourhood Descent● Ao aplicar o VND devemos conseguir chegar a
um mínimo local em tempo útil ● Quando chegamos ao mínimo local quer dizer
que nas vizinhanças exploradas no VND não conseguimos melhorar, sendo assim podemos tentar o mesmo tipo de trocas que nunca conseguiremos sair do vale
● Isto é problemático no sentido em que geralmente usamos trocas simples para o VND
![Page 13: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/13.jpg)
Variable Neighbourhood Descent● Para sair do vale e tentar achar um mais
profundo teremos inevitavelmente de usar trocas mais complexas 3opt, 4opt, 5opt ou outras, gerando assim vizinhanças mais distantes
● O grande problema que temos com estas trocas mais complexas é que para explorarmos sistematicamente a vizinhança temos muito mais combinações possíveis, logo o tempo de pesquisa vai crescer
![Page 14: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/14.jpg)
Reduced VNS● No entanto o VNS apresenta uma solução● Fazemos uma troca mais complexa obtendo
assim uma possível solução, de seguida fazemos uma pesquisa local, na expectativa de que consigamos uma melhoria de relativamente ao mínimo encontrado pelo VND
● Esta troca é designada por Reduced VNS● O Reduced VNS seguido de uma pesquisa
local designa-se por Basic VNS
![Page 15: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/15.jpg)
General VNS● Se usarmos o Reduced VNS seguido de uma
pesquisa VND teremos assim o General VNS, foi esta a meta-heurística implementada
![Page 16: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/16.jpg)
Exemplo VNS
![Page 17: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/17.jpg)
Tipos de VNS
● Basic VNS - É considerado quando usamos uma pesquisa RVNS seguida de uma pesquisa simples das vizinhanças
● General VNS - É considerado quando usamos uma pesquisa RVNS seguida de uma pesquisa VND
● Na implementação pode-se determinar em minutos quanto tempo é que o RVNS vai correr.
![Page 18: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/18.jpg)
Implementação
● Para o TSP criei quatro heurísticas baseadas em dois tipos de trocas simples.
● 2opt● Troca de cidade
![Page 19: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/19.jpg)
2opt● O 2opt é bastante simples e é já conhecido
![Page 20: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/20.jpg)
Troca de Cidade● A troca da cidade é melhor explicada no vector
solução
● Escolhe-se uma cidade e qual o ramo onde a vamos introduzir
![Page 21: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/21.jpg)
Troca de Cidade (Exemplo)
● Por exemplo se tivermos a solução: 0 1 2 3 4 5 6● Se escolhermos a cidade na posição 5 e a
quisermos colocar no ramo na posição 0 (ramo entre a posição 0 e 1) ficará
0 5 1 2 3 4 6
![Page 22: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/22.jpg)
Implementação● Para estas duas heurísticas implementei o
steepest descent e o first descent● A cada método é passado o limite de iterações,
como o método termina ao fim de uma iteração em que não consiga melhorar a solução poderíamos pedir infinitas iterações
● A solução inicial é a dada pela heurística do vizinho mais próximo com início no nó zero
steepestdescent2opt(caminho, x.length);firstdescent2opt(caminho);steepestdescentmovecidade(caminho, x.length);firstdescentmovecidade(caminho, 0);
![Page 23: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/23.jpg)
Implementação● Para a heurística de cidade firstdescent
podemos definir uma quantidade de iterações baseadas em números aleatórios, para serem tentados antes da pesquisa sistemática, esta opção nunca foi usada neste trabalho
● As duas heurísticas firstdescent só param quando não conseguem melhoria
steepestdescent2opt(caminho, x.length);firstdescent2opt(caminho);steepestdescentmovecidade(caminho, x.length);firstdescentmovecidade(caminho, 0);
![Page 24: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/24.jpg)
Implementação● Optei por usar o steepest descent primeiro para
nos encaminhar o mais rapidamente possível para o vale mais profundo
● Embora consuma mais tempo, pois é preciso uma iteração para haver um avanço, o avanço será sempre o maior e deve ser usado quando temos uma solução não aleatória
● De seguida uso o first descent para tentar descer ainda mais no vale
● Isto para o 2opt
![Page 25: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/25.jpg)
Implementação
● Com a troca de cidade consegue-se melhorar a solução obtida por 2opt, mas geralmente executa menos iterações, porque grande parte do trabalho de descida já foi feito antes
● Inevitavelmente vai-se chegar a um mínimo local. Embora com o problema de 29 nós consiga chegar à solução óptima, o mesmo não acontece para os outros.
![Page 26: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/26.jpg)
Implementação● Para sair do vale em que nos encontramos
vamos usar o RVNS (Reduced Variable Neighbourhood Search)
● Implementei duas técnicas para isto:– Gero uma troca aleatória na solução inicial e realizo
uma pesquisa VND, se melhorar passa a ser a nova solução (denominei esta técnica de RVNS)
– Gero uma troca aleatória na solução inicial e realizo uma pesquisa VND, gero outra troca aleatória no caminho gerado anteriormente e realizo uma pesquisa VND (denominei esta técnica de RVNS cascata)
![Page 27: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/27.jpg)
Implementação
● Cada tentativa gera sempre uma solução pior seja no RVNS ou no RVNS cascata, mas esta é a única maneira de sair do vale
● Só depois de correr o VND sabemos se chegamos a um vale mais profundo
![Page 28: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/28.jpg)
Implementação
● Quanto mais complexa for a troca mais distante é a vizinhança e mais longe ficará o vale a que vamos tentar aceder.
● Sendo assim começa-se com trocas simples e depois evolui-se para trocas mais complexas
![Page 29: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/29.jpg)
GVNS
Os dois tipos de RVNS contam com uma função que consegue realizar qualquer troca do tipo kopt, mas implementei trocas 2opt, 3opt, 4opt, 5opt e 6opt
● Todos serão seguidos de uma pesquisa VND● Pode-se definir qual o tempo de
processamento desejado, sendo que este será dividido igualmente entre cada troca
![Page 30: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/30.jpg)
Tempos de execução VND● Para um máximo de iterações igual ao nº de
nós
53 1002 18512
Iterações
Steep 2opt 10 4,6 46 165 29921,21 4937000 N/A >8h N/AFirst 2opt 2 16 32 2 30000 60000 N/A N/A N/A
5 6,2 31 29 60620,69 1758000 N/A N/A N/A2 8 16 2 60 120 N/A N/A N/A
Tempo total < 1s 114m 36s N/A429 271713 N/A
Algoritmo
Instância
Tempo por iter.
(ms)
Tempo Total (ms)
Iterações Tempo por iter. (ms)
Tempo Total (ms) Iterações
Tempo por iter.
(h)
Tempo Total (ms)
Steep CidadeFirst Cidade
Mínimo
![Page 31: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/31.jpg)
Iterações VND● Para um máximo de iterações igual ao nº de
nós
53 1002 18512Iterações
Steep 2opt 10 440 165 273994 N/A N/AFirst 2opt 2 435 2 273992 N/A N/A
5 429 29 271713 N/A N/A2 429 2 271713 N/A N/A
Tempo <1s 114m 36s N/A
AlgoritmoInstância
Mínimo Iterações Mínimo Iterações Mínimo
Steep CidadeFirst Cidade
![Page 32: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/32.jpg)
Iterações VND● Para um máximo de iterações igual a 10% do
nº de nós (10% calculado com divisão inteira nº de nós/10)
53 1002 18512Iterações
Steep 2opt 5 471 100 278391 N/A N/AFirst 2opt 4 434 4 274100 N/A N/A
4 430 32 271671 N/A N/A2 430 2 271671 N/A N/A
Tempo 1s 85m N/A
AlgoritmoInstância
Mínimo Iterações Mínimo Iterações Mínimo
Steep CidadeFirst Cidade
![Page 33: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/33.jpg)
Iterações VND● Para um máximo de iterações igual a 1% do nº
de nós (10% calculado com divisão inteira nº de nós/100)
53 1002 18512Iterações
Steep 2opt 0 511 10 313165 N/A N/AFirst 2opt 3 438 5 279371 N/A N/A
0 438 10 277082 N/A N/A3 430 3 273887 N/A N/A
Tempo ~0s 20m 27s N/A
AlgoritmoInstância
Mínimo Iterações Mínimo Iterações Mínimo
Steep CidadeFirst Cidade
![Page 34: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/34.jpg)
Condições do teste
● Netbeans 6.0● Java JDK 6● AMD Sempron 2600+● 512MB RAM
![Page 35: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/35.jpg)
Conclusões● Consegui melhorias com o RVNS só para 53
nós, conseguindo 426 ao fim de 1h de RVNS● Para 1002 nós ao fim de 31h não consegui
melhoria relativamente ao VND● O uso de muitas iterações steepestdescent não
garante a escolha de um bom mínimo local mas demora muito mais tempo a executar
● O firstdescent chega a um mínimo muito mais rápido que o steepestdescent
![Page 36: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/36.jpg)
Trabalho futuro● Guardar trocas geradas aleatoriamente no
RVNS para que não sejam repetidas● Implementar Skewed VNS● Implementar Variable Neighborhood
Decomposition Search● Implementar um algoritmo que detecte ramos
cruzados e que os troque● Resolver o problema de o firstdescent fazer
melhoria depois de o steepestdescent ter corrido até ao fim
![Page 37: VARIABLE NEIGHBOURHOOD SEARCHmac/ensino/docs/ODST20072008/VNS_Nuno_A… · Variable Neighbourhood Descent A combinação das duas heurísticas anteriores dá origem ao VND (Variable](https://reader034.vdocuments.mx/reader034/viewer/2022043009/5f9c0ae23ffa154afc456309/html5/thumbnails/37.jpg)
Bibliografia● José Fernando Oliveira Maria Antónia Carravilla,
“Técnicas aproximadas para a resolução de problemas de Optimização Combinatória”, MEEC – Faculdade de Engenharia da Universidade do Porto
● Pierre Hansen and Nenad Mladenovic, “Search Methodologies - Introductory Tutorials In Optimization And Decision Support Techniques”, Cap. 8, “VARIABLE NEIGHBORHOOD SEARCH”, Springer, 2005
● Marc Pirlot, “General local search methods”, European Journal of Operational Research 92 (1996) 493-511, 1996
● http://www.mi.sanu.ac.yu/VNS/VNS.HTM, visitada em 7 de Janeiro de 2008