Acessibilidade / Reportar erro

Metaheurísticas híbridas para resolução do problema do caixeiro viajante com coleta de prêmios

Hybrid metaheuristics for solve the prize collecting traveling salesman problem

Resumos

O Problema do Caixeiro Viajante com Coleta de Prêmios (PCVCP) pode ser associado a um caixeiro que coleta um prêmio em cada cidade visitada e paga uma penalidade para cada cidade não visitada, com um custo de deslocamento entre as cidades. O problema encontra-se em minimizar o somatório dos custos da viagem e penalidades, enquanto inclui na sua rota um número suficiente de cidades que lhe permita coletar um prêmio mínimo preestabelecido. Este trabalho contribui com o desenvolvimento de metaheurísticas híbridas para o PCVCP, baseadas em GRASP e métodos de busca em vizinhança variável (VNS/VND) para solucionar aproximadamente o PCVCP. De forma a validar as soluções obtidas, propõe-se uma formulação matemática a ser resolvida por um solver comercial, objetivando encontrar a solução ótima para o problema, sendo este solver aplicado a problemas de pequeno porte. Resultados computacionais demonstram a eficiência da abordagem híbrida proposta, tanto em relação à qualidade da solução final obtida quanto em relação ao tempo de execução.

Problema do caixeiro viajante; metaheurísticas; GRASP; VNS; VND


The Prize Collecting Traveling Salesman Problem (PCTSP) can be associated to a salesman who collects a prize in each city visited and pays a penalty for each city not visited, with travel costs among the cities. The objective is to minimize the sum of the travel costs and penalties, including in the tour enough number of cities that allow collecting a minimum prize. This paper contributes with the development of a hybrid metaheuristic to PCTSP, based on GRASP and search methods in variable neighborhood (VNS/VND) to solve PCTSP approximately. In order to validate the obtained solutions, we proposed a mathematical formulation to be solved by a commercial solver to find the best solution to the problem, being this solver applied to small problems. Computational results demonstrate the efficiency of the proposed method, as much in relation to the quality of the obtained final solution as in relation to the time of execution.

Traveling salesman problem; metaheuristic; GRASP; VNS; VND


Metaheurísticas híbridas para resolução do problema do caixeiro viajante com coleta de prêmios

Hybrid metaheuristics for solve the prize collecting traveling salesman problem

Antonio Augusto ChavesI; Fabrício Lacerda BiajoliI; Otávio Massashi MineII; Marcone Jamilson Freitas SouzaIII

IInstituto Nacional de Pesquisas Espaciais

IIAutecsys Informática Ltda

IIIUniversidade Federal de Ouro Preto

RESUMO

O Problema do Caixeiro Viajante com Coleta de Prêmios (PCVCP) pode ser associado a um caixeiro que coleta um prêmio em cada cidade visitada e paga uma penalidade para cada cidade não visitada, com um custo de deslocamento entre as cidades. O problema encontra-se em minimizar o somatório dos custos da viagem e penalidades, enquanto inclui na sua rota um número suficiente de cidades que lhe permita coletar um prêmio mínimo preestabelecido. Este trabalho contribui com o desenvolvimento de metaheurísticas híbridas para o PCVCP, baseadas em GRASP e métodos de busca em vizinhança variável (VNS/VND) para solucionar aproximadamente o PCVCP. De forma a validar as soluções obtidas, propõe-se uma formulação matemática a ser resolvida por um solver comercial, objetivando encontrar a solução ótima para o problema, sendo este solver aplicado a problemas de pequeno porte. Resultados computacionais demonstram a eficiência da abordagem híbrida proposta, tanto em relação à qualidade da solução final obtida quanto em relação ao tempo de execução.

Palavras-chave: Problema do caixeiro viajante, metaheurísticas, GRASP, VNS, VND

ABSTRACT

The Prize Collecting Traveling Salesman Problem (PCTSP) can be associated to a salesman who collects a prize in each city visited and pays a penalty for each city not visited, with travel costs among the cities. The objective is to minimize the sum of the travel costs and penalties, including in the tour enough number of cities that allow collecting a minimum prize. This paper contributes with the development of a hybrid metaheuristic to PCTSP, based on GRASP and search methods in variable neighborhood (VNS/VND) to solve PCTSP approximately. In order to validate the obtained solutions, we proposed a mathematical formulation to be solved by a commercial solver to find the best solution to the problem, being this solver applied to small problems. Computational results demonstrate the efficiency of the proposed method, as much in relation to the quality of the obtained final solution as in relation to the time of execution.

Key words: Traveling salesman problem, metaheuristic, GRASP, VNS, VND

INTRODUÇÃO

O Problema do Caixeiro Viajante com Coleta de Prêmios (PCVCP), referido na literatura inglesa como Prize Collecting Traveling Salesman Problem (PCTSP), é uma variante do Problema do Caixeiro Viajante. O PCVCP pode ser associado a um caixeiro viajante que coleta um prêmio pk, não negativo em cada cidade k que ele visita e paga uma penalidade gtpara cada cidade t que não visita, com um custo cijde deslocamento entre as cidades i e j. O problema encontra-se em minimizar o somatório dos custos da viagem e penalidades, enquanto inclui na sua rota um número suficiente de cidades que lhe permita coletar um prêmio mínimo, pmin, preestabelecido.

O PCVCP foi formulado inicialmente por Egon Balas (BALAS, 1989) como um modelo para a programação da operação diária de uma fábrica que produzia lâminas de aço. Por razões que tinham a ver com o desgaste dos rolos e também por outros fatores, a seqüência na ordem do processamento era essencial. A programação consistia na escolha de um número de lâminas associadas às suas ordens de execução, que satisfizessem o limite inferior do peso e que, ordenadas numa seqüência apropriada, minimizassem a função de seqüência. As tarefas de escolha das lâminas e das opções disponíveis para o seu seqüenciamento necessitavam ser resolvidas em conjunto. Esse problema, chamado então de Prize Collecting Traveling Salesman Problem, serviu como base para o desenvolvimento de um software implementado por Balas e Martin, e foi resolvido aproximadamente por meio da combinação de várias heurísticas (BALAS, 2001).

As aplicações desenvolvidas para o PCVCP são relativamente poucas, apesar da grande aplicabilidade que ele tem para o mundo real. Goemans e Willianson (1992) desenvolveram um procedimento 2-aproximativo para uma versão do PCVCP no qual o prêmio mínimo a ser coletado foi removido e o objetivo passou a ser simplesmente minimizar o custo e as penalidades.

Dell’Amico et al. (1998) exploraram uma relaxação lagrangiana para o PCVCP, relaxando a restrição de capacidade. Um algoritmo baseado na heurística clássica para o PCV, conhecida como heurística de inserção mais barata, é utilizado para transformar a solução relaxada em uma solução viável, através da inserção de vértices com melhores custos na rota até que o prêmio mínimo seja coletado. Propuseram, ainda, utilizar uma heurística chamada de Extensão e Colapso para melhorar a solução viável obtida.

Gomes et al. (2000) e Melo (2001) desenvolveram trabalhos que utilizam metaheurísticas híbridas para o PCVCP. Ambos utilizam o método Greedy Randomized Adaptative Search Procedure – GRASP (FEO; RESENDE, 1995) associado a métodos de busca em vizinhanças variáveis (Variable Neighborhood Descent – VND e Variable Neighborhood Search – VNS) (MLADENOVIC; HANSEN, 1997), sendo que Melo (2001) propôs a utilização de uma generalização do GRASP, chamada de GRASP-PSD.

A escolha deste problema para resolução foi feita em função de sua fácil adaptação a situações da vida real. Em linhas gerais, pode ser descrito como um universo de clientes em potencial, em que existe associada a cada cliente, quando não for atendido, uma penalidade pela expectativa frustrada de atendimento e, quando este for atendido, um ganho relativo. Deseja-se, então, partir de uma origem, montar um percurso contendo alguns clientes visitados uma única vez e retornar ao ponto de partida, minimizando o custo da distância total percorrida e a soma das penalidades, de forma a garantir um ganho mínimo que justifique o investimento.

A dificuldade de solução do PCVCP está no número elevado de soluções existentes. Considerando que o Problema do Caixeiro Viajante é um caso particular do PCVCP, em que o prêmio mínimo (pmin) a ser coletado é igual ao somatório de todos os prêmios pkpara cada cidade k, o PCVCP pode ser classificado como NP-difícil. Sendo assim, a resolução deste por meio de métodos exatos se torna inviável para problemas de dimensões mais elevadas.

Dado esse aspecto combinatório, a abordagem mais comum para problemas dessa natureza é por meio de heurísticas, as quais, no entanto, não estão capacitadas a garantir a otimalidade das soluções finais obtidas. Heurísticas clássicas têm a desvantagem de ficar presas no primeiro ótimo local encontrado. Uma outra forma de resolver problemas combinatórios é por meio de metaheurísticas, as quais possuem ferramentas que possibilitam escapar das armadilhas dos ótimos locais, permitindo a busca em outras regiões do espaço de busca. A utilização dessas técnicas possibilitou um grande avanço com relação à qualidade das soluções finais obtidas com os procedimentos heurísticos clássicos.

Dentre os procedimentos enquadrados como metaheurísticas que surgiram ao longo das últimas décadas, destacam-se Algoritmos Genéticos (AGs) (GOLDBERG, 1989), Simulated Annealing (KIRKPATRICK et al., 1983), Busca Tabu (BT) (GLOVER, 1986), Greedy Randomized Adaptative Search Procedure (GRASP) (FEO; RESENDE, 1995), Colônia de Formigas (DORIGO et al., 1996), Variable Neighborhood Search (VNS) (MLADENOVIC; HANSEN, 1997).

Para a resolução do PCVCP, fez-se uso de conceitos de técnicas mais recentes, no caso, GRASP, VNS e VND,que têm se destacado na solução de problemas altamente combinatórios. Há, certamente, outras técnicas que poderiam ser empregadas, mas preferiu-se selecionar GRASP e VNS/VND tendo em vista a simplicidade dessas técnicas e sua eficiência na abordagem de diversos outros problemas combinatórios.

Este trabalho se diferencia do desenvolvido por Gomes et al. (2000) pelo fato de combinar as técnicas heurísticas VNS e VND, e se diferencia do trabalho de Melo (2001) por utilizar o GRASP básico com filtro, o qual consiste em refinar apenas a melhor solução construída. Além disso, neste trabalho explora-se o espaço de busca usando-se um número mais elevado de vizinhanças.

Outra contribuição deste trabalho é a proposição de um modelo de programação matemática para o PCVCP, permitindo a validação das soluções obtidas pela heurística desenvolvida.

Este trabalho está organizado como segue. Na próxima seção apresenta-se uma formulação matemática para o problema. Na seqüência são apresentados os principais procedimentos heurísticos tomados como base no desenvolvimento deste trabalho. A seguir, em detalhes, o procedimento heurístico proposto para a solução do PCVCP. Os resultados computacionais obtidos pela aplicação do procedimento proposto são apresentados e discutidos sob o título Experimentos Computacionais. A última seção conclui o trabalho.

FORMULAÇÃO MATEMÁTICA

Seja = (V, E) um grafo completo não direcionado, onde, para cada aresta (i,j) Î E, é dado um custo cije, para cada vértice i Î V, são associados um prêmio pi, caso o vértice seja visitado, ou uma penalidade gi, caso contrário. Os vértices são numerados de 0 até |V|, sendo o vértice 0, sem perda de generalidade, assumido como depósito ou domicílio do caixeiro viajante. Para este vértice especial, p0 = 0 e g0 = ¥. No PCVCP, o objetivo é encontrar uma rota que permita coletar um prêmio mínimo pmin, previamente estabelecido, cuja soma dos custos e penalidades pagas pelos vértices que não compuserem a rota seja mínima.

A formulação apresentada a seguir foi proposta por Balas (1989). As restrições 2.5 e 2.6, não contidas na formulação original de Balas (1989), são inseridas para eliminar a existência de sub-rotas. Assume-se que yié a variável que controla se o vértice i é ou não visitado (recebendo o valor 1 caso seja visitado), que x é o vetor de incidência associado à rota (recebendo valor 1 se a aresta (i,j) estiver na rota) e que fijé o fluxo que passa pela aresta (i,j).

As restrições 2.2 garantem que, se o vértice i estiver na rota, a quantidade de arcos que saem dele tem que ser igual a 1, e 0 caso contrário. As restrições 2.3 garantem que, se o vértice j estiver na rota, o somatório das arestas que chegam nele tem que ser igual a 1, e 0 caso contrário. As restrições 2.4 asseguram que o prêmio coletado na rota será maior ou igual ao prêmio mínimo preestabelecido. As restrições 2.5 e 2.6 asseguram a eliminação de sub-rotas. As restrições 2.5 garantem que o fluxo que chega e que sai do vértice i é igual a 1 caso o vértice seja visitado, e 0 caso contrário. As restrições 2.6 asseguram que o fluxo máximo que pode passar por uma aresta é o número de vértices menos 1, ou seja, |V|-1. As restrições 2.7 a 2.9 dizem respeito aos tipos das variáveis x, y e f, respectivamente.

sujeito a

Para a resolução desta formulação matemática, fez-se uso do software LINGO, versão 7.0 (SHRAGE, 1991), objetivando encontrar a solução ótima para o PCVCP. Observa-se, entretanto, pela natureza combinatorial do problema abordado, que tal método só consegue resolver problemas de pequenas dimensões. Por meio dos testes mostrados em Experimentos Computacionais, nota-se que, para um número de vértices próximo a 50, a obtenção da solução por esse método exato já se torna inviável computacionalmente.

HEURÍSTICAS UTILIZADAS

A seguir, são apresentados os procedimentos heurísticos referenciados neste trabalho para a resolução do PCVCP.

ADD_Step

Uma solução inicial de boa qualidade é muito importante, uma vez que bons pontos de partida permitem acelerar a busca local. Este procedimento heurístico construtivo desenvolvido em Gomes et al. (2000) procura gerar uma solução inicial de qualidade.

Inicialmente, tem-se uma rota R partindo e retornando à origem. Em seguida, para cada vértice k não pertencente à rota R, verifica-se sua economia atual em relação a todas as arestas (i, j) que formam a rota. A economia para cada inserção de k é calculada pela fórmula (3.1):

sendo composta pelo custo da aresta (i,j), a penalidade do vértice k e os custos das arestas (i,k) e (k,j), respectivamente.

Após isto, seleciona-se, dentre todos os vértices não pertencentes à rota parcial atual, o que apresentar a maior economia positiva, sendo este inserido em R. Feito isto, para cada vértice k não pertencente à rota R, faz-se o recálculo da economia em relação a todas as arestas (i,j) que pertencem à rota R. Observa-se que há uma redução no valor da função objetivo quando gk> 0 após a inserção do vértice k.

O método termina quando o somatório de todos os prêmios dos vértices pertencentes a R for maior ou igual ao prêmio mínimo e não haja mais vértice k com economia positiva.

DROP_Step

Nesse procedimento, também desenvolvido em Gomes et al. (2000), parte-se de uma rota R que contém todos os vértices e, contrariamente aos algoritmos de inserção, retira-se, a cada iteração, um vértice. A economia proporcionada pela remoção de cada vértice k da rota é calculada pela fórmula (3.2).

em que ake skrepresentam, respectivamente, o antecessor e o sucessor do vértice k na rota R.

Em seguida, seleciona-se, dentre todos os vértices pertencentes à rota atual, o que apresentar a maior economia positiva, sendo este removido da rota R. Feito isto, para cada vértice k pertencente à rota R, faz-se um recálculo da economia de remoção. Observa-se que se gk> 0, a remoção do vértice k proporcionará uma redução no valor da função objetivo.

O método continua enquanto existir algum vértice com economia positiva e a retirada desse vértice não acarretar uma solução inviável, ou seja, o somatório dos prêmios dos vértices pertencentes à rota for menor que o prêmio mínimo preestabelecido.

Método de Descida k-Optimal

Após realizar a fase de construção, tem-se uma rota com alguns (ou todos) vértices, e sabe-se qual a seqüência em que esses vértices são visitados. O desejo agora é conseguir uma possível melhora no valor da função de avaliação através da tentativa de mudança na ordem de visitas, o que pode ser conseguido realizando-se trocas de suas arestas.

As heurísticas do tipo k-Optimal (CROES, 1958) são estratégias de melhoria. Partindo-se de um ciclo hamiltoniano H, excluem-se k arestas de H, produzindo k caminhos desconectados. Reconectam-se esses k caminhos de alguma maneira para produzir outro ciclo , usando diferentes arestas daquelas que foram removidas de H. Dessa maneira, H e serão diferentes entre si por exatamente k arestas. São verificadas todas as soluções viáveis contendo , escolhendo-se a melhor dentre todas, chamada de solução k-Opt.

À medida que o valor de k aumenta, em geral, aumenta também a probabilidade de se alcançar a solução ótima. Entretanto, o custo computacional também cresce rapidamente com o valor de k, pois a complexidade deste algoritmo é O(nk) (GOLDBARG; LUNA, 2000). Neste trabalho, optou-se por utilizar a heurística 2-Optimal, por ela ser eficiente e exigir menor esforço computacional.

GRASP

A metaheurística Greedy Randomized Adaptive Search Procedure (GRASP) (FEO; RESENDE, 1995) é um procedimento iterativo, no qual cada iteração consiste em duas fases distintas: a fase de construção, em que uma solução viável é construída, e a fase de busca local, em que um ótimo local na vizinhança da solução construída é encontrado. A melhor solução encontrada ao longo de todas as iterações GRASP realizadas é retornada como resultado.

Na fase de construção, uma solução é iterativamente construída, elemento por elemento. A cada iteração dessa fase, os próximos elementos candidatos a ser incluídos na solução são colocados em uma lista C de candidatos, seguindo um critério de ordenação predeterminado. Esse processo de seleção é baseado em uma função adaptativa f: C ® R, que estima o benefício da seleção de cada um dos elementos. A heurística é adaptativa porque os benefícios associados com a escolha de cada elemento são atualizados em cada iteração da fase de construção para refletir as mudanças oriundas da seleção do elemento anterior. O componente probabilístico do procedimento reside no fato de que cada elemento é selecionado de forma aleatória, a partir de um subconjunto restrito formado pelos melhores elementos que compõem a lista restrita de candidatos (LRC), segundo a função f. Essa técnica de escolha permite que diferentes soluções sejam geradas em cada iteração GRASP, diversificando o espaço de busca. Um parâmetro a Î[0,1] determina o tamanho da lista restrita de candidatos. Valores de a próximos a zero conduzem a soluções muito próximas àquela obtida pela escolha a cada passo do melhor elemento segundo a função f, enquanto valores de á próximo a 1 conduzem a soluções praticamente aleatórias, o que pode tornar o processo de busca local mais lento.

Assim como em muitas técnicas determinísticas, as soluções geradas pela fase de construção GRASP provavelmente não são localmente ótimas com respeito à definição de vizinhança adotada. Daí a importância da fase de busca local, a qual objetiva melhorar a solução construída.

A eficiência da busca local depende da qualidade da solução construída. A fase de construção tem então um papel importante na busca local, uma vez que as soluções construídas constituem bons pontos de partida para a busca local, permitindo assim acelerá-la.

VNS

O Método de Pesquisa em Vizinhança Variável (Variable Neighborhood Search, VNS), (MLADENOVIC; HANSEN, 1997), é um método de busca local que consiste em explorar o espaço de soluções através de trocas sistemáticas de vizinhanças. Contrariamente a outras metaheurísticas, o método VNS não segue uma trajetória, mas sim explora vizinhanças gradativamente mais "distantes" da solução corrente e focaliza a busca em torno de uma nova solução, se e somente se um movimento de melhora é realizado. O método inclui, também, um procedimento de busca local a ser aplicado sobre a solução corrente. Essa rotina de busca local também pode usar diferentes estruturas de vizinhança.

Mais especificamente, essa heurística parte de uma solução inicial qualquer e, a cada iteração, seleciona aleatoriamente um vizinho dentro da vizinhança Nkda solução corrente. Esse vizinho é então submetido a um procedimento de busca local. Se a solução ótima local for melhor que a solução corrente, a busca continua desta, recomeçando da primeira estrutura de vizinhança. Caso contrário, a busca prossegue a partir da próxima vizinhança, Nk+1. Esta heurística é encerrada quando uma condição de parada for atingida, tal como o tempo máximo de processamento ou o número máximo de iterações consecutivas sem melhoramento. Os vizinhos da solução corrente são gerados aleatoriamente de forma a evitar ciclagem, situação que pode ocorrer se alguma regra determinística for usada.

VND

O Método de Descida em Vizinhança Variável (Variable Neighborhood Descent, VND), (MLADENOVIC E HANSEN, 1997), também é um método de busca local que consiste em explorar o espaço de soluções por meio de trocas sistemáticas de vizinhanças. Nesse método, exploram-se seqüencialmente as vizinhanças, sendo que, em cada uma delas, procura-se o melhor vizinho. Quando esse vizinho não for de melhora em relação à solução corrente, passa-se para a vizinhança subseqüente. Em caso de melhora nessa última situação, retorna-se novamente à primeira vizinhança da seqüência. O método é interrompido quando não houver melhora em nenhuma das vizinhanças pesquisadas.

PROCEDIMENTO HEURÍSTICO HÍBRIDO PARA O PCVCP

Para resolver o PCVCP, desenvolveu-se o método GRASP+VNS, o qual combina as metaheurísticas GRASP, Método de Pesquisa em Vizinhança Variável (VNS) e Método de Descida em Vizinhança Variável (VND), descritas anteriormente.

A função que avalia uma solução do PCVCP e que deve ser minimizada é expressa pela fórmula 4.1:

Como se observa, essa função é composta pelo somatório dos custos de deslocamento na rota, pelo somatório das penalidades pagas nos vértices que não foram visitados e, ainda, por uma parcela que penaliza, através de um peso á, uma solução na qual o somatório dos prêmios coletados seja menor que o prêmio mínimo preestabelecido. As demais restrições foram contempladas pela representação adotada, que impede que um vértice seja visitado mais de uma vez e que não haja a formação de ciclos na solução.

Para definir as vizinhanças de uma solução, foram implementados cinco tipos de movimentos, a saber:

m1: Retirar vértice de maior economia: Utilizando o método DROP-Step (GOMES et al., 2000), escolhe-se um dos vértice que compõe a rota e possui a maior economia, retirando-o da solução, sem levar em consideração se o prêmio deixará de ser coletado;

m2: Inserir vértice de maior economia: Utilizando o método ADD-Step (GOMES et al., 2000), verificam-se todos os vértices que ainda não estão na rota, escolhendo aquele que possuir a maior economia de inserção, inserindo-o na solução;

m3: Trocar dois vértices da solução: Escolhem-se dois vértices que fazem parte da solução, trocando-os de posição;

m4: Retirar vértice: Escolhe-se, aleatoriamente, um vértice que faça parte da solução, removendo-o da solução;

m5: Inserir vértice: Escolhe-se, aleatoriamente, um vértice que não faça parte da solução, inserindo-o na solução.

Esses movimentos, mk, definem as vizinhanças Nk(s), k = {1, 2, 3, 4, 5}, de uma solução s.

O pseudocódigo do algoritmo híbrido GRASP+VNS proposto é descrito na Figura 1. Nesse algoritmo, executa-se a fase de construção MaxIter vezes, retornando a melhor solução construída, a qual é submetida a uma busca local. Esse procedimento, denominado de GRASP com filtro, permite ainda na fase de construção eliminar soluções iniciais de baixa qualidade. Durante a construção, uma lista de candidatos restrita é criada a cada iteração, com os vértices que oferecem as maiores economias de inserção. A seguir, um vértice dessa lista é escolhido aleatoriamente e inserido na solução. Esse procedimento de construção termina quando não mais existir economia positiva e o prêmio coletado for maior que o prêmio mínimo preestabelecido.


Como dito anteriormente, as soluções obtidas pelos algoritmos de construção não garantem, necessariamente, a obtenção de um ótimo local. Por isso, é sempre benéfica a fase de busca local. Neste trabalho foram implementadas as heurísticas VNS e VND como métodos de refinamento da solução construída. Esses métodos consistem em explorar o espaço de soluções por meio de trocas sistemáticas de estruturas de vizinhança.

O algoritmo VNS aplicado ao problema é descrito pela Figura 2. Neste método, parte-se de uma solução inicial gerada pela fase de construção do algoritmo da Figura 1 e, a cada iteração, um vizinho na k-ésima vizinhança da solução corrente s é selecionado aleatoriamente, realizando o movimento mk, onde k = {1, 2, 3, 4, 5}, definido anteriormente. Esse vizinho é então submetido a um procedimento de busca local, no caso o VND. Se a solução ótima local, s’’, for melhor que a solução s corrente, a busca continua de s’’, recomeçando da primeira vizinhança. Caso contrário, a busca prossegue a partir da próxima vizinhança. Esse procedimento é encerrado quando o tempo de execução sem melhora ultrapassar MaxTempo segundos.


O procedimento VND, apresentado na Figura 3, faz uso de três procedimentos heurísticos de refinamento, a saber:

(1) SeqDropSeqAdd, que consiste em retirar os vértices enquanto existir algum vértice com economia de remoção positiva (DROP_step) e adicionar os vértices enquanto existir economia de inserção positiva (ADD_step); (2) 2-Optimal, que examina todas as possíveis trocas de duas arestas, realizando a que fornecer o maior ganho na função de avaliação; e (3) AddDrop, que consiste em inserir o vértice que possuir a maior economia de inserção (ADD_step) e retirar o vértice que possuir a maior economia de remoção (DROP_step). Cada iteração do método consiste na determinação de um ótimo local tendo por base o k-ésimo procedimento heurístico de refinamento, k = {1, 2, 3}. Sempre que é obtida uma solução de melhora, retorna-se ao primeiro procedimento heurístico de refinamento.


EXPERIMENTOS COMPUTACIONAIS

O Problema do Caixeiro Viajante com Coleta de Prêmios, embora seja um problema com inúmeras aplicações, ainda é pouco explorado pela literatura afim. Ao que é de nosso conhecimento, dos poucos trabalhos associados ao PCVCP, não existe nenhuma biblioteca pública de problemas-teste. Uma comparação com o trabalho de Gomes et al. (2000) e Melo (2001) não foi possível, pois os dados utilizados não estão disponíveis. Sendo assim, para avaliar o método heurístico proposto neste trabalho, problemas-teste foram obtidos da seguinte forma: as distâncias entre as cidades (vértices do grafo) foram geradas de uma distribuição uniforme no intervalo [50, 1000], o prêmio e a penalidade associados a cada uma dessas cidades também foram gerados de uma distribuição uniforme, considerando respectivamente os intervalos [1, 100] e [1, 750]. O prêmio mínimo, pmin, a ser coletado representa 75% do somatório de todos os prêmios associados às cidades. Os intervalos para a determinação dos prêmios e penalidades foram os mesmos utilizados em outros trabalhos encontrados na literatura. Os problemas-teste utilizados neste artigo estão disponíveis em http://www.lac.inpe.br/~chaves/instancias.html e em http://www.decom.ufop.br/prof/marcone/projects/pctsp.htm.

A seguir, apresentam-se os resultados computacionais obtidos a partir de 30 execuções realizadas para cada problema-teste gerado. Todos os algoritmos foram implementados na linguagem C++ e os testes computacionais foram realizados sob o sistema operacional Windows, em um microcomputador com processador Athlon XP de 1,53 GHz e 256 MB de memória RAM. Os parâmetros adotados para o método GRASP+VNS, foram os seguintes: MaxIter = 4000, MaxTempo = 200 segundos e a = 0,2.

Na Tabela 1, tem-se os resultados dos experimentos computacionais. Na primeira coluna estão os problemas-teste do PCVCP; na coluna 2, |V| representa a cardinalidade do conjunto de vértices que compõem o problema. A terceira e quarta colunas dizem respeito ao algoritmo exato e representam respectivamente o tempo de execução, em segundos, e o valor do ótimo global. As colunas 5, 6 e 7 referem-se ao método heurístico proposto (vide Figura 1). Na quinta e sexta colunas, encontram-se o tempo médio de execução, em segundos, e os melhores valores da função de avaliação (FOMelhor) obtidos com o modelo heurístico. Na sétima coluna, tem-se o desvio dos valores médios (FOMedia) encontrados em relação à melhor solução obtida em cada um dos problemas-teste, calculado conforme equação 5.1.

Pela aplicação do solver LINGO, versão 7.0, usando a formulação de programação matemática descrita na seção 2, foi possível encontrar o ótimo global somente para os problemas-teste com até 31 vértices. Observa-se que o modelo heurístico também conseguiu encontrar o ótimo global, com um desvio pequeno em relação às soluções geradas. Esse fato contribui para a validação do método heurístico proposto neste trabalho. Observa-se, também, que nos problemas-teste v50a e v50b, o algoritmo exato não conseguiu encontrar nenhuma solução viável em 3 horas de execução. Entretanto, o método heurístico é capaz de produzir soluções viáveis em menos de 5 minutos.

Para os problemas-teste entre 101 e 501 vértices, as soluções foram geradas em um tempo relativamente pequeno, considerando a complexidade dos problemas, e o desvio também foi pequeno. Apesar de não se poder afirmar quão perto essas soluções estão da solução ótima, o desempenho do método heurístico em problemas-teste de menores dimensões possibilita prever que essas devem ser boas soluções.

Na Tabela 2, procura-se evidenciar a vantagem da utilização do filtro na fase de construção GRASP. Para isso, foram realizados testes com uma abordagem sem filtro na fase de construção, consistindo no algoritmo da Figura 1 com MaxIter = 1. Na terceira coluna, é apresentado o valor da função de avaliação da solução obtida utilizando o GRASP com filtro e, na quarta coluna, tem-se o valor da função de avaliação da solução obtida utilizando o GRASP sem filtro. Na quinta coluna, tem-se o percentual de melhora pelo uso do mecanismo de filtro, tendo por base o melhor resultado encontrado em cada abordagem.

Observa-se, pela Tabela 2, que a utilização do filtro na fase de construção GRASP resultou em melhora de até 7,86% no valor da solução final gerada pela abordagem sem filtro.

CONCLUSÕES

Este artigo contribui com a apresentação de um método heurístico híbrido, baseada em GRASP, VNS e VND, para resolver aproximadamente o Problema do Caixeiro Viajante com Coleta de Prêmios (PCVCP).

Na comparação dos resultados encontrados pelos métodos exato e heurístico, verificou-se que o algoritmo heurístico proposto sempre atingiu o ótimo global para os problemas-teste onde esse é conhecido.

A metaheurística híbrida proposta mostrou-se também robusta, pois partindo de diferentes soluções iniciais, chegou-se a soluções finais que diferem da melhor solução encontrada com um pequeno desvio. Portanto, os resultados obtidos validam a utilização desse método para a resolução do Problema do Caixeiro Viajante com Coleta de Prêmios.

Tópicos interessantes para pesquisas futuras na área incluem estudos sobre a robustez do método aqui proposto, diante de mudanças nos parâmetros dos problemas-teste (por exemplo, no grau de esparsidade dos grafos, na variabilidade dos valores aleatoriamente gerados, na percentagem de prêmio mínimo a ser coletado etc.) lidando com a conseqüente ampliação do número de experimentos via análise estatística dos resultados. Também é de interesse avaliar a qualidade das soluções obtidas em grafos realísticos (por exemplo, planares), bem como em grafos adaptados de problemas-teste criados para o caixeiro viajante original e suas variantes, disponíveis em bibliotecas consagradas (BEASLEY, 1990, TSPLIB).

Agradecimentos

Os autores agradecem aos revisores anônimos pelas valiosas sugestões, que muito contribuíram para a melhoria deste trabalho.

Artigo recebido em 13/03/2006

Aprovado para publicação em 09/04/2007

Sobre os autores

Antonio Augusto Chaves

Instituto Nacional de Pesquisas Espaciais – Laboratório Associado de Matemática e Computação Aplicada

Doutorando

End.: Av. dos Astronautas, 1758 – CEP 12272-010 – São José dos Campos/SP – Brasil

Tel.: (12) 3945-6184

E-mail: chaves@lac.inpe.br

Fabrício Lacerda Biajoli

Instituto Nacional de Pesquisas Espaciais – Laboratório Associado de Matemática e Computação Aplicada

Mestrando

End.: Av. dos Astronautas, 1758 – CEP 12272-010 – São José dos Campos/SP – Brasil

Tel.: (12) 3945-6184

E-mail: biajoli@lac.inpe.br

Otávio Massashi Mine

Autecsys Informática Ltda.

End.: Rua Luiza Grinalda, 550, sala 205, CEP 29100-240, Vila Velha/ES – Brasil

Tel.: (27) 2121-5554

E-mail: otavio.massashi@gmail.com

Marcone Jamilson Freitas Souza

Universidade Federal de Ouro Preto – Departamento de Computação

Professor Adjunto

End.: ICEB – Campus Universitário – Morro do Cruzeiro – CEP 35400-000 – Ouro Preto/MG – Brasil

Tel.: (31) 3559-1658

E-mail: marcone@iceb.ufop.br

  • BALAS, E. The prize collecting traveling salesman problem. Networks, 19, p. 621-636, 1989.
  • _________. The Prize Collecting Traveling Salesman Problem and Its Applications, Management Science Research Report, MSRR-664, 2001.
  • BEASLEY, J. E. OR-Library: distributing test problems by eletronic mail. Journal of the Operational Research Society, v. 41, p. 1069-1072, 1990.
  • CHAVES, A. A.; et al Modelagens Exata e Heurística para Resolução do Problema do Caixeiro Viajante com Coleta de Prêmios Relatório Técnico Universidade Federal de Ouro Preto, Ouro Preto, 2003. Disponível em http://www.decom.ufop.br/prof/marcone/Orientacoes/OrientacoesConcluidas .htm
  • CROES, G. A method for solving travelling salesman problems. Operations Research, v. 6, p. 791-812, 1958.
  • DELLAMICO, M.; MAFFIOLI, F. e SCIOMANCHEN, A. A Lagrangian Heuristic for the Prize Collecting Travelling Salesman Problem. Annals of Operations Research, v. 81, p. 289-305, 1998.
  • DORIGO, M.; MANIEZZO, V.; COLORNI, A. The Ant System: Optimization by a colony of cooperating agents. IEEE Transactions on Systems, Man, and Cybernetics-Part B, v. 26, n. 1, p. 29-41, 1996.
  • FEO, T. A.; RESENDE, M. G. C. Greedy randomized adaptive search procedures, Journal of Global Optimization, v. 6, p. 109-133, 1995.
  • GOEMANS, M.; WILLIANSON, D. A General Approximation Tchnique for Constrained Forest Problems. In: Proceedings of the 3rd Annual ACM-SIAM Symposium on Discrete Algorithms, p. 307-315, 1992.
  • GOLDBARG, M. C.; LUNA, H. P. Otimização combinatória e programação linear: modelos e algoritmos. Rio de Janeiro: Campus, 2000.
  • GOLDBERG, D. E. Genetic Algorithms in Search. In: Optimization and Machine Learning Berkeley: Addison-Wesley, 1989.
  • GOMES, L.; DINIZ, V.; MARTINHON, C. A. An Hybrid GRASP+VND Metaheuristic for the Prize-Collecting Traveling Salesman Problem. In: XXXII Simpósio Brasileiro de Pesquisa Operacional, p. 1657-1665, 2000.
  • GLOVER, F. Future Paths for Integer Programming and links to Artificial Intelligence. Computers and Operations Research, v. 5, p. 553-549, 1986.
  • KIRKPATRICK, S.; GELLAT, D. C.; VECCHI, M. P. Optimization by Simulated Annealing, Science, v. 220, p. 671-68, 1983.
  • MELO, V. A. Metaheurísticas para o Problema do Caixeiro Viajante com Coleta de Prêmios Dissertação de Mestrado, Instituto de Computação, Universidade Federal Fluminense, Niterói, 2001.
  • MLADENOVIC, N.; HANSEN, P. Variable Neighborhood Search. Computers and Operations Research, v. 24, p. 1097-1100, 1997.
  • SHRAGE, L. Users Manual for LINGO Chicago, IL: LINDO Systems Inc, 1991.
  • TSPLIB. Disponível em http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95 Acesso em: 12 jul. 2006.

Datas de Publicação

  • Publicação nesta coleção
    02 Out 2007
  • Data do Fascículo
    Ago 2007

Histórico

  • Aceito
    09 Abr 2007
  • Recebido
    13 Mar 2006
Associação Brasileira de Engenharia de Produção Av. Prof. Almeida Prado, Travessa 2, 128 - 2º andar - Room 231, 05508-900 São Paulo - SP - São Paulo - SP - Brazil
E-mail: production@editoracubo.com.br