TÉCNICAS HEURÍSTICAS PARA OPTIMIZAÇÃO COMBINATÓRIA
TÉCNICAS HEURÍSTICAS PARA OPTIMIZAÇÃO COMBINATÓRIA
TÉCNICAS HEURÍSTICAS PARA OPTIMIZAÇÃO COMBINATÓRIA
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />
PROBLEMA DO CAIXEIRO VIAJANTE<br />
Heurísticas de construção de percursos<br />
Menor custo de inserção<br />
Passo 0: Escolha um subpercurso inicial com duas cidades i1 e i2 tais<br />
que:<br />
29<br />
( d d )<br />
d i i + di<br />
i = mínimo ij +<br />
i V , j V<br />
i≠<br />
j<br />
∈ ∈<br />
1 2 2 1<br />
com V = {1,2,…,n} o conjunto de cidades.<br />
Passo 1: Determine o vértice k não pertencente ao subpercurso com<br />
menor valor<br />
dik + dkj<br />
− dij<br />
= mínimo d pk + dkq<br />
− d<br />
( p,<br />
q)<br />
∈T<br />
com T o percurso já construído.<br />
ji<br />
( )<br />
Passo 2: Insera o nó k entre os nós i e j. Se não houver mais nós para<br />
inserir, pare com o subpercurso obtido. Caso contrário, volte<br />
ao passo 1.<br />
Vizinho mais próximo<br />
Passo 0: Sejam i uma cidade inicial e V = {1,2,…,n}−{i} o conjunto<br />
de cidades a visitar.<br />
Passo 1: Calcule a cidade j mais próxima da cidade i a partir de:<br />
dij<br />
= mínimo dip<br />
p∈V<br />
Passo 2: Insira a cidade j imediatamente a seguir a i e faça<br />
i = j e V = V − {j}<br />
Passo 3: Se V = ∅, termine. Caso contrário, volte ao passo 1.<br />
pq<br />
(*)<br />
Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />
Heurísticas de melhoramento de percursos<br />
As heurísticas de melhoramentos de percursos consistem em, a partir de<br />
um percurso inicial, efectuar permutações de k arcos. Ou seja, em<br />
substituir k arcos do percurso por k arcos não pertencentes ao percurso.<br />
Estas substituições terão de manter um percurso pelas n cidades e só se<br />
realizam se houver uma redução do valor da função objectivo. O caso<br />
k = 2 é descrito através do seguinte algoritmo<br />
Passo 0: Considere um percurso inicial<br />
Passo 1: Avalie o valor (redução ou aumento) de todas as trocas de<br />
dois arcos não consecutivos para o percurso corrente:<br />
i<br />
k<br />
l<br />
j<br />
Passo 2: Se nenhuma das potenciais trocas de dois arcos conduziu a<br />
uma redução, termine com o percurso corrente. Caso<br />
contrário actualize o percurso com a troca a que maior<br />
redução conduziu e volte ao passo 1.<br />
Nota: Os resultados computacionais até agora relatados na literatura<br />
apontam para o valor k = 3 como o mais adequado. Quatro trocas de<br />
arcos falha por ineficiência no processo de troca de arcos enquanto que<br />
duas trocas conduz a soluções não tão boas como desejáveis.<br />
30<br />
i<br />
k<br />
l<br />
j