Uma variação do Push-Forward Insertion Heuristic aplicada ao Problema de Roteamento de Veículos com Janelas de Tempo



Documentos relacionados
Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14

APLICAÇÃO DE MÉTODOS HEURÍSTICOS EM PROBLEMA DE ROTEIRIZAÇÃO DE VEICULOS

PROBLEMA DE ROTEAMENTO DE VEÍCULOS COM JANELA DE TEMPO

Processo de Controle das Reposições da loja

Dadas a base e a altura de um triangulo, determinar sua área.

CAP 254 CAP 254. Otimização Combinatória. Professor: Dr. L.A.N. Lorena. Assunto: Metaheurísticas Antonio Augusto Chaves

4 Segmentação Algoritmo proposto

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Orientação a Objetos

7. Análise e comparação dos programas VMI nas empresas XYZ e DEF

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br

Busca Estocástica Baseada em Planejamento para Maximizar Metas em Jogos de RTS

Manual SAGe Versão 1.2 (a partir da versão )

Governança de TI. ITIL v.2&3. parte 1

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

UMA HEURÍSTICA GRASP PARA O PROBLEMA ESTENDIDO DE SEQUENCIAMENTO DE CARROS

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

2 A Derivada. 2.1 Velocidade Média e Velocidade Instantânea

Análise e Complexidade de Algoritmos

Arquitetura de Rede de Computadores

Uma Heurística Gulosa para o Problema de Bin Packing Bidimensional

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

Inteligência Computacional Aplicada a Engenharia de Software

Uma Heurística para o Problema de Redução de Padrões de Corte

GASTAR MAIS COM A LOGÍSTICA PODE SIGNIFICAR, TAMBÉM, AUMENTO DE LUCRO

2 Problema das p-medianas

Utilização do SOLVER do EXCEL

AV2 - MA (a) De quantos modos diferentes posso empilhá-los de modo que todos os CDs de rock fiquem juntos?

Disciplina: Suprimentos e Logística II Professor: Roberto Cézar Datrino Atividade 3: Transportes e Armazenagem

APLICAÇÃO DA METAHEURÍSTICA COLÔNIA DE FORMIGAS AO PROBLEMA DE ROTEAMENTO DE VEÍCULOS

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

Complemento IV Introdução aos Algoritmos Genéticos

5 Experiência de implantação do software de roteirização em diferentes mercados

Itinerários de Ônibus Relatório Final

Sistema TrackMaker de Rastreamento e Logística de Transportes. Solução de Despacho Integrada. Manual do Usuário

2 Atualidade de uma base de dados

Resolução do Problema de Roteamento de Veículos com Frota Heterogênea via GRASP e Busca Tabu.

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

Algoritmos Genéticos

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

A Otimização Colônia de Formigas

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Feature-Driven Development

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

Sistemas Operacionais

Manual Geral do OASIS

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Manual do Ambiente Moodle para Professores

3 Método de Monte Carlo

SIMULADO: Simulado 3 - ITIL Foundation v3-40 Perguntas em Português

1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP

Começo por apresentar uma breve definição para projecto e para gestão de projectos respectivamente.

Metodologia de Gerenciamento de Projetos da Justiça Federal

Introdução. 1. Introdução

Aspectos Teóricos e Computacionais do Problema de Alocação de Berços em Portos Marítmos

4 Metodologia da Pesquisa

Equações do primeiro grau

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Estudo comparativo entre dois tradicionais algoritmos de roteamento: vetor distância e estado de enlace.

6 Construção de Cenários

4 Implementação e Resultados Experimentais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

O QUE É E COMO FUNCIONA O CREDIT SCORING PARTE I

CONCURSO PÚBLICO ANALISTA DE SISTEMA ÊNFASE GOVERNANÇA DE TI ANALISTA DE GESTÃO RESPOSTAS ESPERADAS PRELIMINARES

Como incluir artigos:

Batalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a.

Prof. Antonio Fundamentos de Sistemas Operacionais UNIP/2015

Excel Planilhas Eletrônicas

Qual é o risco real do Private Equity?

&XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO

Uso de SAS/OR para diminuir o tempo de resposta com um melhor posicionamento de ambulâncias.

Contagem I. Figura 1: Abrindo uma Porta.

Associação Educacional Dom Bosco Curso de Engenharia 1º ano

PLANEJAMENTO DA MANUFATURA

DESENVOLVENDO HABILIDADES CIÊNCIAS DA NATUREZA I - EM

PESQUISA OPERACIONAL: UMA ABORDAGEM À PROGRAMAÇÃO LINEAR. Rodolfo Cavalcante Pinheiro 1,3 Cleber Giugioli Carrasco 2,3 *

A função do primeiro grau

ATIVIDADES DE LINHA E DE ASSESSORIA

Árvores Binárias Balanceadas

Uso do Netkit no Ensino de Roteamento Estático

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

Controle do Arquivo Técnico

Prof. Cleber Oliveira Gestão Financeira

Projeto de Sistemas I

Unidade 7: Panes no Excel

Entendendo como funciona o NAT

ROTEAMENTO PERIÓDICO DE VEÍCULOS UTILIZANDO SIMULATED ANNEALING

Modelo Cascata ou Clássico

Neste método o cálculo é efetuado de maneira exponencial, ou seja, juros são computados sobre os juros anteriormente calculados.

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

Funcionalidades do Sistema de Negociação de Créditos de Carbono. Anexo VIII

MANUAL PAPELETA MOTORISTA Criado em: 15/02/2013 Atualizado em: 12/11/2014

Módulo 4. Construindo uma solução OLAP

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Transcrição:

Uma variação do Push-Forward Insertion Heuristic aplicada ao Problema de Roteamento de Veículos com Janelas de Tempo Paulo de Tarso Gomide C. Silva 1 1 Departamento de Ciência da Computação, Universidade Federal de Minas Gerais (UFMG) Av. Antônio Carlos, 6627, 31270-010, Belo Horizonte, MG, Brasil gomide@dcc.ufmg.br RESUMO Neste trabalho, como alternativa aos algoritmos exatos, são propostas duas variações de uma heurística para o Problema de Roteamento de Veículos com Janelas de Tempo (PRVJT). Na solução do problema o algoritmo busca atender à demanda de diversos clientes em uma determinada região, dispondo de uma frota limitada de veículos igualmente capacitados e de um único depósito base. O objetivo principal do algoritmo é rotear os veículos de modo a atender todos os clientes percorrendo a menor distância possível e respeitando as restrições de capacidade e tempo inerentes ao problema. O algoritmo proposto é elaborado em duas fases: a geração da solução inicial através do Push-Foward Insertion Heuristic (PFIH) e o refinamento da mesma através de repetidas retiradas e reinserções de clientes em cada uma das rotas. Os resultados dessa heurística para as 56 instâncias de Solomon são apresentados e comparados com os melhores resultados conhecidos na literatura. PALAVRAS CHAVE: Problema de Roteamento de Veículos, Heurística, PFIH ABSTRACT In this work, as an alternative to the exact algorithms, is proposed two variations of a heuristic to the Vehicle Routing Problem with Time Windows (VRPTW). In the problem s solution the algorithm look for to attend the demand of some clients in a certain region, using a limited fleet of vehicles identically capacited and an unique base deposit. The main objective of the algorithm is to route the vehicles in such a way it attends all the clients crossing the shortest possible distance and respecting the capacity and the time restraints inherent to the problem. The proposed algorithm is elaborated in two stages: the initial solution generation through the Push-Foward Insertion Heuristic (PFIH) and the refinement of this through repeated retreats and reinsertions of clients in each one of the routes. The heuristic results to the 56 Solomon instances are presented and compared to the best results known in the literature. KEYWORDS: Vehicle Routing Problem, Heuristic, PFIH 822

1. Introdução Cada vez mais, vem aumentando a preocupação das empresas em minimizar os gastos empregados no escoamento de seus produtos. Isso acontece devido ao fato de os custos relacionados ao transporte de mercadorias representarem uma parcela significativa no custo final dessas e dos serviços de uma indústria. A exemplo do Brasil, em muitos países o transporte de cargas é basicamente rodoviário, e os gastos com esse meio de transporte são muito elevados por inúmeras razões como o alto preço do combustível, a cobrança de pedágios e os elevados custos com a manutenção de veículos, muitas vezes agravados pelo mau estado de conservação das vias. Com tantas despesas, os custos com transporte de uma mercadoria chegam a representar de 10% a 15% do valor dessa. No Brasil, o gasto com transporte de carga corresponde a 10,8% do PIB (Produto Interno Bruto) [Alvarenga 2005]. Portanto, o transporte é uma das atividades que mais contribuem nos custos logísticos de uma empresa e qualquer redução em seus custos pode trazer um significativa redução no valor final das mercadorias. É nesse contexto que surge a idéia do Problema de Roteamento de Veículos (PRV). O Problema de Roteamento de Veículos deriva do clássico problema do menor caminho em grafos, mais especificamente do famoso Problema do Caxeiro Viajante (Traveling Salesman Problem). De um modo geral, ele consiste em definir rotas para os veículos de uma frota, visando o atendimento de um conjunto definido de clientes. Considera-se que os veículos operam a partir de um ou mais depósitos base de onde devem iniciar e encerrar suas rotas. O objetivo maior desse problema é definir rotas que atendam a todos os clientes visando a minimização dos custos envolvidos no transporte, que usam como métricas essencialmente a distância total percorrida e o número de veículos utilizados. O Problema de Roteamento de Veículos apresenta diversas variações referentes às restrições inerentes ao problema, tais como veículos com capacidade limitada, janelas de tempo em que cada cliente deve ser atendido, tempo de viagem variável, entre outros. O Problema do Roteamento de Veículos com Janelas de Tempo (PRVJT) aqui estudado é justamente uma dessas variações, apresentando capacidade dos veículos limitada e tempo definido para o atendimento de cada um dos clientes. A resolução dos problemas de roteamento em geral é amplamente estudada na área de otimização combinatória. A natureza intrinsecamente combinatorial desses problemas sugere que boa parte deles pode ser formulada e resolvida como um problema de programação linear inteira. Contudo, por se tratar de problemas NP-difíceis, a maioria dos algoritmos disponíveis atualmente não conseguem encontrar, em tempos computacionais aceitáveis, a solução ótima para instâncias de porte razoável [Longo 2004]. Nesse contexto, as heurísticas ganham campo, se tornando uma opção viável na medida em que levam a soluções aproximadas em tempos computacionais bem mais favoráveis. Para a resolução do Problema do Roteamento de Veículos com Janelas de Tempo, é proposto nesse trabalho uma variação da heurística Push-Forward Insertion Heuristic [Solomon 1987] que visa sempre a melhoria da distância total percorrida pelas rotas. O Push-Forward Insertion Heuristic (PFIH) é um eficiente método, proposto por Solomon, que utiliza a inserção de clientes de modo a formar as rotas de uma solução para o problema de roteamento. A ordem de inserção dos clientes é definida por uma fórmula matemática que contrapõe o tempo em que um cliente está pronto para ser atendido, com a distância e o ângulo entre esse e seu depósito base. A inserção é feita respeitando sempre as restrições de tempo de cada cliente e a capacidade dos veículos. Nesse trabalho, a solução inicial é gerada aplicando-se apenas o PFIH. A variação do Push-Forward Insertion Heuristic implementada nesse trabalho trata da retirada e reinserção de um certo percentual de clientes da solução inicial. Essa variação é aplicada várias vezes sobre a solução inicial e, através da mudança de clientes de uma rota para outra ou mesmo da simples alteração na 823

ordem em que esses serão visitados, busca minimizar a distância total percorrida na solução final. Sugerida inicialmente em [Oliveira et al. 2006] e tendo sua eficiência comprovada em [Oliveira et al. 2007], nesse estudo tal variação recebe novos parâmetros e novos testes são feitos atingindo resultados ainda melhores para as mesmas instâncias já testadas. Explicações mais detalhadas a respeito do PFIH e de sua variação, assim como sobre o algoritmo como um todo, serão tecidas mais à frente. Este trabalho está organizado da seguinte forma: a seção 2 traz a definição formal do problema; a seção 3, o modelo matemático; alguns dos principais trabalhos relacionados são citados na seção 4; o algoritmo é detalhado na seção 4; na seção 5, são mostrados os resultados computacionais e as devidas comparações com os demais resultados da literatura; e, por fim, as conclusões e trabalhos futuros são apresentados na seção 6. 2. Definição do Problema O Problema de Roteamento de Veículos com Janelas de Tempo pode ser definido como: Dado um grafo completo G = (C, A), onde C = {c 0,..., c n, c n+1 } é o conjunto de vértices representando os clientes a serem atendidos em uma dada região e o depósito base (c 0 e c n+1 ) de onde os veículos devem necessariamente iniciar e terminar as suas rotas, e A = {(c i, c j ), c i, c j pertencem ao conjunto C} é o conjunto de arestas representando o caminho entre dois clientes ou entre esses e o depósito base. Cada um dos n clientes é representado por c i C, 1 i n e possui uma demanda (carga) q ci a ser atendida por um único veículo que gastará um tempo de serviço s ci para concluir seus serviços naquele cliente. Para facilitar a representação matemática, o depósito base será representado tanto pelo vértice c 0, quanto pelo vértice c n+1, este representando o ponto de chegada dos veículos e aquele o ponto de partida dos mesmos. Os caminhos entre os elementos do grafo, representados pelas arestas, possuem um custo d ci c j correspondendo a distância entre os vértices c i e c j, {c i, c j } C. O atendimento a todos os clientes da região deve ser feito por uma frota V = {v 1,..., v m } com m veículos idênticos de capacidade Q cada um. Por fim, deve ser respeitada a janela de tempo definida como o intervalo [a ci, f ci ], que indica, respectivamente, a abertura e o fechamento do atendimento ao cliente c i, isto é, indica que só a partir do instante inicial a ci é permitido o atendimento ao cliente c i C que se estenderá até o instante f ci. Em respeito à janela de tempo estabelecida, um veículo nunca poderá chegar ao cliente c i C depois do instante f ci e caso sua chegada se dê antes do instante a ci, o veículo deverá esperar até que o cliente esteja disponível para ser atendido. Pelo caráter inflexível, esse tipo de restrição de tempo recebe o nome de janela de tempo rígida. O objetivo final do problema é o atendimento às demandas de todos os clientes minimizando os custos operacionais envolvidos, sem desrespeitar nenhuma restrição imposta. Portanto, a solução ótima é aquela que, obedecendo a todas as restrições, satisfaz os seus clientes percorrendo a menor distância possível. Na seção seguinte é apresentada uma formalização matemática do problema. 3. Modelo Matemático Por se tratar do problema de roteamento estático de veículos cada um dos clientes, assim como sua demanda e localização, já são conhecidos no início do problema, isto é, cada veículo deixa o depósito base sabendo exatamente os clientes que atenderá e a rota que deve percorrer. Vale destacar ainda que a velocidade dos veículos é considerada constante e unitária tornando igual a distância e o tempo de viagem entre dois elementos quaisquer do grafo. Dito isso, para a formalização e uma melhor compreensão do problema, é mostrada a seguir a definição proposta por larsen h definido o problema, o modelo matemático pode ser mostrado. A seguir são apresentados todos os parâmetros e variáveis utilizados: V conjunto dos veículos disponíveis para o atendimento aos clientes m número de veículos disponíveis para o atendimento aos clientes v 1,..., v m veículos disponíveis para o atendimento aos clientes 824

Q capacidade de cada um dos veículos disponíveis para o atendimento aos clientes C conjunto de vértices representando o depósito base e os clientes a serem atendidos n número de clientes a serem atendidos no problema c i C, 1 i n clientes a serem atendidos no problema c 0 e c n+1 depósito base onde os veículos devem iniciar (c 0 ) e terminar (c n+1 ) suas rotas q ci demanda do cliente c i C s ci tempo de serviço que será despendido no atendimento ao cliente c i C A conjunto de arestas representando os caminhos entre os elementos do problema (c i, c j ) caminho entre os vértices c i e c j, {c i, c j } C d ci c j distância entre os vértices c i e c j, {c i, c j } C t ci c j tempo de viagem entre os vértices c i e c j, {c i, c j } C, igual a d ci c j a ci abertura dos serviços no cliente c i C f ci fechamento dos serviços no cliente c i C h ci v i momento em que o veículo v i V começa o atendimento ao cliente c i C x ci c j v i variável de decisão que determina se o veículo v i V faz o percurso entre os clientes c i e c j, {c i, c j } C, recebendo o valor 1, se verdadeira, e 0 em caso contrário. K variável auxiliar de valor suficientemente grande para garantir a efetividade de uma restrição apenas em alguns casos desejados A formulação matemática proposta é apresentada a seguir. A função objetivo (1) minimiza a distância total percorrida pelos veículos no atendimento a todos os clientes. Nesse ponto, cabe uma ressalva a respeito do número de veículos utilizados na solução do problema. Muitos estudos tratando o PRVJT priorizam a minimização do número de veículos utilizados. Neste trabalho, entretanto, foi priorizada a minimização da distância total percorrida visto que a maior parte dos custos envolvidos no problema é reflexo dessa distância como combustível, motoristas, manutenção dos veículos, etc. Além do mais, a longo prazo, o custo de um veículo a mais na frota de uma grande empresa pode ser ínfimo perto dos custos operacionais envolvidos na distância total percorrida diariamente por toda a frota. min d ci c j x ci c j v i (1) v i V c i C c j C A restrição (2) garante que cada cliente será atendido por um único veículo, isto é, impede que seja feita mais de uma visita a ele impossibilitando a divisão de sua demanda entre dois ou mais veículos da frota. Já a restrição (3) cuida para que a capacidade de cada veículo seja respeitada não permitindo o atendimento a clientes cujas demandas totalizem uma carga superior a Q. x ci c j v i = 1, c i C (2) v i V c j C q ci c i C c j C x ci c j v i Q, v i V (3) O conjunto de restrições (4), (5) e (6), por sua vez, disciplina o movimento dos veículos do início ao fim de suas rotas. Enquanto as restrições (4) e (5), respectivamente, asseguram que todos os veículos começarão e terminarão as suas rotas no depósito base, a restrição (6) indica a continuidade das rotas, ou seja, se um veículo chega a um dado cliente, ele deve sair do mesmo para atingir o seguinte, até que conclua sua rota perfazendo todos os trechos entre seus clientes. 825

x c0 c j v i = 1, v i V (4) c j C x ci c n+1 v i = 1, v i V (5) c i C x ci c h v i x ch c j v i = 0, c h C, v i V (6) c i C c j C As restrições de tempo são tratadas pelas equações (7) e (8) que lidam com o início e o fim das janelas de tempo, respectivamente. A restrição (7) afirma que o início do atendimento a um cliente nunca ocorrerá antes do início do atendimento ao cliente anterior somado ao tempo de serviço despendido nesse e o tempo de viagem entre ambos. Nessa restrição, lança-se mão da variável K que deve ser suficientemente grande para fazer com que tal restrição só tenha efeito quando o veículo v i de fato percorre o trecho (c i, c j ). E a restrição (8) faz com que o fim das janelas de tempo seja respeitado uma vez que limita o início do atendimento a um cliente ao intervalo entre a abertura e o fechamento dos serviços no mesmo. h ci v i + s ci + t ci c j K(1 x ci c j v i ) h cj v i, c i, c j C, v i V (7) a ci h ci v i f ci, c i C, v i V (8) Por fim, a restrição (9) indica que a variável x ci c j v i é binária garantindo a integralidade das demais variáveis do problema. x ci c j v i {0, 1}, c i, c j C, v i V (9) A solução do modelo consiste do conjunto de rotas que deve ser traçada pela frota disponível de modo a satisfazer totalmente a demanda de todos os clientes envolvidos. O grande desafio é definir essas rotas fazendo com que os veículos percorram a menor distância possível sem desrespeitar, é claro, nenhuma restrição apresentada. Como dito anteriormente, o PRVJT é um problema complexo de otimização combinatória da classe dos problemas NP-difíceis. Isso implica em um altíssimo custo computacional para a obtenção de uma solução, uma vez que o espaço de busca dos problemas dessa classe não pode ser totalmente explorado em tempo hábil. Nesse cenário as heurísticas aparecem como uma alternativa natural de se obter boas soluções para o PRVJT em um tempo viável. 4. Trabalhos Relacionados O Problema de Roteamento de Veículos com Janelas de Tempo é um clássico problema da computação e há muito tempo vem sendo estudado por pesquisadores de todo o mundo. Muitos trabalhos já foram publicados apresentando soluções para o problema que usam desde algoritmos exatos até heurísticas e meta-heurísticas. 826

Por se tratar de um problema da classe dos problemas NP-difíceis [Larsen 1999], a natureza e complexidade do PRVJT levam a uma explosão combinatória de possibilidades para avaliação de todas as alternativas na busca da melhor solução possível de modo que, na prática, os algoritmos exatos sejam potencialmente incapazes de resolver o problema. Algumas tentativas foram feitas ao longo do tempo e, dentre os métodos exatos, os resultados mais efetivos na resolução do PRVJT têm sido encontrados utilizando um dos seguintes métodos: geração de colunas, relaxação lagrangeana, muitas vezes combinadas às modernas técnicas de planos de corte, tais como branch-and-cut [Bard et al. 2002], branch-and-price e branch-and-cutand-price [Fukasawa et al. 2004]. Entretanto, o uso de tais técnicas não invalida o que já foi afirmado anteriormente. Mesmo com elas, os algoritmos exatos só funcionam bem para instâncias de tamanho muito reduzido, restringindo a sua aplicabilidade a casos bem específicos. Assim, a tendência natural é que na solução do PRVJT sejam implementados algoritmos baseados em heurísticas e meta-heurísticas, que não garantem a solução ótima, mas que geram boas soluções em tempos aceitáveis. No campo das heurísticas, inúmeros trabalhos já foram desenvolvidos. A maioria deles, segundo [Leong and Liu 2006], resolvem o PRVJT em dois estágios distintos: primeiramente se encontra uma solução inicial para que a partir dela seja aplicado um algoritmo de refinamento. Comumente, o algoritmo Push- Forward Insertion Heuristic (PFIH), introduzido em [Solomon 1987], é usado na primeira etapa desta busca, independente do método de refinamento empregado posteriormente. Nesse trabalho, foi exatamente esta, a heurística usada na busca por uma boa solução inicial, para que então fosse possível elaborar um bom algoritmo na melhoria dessa primeira solução encontrada. O PFIH é um eficiente método, proposto por Solomon, que utiliza a inserção de clientes de modo a formar as rotas de uma solução para o problema de roteamento. Podem-se encontrar na literatura muitos trabalhos que alteram o método PFIH para oferecer variabilidade ao algoritmo. Alguns trabalhos fazem pequenas mudanças no algoritmo de modo a gerar alterações na ordem em que os clientes serão inseridos nas rotas como, por exemplo, [Braysy et al. 2004], [Oliveira et al. 2005a] e [Oliveira et al. 2005b]. Outros, como [Riise and StØlevik 1999] e [Alvarenga 2005], desconsideram completamente a ordem de inserção proposta no PFIH e escolhem aleatoriamente clientes para inserção em indivíduo de um Algoritmo Genético. E há ainda trabalhos como o [Thangiah and Osman 1994] que utilizam uma alteração do PFIH na busca de uma solução inicial para um sistema híbrido composto de várias meta-heurísticas. Por fim, deve-se destacar os trabalhos que utilizam meta-heurísticas em alguma etapa de suas buscas, já que essa é a característica da maioria dos bem sucedidos trabalhos na pesquisa por soluções para o PRVJT [Oliveira 2005]. Nesse campo existem trabalhos em várias vertentes: alguns se baseiam na Busca Local Guiada (BLG) [Kilby et al. 1999], outros na Busca Local Acelerada (BLA) [Riise and StØlevik 1999] e há também os que combinam a BLG com Busca Tabu (BT) [Backer et al. 2000]. Mais originalmente, se encontram ainda trabalhos que se baseiam na composição de um Algoritmo Genético com a Estratégia da Geração de Coluna [Alvarenga 2005] ou em sitemas híbridos que mesclam métodos como Recozimento Simulado Não Monotônico (RSNM), Reinício Aleatório (RA) e Subida na Encosta (SE), ou Hill Climbing em inglês. [Oliveira 2005]. No presente trabalho foi usado o PFIH no primeiro estágio da busca e a partir da solução inicial encontrada foi implementado um refinamento através de seguidas retiradas e reinserções de parte dos clientes de cada rota. Os dois estágios desse algoritmo serão apresentados de maneira detalhada na seção a seguir. 5. Algoritmo Para facilitar a compreensão, as duas fases do algoritmo proposto serão explicadas separadamente. A primeira fase é a simples aplicação do PFIH na busca da solução inicial para o problema, e a segunda fase é o refinamento dessa através da variação aplicada nas rotas que reduz significativamente a distância total que a frota percorreria na solução inicial gerada. A linguagem escolhida na implementação do algoritmo proposto 827

foi a linguagem C++. 5.1. Push-Forward Insertion Heuristic (PFIH) O Push-Forward Insertion Heuristic é uma heurística utilizada em inúmeros problemas que trabalham com permutação de elementos sem repetições, sendo aplicada nesses como uma busca gulosa. Atribuindo um custo para cada cliente do PRVJT, [Solomon 1987] propôs uma adaptação, fazendo do PFIH uma heurística que gera uma solução para o PRVJT através da inserção dos clientes, um a um, em suas rotas. No PFIH, primeiramente define-se uma ordem de inserção dos clientes. A partir daí, para cada um dos clientes são testadas todas as opções possíveis de inserção até que se encontre a melhor rota e posição, que respeite as restrições de tempo e capacidade, onde ele deve ser inserido. No caso de não existir, até então, posição viável para a sua inserção em nenhuma rota já existente, uma nova deve ser criada especialmente para inserí-lo. A seguir, um pseudo-código do algoritmo é mostrado (algoritmo 1) e explicações detalhadas são tecidas linha a linha. Algoritmo 1 Push-Foward Insertion Heuristic Entrada: Grafo, Janelas de Tempo e Demanda dos Clientes, Capacidade dos Veículos 1: Calcule o custo PFIH de cada cliente com a função (10) mostrada 2: Ordene os clientes de modo crescente de acordo com o seu custo PFIH 3: Inicialize uma solução inicial vazia, isto é, ainda sem rotas 4: enquanto (houver algum cliente que nao está alocado em nenhuma rota) faça 5: Selecione na lista ordenada o cliente c x ainda não alocado de menor custo para ser inserido na solução 6: Percorra todas as rotas já presentes na solução e em cada uma dessas considere todas as suas arestas (c i, c j ) verificando a possibilidade de inserir o cliente c x entre c i e c j 7: Testadas todas as posições de inserção possíveis em cada uma das rotas, dentre aquelas que respeitam as restrições de tempo e capacidade, escolha aquela de menor custo em termos de aumento na distância total percorrida 8: Caso a rota e a posição de inserção tenham sido definidas, insira ali o cliente em questão e atualize a capacidade daquela rota 9: Caso contrário, se não existir em nenhuma rota uma posição que respeite as restrições de tempo e capacidade, uma nova rota deve ser criada a fim de atender o cliente atual que se deseja inserir 10: fim enquanto Como visto, o primeiro passo é definir uma ordem indicando o momento em que cada cliente deve ser inserido (1). Essa ordem é definida atribuindo-se a cada cliente um custo que relaciona o último instante em que esse pode ser atendido com a distância e o ângulo entre ele e seu depósito base. Uma vez calculados os custos de todos os clientes, estes são ordenados para a inserção de maneira crescente (2), ou seja, quanto menor o custo de um cliente, mais rápido ele deve ser inserido na solução, já que se espera que esse seja o que vai aumentar menos a distância da atual solução. A função que calcula o custo de um cliente c i C é mostrada a seguir: custo de c i = αd c0 c i + βf ci + γ((p ci /360)d c0 c i ) (10) onde, p ci é o ângulo de coordenada polar daquele cliente e os pesos α, β, e γ recebem, respectivamente, os valores 0.7, 0.1 e 0.2, definidos empiricamente. Definida a ordem de inserção dos clientes, é declarada uma solução inicial ainda sem rotas para o problema (3), onde todos os clientes vão sendo inseridos um a um. Esse processo começa com a inserção do primeiro cliente, quando é criada a primeira rota da solução que o tem como único cliente a ser atendido. A partir daí os demais clientes, cada um na sua vez, vão sendo inseridos nas melhores posições e rotas, desde 828

que essas respeitem todas as restrições impostas (5-8). Caso não exista nenhuma posição em nenhuma rota onde seja possível a inserção de um dado cliente sem desrespeitar nenhuma restrição, uma nova rota com aquele cliente deve ser criada na solução (9). O modo como é testado se a inserção de um cliente respeita a todas as restrições ou não, dá nome à heurística e merece uma explicação mais cautelosa. Na tentativa de inserção de um cliente em uma dada rota, primeiramente, é verificada a restrição de capacidade, isto é, se o veículo responsável pela rota em questão pode atender à demanda daquele cliente sem exceder sua carga máxima permitida. Respeitada a capacidade do veículo, é hora de verificar se a inserção do cliente em uma dada posição da rota não infringirá a restrição de tempo imposta pelas janelas de tempo de cada um dos clientes. Para que isso possa ser feito, a inserção é realizada hipoteticamente e então, de acordo com o tempo de serviço despendido pelo veículo no atendimento aos clientes e o tempo de viagem gasto entre esses, verifica-se se aquela inserção respeita a janela de tempo de todos os clientes a serem atendidos. Justamente, por requerer a verificação da janela de tempo de todos os clientes a frente da posição de inserção é que esse método recebe o nome de push-forward insertion. Dentre todas as posições de todas as rotas que respeitam as restrições de capacidade e tempo, a melhor, onde o cliente é inserido, é aquela que menos aumentar a distância total percorrida pela frota. 5.2. Retiradas e Reinserções de Clientes na Solução Inicial Como já foi dito, a variação aplicada ao PFIH nesse trabalho se trata da retirada de uma parte dos clientes de cada rota da solução inicial seguida da reinserção desses, possivelmente, em rotas e posições diferentes. Sugerida inicialmente em [Oliveira et al. 2006], aqui tal variação apresenta novos parâmetros como a porcentagem de clientes a serem realocados em cada rota. Foram realizados dois tipos de refinamento variando a ordem em que os clientes retirados são reinseridos: primeiramente foi testada a reinserção baseada novamente na ordem crescente do custo PFIH de cada usuário e, em seguida, a reinserção aleatória, realocando os clientes na mesma ordem em que eles foram retirados. O algoritmo em pseudo-código (algoritmo 2) detalhando como são feitas as retiradas e reinserções de clientes é apresentado na página a seguir e, abaixo, são dadas as explicações a respeito do mesmo, necessárias para a sua completa compreensão. A variação proposta é aplicada diversas vezes sobre a solução até que seja realizada um número X de vezes sem obter nenhuma melhoria na solução (5). O percentual de clientes retirados de cada rota varia entre os valores 40%, 50%, 60%, 70% e 80%, já que são as frações que refletirão alterações mais significativas na solução (4). Esse percentual de clientes é então retirado e reinserido em cada uma das rotas em uma ordem determinada: crescente usando o custo PFIH (9-11) ou na mesma ordem em que foram retirados (6-8). Essa reinserção é feita exatamente da mesma maneira como é feita a inserção no PFIH, isto é, ou o cliente será alocado na melhor rota e posição viável para ele, ou uma nova rota deverá ser criada. A solução só é atualizada quando a variação aplicada obteve sucesso melhorando a mesma (13-14). Após as X iterações sem sucesso nas variações testadas, a melhor solução encontrada é atualizada, caso tenha evoluído (21), e o processo é repetido para essa solução (22). Tudo isso é repetido até que por três vezes consecutivas as X tentativas de melhoria não tenham refletido melhoria alguma na solução (3). Empiricamente, foi percebido que 300 seria um valor bom e grande o suficiente para esse X. Foram testados valores variando de 50 até 1000 e pôde ser visto que valores acima desse, normalmente, resultam em melhorias pequenas e aumento significativo no tempo de execução não tendo assim o seu uso justificado. A objetivo principal dessas reinserções é corrigir algumas imperfeições nas rotas geradas pela simples aplicação do PFIH. A idéia é que, alterando as rotas e as posições dos clientes, se possa encaixar melhor cada um desses em sua rota e, dessa maneira, minimizar o trajeto e o tempo de espera da frota como um todo. 829

Algoritmo 2 Improving PFIH Entrada: Solução Inicial, Grafo, Janelas de Tempo e Demanda dos Clientes, Capacidade dos Veículos 1: VARIACOES SEM SUCESSO = 0, ITERACOES SEM MELHORIA = 0 2: MELHOR SOLUCAO = SOLUCAO INICIAL 3: enquanto (ITERACOES SEM MELHORIA < 3) faça 4: para percentual = 0.4 to 0.8 faça 5: enquanto (VARIACOES SEM SUCESSO < 300) faça 6: se será testada a retirada e reinserção aleatória então 7: De modo aleatório, retire em cada rota da solução o percentual definido de clientes 8: Na mesma ordem em que foram retirados, reinsira todos os clientes exatamente da mesma forma que eles são inseridos no PFIH 9: senão 10: Escolhendo os clientes de menor custo PFIH, retire em cada rota da solução o percentual definido de clientes 11: Respeitando a ordem crescente do custo PFIH, reinsira todos os clientes exatamente da mesma forma que eles são inseridos no PFIH 12: fim se 13: se NOVA SOLUCAO é melhor que MELHOR SOLUCAO então 14: Atualize MELHOR SOLUCAO 15: VARIACOES SEM SUCESSO = 0; 16: senão 17: VARIACOES SEM SUCESSO++; 18: fim se 19: fim enquanto 20: fim para 21: se MELHOR SOLUCAO é melhor que SOLUCAO INICIAL então 22: Atualize SOLUCAO INICIAL 23: ITERACOES SEM MELHORIA = 0; 24: senão 25: ITERACOES SEM MELHORIA++; 26: fim se 27: fim enquanto 6. Resultados Computacionais Para avaliar o algoritmo implementado, foram considerados 56 ambientes diferentes com 100 clientes a serem atendidos e um único depósito base. Esses 56 ambientes integram uma base de dados conhecida como instâncias de Solomon [Solomon 1987], e se diferenciam em relação ao posicionamento geográfico dos clientes e depósitos, à demanda, tempo de serviço empregado e janela de tempo de cada cliente, ao número de veículos disponíveis e à capacidade máxima desses. A escolha dessas instâncias se deve ao fato de existirem muitas publicações que as utilizam possibilitando, portanto, uma fácil e procedente comparação. As instâncias de solomon são divididas em seis grupos diferentes: C1 e C2 que apresentam os clientes aglomerados geograficamente, R1 e R2 que apresentam os clientes dispostos de forma aleatória e RC1 e RC2 que são uma mescla das características dos dois outros grupos apresentando ao mesmo tempo clientes aglomerados em grupos e esparsos dispostos aleatoriamente. Os grupos cujos nomes terminam com o número 1 ainda tem como característica o fato de apresentarem configurações que necessitam de um grande número de veículos para atender à demanda de todos os clientes, enquanto os grupos com nomes terminados em 2, apresentam ambientes favoráveis a frotas pequenas, uma vez que um mesmo veículo é capaz de visitar diversos clientes. As 56 instâncias de solomon podem ser encontradas no seguinte endereço: http://www.dcc.ufmg.br/ gomide/instancias/solomon.zip. A seguir são apresentados, para cada instância, os resultados alcançados pelo algoritmo proposto ao lado dos melhores resultados conhecidos até então. Esses melhores resultados conhecidos têm autoria 830

dividida entre diversos autores e todas elas podem ser encontrada num conjunto de seis trabalhos, quais sejam [Alvarenga 2004], [Alvarenga 2005], [Laporte and Mercier 2000], [Jung and Moon 2002], [Oliveira et al. 2007] e [Rouchat and Taillard 1995]. Para se chegar a estes resultados, o algoritmo foi executado três vezes sobre cada um das 56 instâncias e os melhores resultados foram considerados. Cada tabela é referente a um dos seis grupos das instâncias de Solomon e apresenta 3 colunas referentes a cada instância. A primeira coluna reporta a melhor solução até então conhecida, mostrando o número de veículos usados e a distância total percorrida. E a segunda e terceira colunas apresentam, respectivamente, as soluções encontradas pelo algoritmo aqui proposto usando retirada e reinserção aleatória, ou com a variação obedecendo a ordem crescente do custo PFIH dos clientes. A terceira coluna informa ainda o gap entre as soluções ótimas conhecidas para o problema e as melhores soluções aqui encontradas. Tabela 1. Resultado Final dos Algoritmos para o Grupo de Instâncias C1 e C2 Ótimo Var. em Ordem Var. Aleatória Inst NV Dist NV Dist NV Dist Gap C101 10 828.94 10 828.94 10 828.94 0.00 * C102 10 828.94 10 1099.45 10 828.94 0.00 * C103 10 828.06 10 1172.40 10 848.43 0.02 C104 10 824.78 10 1120.82 10 824.78 0.00 * C105 10 828.94 11 870.93 11 848.94 0.02 C106 10 828.94 11 946.81 11 849.30 0.02 C107 10 828.94 11 949.46 11 848.94 0.02 C108 10 828.94 11 1015.44 11 848.94 0.02 C109 10 828.94 11 966.85 11 848.94 0.02 TOTAL 90 7455.42 95 8971.10 95 7576.15 0.02 Ótimo Var. em Ordem Var. Aleatória Inst NV Dist NV Dist NV Dist Gap C201 3 591.56 3 623.57 3 591.56 0.00 * C202 3 591.56 3 621.11 3 591.56 0.00 * C203 3 591.17 3 720.68 3 591.17 0.00 * C204 3 590.60 4 777.11 4 604.30 0.02 C205 3 588.88 3 639.44 3 588.88 0.00 * C206 3 588.49 4 779.83 4 604.87 0.03 C207 3 588.29 3 630.21 3 588.29 0.00 * C208 3 588.32 4 752.38 4 604.70 0.03 TOTAL 24 4718.87 27 5544.33 27 4765.33 0.01 Tabela 2. Resultado Final dos Algoritmos para o Grupo de Instâncias R1 e R2 Ótimo Var. em Ordem Var. Aleatória Inst NV Dist NV Dist NV Dist Gap R101 20 1642.88 21 1765.52 21 1652.48 0.01 R102 18 1472.62 20 1589.45 20 1494.45 0.01 R103 14 1213.62 14 1369.99 14 1221.38 0.01 R104 11 976.61 12 1257.00 12 1013.31 0.04 R105 13 1360.78 17 1539.92 17 1382.36 0.02 R106 13 1239.37 15 1410.42 15 1275.60 0.03 R107 11 1073.34 12 1316.93 12 1099.93 0.02 R108 10 948.57 14 1216.18 14 1003.08 0.06 R109 13 1101.84 17 1498.53 17 1213.89 0.10 R110 12 1072.41 16 1318.76 16 1152.75 0.07 R111 12 1053.50 13 1363.14 13 1092.29 0.04 R112 10 953.63 14 1210.37 14 1008.72 0.06 TOTAL 157 14110.27 185 16856.21 185 14610.24 0.04 Ótimo Var. em Ordem Var. Aleatória Inst NV Dist NV Dist NV Dist Gap R201 8 1147.80 6 1269.76 6 1181.54 0.03 R202 8 1034.35 5 1215.84 5 1052.12 0.02 R203 6 874.87 3 1161.97 3 889.70 0.02 R204 5 735.80 3 863.99 3 737.43 0.00 R205 5 954.16 4 1116.91 4 961.81 0.01 R206 5 879.89 4 1095.81 4 893.74 0.02 R207 4 797.99 3 1038.23 3 812.15 0.02 R208 4 705.45 3 831.98 3 717.80 0.02 R209 5 859.39 4 1040.14 4 870.86 0.01 R210 5 910.70 3 1215.41 3 924.82 0.02 R211 4 755.82 3 924.13 3 761.26 0.01 TOTAL 59 9656.22 41 11774.17 41 9803.23 0.02 Tabela 3. Resultado Final dos Algoritmos para o Grupo de Instâncias RC1 e RC2 Ótimo Var. em Ordem Var. Aleatória Inst NV Dist NV Dist NV Dist Gap RC101 15 1623.58 18 1945.93 18 1682.93 0.04 RC102 14 1461.23 16 1727.59 16 1513.80 0.04 RC103 11 1249.86 13 1549.52 13 1309.08 0.05 RC104 10 1135.48 15 1460.46 15 1226.41 0.08 RC105 16 1518.58 17 1805.03 17 1556.06 0.02 RC106 13 1377.00 16 1660.02 16 1450.14 0.05 RC107 12 1212.83 15 1604.20 15 1307.74 0.08 RC108 11 1117.53 15 1624.32 15 1230.33 0.10 TOTAL 102 10696.09 125 13377.07 125 11276.49 0.05 Ótimo Var. em Ordem Var. Aleatória Inst NV Dist NV Dist NV Dist Gap RC201 9 1265.56 5 1584.16 5 1314.72 0.04 RC202 8 1095.64 5 1406.94 5 1130.50 0.03 RC203 5 926.89 4 1236.97 4 939.60 0.01 RC204 4 786.38 4 930.27 4 794.63 0.01 RC205 7 1157.55 5 1636.93 5 1159.45 0.00 RC206 7 1054.61 5 1274.77 5 1087.77 0.03 RC207 6 966.08 4 1196.35 4 985.11 0.02 RC208 4 778.93 4 1015.81 4 800.40 0.03 Total 50 8031.64 36 10282.20 36 8212.18 0.02 Analisando os resultados, pode ser notado que o algoritmo com retirada e reinserção aleatória se saiu muito bem, alcançando os mesmos resultados das melhores soluções já conhecidas em 8 instâncias (destacadas com *) e resultados bem próximos nas demais instâncias, tendo gap máximo de 0.10. 831

Apesar desse estudo ter como finalidade a minimização da distância total percorrida, vale a pena nesse ponto, observar também o número de veículos utilizados em cada uma das instâncias. É interessante observar que, mesmo não sendo considerado, em algumas instâncias, esse número é igual ou até menor que nas soluções que apresentam as melhores distâncias conhecidas. Os casos que mais chamam atenção são os grupos R2 e RC2, onde as distâncias percorridas nas soluções aqui encontradas se aproximam bastante da melhor distância conhecida utilizando sempre frotas menores ou iguais que as usadas nas demais soluções. Os testes foram realizados em processadores Pentium 4 HT 3.00GHz, no ambiente Linux. O tempo de execução do algoritmo com retirada e reinserção de clientes aleatória, que atingiu os melhores resultados, apresentou uma duração média de 76 minutos por instância, variando entre 18 (instância C101) e 97 minutos (instância RC205). Um resumo final de todos os resultados apresentados pode ser visto na tabela abaixo. Tabela 4. Resumo Geral dos Algoritmos para Todas as 56 Instâncias Testadas Ótimo Conhecido PFIH Variação em Ordem Variação Aleatória Inst NV Dist NV Dist Gap NV Dist Gap NV Dist Gap TOTAL GERAL 482 54668.51 509 87455.79 0.37 509 66805.08 0.18 509 56243.62 0.03 7. Conclusões e Trabalhos Futuros A alta complexidade do Problema de Roteamento de Veículos com Janelas de Tempo (que se encaixa na classe de problemas NP-difícies) sugere que, como alternativa aos algoritmos exatos, heurísticas sejam desenvolvidas. Nesse trabalho é testada uma variação do PFIH para resolver este problema. Apostando em diversas retiradas e reinserções de uma porcentagem variável dos clientes de cada rota, o algoritmo visa o refinamento da solução inicial gerada pelo PFIH à medida que reinsere esses clientes em rotas e posições mais favoráveis. A finalidade principal, controlada pela função objetivo, é a minimização da distância total percorrida pela frota, e as demais funções cuidam para que todas as restrições do problema, tais como tempo e capacidade, sejam respeitadas. Conforme foi mostrado o algoritmo implementado alcança bons resultados, um vez que atinge ou chega bem perto dos melhores resultados até então conhecidos em um tempo aceitável, apresentando um gap máximo de 0.10. Esse trabalho, de fato, se trata do início de um estudo mais amplo sobre o Problema do Roteamento de Veículos como um todo. Como trabalhos futuros pretende-se testar outras meta-heurísticas, usando estratégias como GRASP, Busca Tabu e a Geração de Colunas, a fim de melhorar os resultados até aqui obtidos. E futuramente, se espera usar os melhores resultados gerados para o PRVJT como uma solução inicial para o Problema de Roteamento Dinâmico de Veículos. Referências Alvarenga, G. B. (2004). A two-phase genetic and set partitioning approach for the vehicle routing problem with time windows. Fourth International Conference on Hybrid Intelligent Systems (HIS04), IEEE Computer Society Press. Alvarenga, G. B. (2005). Um algoritmo híbrido para os problemas de roteamento de veículos estático e dinâmico com janela de tempo. Tese de Doutorado, Departamento de Ciência da Computação, Universidade Federal de Minas Gerais, Belo Horizonte, Brasil. Backer, B. D., Furnon, V., Kilby, P., Prosser, P., and Shaw, P. (2000). Solving vehicle routing problems using constraint programming and metaheuristics. Journal of Heuristics, 6(4):501 523. Bard, J. F., Kontoravdis, G., and Yu, G. (2002). A branch-and-cut procedure for the vehicle routing problem with time windows. Transportation Science, 36(2):250 269. 832

Braysy, Olli, Hasle, Geir, Dullaert, and Wout (2004). A multi-start local search algorithm for the vehicle routing problem with time windows. European Journal of Operational Research, 127(3):586 605. Fukasawa, R., Lysgaard, J., Aragão, M. P., Reis, M., Uchoa, E., and Werneck, R. F. F. (2004). Robust branchand-cut-and-price for the capacitated vehicle routing problem. In Nemhauser, G. L. and Bienstock, D., editors, IPCO, volume 3064 of Lecture Notes in Computer Science, pages 1 15. Springer. Jung, S. and Moon, B.-R. (2002). A hybrid genetic algorithm for the vehicle routing problem with time windows. Proc. Genetic Evolutionary Comput. Conf.: 1309-1316, Morgan Kaufmann, San Francisco. Kilby, P., Prosser, P., and Shaw, P. (1999). In meta heurstics: advances and trends in local search paradigms for optimisation. Guided Local Search for the Vehicle Routing Problem with time windows: 473-486, Kluwer Academic Publishers. Laporte, F. C. G. and Mercier, A. (2000). A unified tabu search heuristic for vehicle routing problems with time windows. Working Paper CRT-00-03., Centre for Research on Transportation. Montreal, Canada. Larsen, J. (1999). Parallelization of the Vehicle Routing Problem with Time Windows. PhD thesis, Informatics and Mathematical Modelling, Technical University of Denmark, DTU, Richard Petersens Plads, Building 321, DK-2800 Kgs. Lyngby. Leong, H. W. and Liu, M. (2006). A multi-agent algorithm for vehicle routing problem with time window. In SAC 06: Proceedings of the 2006 ACM symposium on Applied computing, pages 106 111, New York, NY, USA. ACM. Longo, H. J. (2004). Técnicas para programação inteira e aplicações em problemas de roteamento de veiculos. PhD thesis, Pontifícia Universidade Católica do Rio de Janeiro. Oliveira, H. C. B. (2005). Um Modelo Híbrido Estocástico para Tratamento do Problema de Roteamento de Veículos com Janela de Tempo. PhD thesis, Universidade Federal de Pernambuco. Oliveira, H. C. B., Alvarenga, G. B., and Vasconcelos, G. C. (2005a). Algoritmo evolutivo no tratamento do problema de roteamento de veículos com janela de tempo. I EPOMAC - I Encontro Norte Nordeste de Pesquisa Operacional. UFAL, Maceió, Alagoas, page 1. Oliveira, H. C. B., Vasconcelos, G. C., and Alvarenga, G. B. (2005b). Uma abordagem evolucionária para o problema de roteamento de veículos com janela de tempo. XXXVII Simpósio Brasileiro de Pesquisa Operacional. Gramado, Rio Grande do Sul, pages 1828 1839. Oliveira, H. C. B., Vasconcelos, G. C., and Alvarenga, G. B. (2006). Reducing traveled distance in the vehicle routing problem with time windows using a multi-start simulated annealing. In IJCNN 06 - International Joint Conference on Neural Networks. IEEE Computer Society Press. Oliveira, H. C. B., Vasconcelos, G. C., Guilherme Bastos Alvarenga, R. V. M., and Souza, M. M. (2007). A robust method for the vrptw with multi-start simulated annealing and statistical analysis. pages 198 205. Riise, A. and StØlevik, M. (1999). Implementation of guided local search for the vehicle routing problem. In SINTEF Internal report STF42 A99013, SINTEF Applied Mathematics. Norway. Rouchat, Y. and Taillard, E. D. (1995). Probabilistic diversification and intensification in local search for vehicle routing. Journal of Heuristics, 1:147 167. Solomon, M. M. (1987). Algorithms for the vehicle routing and scheduling problems with time window constraints. Oper. Res., 35(2):254 265. Thangiah, S. R. and Osman, I. H. (1994). Hybrid genetic algorithm simulated annealing and tabu search methods for vehicle routing problem with time windows. Technical Report 27. Computer Science Department, Slippery Rock University. 833