Você está na página 1de 86

 

 
 
 
 
Construção de uma Metaheurística de Optimização de 
Rotas de Veículos 
Aplicação na Indústria de Distribuição 
 
 

André Filipe Maio Guerreiro 
 
 

Dissertação para obtenção do Grau de Mestre em 

Engenharia e Gestão Industrial 
 

Júri 
Presidente: Prof. Luis Antonio Tadeu dos Santos Almeida 
Orientador: Profª Susana Isabel Carvalho Relvas 
Vogais:   Prof.ª Ana Paula Ferreira Dias Barbosa Povoa 
  Prof. Carlos Manuel Ferreira Monteiro   
  Eng.º Francisco Augusto Damião de Carvalho Matos Figueiredo 
 
Dezembro de 2009

 
 
Resumo 
 
 

Nesta dissertação é apresentada uma aplicação de um problema de estabelecimento de rotas de veículos a 
um caso real de uma empresa de distribuição. Pretende‐se utilizar um método aproximado de optimização 
combinatória  baseado  numa  heurística  orientada  por  um  conjunto  de  regras  hierarquicamente  superior  – 
uma metaheurística – para obtenção de resultados práticos e posterior comparação com o planeamento real 
utilizado no dia‐a‐dia da empresa. 

A variante do problema é designada na literatura por Heterogeneous Fleet Vehicle Routing Problem with Time 
Windows  and  Split  Deliveries  (HFVRPTWSD).  O  objectivo  é,  tendo  em  conta  as  restrições  do  problema, 
elaborar  um  conjunto  de  rotas  que  minimize  a  distância  percorrida,  o  número  de  veículos  utilizados  e  o 
tempo  de  viagem  necessários  para  satisfazer  os  pedidos  de  todos  os  clientes  para  o  horizonte  temporal 
estabelecido. 

Entre estas, destacam‐se as restrições de capacidade e acessibilidade da frota heterogénea de veículos e a 
calendarização  das  visitas  aos  clientes  segundo  janelas  temporais  de  entrega.  Sempre  que  isso  causar  uma 
melhoria  na  qualidade  da  solução  obtida  permite‐se  a  divisão  de  carga,  o  que  constitui  uma  relaxação  do 
problema original.  

Além da comparação com o planeamento real, são comparados os resultados com os obtidos por um método 
de  resolução  exacto  aplicado  a  um  sub‐problema  de  dimensão  menor,  permitindo  assim  medir  o  desvio 
relativo da função objectivo face à solução óptima para posteriormente se aplicar o algoritmo implementado 
ao problema na sua generalidade. 

 
 
 
 
 
 
Palavras‐chave 
 
Planeamento de rotas de veículos, entregas fraccionadas, janelas temporais, frota heterogénea, optimização 
combinatória, metaheurísticas, Tabu Search. 

 

 
Abstract 
 
 

In this paper, it is evaluated a vehicle routing problem model applied to a real case of a distribution company. 
A combinatorial optimization method was implemented based on a rule‐guided heuristic – a metaheuristic – 
in order to obtain practical results and to compare them with the real plan used daily by the company. 

The  problem’s  extension  is  referred  in  the literature  as  Heterogeneous Fleet  Vehicle  Routing  Problem  with 
Time Windows and Split Deliveries (HFVRPTWSD). The objective is to  minimize the total travelled  distance, 
the  necessary  number  of  vehicles  and  the  sum  of  travel  time  through the  establishment  of  a  set  of  routes 
between  all  clients  and  a  central  depot  for  the  time  horizon.  The  main  purpose  is  to  satisfy  all  clients’ 
requests while complying with a visit schedule.  

A  number  of constraints  define  the problem  working  environment,  with  special  attention  to  time  windows 
constraints, truck capacity and accessibility constraints. A relaxation of the original problem – split delivery – 
is allowed whenever it improves the solution. 

The  output  provided  by  an  implementation  of  a  VRP‐solving  algorithm  will  be  compared  with  the  results 
obtained from an exact method applied to a smaller part of the problem. After comparison with the global 
optimum, we may capture the algorithm’s power and therefore apply it to the overall problem. 

 
 
 
 
 
 
 
 
Keywords 
 
Vehicle  routing  problem,  split  deliveries,  time  windows,  heterogeneous  fleet,  combinatorial  optimization, 
metaheuristics, Tabu Search. 

ii 

 
Agradecimentos 

 
 

À Professora Susana Relvas, orientadora desta Dissertação, pelo seu apoio e incentivo ao longo da 
realização deste trabalho. 

À Professora Ana Póvoa pela ajuda na escolha do tema, que se revelou acertado. 

Aos professores João Rasga e Pavel Calado por me incutirem o gosto pela programação. 

Ao  Engenheiro  Francisco  Figueiredo  e  à  colega  Cátia  Henriques  pela  disponibilidade  total  e  pela 
atenção dispensada nas visitas realizadas às instalações da Jerónimo Martins. 

Dedico  este  trabalho  aos  meus  pais  e  à  minha  namorada  Ariadne,  pelo  incentivo  e  motivação 
incomensuráveis na persecução dos meus objectivos. 

 
 
 
 
 
 
 
 

iii 

 
Índice

Capítulo 1 ‐ Introdução ................................................................................................................................ 1 
Capítulo 2 ‐ Apresentação do Caso de Estudo ............................................................................................ 4 
2.1 Centros de distribuição .................................................................................................................................. 5 
2.2 Lojas................................................................................................................................................................ 6 
2.3 Veículos de transporte.................................................................................................................................... 7 

Capítulo 3 ‐ Estado da arte – Vehicle Routing Problems........................................................................... 10 
3.1 Elementos constituintes do VRP ................................................................................................................... 10 

3.1.1 Função objectivo ............................................................................................................................. 11 
3.1.2 Restrições ........................................................................................................................................ 11 
3.1.2.1 Restrições dos veículos .......................................................................................................... 11 
3.1.2.2 Restrições dos clientes .......................................................................................................... 11 
3.1.2.3 Restrições das rotas ............................................................................................................... 12 
3.1.3 Variáveis de decisão ........................................................................................................................ 12 
3.1.4 Hipóteses/recursos e características do problema ......................................................................... 13 
3.2 Variantes do VRP .......................................................................................................................................... 13 

3.2.1 Traveling Salesman Problem (TSP) .................................................................................................. 13 
3.2.2 Capacitated Vehicle Routing Problem (CVRP) ................................................................................. 13 
3.2.3 Heterogeneous Fleet Vehicle Routing Problem (HFVRP) ................................................................. 14 
3.2.4 Multiple Depot Vehicle Routing Problem (MDVRP) ........................................................................ 14 
3.2.5 Vehicle Routing Problem with Time Windows (VRPTW) ................................................................. 14 
3.2.6 Stochastic VRP (SVRP) ..................................................................................................................... 15 
3.2.7 Dynamic VRP (DVRP) ....................................................................................................................... 15 
3.2.8 Vehicle Routing Problem with Split Deliveries (VRPSD) ................................................................... 16 
3.3 Formulação matemática de um VRP ............................................................................................................ 17 

Capítulo 4 ‐ Métodos de Resolução de Problemas de Planeamento de Rotas de Veículos .................... 19 
4.1 Métodos exactos .......................................................................................................................................... 20 
4.1.1 Branch & Bound .............................................................................................................................. 20 
4.2 Heurísticas clássicas ...................................................................................................................................... 21 
4.2.1 Algoritmo Savings ........................................................................................................................... 21 
4.3 Metaheurísticas ............................................................................................................................................ 22 
4.3.1 Simulated Annealing ....................................................................................................................... 24 
4.3.2 Tabu Search ..................................................................................................................................... 24 
4.3.3 Métodos Híbridos ............................................................................................................................ 27 
4.4 Comparação dos métodos de resolução .......................................................................................................27  
4.5 Escolha do Método de Resolução e Motivações desta Dissertação ............................................................. 29 
4.5.1 Resultados obtidos por Belfiore (2006) ........................................................................................... 29 

iv 

 
4.5.2 Resultados obtidos por Figueiredo (2007) ...................................................................................... 30 

Capítulo 5 ‐ Implementação do modelo matemático ............................................................................... 31 
5.1 Heurísticas de construção implementadas ................................................................................................... 32 
5.1.1 Heurística de Construção Savings ................................................................................................... 32 
5.1.2 Heurística de Construção local ........................................................................................................ 33 
5.2 Implementação do Modelo .......................................................................................................................... 35 
5.2.1 Esquema representativo do modo de funcionamento do Modelo implementado .......................... 35 
5.2.2 Pesquisa da vizinhança e métodos de diversificação implementados ............................................ 36 
5.2.3 Split Deliveries ................................................................................................................................. 40 
5.2.4 Função Objectivo ............................................................................................................................. 41 
5.2.5 Restrições ........................................................................................................................................ 42 
5.2.6 Cargas Mistas.................................................................................................................................. 43 
5.2.7 Critérios de terminação ................................................................................................................... 44 
5.3 Discriminação dos ficheiros compilados para execução do Modelo desenvolvido ...................................... 45 
5.4 Leitura de inputs e outputs exportados ........................................................................................................ 46 
5.4.1 Importação e manipulação de inputs ............................................................................................. 46 
5.4.2 Exportação de outputs .................................................................................................................... 47 

Capítulo 6 ‐ Resultados .............................................................................................................................. 48 
6.1 Validação do Modelo ‐ Instâncias Benchmark de Christofides e Solomon ................................................... 49 
6.2 Resultados da Aplicação do Modelo ao Caso de Estudo .............................................................................. 52 
6.2.1 Aplicabilidade da Divisão de Cargas ao Caso de Estudo ................................................................. 53 
6.2.2 Comparação dos resultados obtidos com Figueiredo (2007) .......................................................... 55 
6.3 Análise de Sensibilidade ............................................................................................................................... 59 

Capítulo 7 ‐ Conclusões e Desenvolvimentos Futuros .............................................................................. 61 
Bibliografia ................................................................................................................................................. 64 
Anexo A ‐ Cabeçalho do Modelo Implementado com os parâmetros ....................................................... 67 
Anexo B ‐ Resultados das instâncias de Christofides, Mingozzi e Toth ...................................................... 69 

Anexo C ‐ Resultados das instâncias de Solomon ...................................................................................... 70 
Anexo D ‐ Inputs Clientes JM ‐ Dia Planeamento 12 .................................................................................. 72 
Anexo E ‐ Solução obtida para o dia de planeamento 12 do Caso de Estudo com F.O = (Figueiredo, 2007) 
sem divisão de cargas e sem utilização de estratégias de diversificação da pesquisa (sem relatório) ...... 73 
Anexo F ‐ Possível representação espacial da solução anterior ................................................................. 74 
Anexo G ‐ Solução obtida para o dia de planeamento 12 do Caso de Estudo com F.O = (Figueiredo, 2007) 
com divisão de cargas e com utilização de estratégias de diversificação da pesquisa (com relatório) ..... 75 
Anexo H ‐ Código não compilado e ficheiro executável do Modelo Implementado ................................. 78 
 

 
Lista de tabelas 

 
 

Tabela 2.1 ‐ Volume Total Médio expedido por Armazém…………………………………………………………………………… 5 

Tabela 2.2 ‐ Distribuição das lojas por insígnia e por região…………………………………………………………………………. 6 

Tabela 2.3 ‐ Pedido médio por loja (dados: média 3 dias planeamento 1 a 3/Set)………………….………….……….. 7 

Tabela 2.4 ‐ Características da Zona de descarga por insígnia……………………………………………….……….……………. 7 

Tabela 2.5 ‐ Contabilização da frota por capacidade e Zona …………………………………………………………...………….. 8 

Tabela 2.6 ‐ Distribuição percentual das lojas que podem ser servidas por cada veículo, por capacidade…..  8 

Tabela 2.7 ‐ Temperaturas recomendadas para o transporte de mercadorias…………………………….….…………… 8 

Tabela 6.1 ‐ Parâmetros utilizados no Modelo para obtenção dos resultados apresentados………………….…… 48 

Tabela 6.2 ‐ Comparação da performance com os algoritmos mais eficientes aplicados às instâncias de 
problemas benchmark de Christofides et al. (1979) ‐ Adaptado de Laporte (2007)……………………………………… 49 

Tabela  6.3  ‐  Comparação  da  performance  com  os  algoritmos  mais  eficientes  aplicados  às  instâncias  de 
problemas benchmark de Solomon (1987) ‐ Adaptado de Gambardella et al. (1999)………………………………….. 50 

Tabela 6.4 ‐ Estudo da procura diária por tipo de loja (Adaptado de Figueiredo, 2007)……………………………….. 53 

Tabela 6.5 ‐ Total de quilómetros por dia de operação……………………………………………………………………………….. 55 

Tabela 6.6 ‐ Número de veículos necessários por dia de operação………………………………………………………………. 56 

Tabela 6.7 ‐ Média de quilómetros efectuada por cada uma das rotas para cada dia de operação……………… 56 

Tabela 6.8 ‐ Tempo (minutos) necessário para completar a operação por dia de operação…………………….…… 56 

Tabela 6.9 ‐ Tempo médio (minutos) de duração de cada rota por dia de operação……………………………………. 57 

Tabela 6.10 ‐ Discriminação dos tempos de operação para o dia 12………………………………………………….………… 58 

Tabela 6.11 ‐ Tempo de processamento necessário para obtenção dos resultados apresentados……..……….. 58 

Tabela 6.12 ‐ Influência da duração do Run no Desempenho do Modelo…………………………………………….……….60 

Tabela 6.13 ‐ Influência da Solução Inicial no Desempenho do Modelo…………………………………………………….… 60 

Tabela 6.14 ‐ Influência da F.O no Desempenho do Modelo……………………………………………………………………….. 60 

 
 

vi 

 
Lista de figuras e gráficos 

 
Figura 1 ‐ Esquema representativo das vantagens da aplicação do VRPSD (Archetti et al., 2008)………….…….  16 

Figura 2 ‐ Exemplo de aplicação de um VRP (Beasley et al., 1997)……………………………………………………………….. 17 

Figura 3 ‐ Gráfico tridimensional representando o espaço de pesquisa (adaptado de Christian, 2002)……..… 20 

Figura 4 ‐ Exemplo de aplicação do algoritmo TS (Glover e Laguna, 1997)…………………………………………………… 26 

Figura 5: Movimento (1) de pesquisa da vizinhança – troca de rota de um cliente……………………………………… 37 

Figura 6: Movimento (2) de pesquisa da vizinhança ‐ troca de clientes entre duas rotas……………….……………  38 

Figura 7: Movimento (3) de pesquisa da vizinhança ‐ troca de clientes da mesma rota………………….…………… 38 

Figura 8: Movimento (4) de pesquisa da vizinhança ‐ troca de rota de um cliente incluído na rota mais  

curta….. ………………………………………………………………………………………………………………………………………………………  39 

Figura 9: Movimento de pesquisa da vizinhança com possibilidade de Divisão da Carga (VRPSD)………………  40 

Figura 10: Transporte de mercadoria mista…………………………………………………………………………………………………  43 

Gráfico 1 – Nº Veículos expedidos por intervalo horário de expedição, zona e tipo de produto………….…....  6 

Gráfico 2 – Total de rotas necessárias para abastecer 40 clientes com veículos com capacidade de 21 paletes 
em função da procura média: comparação dos cenários com divisão de carga e sem divisão de carga…….… 54 

Gráfico 3 – Total de rotas necessárias para abastecer 31 clientes com veículos com capacidade de 24 paletes 
em função da procura média: comparação dos cenários com divisão de carga e sem divisão de carga….…… 54 

Gráfico 4 – Total de rotas necessárias para abastecer 4 clientes com veículos com capacidade de 33 paletes 
em função da procura média: comparação dos cenários com divisão de carga e sem divisão de carga….…… 54 

Gráfico  5  –  Gráfico  com  resultados  da  aplicação  do  Modelo  ao  Caso  de  Estudo,  comparativamente  com 
Figueiredo (2007) face ao planeamento real…………………………………………………………………………………..…………… 59 

 
 
 
 
 
 

vii 

 
Capítulo 1 
Introdução 
Neste trabalho pretende‐se resolver um problema de planeamento de rotas de veículos (VRP) aplicado a um 
caso  de  estudo  real  na  área  da  distribuição  da  empresa  Jerónimo  Martins,  estudado  anteriormente  em 
Figueiredo  (2007)  com  resultados  promissores  mas  sem  aplicabilidade  no  planeamento  real  devido  às 
limitações que um modelo exacto impõe. 

Assim, pretende‐se experimentar uma abordagem diferente, baseada em métodos aproximados, que permita 
por  um  lado  a  obtenção  de  resultados  de  qualidade  semelhante  num  tempo  computacional  aceitável  e,  por 
outro, a aplicação ao problema em toda a sua extensão. Ou seja, pretende‐se com este trabalho desenvolver 
um modelo que possa ser aproveitado futuramente no planeamento real da empresa analisada. 

Desta forma, irá ser elaborado um Modelo versátil, por um lado, para que se consiga aplicar a vários problemas 
diferentes,  mas  robusto  por  outro,  para  que  simule  o  cenário  real  e  produza  resultados  fiáveis,  sem  nunca 
esquecer  o  objectivo  de  desenvolver  um  Modelo  que  possa  ser  aplicado  na  operação  real  da  empresa  que 
motivou  este  trabalho.  Deste  modo,  torna‐se  relevante  a  documentação  contínua  do  trabalho  desenvolvido 
bem como a preocupação em tornar o modelo desenvolvido user‐friendly. 

Um  objectivo  mais  amplo  deste  trabalho  é  o  de  comprovar  a  vantagem  de  um  método  aproximado  face  a 
métodos exactos em termos de desempenho. Deste modo, proceder‐se‐á à validação do Modelo desenvolvido 
com instâncias de benchmark retiradas da literatura para seguidamente se efectuar uma comparação com um 
trabalho desenvolvido previamente utilizando técnicas de optimização exactas. 

O problema proposto apresenta várias particularidades que se traduzem quer na adição quer na relaxação de 
restrições  do  VRP  original.  Desta  forma,  as  variantes  que  se  aplicam  ao  caso  de  estudo  e  que  o  permitem 
descrever  mais  fielmente  são  o  Problema  de  Planeamento  de  Rotas  com  Entregas  Fraccionadas  (VRPSD),  o 
Vehicle Routing Problem com Janelas Temporais (VRPTW) e o VRP com Frota Heterogénea (HFVRP), que mais 
não  é  do  que  uma  extensão  do  conhecido  Capacitated  Vehicle  Routing  Problem  (CVRP)¸  a  variante  mais 
explorada  tradicionalmente.  Este  problema,  ainda  pouco  estudado  pela  comunidade  científica,  pode 
denominar‐se por HFVRPTWSD – Heterogeneous Fleet Vehicle Routing Problem with Time Windows and Split 
Deliveries (Belfiore, 2006). 

No  capítulo  2  é  feita  uma  abordagem  ao  Caso  de  Estudo  e  uma  apresentação  breve  da  empresa,  com 
enumeração das principais características dos elementos base de um VRP – os Centros de Distribuição (secção 
2.1), as lojas (secção 2.2) e os veículos (secção 2.3) – bem como se referem as principais restrições específicas 
do Caso de Estudo. 

As principais variantes do VRP são descritas em detalhe na segunda secção do capítulo 3, apresentando‐se as 
principais  características  e  objectivos,  sempre  que  possível  com  recurso  a  elementos  baseados  na  literatura 
especializada.  Introduzem‐se  também  os  principais  constituintes  do  VRP  (secção  3.1)  e  uma  possível 
formulação matemática para o problema (secção 3.3). 

 
Foi proposta uma implementação por métodos exactos do problema analisado aplicado a este caso de estudo 
(Figueiredo,  2007)  que,  recorrendo  a  uma  função  multi‐objectivo,  comparou  os  ganhos  obtidos  no 
planeamento  obtido  face  à  distribuição  real.  O  trabalho  de  Figueiredo  (2007)  apresenta  resultados  bastante 
positivos, motivando o desenvolvimento desta Dissertação para facilitar uma potencial implementação de um 
algoritmo eficaz ao processo diário de planeamento da empresa em estudo.  

Contudo, os métodos exactos, face à natureza combinatória do problema e apesar dos seus desenvolvimentos, 
têm grandes dificuldades de resolução quando o problema tem maiores dimensões, pelo que no trabalho de 
Figueiredo  foi  impossível  estudar  o  problema  em  toda  a  sua  dimensão.  Em  vez  disso,  em  Figueiredo  (2007) 
optou‐se por se restringir a optimização a um sub‐problema local e foi necessário subdividi‐lo em conjuntos de 
menores dimensões de forma a conseguir obter resultados em tempo aceitável. 

Neste  trabalho,  pretende‐se  estudar  a  globalidade  do  problema  com  a  utilização  de  uma  ferramenta  mais 
eficiente, ou seja, que produza soluções de qualidade semelhante a um método exacto mas numa fracção do 
tempo  e  com  recurso  de  menor  esforço  computacional:  uma  metaheurística.  Por  definição,  uma 
metaheurística  é  um  processo  iterativo  que  guia  e  modifica  as  operações  das  heurísticas  subordinadas  de 
modo a produzir eficientemente soluções de elevada qualidade (Voß, 1999).  

Uma metaheurística combina as potencialidades de um método de busca local com os resultados (próximos) de 
um método exacto evitando, por um lado, ficar preso em óptimos locais como as heurísticas tradicionais e, por 
outro, de processar ingloriamente todo um conjunto possível de soluções que envolve consumo excessivo de 
recursos. 

Este  tipo  de  metodologia  vai  de  encontro  às  necessidades  de  uma  empresa  em  que  é  necessário  tomar 
decisões em tempo real com base na informação disponível uma vez que, na impossibilidade de aguardar um 
tempo  considerável  para  obter  uma  solução  ligeiramente  melhor,  torna‐se  bastante  mais  interessante  a 
obtenção de resultados quase imediatos (em comparação com os métodos exactos, mais demorados) próximos 
da solução óptima.  

No  capítulo  4  explora‐se  a  variedade  de  métodos  existentes  para  resolução  de  problemas  de  natureza 
combinatória, com particular incidência para o VRP. Assim, optou‐se por se organizar os métodos de resolução 
existentes  em  3  categorias:  métodos  exactos  (secção  4.1),  heurísticas  (secção  4.2)  e  metaheurísticas  (secção 
4.3),  estes  últimos  explorados  com  maior  profundidade.  Assim,  são  descritos  alguns  dos  algoritmos 
metaheurísticos mais referidos na literatura: Simulated Annealing (subsecção 4.3.1) e Tabu Search (subsecção 
4.3.2).  Ainda  no  capítulo  3,  explora‐se  mais  superficialmente  algumas  metaheurísticas  híbridas  (subsecção 
4.3.3) e a secção 4.4 é dedicada à comparação dos métodos existentes para resolução do VRP, com exemplos 
de alguns dos melhores algoritmos desenvolvidos. 

Na  secção  4.5  justifica‐se  a  escolha  do  método  de  resolução  e  referem‐se  alguns  exemplos  de  trabalhos 
anteriores dedicados ao problema em estudo e, com base nos resultados obtidos anteriormente, estabelecem‐
se  objectivos,  sendo  o  principal  o  de  desenvolver  um  modelo  representativo  do  problema  que  possa  ser 
implementado nas operações diárias da empresa.  

 
Na subsecção 4.5.1 atesta‐se a eficiência de uma metaheurística na resolução de um HFVRPTWSD aplicado a 
um  Caso  de  Estudo  semelhante,  também  no  ramo  do  retalho,  com  uma  breve  referência  dos  principais 
resultados obtidos pelo autor (Belfiori, 2006).  

Na  subsecção  4.5.2  são  interpretados  e  discutidos  alguns  dos  principais  resultados  obtidos  por  Figueiredo 
(2007), trabalho que servirá de referência para comparação dos resultados obtidos. 

O capítulo 5 é dedicado à forma como foi feita a implementação do Modelo que substancia este trabalho. Na 
secção  5.1  discutem‐se  os  algoritmos  de  construção  implementados  para  se  obter  uma  solução  inicial  –  que 
serve  simultaneamente  de  referência  para  comparação  com  a  solução  final  –  e  em  5.2  apresenta‐se  a 
implementação  do  Modelo  desenvolvido,  o  qual  é  seguidamente  explicado  de  forma  mais  detalhada,  bem 
como os principais parâmetros e funcionalidades. 

Na secção 5.3 é feita uma introdução superficial às principais funções implementadas e por fim, na secção 5.4 é 
feita uma referência aos inputs que o Modelo utiliza e outputs que reproduz. 

Os  resultados  obtidos  serão  apresentados  e  debatidos  no  capítulo  6,  começando  pela  validação  prévia  do 
modelo  com  um  conjunto  de  problemas  benchmark  (secção  6.1).  Seguidamente  é  dado  especial  destaque  à 
comparação  dos  resultados  obtidos  com  os  de  Figueiredo  (2007)  na  secção  6.2,  e  na  última  secção  deste 
capítulo (6.3) há lugar para uma breve análise de sensibilidade aos principais parâmetros. 

Finalmente,  no  capítulo  7  apresentam‐se  as  conclusões  do  presente  trabalho  e  sugerem‐se  alguns 
desenvolvimentos futuros que permitam explorar as potencialidades do Modelo desenvolvido. 

 
Capítulo 2 
Apresentação do Caso de Estudo 
O  problema  de  planeamento  de  rotas  de  veículos  irá  ser  aplicado  à  actividade  de  distribuição  alimentar  do 
departamento de transportes do grupo Jerónimo Martins (JM), empresa que detém hoje perto de 400 lojas em 
Portugal1, incluindo território continental e a ilha da Madeira. As superfícies comerciais estão divididas em três 
insígnias:  Pingo  Doce  (com  quase  350  supermercados),  Feira  Nova  e  Recheio/  MasterChef,  líder  no  mercado 
grossista com cerca de 30 lojas Cash&Carry e 2 plataformas de Food Service. 

O departamento de transportes da JM tem como objectivo abastecer eficientemente o processo logístico do 
grupo na componente de distribuição física. Esta área tem como missão satisfazer os pedidos feitos pelas lojas 
num sistema pull (a procura “puxa” o inventário), garantindo o transporte de uma vasta gama de produtos dos 
centros  de  distribuição  até  às  lojas.  Poderão  realizar  também  transporte  de  mercadorias  devolvidas  e 
operações de backhauling nas viagens de retorno para maior rentabilização da frota. 

A  operação  de  distribuição  da  Jerónimo  Martins  possui  uma  frota  heterogénea  de  veículos  que  entregam 
produtos perecíveis e não perecíveis. As rotas de transporte dos produtos perecíveis como o peixe, congelados 
e frutas/vegetais são essencialmente fixas, devido à variabilidade destes pedidos ser reduzida e a frequência 
elevada,  o  que  se  explica  pelo  facto  do  período  de  vida  associado  a  estes  produtos  ser  curto.  Os  restantes 
artigos não perecíveis não possuem rotas fixas de expedição devido à maior variabilidade, sendo as rotas de 
transporte desta categoria caracterizadas por uma janela temporal de entrega mais flexível. 

Existem ainda outras condicionantes operacionais, tais como a distância das lojas ao centro de distribuição (as 
lojas mais afastadas têm prioridade na operação de expedição) ou as condições de acessibilidade das lojas. De 
entre  estas  devem‐se  destacar  as  restrições  impostas  pelas  condições  de  descarga  e  pelas  condicionantes 
relacionadas  com  as  horas  de  ponta,  particularmente  relevantes  nas  zonas  urbanas  densamente  povoadas 
onde o grupo se posiciona estrategicamente. 

Relativamente  aos  sistemas  utilizados  pela  empresa  para  o  funcionamento  das  operações,  o  sistema  de 
reaprovisionamento da JM pode ser feito através da constituição de stock, por um sistema Just In Time (JIT) ou 
por  Cross‐Docking.  No  primeiro  caso  é  armazenada  uma  determinada  quantidade  de  produto  que  é 
constantemente  analisada  para  prevenir  roturas  de  stock;  no  segundo,  é  encomendado  aos  fornecedores  a 
quantidade  suficiente  para  satisfazer  os  pedidos  diários  das  lojas;  finalmente,  no  funcionamento  em  Cross‐
Docking a mercadoria já vem preparada do fornecedor consoante os pedidos das lojas, não sendo necessário 
qualquer tipo de execução no centro de distribuição (apenas transferem a mercadoria).  

Quanto  ao  sistema  de  gestão  de  frotas  utilizado  actualmente,  é  utilizado  um  sistema  designado  por  GPS‐
Tracking  que  consiste  na  monitorização  em  tempo  real  da  localização  dos  veículos  através  da  obtenção  das 
posições por GPS e posterior comunicação pela rede de comunicações móveis (GSM). 

Para  tal,  os  veículos  possuem  os  equipamentos  necessários,  que  obtêm  a  sua  localização  e  a  transmitem  ao 
sistema que, por sua vez, reúne toda a informação e a processa em forma de relatórios para posterior consulta. 

                                                  
1
 Informação disponível em http://www.jeronimomartins.pt/, consultado em 21 de Janeiro de 2009 

 
Alguns exemplos dos relatórios produzidos são o custo por quilómetro; a média de consumo de combustível; a 
distância  total  percorrida  e  ainda  indicadores  do  veículo  para  manutenção  ou  prevenção  de  avarias2,  que  o 
gestor pode utilizar para detectar ineficiências nas rotas definidas e optimizar os recursos. 

2.1 Centros de distribuição 
Em  relação  ao  abastecimento,  o  território  continental  foi  dividido  em  duas  zonas  por  um  eixo  imaginário 
(Coimbra‐Viseu): Norte e Sul. Na região Norte, o abastecimento é assegurado pelos centros de distribuição de 
Guardeiras, Vila do Conde e Laundos e a região Sul é abastecida pelos Centros de Distribuição da Azambuja, 
Alcochete e M.A.R.L. (Mercado Abastecedor da Região de Lisboa).  

Cada  loja  recebe  mercadoria  proveniente  do  centro  de  distribuição  localizado  na  sua  zona,  salvo  raras 
excepções. Alguns produtos como os congelados e os artigos de bazar são armazenados num único armazém, 
chegando às lojas mais distantes através da realização de rotas entre centros de distribuição e operações de 
transshipment  no  centro  de  distribuição  mais  próximo  da  sua  zona.  O  lead  time,  ou  período  de  tempo  que 
decorre entre a colocação de um pedido de uma loja e a expedição da mercadoria do armazém, varia entre 24 
e 48 horas consoante o tipo de produto considerado. 

O presente trabalho visa apenas resolver o problema de planeamento de um depósito, pelo que se considerou 
o Centro de Distribuição da Azambuja (assinalado a itálico nas próximas tabelas). Na tabela 2.1 apresenta‐se o 
volume total médio expedido por armazém e por insígnia. As quantidades apresentadas referem‐se à média do 
número de paletes (após conversão) expedido entre os dias 1 e 3 de Setembro/2009. 

Tipo 
Localização  Armazém FN  PD  RCH  Total 
Produto 
Zona Sul ‐ MARL  5408  18 298 23  339 
Congelados 
Zona Norte ‐ Vila do Conde 5508  30 487 78  596 
Zona Sul ‐ Azambuja  5404  69 1022 124  1215 
Frescos 
Zona Norte ‐ Vila do Conde 5504  65 596 90  751 
Frutas e  Zona Sul ‐ Azambuja  5403  71 1128 322  1520 
Vegetais  Zona Norte ‐ Vila do Conde 5503  68 638 200  906 
Zona Sul ‐ Azambuja  5401  173 3080 259  3513 
Zona Sul ‐ Azambuja  5407  69 1034 23  1126 
Não  Zona Sul ‐ Alcochete  5405  41 1538 0  1579 
Perecíveis  Zona Norte ‐ Vila do Conde 5505  38 75 3  115 
Zona Norte ‐ Laundos  5507  182 1976 32  2190 
Zona Norte ‐ Guardeiras  5501  139 1677 95  1911 
Pão  Zona Sul ‐ Azambuja  5490  0 104 0  104 
Zona Sul ‐ Azambuja  5409  16 309 44  369 
Peixe 
Zona Norte ‐ Vila do Conde 5509  11 170 27  208 
Total    989 14133 1320  16442 
Tabela 2.1 ‐ Volume Total Médio expedido por Armazém 

A operação decorre ao longo do dia, apresentando no entanto maior intensidade em determinados períodos 
horários dependendo do tipo de produto expedido.  

                                                  
2
 Informação disponível em http://www.inosat.com, consultada em 21 de Janeiro de 2009 

 
O  gráfico  1  contém  a  informação  do  número  de  veículos  (rotas)  por  tipo  de  produto  e  zona  e  por  intervalo 
horário de expedição para um dia normal de operação. Os produtos de mercearia não perecíveis são expedidos 
em maior número de rotas e num intervalo horário mais alargado, devido à maior variabilidade dos pedidos 
feitos para este tipo de produto. Os restantes produtos são maioritariamente expedidos em rotas fixas na parte 
da  madrugada,  geralmente  antes  da  abertura  das  lojas,  com  excepção  dos  frescos  que  chegam  às  lojas 
geralmente durante a tarde. 

Veículos expedidos por intervalo horário de expedição e por armazém
200

180

160
71
140
10
1
120
2 7h‐14h
100

47 61 14h‐24h
80
1
7 10 0h‐7h
60 125
5
2
53
40
32 62 3
57 58 54
20 4 6
13 24 20 0
18 5
0 7
1
Congelados  Frescos ‐ Frutas e  Não  Peixe ‐ Congelados  Frescos ‐ Frutas e  Não  Pão ‐ Zona 
‐ Zona  Zona Norte Vegetais ‐ Perecíveis ‐ Zona Norte ‐ Zona Sul Zona Sul Vegetais ‐ Perecíveis ‐ Sul
Norte Zona Norte Zona Norte Zona Sul Zona Sul

 Gráfico 1 – Nº Veículos expedidos por intervalo horário de expedição, zona e tipo de produto  

2.2 Lojas 
A  operação  de  aquisição  das  lojas  Plus  (e  outros  activos  como  o  Centro  de  Distribuição  de  Alcochete),  bem 
como a abertura de novas lojas e a reconversão de algumas superfícies permitiu ao Grupo Jerónimo Martins 
expandir  a  sua  oferta  nos  últimos  anos,  com  clara  aposta  nas  pequenas  e  médias  superfícies  sob  a  insígnia 
Pingo Doce. Na tabela 2.2 apresenta‐se a distribuição actual das lojas por insígnia e região do território. 

Região  Pingo Doce  Feira Nova  Recheio  Total 


Região 1 ‐ Minho e Grande Porto  70  2  7  79 
Região 2 ‐ Centro Norte  66  2  7  75 
Região 3 ‐ Centro Sul  69  0  8  77 
Região 4 ‐ Grande Lisboa  77  4  5  86 
Região 5 ‐ Sul  61  1  8  70 
Total  343  9  35  387 
Tabela 2.2 ‐ Distribuição das lojas por insígnia e por região 

Na  tabela  2.3  indica‐se  o  pedido  médio  de  cada  loja  por  insígnia  e  por  tipo  de  produto/armazém.  As 
quantidades  representadas  são  expressas  em  paletes  ou  respectiva  conversão.  De  realçar  que  uma  das 
principais  dificuldades  do  grupo  é  a  estimativa  do  número  de  paletes  que  resultará  da  execução  do  pedido 
efectuado  por  cada  loja,  traduzindo‐se  num  constrangimento  importante  ao  nível  do  planeamento  da 

 
operação.  Este  constrangimento  torna‐se  difícil  de  ultrapassar  uma  vez  que  o  volume  ocupado  nos  veículos 
varia muito com variáveis como o tipo de produto – que determina o suporte em que é transportado (palete, 
meia palete ou skate) e a variabilidade da execução do pedido (pedidos com quantidades semelhantes podem 
ocupar áreas diferentes em veículo consoante o número de paletes com que se conseguiu fazer a execução). 

Tipo Produto  Armazém  FN  PD  RCH  Total 


5408  4  2  2  2 
Congelados 
5508  3  2  3  2 
5404  14  5  6  5 
Frescos 
5504  16  5  7  5 
5403  14  6  16  7 
Frutas e Vegetais 
5503  17  5  16  6 
5401  35  15  19  16 
5405  41  26  0  26 
5407  14  5  2  5 
Não Perecíveis 
5501  42  15  11  15 
5505  14  6  9  7 
5507  45  24  5  23 
Pão  5490  0  4  0  4 
5409  3  2  3  2 
Peixe 
5509  3  1  3  2 
Total     16  7  8  7 
Tabela 2.3 ‐ Pedido médio por loja, em paletes (dados: média 3 dias planeamento 1 a 3/Set/09) 

Uma  das  restrições  característica  deste  caso  de  estudo  é  a  acessibilidade  aos  clientes,  devido  ao 
posicionamento preferencialmente em meio urbano das lojas, segundo a estratégia de proximidade ao cliente 
do grupo Jerónimo Martins. Assim, esta restrição pode ser simplificadamente descrita através da existência ou 
não  de  cais  de  descarga  nas  lojas,  a  qual  condiciona  o  tipo  de  veículos  que  podem  ser  utilizados  no  seu 
abastecimento:  as  lojas  sem  cais  de  descarga  requerem  abastecimento  por  veículos  equipados  com  báscula 
elevatória para descarga da mercadoria. Conforme se pode constatar na tabela 2.4, a maioria das lojas não tem 
qualquer infra‐estrutura adaptada para a recepção de veículos. 

Existem  ainda  outras  condicionantes  de  acessibilidade  mais  específicas  que  dependem  das  características 
físicas da localização de cada loja, pelo que a restrição de acessibilidade utilizada foi a capacidade máxima do 
veículo que pode servir cada loja. Essa informação é revista na tabela 2.5. 

N.º CAIS  Feira Nova  Pingo Doce  Recheio  Total 


S/ cais de descarga  1  11%  211  62%  8  23% 220  57% 
1 cais de descarga  2  22%  110  32%  22  63% 134  35% 
2 cais de descarga  6  67% 22 6% 5 14% 33  8% 
Tabela 2.4 ‐ Características da Zona de descarga por insígnia 

2.3 Veículos de transporte 
A necessidade da empresa possuir uma frota heterogénea explica‐se, por um lado, pelos ganhos de eficiência 
alcançados pelos camiões de grande capacidade que, além de mais produtivos, são também mais adequados 
para  servir  hipermercados  com  elevado  volume  de  vendas;  por  outro,  mais  de  metade  das  lojas  não  reúne 

 
condições  para  receber  este  tipo  de  viatura,  optando‐se  por  realizar  a  operação  com  veículos  de  menor 
capacidade  e  com  equipamento  adequado  para  descarregar  a  mercadoria.  Esta  condicionante  aumenta  o 
tempo  necessário  para  a  realização  da  operação  de  descarga  e  torna  o  escoamento  da  mercadoria  mais 
complicado, especialmente em dias de pico de volume. 

Na  tabela  2.5  são  apresentadas  as  características  da  frota  do  grupo,  como  capacidade  e  existência  de 
equipamento de descarga, dividida pelas zonas Norte (Regiões 1 e 2) e Sul (Regiões 3 a 5). 

Capacidade  Plataforma  Norte  Sul  Total  % 


10 paletes  C/ báscula  0  1  1  0% 
12 paletes  C/ báscula 19  15  34  10% 
13 paletes  C/ báscula 0  3  3  1% 
18 paletes  C/ báscula 0  1  1  0% 
20 paletes  C/ báscula 5  20  25  8% 
21 paletes  C/ báscula 10  26  36  11% 
22 paletes  C/ báscula 13  18  31  10% 
24 paletes  C/ báscula 17  60  77  24% 
C/ báscula 18  23  41  13% 
33 paletes 
S/ báscula  24  52  76  23% 
Total     106  219  325  100% 
            Tabela 2.5 ‐ Contabilização da frota por capacidade e Zona 

Finalmente,  na  tabela  2.6  apresenta‐se  sumariamente  a  percentagem  de  lojas  que  pode  ser  abastecida  por 
cada tipo de camião, organizada por ordem decrescente da capacidade do veículo. 

Capacidade máxima 
Total 
do veículo 
10  100,0% 
12  99,6% 
13  96,1% 
20  94,8% 
21  92,6% 
22  91,8% 
24  86,6% 
33 c/ báscula  50,2% 
33 s/ báscula  37,2% 
Tabela 2.6 ‐ Distribuição percentual das lojas que podem ser servidas por cada veículo, por capacidade 

Outra  característica  dos  veículos  utilizados  é  o  facto  de  estarem  equipados  com  motores  refrigeradores,  de 
forma  a  manterem  as  temperaturas  recomendadas  para  o  transporte  de  mercadoria  perecível  conforme 
disposições legais de higiene (tabela 2.7) 

Temperatura 
Tipo de produto 
recomendada 
Não Perecíveis  Temperatura ambiente
Frutas e Vegetais 10 ± 2 °C 
Frescos  3 ± 2 °C 
Congelados  ‐5 ± 3 °C 
Peixe  2 ± 2 °C 
Tabela 2.7 ‐ Temperaturas recomendadas para o transporte de mercadorias 

 
Este equipamento, além de permitir transportar carga perecível, possibilita o transporte de carga mista, isto é, 
de  mais  do  que  um  tipo  de  produto,  através  da  separação  da  carga  com  colchões  isotérmicos,  mantendo‐se 
assim temperaturas distintas dentro do compartimento de carga de modo a acomodar até dois ou três tipos de 
carga  diferentes,  consoante  o  veículo  esteja  equipado  com  um  ou  dois  motores  de  refrigeração, 
respectivamente.  Em  qualquer  das  situações,  um  dos  tipos  de  mercadorias  tem  de  ser  transportado  à 
temperatura ambiente. 

Um  trabalho  anterior  aplicou  o  VRP  a  este  caso  de  estudo  por  meios  exactos  (Figueiredo,  2007),  pelo  que  a 
descrição seguidamente apresentada é baseada no seu trabalho. 

O problema proposto por Figueiredo é uma versão simplificada do planeamento diário do armazém 5401‐ Não 
Perecíveis, devido à existência de uma série de restrições associadas a operações adicionais não consideradas 
no exemplo proposto, como a existência de rotas fixas (rotas cujos pedidos apresentam variabilidade reduzida), 
rotas com cargas mistas – contendo vários tipos de produtos numa única rota – bem como a possibilidade de 
operações de cross‐docking, backhauling e transhipment. 

Assim,  à  semelhança  do  modelo  proposto  por  Figueiredo  (2007)  (de  modo  a  permitir  uma  posterior 
comparação  dos  resultados),  o  problema  que  se  irá  resolver  contempla  restrições  de  capacidade,  janelas 
temporais e acessibilidade, permitindo‐se a divisão da carga a entregar a cada cliente nas situações em que, 
asseguradas  as  restantes  restrições  do  problema,  se  obtenha  uma  solução  de  qualidade  superior.  Devido  ao 
impacto no tempo total de serviço aos clientes que a divisão de cargas implica (Figueiredo, 2007), limitou‐se a 
dois o número máximo de visitas permitidas por cliente. 

Os  dados  relativos  aos  clientes  do  problema  que  será  resolvido  estão  organizados  numa  tabela  incluída  no 
Anexo D e a disposição geográfica (aproximada) dos mesmos pode ser consultada para referência no Anexo F. 

As janelas temporais dos clientes pertencem a dois grupos: planeamento da manhã e planeamento da tarde, 
visto que este problema foi originalmente concebido a partir da junção desses dois planeamentos. 

Quanto  às  restrições  de  acessibilidade,  as  lojas  podem‐se  dividir  em  três  grupos:  21,  24  e  33  paletes.  Esta 
restrição está associada à capacidade máxima do maior camião que pode visitar a respectiva loja. 

No  problema  proposto  por  Figueiredo  (2007),  o  pedido  médio  do  grupo  de  lojas  escolhido,  no  dia  de 
planeamento 12, por exemplo, é de 13 paletes, quantidade que supera ligeiramente metade da capacidade dos 
veículos que podem servir a maior parte desses clientes – limitado a 21 ou 24 paletes devido a restrições de 
acessibilidade e/ou de descarga.  

Tendo esta restrição em conta é fácil concluir, em primeira análise, que a maior parte das rotas só conseguirá 
abastecer um ou dois clientes de cada vez, a menos que seja permitido o fraccionamento das cargas, isto é, 
fazer a entrega dos pedidos dos clientes repartidos por mais do que uma visita. 

Esta primeira constatação assume particular relevância quando considerada a distância relativa dos clientes ao 
centro  de  distribuição  face  à  distância  média  entre  lojas:  o  grande  desafio  deste  problema  e,  em  geral,  do 
planeamento de rotas da Jerónimo Martins, é o de minimizar os custos associados à operação de distribuição 
assegurando  os  níveis  de  serviço  dos  clientes,  o  que  neste  caso  equivale  a  dizer  que  o  objectivo  é  o  de 
minimizar a distância total percorrida e o número de veículos necessários para realizar a entrega de todos os 
pedidos no período compreendido pelas janelas temporais das lojas. 

 
Capítulo 3 
Estado da arte – Vehicle Routing Problems 
Os  problemas  de  estabelecimento  de  rotas  de  veículos,  ou  Vehicle  Routing  Problems  (VRP),  são  dos  mais 
estudados no campo da optimização combinatória. O VRP surge naturalmente como um problema central na 
área dos transportes, distribuição e logística (Dantzing e Ramser, 1959), sendo elevado o número de casos reais 
que podem ser modelados como um problema de optimização de rotas de veículos incluindo, entre outros, a 
distribuição  de  mercadorias  ou  serviços  a  clientes,  entrega‐expresso  de  encomendas,  transporte  de  alunos, 
transporte de idosos e doentes crónicos, recolha de lixo, etc. 

Os  Vehicle  Routing  Problems  têm  como  objectivo  encontrar  uma  solução  óptima  na  definição  de  rotas  de 
entrega  de  mercadorias  a  partir  de  um  ou  vários  centros  de  distribuição  até  um  determinado  número  de 
clientes espalhados geograficamente numa determinada região. A solução obtida através da resolução de um 
VRP indicará como deverão ser afectados os diferentes recursos disponíveis de modo a realizar a operação de 
transporte ao mais baixo custo. 

Devido à complexidade inerente a um problema real, é necessário recorrer a modelação matemática de modo 
a  resolver  um  VRP.  Um  modelo  inclui  um  conjunto  de  restrições  que  descrevem  o  problema  e  que  têm 
necessariamente de ser satisfeitas, como por exemplo, o número de veículos disponíveis e a capacidade dos 
mesmos não podem ser ultrapassados; os clientes têm restrições quanto ao tempo de entrega de mercadorias 
que têm de ser respeitadas, entre outras, que serão descritas em pormenor neste capítulo. 

A  definição  clássica  de  um  VRP  consiste  em  definir  um  conjunto  de  rotas  de  modo  a  servir  um  conjunto  de 
clientes a partir de um depósito central tendo como recursos uma frota com uma determinada quantidade de 
veículos  idênticos  com  capacidade  limitada.  As  rotas  definidas  têm  de  respeitar  algumas  condições  como  o 
início e fim no depósito central; a duração máxima da rota é limitada; a quantidade de mercadoria alocada não 
poderá exceder a capacidade do veículo atribuído a essa rota; e cada cliente é visitado uma única vez (Mester e 
Bräysy,  2007).  Para  um  conhecimento  mais  aprofundado  de  um  VRP  clássico  podem  ser  consultados  Clark  e 
Wright  (1964),  Golden  e  Assad  (1988)  e  Toth  e  Vigo  (2002).  Na  secção  3.1  deste  capítulo,  irão  ser  descritos 
resumidamente os principais constituintes do VRP. 

Devido  às  necessidades  específicas  de  algumas  organizações,  o  problema  clássico  de  rotas  de  veículos  tem 
vindo  a  ser  adaptado  num  conjunto  de  variantes.  Essas  variantes  têm  origem  na  modificação  ou  adição  de 
restrições ao VRP clássico como, por exemplo, a existência de vários centros de distribuição (problema multi‐
depósito  ou  MDVRP);  a  frota  disponível  é  heterogénea  (problema  heterogéneo  de  rotas  ou  HFVRP);  limites 
temporais  no  período  de  visita  aos  clientes  (problema  de  rotas  com  janelas  temporais  ou  VRPTW).  Estas  e 
outras  variantes  do  VRP  serão  expostas  abaixo  na  secção  3.2.  Finalmente,  na  secção  3.3  é  sugerida  uma 
formulação matemática do problema. 

 
3.1 Elementos constituintes do VRP 
Nesta  secção  é  apresentada  uma  possível  classificação  em  quatro  categorias  dos  parâmetros  do  Vehicle 
Routing  Problem:  função  objectivo,  restrições,  variáveis  de  decisão  e  hipóteses/recursos  e  características  do 
problema, baseada nos trabalhos de Belfiore (2006) e Figueiredo (2007). 

10 

 
3.1.1 Função objectivo 
Como em outros problemas com aplicação na vida real, o objectivo mais comum é o de minimizar o custo total 
de  distribuição,  que  inclui  custos  fixos  (maioritariamente  relacionados  com  o  custo  de  manter  uma  frota  de 
veículos,  incluindo  o  investimento  em  veículos,  o  salário  em  motoristas  e  o  necessário  para  circulação  dos 
veículos  tal  como  impostos,  seguros,  etc.)  e  custos  variáveis  (custos  do  veículo  que  variam  com  a  distância 
como o combustível e a manutenção). 

No entanto, podem‐se considerar outras funções objectivo como a minimização da distância total percorrida 
pelos veículos, da duração das rotas, do tamanho da frota ou eventualmente a maximização de uma função de 
utilidade que maximize o nível de serviço aos clientes. 

Muitos  problemas  requerem  no  entanto  que  se  considere  mais  que  um  objectivo  simultaneamente,  dando 
origem a funções multi‐objectivo em que dois ou mais objectivos dos anteriormente referidos são combinados 
para se encontrar uma solução que vá ao encontro dos interesses dos decisores. No entanto, merece especial 
atenção  o  peso  relativo  que  cada  um  dos  objectivos  tem  no  modelo  que  se  pretende  definir,  sendo  usual 
manipular‐se  a  importância  relativa  dos  termos  da  função  objectivo  através  da  redução  à  mesma  ordem  de 
grandeza pela divisão por um limite superior, entre outras técnicas apropriadas para a abordagem do problema 
multi‐objectivo, entre as quais se poderia mencionar a técnica de Frente de Pareto, com múltiplas aplicações 
em funções com dois objectivos, sendo a Curva de Possibilidade de Produção, na área de Economia, das mais 
conhecidas. 

3.1.2 Restrições 
As principais restrições são seguidamente enumeradas: 

3.1.2.1 Restrições dos veículos 
As características físicas dos veículos têm de ser consideradas na construção de um modelo matemático para 
que  os  inputs  representem  fielmente  o  problema  descrito.  Assim,  as  principais  restrições  impostas  pela 
utilização  dos  veículos  estão  relacionadas  com  a  capacidade  máxima  de  transporte  de  carga;  com  o  tipo  de 
carga  que  pode  transportar;  com  a  possibilidade  de  transportar  mais  do  que  um  tipo  de  carga 
simultaneamente;  com  as  operações  de  carregamento  e  descarga  dos  veículos;  com  a  dimensão  e 
heterogeneidade da frota; e finalmente com o factor humano, representado pelos motoristas, no qual incide 
legislação  que  adiciona  restrições  relacionadas  com  o  tempo  máximo  consecutivo  que  um  condutor  pode 
operar. Estas restrições podem ser relaxadas ou ultrapassadas. Por exemplo, no último caso pode adoptar‐se a 
utilização  de  dois  condutores  por  veículo  simultaneamente,  aumentando  a  produtividade  de  cada  veículo, 
sendo relevante analisar‐se o tradeoff que tal decisão representa no custo total. 

3.1.2.2 Restrições dos clientes 
Cada  cliente  tem  associados  alguns  parâmetros  que  têm  de  ser  respeitados,  os  quais  traduzem  o  nível  de 
serviço exigido ou as restrições devido a particularidades físicas. 

Assim,  há  que  considerar  os  pedidos,  de  natureza  determinística  ou  estocástica,  feitos  pelos  clientes  e 
expressos  numa  quantidade  de  um  ou  vários  tipos  de  bens  que  têm  de  ser  entregues  para  cada  horizonte 
temporal estabelecido, normalmente um dia. Esses pedidos podem ter de ser satisfeitos numa única visita ou 

11 

 
pode ser contemplada a possibilidade de entregas fraccionadas das encomendas por mais do que um veículo, 
dando origem a uma variante do VRP – o VRPSD – descrita na próxima secção. 

As restantes restrições têm essencialmente que ver com limites temporais, como o tempo máximo de serviço 
permitido para cargas e descargas, a proibição de visitas num dia específico da semana ou o intervalo horário 
de  atendimento  a  cada  cliente  (janelas  temporais),  restrição  esta  que  origina  outra  das  variantes  mais 
estudadas  do  VRP  –  o  VRPTW  –  referida  adiante.  Também  o  ou  os  centros  de  distribuição  podem  ter  uma 
janela temporal e um tempo de serviço devido às operações realizadas.  

Há ainda que ter em conta prioridades no atendimento de clientes considerados mais importantes, bem como 
a possibilidade de se aceitar mercadoria recolhida de volta ao armazém, com as dificuldades inerentes a essa 
política ao nível do fluxo de entrada e saída de bens do veículo (VRPPD). Pode‐se optar por uma simplificação 
desta restrição ao se proibir recolhas antes de terminadas todas as entregas, sendo este problema conhecido 
como Vehicle Routing Problem with Backhauls. Estas e outras variantes do VRP são detalhadamente expostas e 
discutidas na secção 3.2. 

3.1.2.3 Restrições das rotas 
As  restrições  associadas  às  rotas  percorridas  pelos  veículos  incluem  horários  limite  de  início  e  término  das 
viagens e o tempo e distância máximas de viagem de um veículo. 

O delineamento das rotas tem em consideração o gráfico de rede que é constituído por nós e arcos interligados 
e que reproduz o espaço físico real do caso de estudo. Dependendo do facto de a procura dos clientes estar 
localizada nos nós ou nos arcos, os problemas VRP podem ser classificados em duas classes: node‐routing ou 
arc‐routing. Exemplos dos dois tipos de problemas são a entrega porta a porta de um serviço de encomendas 
ou a distribuição de pedidos entre um depósito central e um conjunto de clientes (node‐routing) e a recolha de 
lixo em meio urbano ou a entrega de correio (arc‐routing), sendo que neste último caso a procura situa‐se nos 
arcos e não nos nós. 

Geralmente, o custo da viagem entre dois pontos de procura é o mesmo nas duas direcções (ida e volta), o que 
resulta numa matriz de custos simétrica. Porém, em alguns casos, como por exemplo, a distribuição em centros 
urbanos com várias estradas de sentido único, a matriz de custos é assimétrica. 

3.1.3 Variáveis de decisão 
O conjunto de variáveis de decisão representa a forma como deve ser feito o planeamento das rotas de forma 
a  optimizar  a  função  objectivo.  A  variável  mais  importante  na  maioria  dos  modelos  de  VRP  define  qual  o 
veículo k que vai visitar o cliente j após ter visitado o cliente i, sendo usualmente representada na literatura 
como xijk.  

Depois,  podem‐se  definir  outras  variáveis  para  variantes  do  problema  em  que  existam  janelas  temporais, 
determinando‐se qual o horário em que o veículo k deve sair do armazém ou chegar ao próximo cliente da sua 
rota; ou para controlar a quantidade de mercadoria transportada, decidindo‐se quantas z unidades do produto 
p devem estar no veículo k. 

12 

 
3.1.4 Hipóteses/recursos e características do problema 
Podem  ainda  ser  adicionadas  ou  alteradas  outras  características  do  problema  ao  modelo  para  melhor 
representar o caso de estudo em análise. Assim, pode‐se descrever o tipo de operação como: entrega, recolha 
ou uma combinação de ambas.  

Quanto  ao  número  de  visitas  possíveis  aos  clientes,  pode‐se  definir  uma  única  visita  possível  ou  múltiplas 
entregas fraccionadas por vários veículos. 

Na óptica dos clientes, a procura pode ser determinística ou estocástica, podendo esta estar localizada nos nós 
da  rede,  nos  arcos  ou  em  ambos.  Quanto  à  distribuição  da  carga,  esta  pode  ser  feita  através  de  um  único 
depósito ou podem existir vários centros de distribuição (Problema Multi‐Depósito), sendo importante alocar 
os  veículos  ao  depósito  que  vão  servir  tendo  em  conta  a  capacidade  de  distribuição  deste  (quantidade  de 
produtos disponíveis para entrega aos clientes). 

A  frota  pode  ser  homogénea  ou  heterogénea  e  pode  ter  dimensão  bem  definida  ou  ilimitada  e  os  veículos 
podem  operar  ininterruptamente,  através  do  uso  de  um  ou  mais  condutores,  com  pausas  (ex:  horário  de 
almoço) ou com viagens com mais de um dia de duração – Problema periódico. 

3.2 Variantes do VRP 
Nesta  secção  serão  apresentadas  sucintamente  algumas  das  principais  variantes  do  VRP,  começando  pelo 
problema  que  foi  pioneiro  no  estudo  do  estabelecimento  de  rotas  de  veículos.  Tratando‐se  de  problemas 
derivados  do  VRP,  as  principais  restrições  mantêm‐se,  enquanto  outras  são  adicionadas,  eliminadas  ou 
relaxadas. 

3.2.1 Traveling Salesman Problem (TSP) 
O denominado “problema do caixeiro‐viajante” (Traveling Salesman Problem ‐ TSP) tem por objectivo definir a 
rota  que  minimiza  a  distância  a  percorrer  pelo  caixeiro‐viajante  na  sua  tarefa  de  visitar  um  determinado 
número de cidades necessárias e, após a qual, terá que regressar à cidade de onde partiu. Desta forma, pode 
ser  considerado  um  caso  particular  de  um  Capacitated  Vehicle  Routing  Problem,  pois  são  problemas  com 
características  semelhantes  com  a  principal  diferença  que  no  TSP  trata‐se  de  um  só  veículo  que  visita  um 
determinado  número  de  clientes,  mas  que  têm  em  comum  a  principal  restrição  em  que  a  capacidade  deste 
veículo tem de ser igual ou superior à procura total de bens pelos clientes percorridos na rota que se pretende 
optimizar. 

3.2.2 Capacitated Vehicle Routing Problem (CVRP) 
O CVRP é a variante mais elementar do VRP e difere deste na medida em que se contempla um relaxamento da 
restrição de limitação de tempo, não impondo limites à duração máxima das rotas obtidas. A restrição principal 
deste problema é a soma da procura total de cada rota não poder exceder a capacidade do veículo afectado 
para esse percurso, tendo todos os veículos a mesma capacidade. 

O objectivo deste problema consiste em minimizar os custos totais, quer em termos do número de veículos da 
frota, como o tempo ou a distância de viagem das rotas, tendo em conta a capacidade de cada veículo. 

A  solução  final  indicará  como  deverão  ser  alocados  os  veículos  disponíveis  nas  várias  rotas  determinadas  de 
modo a realizar a operação de distribuição com o menor custo possível.  

13 

 
3.2.3 Heterogeneous Fleet Vehicle Routing Problem (HFVRP) 
O  HFVRP  é  uma  generalização  directa  do  clássico  Capacitated  Vehicle  Routing  Problem  (CVRP),  descrito 
anteriormente. No entanto, em vez de se assumir que todos os veículos são idênticos, há uma disponibilidade 
de  vários  tipos  de  veículos,  cada  tipo  com  características  diferentes.  Esta  generalização  é  muito  importante 
para a prática da investigação operacional, uma vez que na maioria das aplicações em casos reais de um VRP a 
frota existente é heterogénea. 

Na definição do problema, a diferença para um CVRP é que neste caso define‐se uma frota de k tipos diferentes 
de veículos com capacidades {C1,…, CK} e custos fixos associados {f1, …, fK} (Pessoa e Aragão, 2007). 

O  objectivo  do  HFVRP  consiste  em  achar  um  conjunto  de  rotas  que  satisfaça  as  restrições  do  CVRP,  com  a 
particularidade da procura total dos clientes atribuídos à rota do veículo i ter de ser inferior a Ci, de forma a 
minimizar  os  custos  totais,  que  podem  ser  decompostos  em  custos  variáveis,  associados  à  distância  total 
percorrida, e custos fixos, que advêm da utilização dos veículos (Dullaert et al., 2002). 

3.2.4 Multiple Depot Vehicle Routing Problem (MDVRP) 
O MDVRP é caracterizado pela existência de vários armazéns que servem um determinado conjunto de clientes 
(Hjorring, 1995). Este problema também pode ser considerado um problema multi‐nível: primeiro os clientes 
são  alocados  a  um  dos  vários  armazéns,  normalmente  o  mais  próximo  e,  numa  segunda  fase  as  rotas  são 
delineadas de modo a ligar os clientes alocados ao mesmo armazém (Tansini e Viera, 2004). Da mesma forma, 
cada  veículo  inicia  a  sua  rota  num  determinado  armazém  e  regressa  ao  mesmo  no  fim  da  operação  de 
distribuição pelos clientes que lhe estavam destinados. O tamanho da frota de cada armazém varia entre um 
número mínimo e um máximo especificado. 

Desta  forma  decompõe‐se  um  problema  complexo  em  vários  VRP  simples,  de  forma  a  atingir  o  objectivo  de 
satisfazer a procura de todos os clientes minimizando o número de veículos e a distância de todas as rotas. 

3.2.5 Vehicle Routing Problem with Time Windows (VRPTW) 
O  VRPTW  é  outra  variante  do  Vehicle  Routing  Problem,  mas  com  restrições  adicionais  no  que  respeita  aos 
limites  temporais  nos  períodos  de  visita  aos  clientes.  Neste  caso,  a  cada  cliente  é  associada  uma  janela 
temporal  [ai,  bi],  definindo‐se  um  intervalo  dentro  do  qual  cada  cliente  tem  de  ser  fornecido  (Bräysy  et  al., 
2005).  Ao  centro  de  distribuição  também  poderá  estar  associado  uma  janela  temporal  para  o  carregamento 
denominado horizonte de planeamento. 

A solução torna‐se inviável se o camião que abastece um determinado cliente chegar após o limite temporal 
superior bi, podendo no entanto chegar antes do limite inferior da janela temporal ai, incorrendo neste caso 
num tempo de espera adicional para poder efectuar a operação de descarga. 

Há  ainda  a  possibilidade  de  se  permitir  uma  violação  na  restrição  das  janelas  temporais  (janelas  temporais 
flexíveis), caso em que geralmente se adiciona uma penalização na função objectivo para as situações em que a 
chegada ao cliente é feita após o instante bi. 

O objectivo deste problema é o de minimizar o número de veículos que constituem a frota, o tempo de viagem 
e o tempo de espera que é necessário para fornecer os clientes dentro da janela temporal definida (Cordeau et 
al.,2001). 

14 

 
3.2.6 Stochastic VRP (SVRP) 
Num  VRP  tradicional  todas  as  componentes  constituintes  são  determinísticas.  São  conhecidos  os  clientes,  as 
quantidades  a  transportar,  os  tempos  de  viagem  e  de  serviço  (para  operações  de  carga  e  descarga).  No 
entanto, num caso real existe alguma incerteza que ao ser ignorada introduz um erro mais ou menos relevante 
às soluções obtidas através da modelação desse problema.  

Ao se considerar que um ou mais elementos do problema de planeamento de rotas de veículos têm natureza 
aleatória, temos um SVRP (Laporte e Louveaux, 1997). Assim, são introduzidos novos parâmetros ao problema: 

i) Clientes aleatórios: cada cliente vi está presente com probabilidade pi ou ausente com probabilidade (1‐pi); 
ii) Procura aleatória: A procura di da cada cliente é uma variável estocástica 
iii) Tempo aleatório: Os tempos de viagem tij e de serviço si são variáveis estocásticas 
Quando  algumas  variáveis  têm  natureza  estocástica,  deixa  de  ser  possível  satisfazer  todas  as  restrições  para 
todos  os  valores  que  as  variáveis  tomam.  Assim,  cabe  ao  decisor  estipular  se  as  restrições  têm  de  ser 
respeitadas de acordo com uma dada probabilidade ou alternativamente incorporar medidas correctivas para 
quando uma restrição é violada (Laporte e Louveaux, 1997). 

Num SVRP as variáveis estocásticas seguem uma distribuição probabilística discreta, em que só são conhecidas 
à medida que os camiões percorrem as rotas, o que confere maior complexidade e dificuldade de resolução em 
relação ao mesmo problema mas em que os dados sejam deterministicamente conhecidos à priori. 

Desta forma, ao contrário de um VRP determinístico em que é encontrado um conjunto de soluções óptimo ou 
próximo do óptimo, o objectivo num VRP estocástico é determinar a solução com menor custo total esperado. 

3.2.7 Dynamic VRP (DVRP) 
Quase  todos  os  métodos  de  planeamento  de  rotas  de  veículos  dedicam‐se  à  resolução  de  um  problema 
estático, em que as constantes e as restrições têm de ser conhecidos a priori.  

O  Dynamic  Vehicle  Routing  Problem  é  muitas  vezes  descrito  como  uma  extensão  do  tradicional  VRP.  No 
entanto, os parâmetros e a dimensão do problema sofrem alterações em tempo real, podendo os veículos que 
já  se  encontram  a  executar  a  distribuição  da  rota  inicialmente  calculada  receber  novos  pedidos  ou  sofrer 
alterações aos pedidos que vai executar (quantidade a fornecer, limites temporais, etc.), sendo necessário fazer 
um  novo  planeamento  durante  a  operação  de  forma  a  satisfazer  os  mesmos.  Poderá  também  haver  uma 
variação  do  número  de  veículos,  da  capacidade  destes,  da  localização  de  novos  clientes,  entre  outros.  Na 
prática  todas  as  constantes  e  restrições  que  caracterizam  um  VRP  podem  ser  reveladas  dinamicamente  em 
tempo real, podendo‐se definir para cada problema estático um número considerável de problemas dinâmicos 
igual ao número de combinações possíveis entre os parâmetros (Bianchi, 2000). 

Neste tipo de problemas, parte da informação não é conhecida à partida, o que vem acrescentar complexidade 
ao problema. Problema esse que se pode aproximar ainda mais de um caso real ao contemplar a relação entre 
veículos, adquirindo uma natureza reactiva (Zhu e Ong, 2000). Por exemplo, o atraso ou a avaria de um camião 
poderá  ser  compensado  através  da afectação dos  restantes  clientes  que  lhe  faltava  servir  às  rotas de  outros 
veículos, desde que essa alteração não viole as restrições do problema. O objectivo deste tipo de problemas 
pode ser o de monitorar a função objectivo dos sub‐problemas estáticos, de forma a se obterem os extremos e 
consequentemente os parâmetros que melhor optimizam a operação (Bianchi, 2000). 

15 

 
3.2.8 Vehicle Routing Problem with Split Deliveries (VRPSD) 
O VRPSD é uma variante do Vehicle Routing Problem introduzida por Dror e Trudeau (1989), na qual é relaxada 
a restrição que obriga os clientes a serem visitados uma única vez, se tal conduzir a uma redução global dos 
custos. Esta variante é muito importante para casos em que a dimensão dos pedidos dos clientes seja próxima 
da  capacidade  dos  veículos  disponíveis,  sendo  desta  forma  adicionada  mais  uma  variável  de  decisão  que  irá 
definir qual a quantidade de produto de determinado cliente a afectar a cada veículo (Archetti et al. 2008).  

O objectivo é minimizar a frota de veículos e o tempo total para satisfazer a procura de todos os clientes. Uma 
solução possível é uma que satisfaça todas as restrições de um VRP tradicional excepto que os clientes passam 
a poder ser servidos mais do que uma vez e por vários veículos. Uma forma fácil de converter um VRP num 
VRPSD de forma a permitir entregas fraccionadas consiste em subdividir cada ordem dos clientes em ordens 
menores, indivisíveis (Burrows, 1988). 

Uma primeira formulação matemática deste problema foi proposta por Dror e Trudeau (1989 e 1990) os quais 
demonstraram  nos  seus  trabalhos  que  é  possível  melhorar  as  soluções  obtidas,  conseguindo‐se  ao  mesmo 
tempo reduzir a dimensão da frota necessária e o custo total da operação através da aplicação do VRPSD. Estes 
autores também demonstraram que, apesar do VRPSD ser uma relaxação do VRP, continua a ser um problema 
da classe NP‐Complete. Os benefícios demonstrados por Dror e Trudeau podem ser observados no exemplo da 
figura 1, retirado de Archetti et al. (2008). 
i  ii iii

 
Figura 1 ‐ Esquema representativo das vantagens da aplicação do VRPSD (Archetti et al., 2008) 

Em  estudos  posteriores,  Archetti  e  co‐autores  (2006a  e  2006b)  demonstraram  que  os  VRPSD  não  se  podem 
aplicar a todos os casos visto só se obter uma melhoria significativa na solução obtida quando o caso de estudo 
satisfaz  algumas  características  particulares:  a  procura  média  dos  clientes  deverá  tomar  valores  um  pouco 
acima  da  metade  da  capacidade  total  dos  veículos  e  a  sua  variabilidade  deverá  ser  relativamente  baixa 
(Archetti  et  al.,  2006b).  Foi  ainda  demonstrado  que  a  poupança  proporcionada  nos  custos  não  depende  da 
localização dos clientes. 

O problema em estudo nesta dissertação (HFVRPTWSD) é uma combinação do problema de planeamento de 
rotas de veículos com entregas fraccionadas (VRPSD), janelas temporais (VRPTW) e frota heterogénea (HFVRP) 
(Belfiore,  2006).  Foi  modelado  como  um  problema  node‐routing  por  possuir  características  que  melhor  se 
enquadram  nesta  classe  como  os  clientes  formarem  um  conjunto  de  pontos  discretos  ligados  entre  si  por 
estrada ou percursos, assumindo particular relevância a distância e o tempo de viagem entre clientes. 

16 

 
3.3 Formulação matemática de um VRP 
O  VRP  pode  ser  considerado  como  uma  generalização  de  um  outro  problema  pioneiro  no  estudo  de 
estabelecimento  de  rotas,  designado  por  problema  do  caixeiro‐viajante  (Traveling  Salesman  Problem  ‐  TSP). 
Neste problema, um caixeiro tem de visitar um determinado número de cidades antes de voltar à cidade de 
onde  partiu.  O  objectivo  deste  problema  é  definir  a  rota  que,  cumprindo  com  as  restrições  do  problema, 
minimiza a distância a ser percorrida pelo caixeiro na sua tarefa de visitar todas as cidades.  

Num  VRP,  a  frota  de  veículos  tem  geralmente  uma  dimensão  superior,  mas  o  objectivo  continua  a  ser  o  de 
minimizar o custo/tempo/distância de viagem de um conjunto de rotas que satisfaz a procura dos clientes de 
um tipo de produto proveniente do depósito central. Aqui, a restrição principal é o facto de o total de pedidos 
dos clientes pertencentes a cada rota não poder ultrapassar a capacidade do veículo que a percorre. 

Seja o grafo G = (V, A), formado pelo conjunto de nós V = {v0, v1, …, vn} interligados pelo conjunto de arcos A = 
{(vi, vj): vi, vj Є V, i ≠ j }. O vértice v0 represente o centro de distribuição no qual estão disponíveis m veículos de 
capacidades {Q1, Q2, …, Qm}. 

A cada vértice de V\{v0} corresponde um cliente que é necessário visitar, com uma quantidade qi de um bem 
que é necessário entregar ou recolher com um tempo di de serviço associado à operação. Ao conjunto A está 
associada uma matriz simétrica de custos não negativos C = (cij) que representa o custo (ou distância ou tempo) 
que é necessário para percorrer entre dois nó i e j, sendo cij = cji. 

O  veículo  k  despende  tij  unidades  de  tempo  a  percorrer  a  distância  entre  os  nós  i  e  j,  ao  qual  se  adiciona  o 
tempo  de  serviço  tj  para  operações  de  descarga  e  administrativas  no  cliente  j,  o  qual  terá  de  satisfazer  as 
restrições  do  problema  para  ser  visitado  após  o  cliente  i.  A  soma  dos  pedidos  qi  efectuados  pelos  clientes 
pertencentes à rota efectuada pelo veículo k não pode exceder a duração Dk nem a capacidade Qk do veículo. 
Cada rota tem início e fim no centro de distribuição e cada cliente pertence exactamente a uma rota. A figura 2 
ilustra um exemplo de uma aplicação de um VRP (Beasley et al., 1997). 

 
Figura 2 ‐ Exemplo de aplicação de um VRP (Beasley et al., 1997) 
(i) – Grafo de rede (ii) Possível resolução do VRP 

A  formulação  abaixo  representada  foi  baseada  no  trabalho  de  Figueiredo  (2007)  e  traduz  um  problema 
tradicional  de  planeamento  de  rotas  de  veículos.  Foi  considerado  que  o  custo  de  visita  aos  clientes  é 
independente  dos  veículos  que  a  efectuam,  não  se  considerando  restrições  que  contemplem 
incompatibilidades entre veículos e clientes. O objectivo do problema é encontrar‐se m rotas em G de menor 
custo que satisfaçam as restrições impostas.  

17 

 
Formulação matemática de um VRP clássico (baseado em Figueiredo, 2007) 

a) Índices 
i – Local visitado 
j – Local a visitar 
k – Veículo 

b) Parâmetros 
cij – Custo de deslocação entre o local i e o local j. 
qi – Quantidade pedida pelo local i. 
Qk – Capacidade máxima do veículo k. 
Dk – Duração máxima da rota percorrida pelo veículo k. 
tij – Tempo de viagem entre o ponto i e j. 
ti – Tempo necessário na operação de descarga no local i. 

c) Variáveis de decisão 
Xijk – Variável binária que toma valor 1 se o veículo k visita o cliente j após ter visitado o cliente i, caso contrário 
assume valor 0. 

d) Função Objectivo 
n n m

Minimizar  ∑∑∑ c
i =0 j =0 k =1
ij xijk   (3.1) 

e) Restrições 
n m

Sujeito a:  ∑∑ x
i =0 k =1
ijk = 1                , j = 0, 1, …, n   (3.2) 
n

  ∑xj =1
0 jk ≤ 1                      , k = 1, …, m  (3.3) 
n n

  ∑x
i =0
ipk = ∑ x pjk  
j =0
, k = 1, …, m; p = 0, …, n   (3.4) 
n n

  ∑∑ q x
i =1 j =1
i ijk ≤ Qk   , k = 1, …, m  (3.5) 
n n

  ∑∑ (t
i =1 j =1
ij + ti ) xijk ≤ Dk   , k = 1, …, m   (3.6) 

 
∑∑x
vi ∈S v j ∈S
ijk ≤ S −1
  , k = 1, …, m;  2 ≤ S ≤ V   (3.7) 

  xijk ∈ {0,1}   , i, j = 1, …, n; k = 1, …, m   (3.8) 

A função objectivo (3.1) consiste em minimizar o custo total. A equação (3.2) garante que cada cliente é servido 
por um único veículo. A restrição (3.3) impõe a saída ou não do armazém do veículo k que, caso seja necessário 
à  operação,  realiza  uma  única  rota.  A  equação  (3.4)  assegura  o  movimento  dentro  de  cada  rota,  ao  obrigar 
cada veículo k a partir para o cliente j após visitado o cliente i. As restrições (3.5) e (3.6) definem a capacidade 
máxima que um veículo pode transportar e a duração máxima que um camião pode demorar a percorrer a rota 
que lhe é atribuída. Finalmente, a equação (3.7) restringe a existência de sub‐rotas, onde S é um sub‐conjunto 
de clientes, e em (3.8) definem‐se as variáveis de decisão como binárias. 

18 

 
Capítulo 4 
Métodos de Resolução de Problemas de Planeamento de Rotas de Veículos 
Nas secções seguintes vão ser apresentados os principais métodos de resolução que têm vindo a ser aplicado 
ao  Vehicle  Routing  Problem  e  suas  variantes.  De  entre  os  vários  métodos  desenvolvidos  que  podem  ser 
aplicados  ao  VRP,  é  possível  distinguir  métodos  exactos  e  métodos  aproximados.  Os  primeiros  garantem  a 
obtenção da solução óptima enquanto os segundos aplicam algoritmos de busca local que percorrem apenas 
uma  fracção  do  espaço  de  pesquisa,  alcançando  (geralmente)  resultados  de  elevada  qualidade  mas  não 
óptimos ou, quando encontram o óptimo global, não têm forma de o comprovar. 

Contudo, os métodos exactos (secção 4.1), face à natureza combinatória explosiva do problema e apesar dos 
desenvolvimentos a nível de modelação e computação, têm grandes dificuldades de resolução para problemas 
de maiores dimensões.  

Por outras palavras, o esforço computacional para a sua resolução cresce exponencialmente com a dimensão 
do problema, dado pelo número de pontos a serem atendidos (Belfiore, 2006).  

Segundo Lenstra e Rinnooy Kan (1981), a maior parte dos problemas de planeamento de rotas de veículos são 
do tipo NP‐completo, entre eles o problema do caixeiro‐viajante (TSP) e o VRP clássico, pois não são resolvidos 
em tempo polinomial. 

A  complexidade  computacional  das  variantes  do  VRP  foi  analisada  por  Solomon  e  Desrosiers  (1988),  que 
estudaram o VRPTW; Taillard (1999) investigou o problema de planeamento de rotas com frota heterogénea 
fixa (HFVRP); e Dror e Trudeau (1990) e Archetti et al. (2006a) demonstraram que o VRPSD, embora sendo uma 
relaxação do VRP continua a ser da classe NP‐completo, à semelhança das variantes anteriores. 

Desta  forma,  a  variante  estudada  nesta  dissertação,  o  HFVRPTWSD,  também  é  NP‐completo  por  ser  uma 
combinação das variantes mencionadas, justificando o uso de heurísticas e metaheurísticas para resolução do 
problema  (Belfiore,  2006).  Adicionalmente,  a  resolução  em  tempo  útil  deste  problema  por  métodos  exactos 
revelou‐se impossível para uma dimensão próxima de um caso real (Figueiredo, 2007). 

Para  problemas  com  esta  complexidade,  a  optimização  utiliza  técnicas  para  alcançar  soluções  aproximadas 
como as heurísticas (secção 4.2), especialmente quando a sua dimensão torna proibitiva qualquer abordagem 
exacta, computacionalmente (muito) mais exigente. 

No entanto, uma heurística simples tem a desvantagem de explorar apenas um subconjunto da totalidade de 
soluções possíveis. Os algoritmos heurísticos simples têm tendência a ficar “presos” em óptimos locais, devido 
ao facto de um afastamento dessa solução implicar uma deterioração da função objectivo. 

Para contornar este problema, e para tornar o processo de pesquisa mais robusto e fiável, foram desenvolvidas 
as metaheurísticas – métodos baseados nas heurísticas tradicionais que no entanto utilizam um conjunto de 
regras que subjugam o processo de busca local a uma estratégia global, permitindo a diversificação da pesquisa 
pelo espaço de soluções explorado mesmo quando é encontrado um óptimo local. 

Esta  questão  vai  de  encontro  às  necessidades  de  uma  empresa  –  em  que  é  necessário  tomar  decisões  em 
tempo  real  com  base  na  informação  disponível  –  uma  vez  que,  na  impossibilidade  de  aguardar  um  tempo 
considerável para obter uma solução ligeiramente melhor, torna‐se bastante mais interessante a obtenção de 
resultados quase imediatos (em comparação com os métodos exactos, bastante mais demorados) próximos da 
solução óptima. 

19 

 
A  figura  3  (Christian,  2002)  ilustra  uma  possível  comparação  das  três  abordagens  referidas:  Um  algoritmo 
exacto percorre “todo” o espaço de pesquisa garantindo o óptimo global; uma heurística segue uma regra de 
optimização local ficando “presa” em óptimos locais; e uma metaheurística contorna esse problema utilizando 
regras que permitem a diversificação da pesquisa (pesquisa de regiões inexploradas), sem no entanto explorar 
todo o conjunto de soluções possíveis. 

b)

a)

 
Figura 3 ‐ Gráfico tridimensional representando o espaço de pesquisa (adaptado de Christian, 2002) 

a) Óptimo local; b) Óptimo global 

Os  métodos  metaheurísticos  têm  sofrido  um  grande  desenvolvimento  nos  últimos  anos,  sendo  possível 
encontrar inúmeros artigos com concepção de algoritmos aplicados a problemas de natureza combinatória. Na 
secção 4.3 são apresentados dois métodos de entre as metaheurísticas mais conhecidas: Simulated Annealing 
(subsecção  4.3.1)  e  Tabu  Search  (subsecção  4.3.2).  Na  subsecção  4.3.3,  menciona‐se  ainda  a  técnica  de 
hibridação de metaheurísticas e algumas das suas vantagens. 

Na secção seguinte, 4.4, irá ser dado maior destaque à comparação de diferentes métodos e técnicas aplicadas 
à resolução do VRP, mencionando alguns de entre os melhores algoritmos desenvolvidos. 

4.1 Métodos exactos 
Os métodos exactos constituem algoritmos de pesquisa exaustivos que percorrem todo o espaço de pesquisa 
garantindo  encontrar  a  solução  óptima  do  problema.  Contudo,  a  aplicação  a  problemas  de  natureza 
combinatória  explosiva  apresenta  grandes  dificuldades  de  resolução  se  a  dimensão  do  problema  for 
considerável, demorando demasiado tempo a encontrar a solução óptima o que, na maior parte dos casos, se 
torna  inviável.  Seguidamente  é  apresentado  um  algoritmo  de  resolução  exacto  que  tem  vindo  a  ser 
desenvolvido e aplicado ao problema em estudo. 

4.1.1 Branch & Bound 
Originalmente proposto por Land e Doig (1960) aplicado a problemas de programação linear mista, o B&B foi 
posteriormente utilizado para resolver problemas de planeamento de rotas de veículos por Christofides et al. 
(1981). O algoritmo Branch & Bound baseia‐se em três conceitos fundamentais (Clausen, 1999): no Branching, 
que consiste na construção de uma árvore de nós que visa subdividir o problema em sub‐problemas de menor 
dimensão (e por conseguinte mais simples de resolver); numa estratégia para escolher o próximo subproblema 
a analisar e na comparação com dois limites (Bounding), um superior e um inferior, a que uma solução tem de 
obedecer para ser considerada viável. 

20 

 
Assim, à medida que o algoritmo avança, o problema é dividido e a cada subproblema é aplicado o Bounding, 
comparando‐se cada nova solução com o limite superior, sendo este definido como a melhor solução obtida 
até ao momento. Já o limite inferior é obtido através de uma pré‐resolução do problema com relaxação linear 
das  restrições.  Se  a  solução  analisada  não  melhorar  a  função  objectivo,  esta  é  rejeitada,  o  que  se  traduz  na 
exploração parcial da árvore de soluções possível.  

4.2 Heurísticas clássicas 
Várias classes de heurísticas têm sido propostas para resolver o VRP. As heurísticas clássicas, desenvolvidas nas 
décadas  de  60  a  90,  introduziram  muitos  dos  conceitos  incorporados  nos  algoritmos  modernos,  como  os 
procedimentos de construção e melhoria.  

No entanto, uma heurística simples tem a desvantagem de explorar apenas um subconjunto da totalidade de 
soluções  possíveis.  Os  algoritmos  heurísticos  realizam  pesquisas  locais,  com  tendência  a  ficar  “presos”  em 
óptimos  locais,  devido  ao  facto  de  um  afastamento  dessa  solução  implicar  uma  deterioração  da  função 
objectivo.  Uma  das principais  diferenças  entre  as heurísticas  tradicionais  e  os  algoritmos  modernos  é  que  as 
primeiras não incorporam mecanismos de contornar os pontos óptimos locais. 

As  heurísticas  desenvolvidas  podem  ser  categorizadas  de  acordo  com  o  seu  método  de  funcionamento.  A 
classificação apresentada é baseada em Laporte e Semet (1998) e Laporte et al. (1999). 

‐ Métodos construtivos 
• ‐ Savings (versão paralela e sequencial) Clark e Wright (1964) 
‐ Métodos 2 fases 
• Métodos Cluster‐First, Route‐Second Fisher e Jaikumar (1981); Bramel e Simchi‐Levi (1995) 
‐ Métodos melhoria sequencial 
• Cross/Exchange/Relocate Van Breedam (1994) 
• λ‐opt Lin (1965), Or‐opt Or (1976) 

As  heurísticas  tradicionais  podem  ser  categorizadas  da  seguinte  forma:  i)  as  heurísticas  de  construção 
constroem  gradualmente  uma  solução  possível  tendo  em  atenção  o  valor  da  função  objectivo  da  solução 
obtida;  ii)  nas  heurísticas  de  2  fases,  o  problema  é  decomposto  em  duas  componentes  distintas:  o 
agrupamento dos pontos a interligar em rotas exequíveis e a construção rota em si (ou seja, a ordem pela qual 
o grupo de pontos deve ser percorrido) e, finalmente, iii) os métodos de melhoria sequencial tentam melhorar 
uma dada solução realizando uma sequência de trocas entre pontos dentro de uma rota ou entre rotas. Estes 
últimos tendem a ser aplicados a outros métodos, como o de Clark e Wright (1964), conseguindo desta forma 
competir  com  os  algoritmos  metaheurísticos  modernos,  com  obtenção  de  soluções  de  qualidade  bastante 
próxima. Seguidamente é abordado de forma sucinta o algoritmo Savings, uma das abordagens mais simples e 
simultaneamente flexível e eficiente, quando comparada com outros métodos. 

4.2.1 Algoritmo Savings 
O algoritmo de Clark e Wright (1964) é provavelmente a heurística mais conhecida para resolver o VRP. A sua 
ideia  principal  é  muito  simples.  Suponhamos  que  inicialmente  a  solução  inicial  do  VRP  consiste  em  usar  n 
veículos para satisfazer os pedidos de n clientes, um por cada. Para este exemplo vamos considerar a variante 
mais básica do VRP com um depósito central e contemplando apenas as restrições de capacidade (o CVRP). 

21 

 

n
A distância total desta solução é obviamente de  2 i =1 d ( D, i ) , sendo D o depósito e i cada um dos clientes a 
servir.  Se  passarmos  a  usar  só  um  veículo  para  servir  dois  pontos  i  e  j  numa  mesma  rota,  a  distância  total 
percorrida é reduzida pela quantidade s(i, j) = d(i, D) + d(D, j) – d(i, j). A quantidade s(i,j) é conhecida como o 
saving  ou  a  poupança  resultante  de  combinar  os  pontos  i  e  j  numa  única  rota.  Quanto  maior  for  s(i,j),  mais 
desejável  se  torna  visitar  ambos  os  clientes  numa  única  viagem  excepto  se  as  restrições  do  problema  não  o 
permitirem. 

Seguidamente  apresenta‐se  o  modo  de  funcionamento  do  algoritmo  Savings,  diferindo  conforme  a  versão 
utilizada: a versão paralela procura a melhor união possível de duas rotas compatíveis, ao passo que a versão 
sequencial processa‐se numa lógica de extensão das rotas existentes. A primeira é considerada mais eficiente 
que a segunda (Laporte e Semet, 1998). 

Possível implementação de um algoritmo Savings: versão Paralela e Sequencial (Clark e Wright, 1964) 

Passo 1: Computação dos Savings.  
Calcular sij = ci0 + c0j – cij para i, j = 1, …, n com i≠j. 
Ordenar os savings de forma decrescente numa lista (ordenação por insertion cost). 

(Versão Paralela) Passo 2: Melhor união possível.  

Começando pelo topo da lista de savings, executar o seguinte:  
Dado um determinado sij, determinar se existem duas rotas, uma contendo o arco (0, j) e a outra contendo o 
arco (i, 0) que podem ser combinadas sem violar nenhuma restrição.  
Se for possível, unir as duas rotas apagando os arcos (0, j) e (i, 0) e introduzindo (i, j). 
Se nenhum dos pontos i e j estiver incluído numa rota, criar nova rota (0, i, j, 0). 

(Versão Sequencial) Passo 2: Extensão de rotas.  

Considere alternativamente uma rota (0, i, …, j, 0).  
Determinar o primeiro saving ski ou sjl tal que a rota actual possa ser unida com outra que contenha um dos 
arcos (k, 0) ou (0, l).  
Implementar a união e repetir esta operação até que não existam mais junções possíveis.  
Nesse caso, aplicar as mesmas operações às próximas rotas.  
A paragem do algoritmo ocorre quando nenhuma união é possível. 

 
4.3 Metaheurísticas 
As  metaheurísticas  são,  na  sua  definição  original,  métodos  que  “guiam”  procedimentos  de  melhoria  local 
através de estratégias de alto nível para criar um processo capaz de escapar de óptimos locais e produzir uma 
busca robusta pelo espaço de soluções possíveis (Glover et al., 2003). 

De acordo com Voß (1999), uma metaheurística é um processo iterativo que guia e modifica as operações das 
heurísticas subordinadas de modo a produzir eficientemente soluções de elevada qualidade. Pode manipular 
uma  solução  completa  (ou  incompleta)  ou  uma  população  de  soluções  em  cada  iteração.  As  heurísticas 
subordinadas podem ser de alto nível ou um simples método de construção. 

22 

 
O  objectivo  é  explorar  suficientemente  o  espaço  de  busca  de  forma  a  encontrar  soluções  óptimas  ou  quase 
óptimas.  Regra  geral,  é  dada  uma  maior  ênfase  à  exploração  intensiva  de  regiões  do  espaço  de  pesquisa 
consideradas promissoras. Estes algoritmos variam desde simples regras aplicadas a métodos de pesquisa local 
até processos complexos incorporando mecanismos para evitar ficarem restritos a um sub‐espaço do conjunto 
de soluções possíveis, em redor de uma solução denominada por óptimo local. 

As ferramentas e mecanismos que surgiram através da criação dos métodos metaheurísticos têm provado ser 
tão  eficazes  que  passaram  ser  o  principal meio  para  resolver  muitos  dos  problemas  mais  complexos  actuais, 
particularmente os que possuem natureza combinatória. 

Apesar  de  as  metaheurísticas  não  conseguirem  garantir  o  óptimo  nas  soluções  encontradas,  os  métodos 
exactos  (que  teoricamente  conseguem  fornecer  tal  garantia,  se  o  tempo  de  execução  for  longo  o  suficiente) 
têm provado ser incapazes de encontrar soluções em tempo útil para problemas com dimensões semelhantes 
às  de  um  caso  real  e,  quando  o  conseguem,  a  qualidade  da  solução  obtida  é  próxima  das  que  uma 
metaheurística eficiente consegue obter. 

Em  particular,  as  necessidades  de  empresas  e  entidades  em  resolver  problemas  reais  têm  exercido  pressão 
para  o  desenvolvimento  acelerado  de  métodos  capazes  de  obter  soluções  aproximadas  para  problemas  de 
maior complexidade. Uma das grandes vantagens das metaheurísticas é que por natureza não são específicas 
para  um  determinado  problema,  facilitando  a  adaptação  às  características  do  problema  que  se  pretende 
estudar através da incorporação de dados, preferências e informação relevante. 

O  grau  de  exploração  da  vizinhança  varia  de  acordo  com  o  tipo  de  procedimento  adoptado.  Os  algoritmos 
metaheurísticos  podem  ser  classificados  de  várias  formas  de  acordo  com  o  critério  utilizado.  Optou‐se  pela 
seguinte classificação, baseado nas soluções que o algoritmo gera por cada iteração (Blum e Roli, 2003; Colorni 
et al., 1996): 

‐ Uma solução única: 

• Algoritmos baseados no processo físico de arrefecimento como o Simulated Annealing (SA). 
• Tabu Search (TS) e suas extensões como o Granular Tabu Seach (GTS); 
• Greedy Randomized Adaptive Search Procedure (GRASP); 
• Iterated Local Search (ILS); 
• Variable‐Neighborhood Search (VNS); 
‐ Uma população de soluções: 
• Evolutionary Algorithms (EAs) como os Algoritmos Genéticos (GAs) ou o Scatter Search (SS); 
• Adaptive Memory Procedures (AMPs); 
‐ Ou, no caso das soluções serem obtidas através de mecanismos de aprendizagem: 
• Neural Networks (NNs); 
• Ant  Algorithms  (AAs)  e  algoritmos  subsequentes,  inspirados  no  comportamento  das  colónias  de 
formigas (ex: ACO ‐ Ant Colony Optimization); 
• Particle Swarm Optimization (PSO). 
 
Nas  secções  seguintes  serão  apresentados  dois  dos  métodos  mais  conhecidos  na  literatura  existente  para 
resolução  de  problemas  de  natureza  combinatória,  entre  os  quais  o  problema  de  planeamento  de  rotas  de 
veículos, com especial destaque para o método utilizado na implementação do Modelo: Tabu Search. 

23 

 
4.3.1 Simulated Annealing 
O método de Simulated Annealing, ou Arrefecimento Simulado, é uma metaheurística amplamente divulgada 
na  comunidade  científica  utilizada  para  lidar  com  problemas  de  optimização  discretos  e,  com  menor 
abrangência,  alguns  problemas  de  natureza  contínua.  Foi  proposto  por  Kirkpatrick,  Gelat  e  Vecchi  (1983) 
explorando uma analogia com o comportamento termodinâmico explorado no processo de arrefecimento de 
sólidos, onde um conjunto de átomos é aquecido até uma temperatura elevada, após o qual é gradualmente 
arrefecido para que este cristalize numa configuração de menor energia. 

A  principal  característica  do  Simulated  Annealing  é  que  este  fornece  um  meio  de  escapar  ao  óptimo  local 
permitindo movimentos que pioram a função objectivo com o intuito de encontrar o óptimo global (Henderson 
et al., 2003). Esta particularidade, em conjunto com a sua facilidade de implementação e as suas propriedades 
de convergência fizeram desta técnica uma das mais populares nas duas últimas décadas. De seguida explica‐se 
sucintamente o modo de funcionamento do algoritmo:  

Em cada iteração do algoritmo são comparados dois valores da função objectivo – a solução actual e a nova 
solução  encontrada.  Soluções  melhores  são  sempre  aceites  ao  passo  que  soluções  que  deterioram  a  função 
objectivo  são  aceites  com  uma  probabilidade  variável,  de  forma  a  permitir  movimentos  que  explorem  o 
conjunto  de  soluções  em  redor  de  um  óptimo  local,  de  acordo  com  a  estratégia  de  alto  nível  de  busca  do 
óptimo global. A probabilidade de aceitar soluções que não melhoram o resultado global depende do quão pior 
é  esta  solução  em  relação  à  anterior  e  de  um  parâmetro  T,  designado  de  temperatura,  o  qual  usualmente 
decresce a cada iteração do algoritmo. 
À medida que o parâmetro de temperatura tende para zero, movimentos que deterioram a função objectivo 
são aceites com menor frequência, pelo que nas últimas iterações o algoritmo irá convergir para um óptimo 
local, que poderá ser ou não o óptimo global. 

4.3.2 Tabu Search 
Ao longo de duas décadas, foram publicados centenas de artigos apresentando aplicações da Tabu Search (TS) 
a vários problemas de natureza combinatória, cujo conceito básico se baseia nas ideias introduzidas por Glover 
(1986), onde se descreve como uma metaheurística baseada noutra heurística especificamente “talhada” para 
a resolução de problemas específicos. 

A TS, tal como os métodos mais comuns de Local Search (LS), explora o espaço de soluções movendo‐se, em 
cada  iteração,  da  solução  actual  s  para  a  melhor  solução  encontrada  num  subconjunto  da  vizinhança  V(s). 
Sendo  uma  extensão  dos  métodos  LS  clássicos,  pode  ser  simplesmente  vista  como  uma  combinação  de 
pesquisa local com memórias de curta duração. 

No entanto, ao contrário dos métodos clássicos descendentes de pesquisa local, na pesquisa Tabu é permitida 
uma  deterioração  da  função  objectivo.  O  método  Tabu  opera  com  base  na  suposição  que  não  há  qualquer 
sentido em rejeitar uma nova solução excepto se esse caminho já tiver sido percorrido antes. Isto assegura que 
novas  regiões  do  conjunto  de  soluções  de  um  problema  são  investigadas,  com  o  objectivo  de  escapar  dos 
óptimos locais e ultimamente de encontrar a melhor solução. 

Para  evitar  entrar  num  ciclo  fechado,  são  guardados  alguns  atributos  das  soluções  exploradas  recentemente 
numa lista denominada lista tabu em que são proibidos movimentos quando se detecta uma repetição de uma 
sequência de configurações. O intervalo de tempo que esse atributo permanece “tabu” pode variar ao longo da 
execução do modelo.  

24 

 
Devido ao facto de por vezes as proibições tabus serem demasiado restritivas, podendo impedir movimentos 
atractivos mesmo sem risco de entrar em ciclo, o estatuto de tabu pode ser transposto se algumas condições 
forem reunidas: nestes casos, aplica‐se o chamado critério de aspiração e ocorre, por exemplo, quando uma 
solução  encontrada  possui  um  ou  mais  atributos  tabu  mas  permite  uma  melhoria  na  função  objectivo  em 
relação à melhor solução conhecida até ao momento. 

De seguida, apresenta‐se o procedimento geral da versão mais utilizada do algoritmo Tabu Search, designada 
por  Best  Improvement  (Gendreau,  2003),  no  qual  se  aplicam  os  elementos  referidos  anteriormente.  Nesta 
versão, o objectivo é minimizar uma função com um determinado domínio, denominado espaço de pesquisa, 
seleccionando em cada iteração o melhor movimento possível de entre a vizinhança da solução actual.  

Possível implementação de um algoritmo Tabu Search: versão Best Improvement (Gendreau, 2003) 

Notação: 
S – a solução actual 
S* ‐ a melhor solução conhecida 
f* ‐ o valor da função objectivo de S* 
N(S) – A vizinhança de S 
Ñ(S)  –  O  subconjunto  de  soluções  admissíveis  de  N(S)  (i.e.,  soluções  que  não  constam  na  lista  tabu  ou 
constando são considerados válidos através do critério de aspiração) 

Inicialização 
Escolhe‐se uma solução inicial S0.  
Estabelece‐se: S* = S = S0; f* = f(S0); T = 0. 
A  solução  inicial  é  tipicamente  criada  recorrendo  a  uma  heurística  de  baixo  nível,  após  o  qual  são  feitas 
tentativas  para  melhorar  essa  solução utilizando pesquisa  local  com  uma  ou  mais  estruturas de  vizinhança  e 
uma estratégia de aceitação da melhor solução. 

Pesquisa 
Enquanto um dos critérios de paragem não for satisfeito: 
No caso da se pretender minimizar a função objectivo, escolhe‐se uma nova solução S’ do conjunto admissível 
da vizinhança de S – Ñ(S) – tal que f(S’) seja menor que nas restantes soluções do subconjunto. Ou seja, f(S’) < 
f(S’’),  ∀S ' '∈ Ñ ( S ) . Seguidamente actualiza‐se S = S’. 
Se f(S) < f*, então estabelece‐se f* = f(S); S* = S. (minimização da F.O.) 
Finalmente guarda‐se o movimento actual na lista tabu para o período T e elimina‐se o movimento mais antigo 
existente na lista. 

Critérios de Paragem 
Quando ocorre um determinado número de iterações Tmax ou é ultrapassado o tempo de processamento do 
computador (CPU) estipulado; 
Após um número de iterações pré‐estabelecido sem melhoria significativa na função objectivo; 
Quando o objectivo atinge um valor limiar especificado a priori. 
Em pesquisas tabu mais complexas, o critério de paragem é geralmente definido para ocorrer após a conclusão 
de uma sequência de fases, cuja duração é determinada por uma das regras acima enumeradas. 

25 

 
No entanto, métodos simples como o acima descrito têm por vezes dificuldades em resolver problemas mais 
complexos, pelo que se costumam incluir elementos adicionais da estratégia de pesquisa de forma a torná‐la 
mais eficaz. Os mais importantes são: 

• os  métodos  de  intensificação,  baseados  no  conceito  de  memória  intermédia,  chamada  de  recency 
memory, na qual são guardadas as soluções mais atractivas, a que Glover e Laguna (1997) apelidaram de 
soluções de elite, podendo‐se a qualquer momento da execução do modelo voltar a um desses pontos e 
realizar  uma  busca  mais  exaustiva  às  suas  vizinhanças  (experimentando  combinações  de  movimentos 
historicamente promissoras), permitir movimentos de inserção mais complexos ou alterar a estrutura de 
vizinhança para uma que permita movimentos mais diversificados, entre outras técnicas; 

• métodos  de  diversificação,  na  tentativa  de  ultrapassar  a  tendência  negativa  dos  métodos  locais  em 
consumir a maior parte do tempo de execução a pesquisar uma porção restrita  do espaço de pesquisa.  
Esta técnica força o algoritmo de pesquisa local a explorar novas áreas utilizando memória de longo prazo, 
denominada  de  frequency  memory,  que  guarda  um  histórico  das  soluções  exploradas  e  permite  visitar 
regiões consideradas insuficientemente exploradas (nas quais o número total de iterações processado seja 
reduzido),  quer  voltando  a  soluções  anteriores  (restart  diversification)  quer  enviesando  o  processo  de 
busca local através da incorporação de um termo relacionado com a componente frequência (continuous 
diversification); 

• Permissão temporária de soluções inadmissíveis através da relaxação de restrições do espaço de pesquisa, 
especialmente eficaz em problemas demasiado restritivos. Esta técnica é de fácil implementação, bastando 
substituir as restrições seleccionadas por penalizações na função objectivo; 

• Utilização de objectivos substitutos e auxiliares. A primeira técnica é bastante útil para os casos em que a 
função objectivo é complexa e envolve um esforço computacional significativo, casos em que se substitui a 
função objectivo por outra mais simples, mas representativa, de forma a seleccionar um subconjunto de 
potenciais  candidatos  para  seguidamente  se  aplicar  o  objectivo  real.  O  segundo  caso  é  geralmente 
utilizado para situações em que se obtêm frequentemente várias soluções com idêntico valor da função 
objectivo,  não  se  conseguindo  mover  eficientemente  através  do  espaço  de  busca  sem  uma  orientação 
auxiliar. 

 (i)   (ii)   
Figura 4 ‐ Exemplo de aplicação do algoritmo TS (Glover e Laguna, 1997) 
(a) Grafo de rede        (b)    Execução de 4 iterações do algoritmo Tabu Search 

26 

 
Apresenta‐se na figura 4 um exemplo de execução de um algoritmo de pesquisa TS aplicado a um problema de 
minimização  k‐Tree  ilustrativo  do  que  até  aqui  foi  apresentado,  adaptado  de  Glover  e  Laguna  (1997).  O 
objectivo é encontrar a solução que interliga todos os nós do grafo representado na figura 4a minimizando a 
soma  dos  pesos  associados  aos  arcos.  Na  figura  4b  representam‐se  quatro  iterações  de  uma  possível 
implementação do método Tabu. 

4.3.3 Métodos Híbridos  
Nos últimos anos tem‐se vindo a observar um forte crescimento no desenvolvimento de algoritmos que não 
seguem  os  conceitos  de  uma  metaheurística  pura;  em  vez  disso,  combinam  as  ideias  de  várias  abordagens 
heurísticas,  metaheurísticas  e  mesmo  de  outros  campos  da  investigação  operacional.  Estes  métodos  são 
referidos como métodos híbridos. 

A motivação de base da hibridação de conceitos retirados de diferentes algoritmos é a de se obter um método 
que  garanta  uma  melhor  performance  (isto  é,  soluções  com  melhor  qualidade  a  um  custo  computacional 
inferior) do que as estratégias que lhe dão origem isoladamente. Essa motivação provém da aceitação do facto 
de que não pode existir uma estratégia de optimização que seja globalmente melhor que todas as outras. Este 
conceito  inspira‐se  uma  vez  mais  na  natureza  (ex:  genética),  sendo  atribuído  aos  indivíduos  híbridos 
características superiores que se acredita terem origem na sinergia dos melhores atributos dos seus parentes.  

Assim,  a  resolução  de  um  problema  complexo  requer  quase  sempre  o  desenvolvimento  de  um  algoritmo 
especialmente adaptado, com utilização de conceitos de outros algoritmos, conseguindo regra geral ser mais 
eficiente  e  mais  representativo  do  problema,  embora  possa  ser  menos  flexível  para  posterior  adaptação  a 
outros casos de estudo. 

Podem‐se distinguir três formas de hibridação (Blum e Roli, 2003). A primeira consiste em incluir componentes 
de  uma  metaheurística  numa  outra.  As  melhores  aplicações  de  algoritmos  evolucionários  e  de  colónias  de 
formigas fazem uso deste tipo de hibridação, incorporando procedimentos de pesquisa local. 

A segunda forma de hibridação baseia‐se na troca de informação de dois ou mais algoritmos que geralmente 
são  executados  paralelamente,  ajudando‐se  mutuamente  a  percorrer  o  espaço  de  pesquisa.  Este  método  é 
comummente apelidado por Pesquisa Cooperativa. 

Finalmente,  a  última  abordagem  integra  métodos  aproximados  com  métodos  exactos  (programação  com 
restrições  e  árvore  de  pesquisa).  Este  último  tipo  de  hibridação  tem  sido  desenvolvido  recentemente  com 
excelentes  resultados  quando  comparados  com  os  obtidos  por  cada  um  dos  métodos  isoladamente.  Desta 
forma, é possível resolver problemas de maior dimensão de uma forma mais eficiente. 

4.4 Comparação dos métodos de resolução 
De acordo com Brejon (1998), há uma série de factores que justificam o uso de heurísticas para resolução de 
problemas de natureza combinatória de maior complexidade: 

‐ Os métodos exactos são proibitivos do ponto de vista computacional; 

‐  Os  métodos  heurísticos  são  mais  simples,  de  fácil  implementação  e  utilização  e  requerem  menos  recursos 
para  obter  resultados,  o  que  é  especialmente  vantajoso  se  existir  necessidade  de  resolver  o  problema 
periodicamente, como é o caso da utilização para as operações diárias de uma empresa real; 

27 

 
‐ Os dados disponíveis não são exactos ou a informação é limitada, de modo que a aproximação incorrida na 
obtenção desses dados superam o erro causado pela não optimalidade. 

O uso de uma heurística tradicional é actualmente considerado ineficiente na medida em que, por si só, não 
consegue obter resultados competitivos em relação aos algoritmos mais recentes. Isto deve‐se ao facto de não 
serem permitidas soluções que deteriorem a função objectivo caindo no já referido problema do óptimo local.  

Os  melhores  algoritmos  desenvolvidos  para  resolver  o  VRP  (ou  uma  das  suas  variantes)  combinam 
simultaneamente  mecanismos  de  aprendizagem,  pesquisa  local  ou  uma  população  de  soluções.  Recorrem 
também ao uso de memória para tornar a pesquisa mais inteligente, bem como mecanismos de diversificação, 
intensificação  ou  processamento  paralelo.  Tal  evidencia  as  vantagens  de  aplicar  hibridação  de  conceitos  de 
várias metaheurísticas, resultando numa performance superior.  

Foi  realizada  uma  pesquisa  na  tentativa  de  encontrar  os  melhores  algoritmos  desenvolvidos,  com  base  nos 
critérios  de  desempenho,  precisão  e  rapidez  aplicados  aos  conjuntos  clássicos  de  benchmark  instances  de 
Christofides et al. (1979) e de Solomon (1987): 
• Christofides, Mingozzi e Toth, 1979: 14 problemas do tipo CVRP com n clientes (50 ≤ n ≤ 199). 
• Solomon, 1987: 56 problemas do tipo VRPTW com 100 clientes, organizados em 6 categorias distintas. 

Seguidamente,  referem‐se  alguns  dos  algoritmos  mais  eficientes  desenvolvidos  nos  últimos  anos,  com  uma 
descrição sucinta das ideias implementadas. O desempenho destes e de outros modelos referidos na literatura 
são apresentados e comparados, para efeitos de benchmarking, na secção 1 do capítulo 7. 

• Mester e Bräysy (2004): Active Guided Evolution Strategy (AGES): Consiste na criação de uma população 
de soluções a partir de um único progenitor, às quais se aplica pesquisa local; penalizam‐se algumas soluções 
com propriedades indesejadas (ex: rotas muito longas); utilizam‐se mecanismos de diversificação contínua; 
movimentos intra‐rotas 2‐opt; trocas entre 2 rotas; vizinhanças de grande escala e reinícios a partir da melhor 
solução conhecida. 

• Gambardella  et  al.  (1999):  Multiple  Ant  Colony  System  (MACS):  O  VRP  é  transformado  num  TSP  pela 
adição de m‐1 depósitos. Seguidamente utilizam‐se as formigas para encontrar rotas possíveis. No caso de se 
considerar uma função multiobjectivo utiliza‐se uma colónia de formigas para cada objectivo trabalhando em 
paralelo,  com  troca  de  feromonas  (informação)  entre  colónias.  Finalmente  é  executada  pesquisa  local  que 
realiza trocas de nós e de arcos. 

• Rochat e Taillard (1995) Tabu Search com introdução do conceito Adaptive Memory Procedure: Inicializa‐
se  com  um  conjunto  de  boas  soluções,  que  posteriormente  se  recombinam  utilizando  procedimentos  de 
memória  adaptativa  e  finalmente  voltam  a  optimizar‐se  as  soluções  obtidas  de  forma  a  inserir  os  nós  soltos 
(que  ainda  não  pertencem  a  nenhuma  rota).  A  memória  utilizada  serve  para  guardar  rotas  ou  subrotas  das 
melhores soluções, de forma a recombiná‐las entre si. 

• Taillard (1993) Tabu Search Parallel: Esta abordagem, que ainda hoje detém a melhor performance em 12 
das  14  as  instâncias  de  Christofides  et  al.  (1979),  baseia‐se  na  decomposição  do  problema  em  regiões 
centradas no depósito e processamento em paralelo dos vários subproblemas resultantes. Por esse motivo, os 
tempos computacionais obtidos não podem ser comparados. Taillard (1993) propôs ainda uma versão do seu 
algoritmo para problemas não uniformes baseado na arborescência dos caminhos mais curtos até aos clientes.  

28 

 
  4.5 Escolha do Método de Resolução e Motivações desta Dissertação 

O método de resolução escolhido neste trabalho foi o Tabu Search, tendo entrado em consideração a maior 
facilidade de parametrização que este método permite, o que facilita a introdução de regras que condicionam 
a  pesquisa  e  permitem  aumentar  a  eficiência  do  algoritmo.  Esta  escolha  foi  também  influenciada  pelo 
desempenho  superior  dos algoritmos  Tabu  Search  encontrados  na  literatura, o  que  vai  ao  encontro  com  um 
dos objectivos desta dissertação – o  de produzir soluções com qualidade elevada. 

Neste  capítulo  são  mencionados  alguns  trabalhos  desenvolvidos  anteriormente  dedicados  ao  problema  em 
estudo.  Os  resultados  obtidos  por  Belfiore  (2006)  com  a  aplicação  de  uma  metaheurística  a  um  problema 
semelhante (subsecção 4.5.1) e por Figueiredo (2007) com o uso de um algoritmo exacto aplicado a este caso 
de  estudo  (subsecção  4.5.2)  constituem  a  principal  motivação  desta  dissertação,  que  pretende  viabilizar  a 
implementação de um modelo aproximado às operações de distribuição de uma empresa real. 

4.5.1 Resultados obtidos por Belfiore (2006) 
No  trabalho  de  Belfiore  (2006),  a  implementação  de  um  modelo  metaheurístico  chamado  Scatter  Search 
permitiu obter resultados considerados bastante importantes quando comparados com o planeamento real de 
uma  empresa do  sector  retalhista  brasileiro.  A  ilação  mais  importante  que  se  retira  do  seu  trabalho  é  que  é 
possível  resolver  problemas  reais  de  dimensões  consideráveis  num  tempo  computacional  aceitável  e 
encontrando soluções que beneficiam o planeamento diário das operações de distribuição. 

O problema estudado é a variante HFVRPTWSD e possui as seguintes características: a distribuição é efectuada 
a partir de um único centro de distribuição que satisfaz a procura de 519 clientes. Os produtos são distribuídos 
através de uma frota heterogénea de veículos subcontratada com diferentes restrições de capacidade, medida 
pelo  peso,  volume  e número  de paletes da  carga  a  transportar.  Para cada cliente,  têm  de  ser  respeitadas  as 
janelas temporais de entrega e a dimensão máxima do veículo que pode receber, podendo ser visitado mais do 
que uma vez por veículos de capacidade inferior ao seu pedido.  

No  modelo  desenvolvido,  o  objectivo  foi  o  de  minimizar  o  custo  total  de  viagem  no  horizonte  temporal 
considerado,  decomposto  nas  componentes  fixa  e  variável.  Neste  trabalho  foram  ainda  adaptadas  algumas 
heurísticas construtivas, posteriormente utilizados gerar um conjunto de soluções iniciais, tendo comparado os 
vários algoritmos com a aplicação a diversas instâncias de problemas benchmark existentes na literatura. 

Mais concretamente, a possível implementação do modelo de Belfiore (2006) às operações do grupo permitiria 
obter  uma  economia  de  €  974.0163  anuais  (através  da  projecção  dos  resultados  obtidos  para  uma  semana 
representativa da média das operações), o que corresponde a uma poupança percentual de 6,3%. Também o 
número  de  veículos  requeridos  para  realizar  a  operação  sofreu  uma  diminuição  média  de  3,2%  face  ao 
planeamento real. 

Para os vários dias em que foi executado o modelo, a dimensão do problema (dada pelo número de clientes a 
visitar) variou entre 50 ≤ n ≤ 400. O tempo de processamento do algoritmo varia de forma não linear com a 
dimensão  do  problema,  mas  importa  apenas  reter  que,  para  o  dia  mais  atarefado  (com  maior  número  de 
clientes  a  visitar)  da  semana  estudada,  o  modelo  demorou  cerca  de  3500  segundos  a  processar  o  número 
                                                  
3
 Conversão efectuada com base em informações do site do Banco Central do Brasil  http://www4.bcb.gov.br para uma 
taxa de câmbio de 1€=2,66936R$ em vigor à data de revisão da tese de Belfiore (30 de Março de 2006) 

29 

 
máximo  de  iterações  estipulado,  devolvendo,  apesar  da  limitação  imposta,  uma  solução  com  um  custo  6% 
menor que o planeamento real. Para um problema com dimensão até 150 clientes, o modelo obtém resultados 
em menos de 20 minutos. 

4.5.2 Resultados obtidos por Figueiredo (2007) 
Em Figueiredo (2007), foi desenvolvida uma análise da complexidade computacional do problema em que se 
concluiu que o modelo exacto desenvolvido não consegue devolver resultados em tempo aceitável quando a 
dimensão do problema é superior a n = 10 lojas, devido ao crescimento exponencial do tempo necessário para 
resolução com a adição de mais variáveis e restrições. 

Ainda assim, embora não garantindo a solução óptima na maioria dos runs executados para diferentes cenários 
e  para  os  vários  dias  de  planeamento  simulados,  o  algoritmo  alcançou  resultados  promissores  obtendo  uma 
redução na ordem dos 20% face ao planeamento real, tanto para o número de quilómetros percorridos como 
para  o  número  de  veículos  necessários  para  completar  a  operação.  Quer  isto  dizer  que  com  o  planeamento 
obtido  pela  aplicação  do  modelo  o  número  de  quilómetros  a  percorrer  por  cada  veículo  não  se  altera 
substancialmente,  minimizando  também,  além  das  componentes  explícitas  da  função  objectivo,  o  impacto 
causado na operação diária dos transportes. 

Já a diminuição obtida no tempo total necessário para realizar a operações, outra das componentes da função 
objectivo, andou na ordem dos 4 a 7% devido a restrições específicas do problema relacionados com o tempo 
fixo  despendido  em  manobras  e  tarefas  administrativas  em  cada  cliente  visitado.  Assim,  o  planeamento  em 
que  é  permitido  divisão  de  cargas  vem  piorar  esta  componente  devido  ao  aumento  do  número  de  visitas, 
sendo  o  desempenho  comprometido  excepto  se  se  introduzir  uma  nova  restrição  que  limite  o  número  de 
visitas aos casos em que a capacidade do camião não é suficiente para garantir os pedidos da rota à qual foi 
afectado (a que o autor chama de cenário VRPSD simples). 

Se  tivermos  em  conta  que  o  integrality  gap  resultante  da  aplicação  do  modelo  de  Figueiredo  (2007)  foi  em 
média de 4,5% para o cenário VRPSD e de 3,5% para o cenário VRPSD simples, isto é, a diferença entre o valor 
da  função  objectivo  da  solução  encontrada  pelo  algoritmo  Branch  and  Bound  (para  o  tempo  de  execução 
admitido  de  7200  segundos)  e  a  solução  óptima  calculada  através  de  uma  pré‐resolução  do  problema  com 
relaxação linear das restrições, conclui‐se que se justifica o desenvolvimento de um modelo aproximado (uma 
heurística ou metaheurística) que garanta a obtenção de soluções com qualidade semelhante ou superior, face 
ao gap resultante, numa fracção do tempo computacional.  

Além  do  referido  anteriormente,  é  ainda  possível,  através  deste  método,  aplicar  o  modelo  ao  problema  em 
toda  a  sua  extensão,  reduzindo  o  erro  cometido  pelas  aproximações  que  a  aplicação  de  um  modelo  exacto 
exige, como a influência (negativa) no resultado resultante da subdivisão em problemas de menor dimensão, 
modificações  na  informação  fornecida  no  planeamento  real  devido  à  menor  abrangência  do  (sub)problema 
analisado, entre outros. 

30 

 
Capítulo 5 
Implementação do modelo matemático 
O  modelo  que  aqui  se  descreve  pretende  resolver  o  problema  VRP  bem  como  algumas  das  suas  variantes 
mais  conhecidas,  como  o  Capacitated  Vehicle  Routing  Problem,  com  frota  homogénea  (CVRP)  ou 
heterogénea (HFVRP); outra variante abordada foi o VRP com Janelas Temporais (VRPTW) rígidas ou flexíveis; 
permite  ainda  resolver  a  variante  VRPSD  –  Vehicle  Routing  Problem  with  Split  Deliveries  –,  embora  a 
possibilidade de dividir a carga seja uma considerada uma relaxação do problema original.  

O  modelo  implementado  permite  resolver  qualquer  das  variantes  do  VRP  mencionadas  e  ainda  contempla 
outras restrições menos utilizadas: restrições de dimensão das rotas, restrições de acessibilidade dos clientes 
e o problema multi‐produto. 

O Modelo desenvolvido é inspirado na metaheurística Tabu Search, abordada no capítulo 4.3.2, na medida 
em que o processo da pesquisa da vizinhança não permite movimentos inversos aos últimos k movimentos, 
armazenados numa lista dinâmica – lista tabu – o que torna a pesquisa mais eficiente e ajuda a contornar o 
problema dos óptimos locais, problema que a maioria das heurísticas simples falha em ultrapassar. 

Assim,  a  proibição  dos  movimentos  considerados  tabu,  considerados  contraproducentes  sempre  que  não 
conduzam a uma melhoria da Função Objectivo, conduz a pesquisa para novas zonas do espaço de pesquisa 
inexploradas, evitando que a mesma fique restrita a um número limitado de soluções. 

Tendo em conta o objectivo inicial do Modelo implementado – o de melhorar um planeamento já existente – 
pressupõe‐se a existência de uma solução inicial para se proceder seguidamente ao seu melhoramento. 

Assim, foram implementadas duas heurísticas de construção, uma delas inspirada no conceito de savings de 
Clark e Wright (1964), permitindo‐se ainda a possibilidade de importação de uma solução pré‐concebida. Na 
secção 5.1 apresentam‐se os respectivos algoritmos. 

A  natureza  iterativa  do  código  implementado  e  as  várias  funcionalidades  e  adaptações  a  que o Modelo  foi 
sujeito  para  se  conseguir  a  versatilidade  necessária  à  execução  de  vários  tipos  de  problemas  tornam 
impossível  apresentar  a  explicação  de  todo  o  código  passo  a  passo.  No  entanto,  apresenta‐se  o  modo  de 
funcionamento do modelo implementado, através de um esquema simplificado do algoritmo (5.2.1). 

O  que  define  o  Modelo  implementado  como  uma  metaheurística  e  o  distingue  das  heurísticas  simples  é  o 
conjunto de regras implementado que confere maior poder à pesquisa e minora a possibilidade de ficar preso 
em  óptimos  locais,  o  que  não  seria  também  possível  sem  a  possibilidade  de  ocorrer  uma  deterioração 
temporária da Função Objectivo.  

Na subsecção 5.2.2 deste capítulo faz‐se uma revisão aprofundada das estratégias de pesquisa da vizinhança 
implementadas  neste  Modelo  que  estão  na  origem  da  sua  designação  de  metaheurística.  Igualmente  na 
secção  5.2,  explicam‐se  com  maior  pormenor  os  principais  elementos  e  funcionalidades  do  Modelo 
desenvolvido, como a Função Objectivo (5.2.4), restrições (5.2.5), critérios de terminação da pesquisa (5.2.7) 
e com maior foco a possibilidade de Entregas Fraccionadas (5.2.3) e de Cargas Mistas (5.2.6) do problema de 
planeamento de rotas. 

31 

 
Na secção 5.3 fornece‐se uma explicação detalhada das principais funções e procedimentos implementados e 
na  secção  5.4  é  feita  uma  breve  descrição  dos  ficheiros  de  input  que  o  modelo  recebe  e  dos  outputs  que 
devolve, bem como o leque de configurações e parâmetros ajustáveis para a correcta importação dos inputs 
e a devolução de outputs com a informação desejada, de forma a conferir a versatilidade necessária a correr 
com a máxima eficiência todo o tipo de problemas do género. 

5.1 Heurísticas de construção implementadas 
Tendo  em  conta  o  objectivo  principal  do  Modelo  implementado  –  a  obtenção  de  um  conjunto  de  rotas 
próximo do óptimo – um dos pressupostos tomados é a existência de uma solução inicial prévia, que no Caso 
de Estudo seria o próprio planeamento real da empresa. 

No  entanto,  o  Caso  de  Estudo  analisado  foi  retirado  de  Figueiredo  (2007),  para  comparação  com  os  seus 
resultados, e o planeamento da empresa não foi necessário no trabalho de Figueiredo uma vez que utilizou 
um método exacto – o qual não necessita de uma solução inicial, ao contrário da generalidade dos métodos 
de pesquisa aproximados. 

Assim,  e  sendo  a  qualidade  da  solução  inicial  preponderante  para  o  bom  desempenho  do  Modelo,  foram 
implementadas  duas  heurísticas  de  construção  com  o  propósito  de  simultaneamente  “alimentarem”  a 
metaheurística com uma solução inicial e servirem de comparação para os resultados obtidos. 

5.1.1 Heurística de Construção Savings 
A  primeira  heurística  de  construção  implementada  inspirou‐se  no  conceito  de  Savings  de  Clark  e  Wright 
(1964). Devido à complexidade do Caso de Estudo analisado (múltiplas restrições) não foi possível, nesta fase, 
respeitar todas as restrições do problema, correndo‐se o risco de não se conseguir terminar a construção da 
solução antes de esgotadas as possibilidades dadas pela matriz Savings – que contém a poupança obtida por 
se visitar consecutivamente um par (ci, cj) de clientes ao invés de se realizarem visitas separadas a cada um 
dos clientes. 

Deste  modo,  a  solução  inicial  resultante  da  heurística  implementada  obedece  às  restrições  de  um  CVRP 
tradicional: restrições de capacidade e de dimensão máxima das rotas. 

Apesar do compromisso feito, em alguns casos a execução do ciclo principal desta heurística deixava clientes 
por inserir pelo que foi acrescentado, como complemento à heurística Savings, um ciclo adicional que insere 
os clientes restantes nas rotas com capacidade suficiente.  

Abaixo segue o pseudo‐código do algoritmo implementado: 

Algoritmo 1: Heurística de construção Savings_______________________________________________ 

Geração da matriz Savings 
Enquanto houver clientes para inserir Ou houverem entradas na matriz Savings por experimentar: 
  ‐ Escolha do maior saving entre dois clientes a e b da matriz gerada, t.q. pelo menos um dos clientes não 
consta na solução; 
  ‐ Se o cliente a já foi inserido na solução: 

32 

 
    ‐ Se forem cumpridos as restrições (de capacidade e de dimensão máxima da rota): 
      ‐ Insere‐se cliente b na rota do cliente a imediatamente antes ou depois deste*; 
  ‐ Se o cliente b já foi inserido na solução: 
    ‐ Se forem cumpridos as restrições (de capacidade e de dimensão máxima da rota): 
      ‐ Insere‐se cliente a na rota do cliente b imediatamente antes ou depois deste*; 
  ‐ Se nenhum dos clientes foi inserido 
    ‐ Se houver uma rota vazia t.q. as restrições (de capacidade) são cumpridas: 
      ‐  Inserem‐se  ambos  os  clientes  numa  rota  vazia  (por  ordem  decrescente  da  capacidade  dos 
veículos disponíveis); 
        ‐ Caso contrário (não é respeitada a restrição de capacidade) 
      ‐ Insere‐se apenas o cliente a; 
Fim de ciclo 
Se o contador “Nº clientes inseridos” for menor que o total de clientes do problema (size): 
Enquanto houver clientes para inserir: 
  ‐ Para cada cliente j não inserido: 
    ‐ Procura‐se uma rota i t.q.: (capacidade veículo – soma da procura dos clientes nessa rota) ≤ procura 
cliente j 
      ‐ Insere‐se o cliente j na rota i; 
Se houverem clientes com procura nula: 
  ‐ Removem‐se os clientes da solução; 
Fim de procedimento._______________________________________________________________________ 
*A inserção de um cliente a (b) é feita antes ou depois do cliente b (a) na ordem de visita da rota consoante o cliente b 
(a) tenha sido inserido no início ou no final da rota (a construção da rota é feita do meio para as extremidades) 

Devido ao não cumprimento das restrições de acessibilidade e das janelas temporais dos clientes, o processo 
de obtenção de uma solução inicial válida para o Caso de Estudo exigiu a manipulação manual das rotas que 
não respeitavam uma das restrições não contempladas: janelas temporais e restrições de acessibilidade dos 
clientes.  

No caso dos problemas do Caso de Estudo o esforço necessário para tal era reduzido na medida em que as 
janelas temporais dos clientes eram bastante alargadas e a extensão das rotas pequena (dois a três clientes, 
no máximo), esta última devido a restrições de capacidade. 

Adicionalmente, foi programado em Excel um conjunto de validações simples que verificam o cumprimento 
das  restrições  da  solução  inicial  para  utilização  pelo  Modelo  implementado  –  ficheiro  “initial  route 
constructor.xls”, disponibilizado no Anexo H. 

5.1.2 Heurística de Construção local 

Para se proceder à validação do Modelo implementado, executou‐se o mesmo com uma série de problemas 
benchmark cujos resultados são apresentados no secção 6.1.  

O set de problemas de Christofides (1979) apenas contém restrições de capacidade e de dimensão das rotas, 
pelo que a obtenção de uma solução inicial para estes problemas foi feita utilizando a heurística Savings. 

33 

 
No  entanto,  o  segundo  set  de  problemas  experimentado  –  instâncias  de  Solomon  –  contém  uma  restrição 
adicional não considerada na construção da solução inicial anteriormente abordada: Janelas temporais. Estes 
problemas, ao contrário dos problemas do Caso de Estudo, são caracterizados por janelas temporais estreitas 
e  veículos  com  capacidades  elevadas,  suficiente  para  executar  rotas  de  5  a  30  clientes,  consoante  o 
problema. 

Adicionalmente,  o  conjunto  de  problemas  de  Solomon  (1987)  tem  56  instâncias  com  dimensão  de  100 
clientes, pelo que a obtenção de uma solução válida – respeitando todas as restrições do problema – através 
de manipulação manual da solução obtida pela heurística Savings ficou fora de questão. 

Deste modo, optou‐se pela implementação de outra heurística de construção capaz de respeitar as restrições 
dos problemas de Solomon: capacidade dos veículos e janelas temporais dos clientes. 

Esta heurística baseia‐se na construção individual de cada rota, de acordo com um critério de minimização da 
distância, tempo ou ambos, entre cada par de clientes. O critério pode ser definido pelo utilizador e aplica‐se 
a partir do segundo cliente visitado; já a escolha do primeiro cliente a visitar é feita tendo em conta o limite 
inferior  da  sua  janela  temporal  de  modo  a  garantir  que  os  veículos  iniciam  as  suas  rotas  tão  cedo  quanto 
possível. Abaixo apresenta‐se um pseudo‐código demonstrativo do funcionamento do algoritmo: 

Algoritmo 2: Heurística de Construção Local_____________________________________________________ 
Para cada um dos veículos disponíveis: 
  Se o número de clientes inseridos atingir o total de clientes do problema 
    ‐ Terminar ciclo 
  Insere‐se como primeiro cliente a visitar em cada rota aquele que tiver o início de janela temporal mais 
cedo; 
  Para as restantes posições da rota: 
  Enquanto a lista de candidatos não for vazia: 
    ‐  Constrói‐se  uma  lista  de  candidatos  com  todos  os  clientes  que  podem  ser  inseridos  na  próxima 
posição (i.e., respeitando as restrições do problema); 
    ‐ Selecciona‐se aquele que minimiza o critério escolhido em relação ao cliente anteriormente visitado; 
  Se a lista de candidatos for vazia: 
    ‐ Passa‐se à construção da rota do veículo seguinte; 
Fim de ciclo 
Se o contador “Nº clientes inseridos” for menor que o total de clientes do problema (size): 
Enquanto houver clientes para inserir: 
  ‐ Para cada cliente j não inserido: 
    ‐ Procura‐se uma rota i t.q.: (capacidade veículo – soma da procura dos clientes nessa rota) ≤ procura 
cliente j E as restrições de janelas temporais são respeitadas 
      ‐ Insere‐se o cliente j na rota i; 
Fim do procedimento_______________________________________________________________________ 

34 

 
5.2 Implementação do Modelo 
5.2.1 Esquema representativo do modo de funcionamento do Modelo implementado 

Esta secção tenta explicar da forma mais clara possível os principais procedimentos que compõem o Modelo 
desenvolvido – cuja implementação foi programada em linguagem C em ambiente LINUX – complementando 
o Código que se encontra integralmente auto‐documentado sob a forma de comentários (Anexo H). 

Seguidamente  representa‐se  uma  versão  muito  simplificada  do  modo  de  funcionamento  do  Modelo 
desenvolvido. O ciclo principal bem como a chamada das funções mais importantes podem ser consultados 
em <tabu.c> (Vide Anexo H), ao passo que uma descrição concisa das respectivas funcionalidades encontra‐se 
apresentada na secção 5.3 do presente capítulo. 

Algoritmo 3: Metaheurística Tabu Search_______________________________________________________ 

‐ Recolha de parâmetros da linha de comandos / cabeçalho (tabu.h) (ex: Duração Run / F.O. pretendida). 

‐ Escolha do modo de funcionamento: (1 e 4) Construção Solução inicial; (2 e 5) Optimização a partir de (1 e 
4), respectivamente; (3) Optimização a partir de Solução Inicial importada 

‐ Leitura de inputs dos ficheiros com informação dos clientes / veículos 

‐ Modo (1): Construção de solução inicial – Algoritmo 1; Fim de run. 

‐ Modo (4): Construção de solução inicial – Algoritmo 2; Fim de run. 

‐ Modo (2 e 5): Utilização da solução obtida em (1 e 4), respectivamente, forçando alterações nas rotas que 
não respeitem todas as restrições do problema, de modo a tornar a solução inicial possível; Prossegue para a 
execução. 

Inicialização: Solução actual = Solução inicial; 

  ‐ Execução da metaheurística Tabu Search a partir de solução inicial gerada (Modo 4 e 5) ou importada 
(modo 3). 

Ciclo principal: 

    ‐ Verifica se foi atingido algum dos critérios de término (duração, %duração sem melhorias ou Nº máximo 
reinícios); 

    ‐ Se sim, Terminar ciclo; 

    ‐ Gera uma vizinhança de soluções viáveis a partir da solução actual; 

    ‐  De  entre  a  vizinhança  gerada,  selecciona  a  solução  com  melhor  fitness  (de  acordo  com  a  Função 
Objectivo inicialmente escolhida), que pode ser no entanto inferior ao da solução actual; 

    ‐ Verifica se a solução é tabu (i.e, se o movimento que lhe deu origem consta na lista tabu); 

        ‐ Se sim, selecciona a segunda melhor solução da vizinhança e testa novamente; 

         ‐ Caso contrário, prossegue; 

    ‐ Compara a solução obtida com a melhor solução encontrada até ao momento (fittest); 

         ‐ Se a solução actual for melhor, actualiza a solução fittest; 

         ‐ Caso contrário, soma uma iteração ao contador “Nº iterações sem melhoria” e prossegue; 

35 

 
    ‐ Verifica se foi atingido o valor limite Nº máximo iterações sem melhoria; 

        ‐ Se foi atingido, actualiza a solução actual = melhor solução encontrada até ao momento e actualiza 
o contador “Nº reinícios”; 

        ‐ Caso contrário, prossegue; 

  Fim de ciclo; 

‐ Exportação Outputs: Relatório da Solução / Estatísticas do Run; 

‐ Libertação memória alocada / Fecho de ficheiros temporários; 

Fim de run.________________________________________________________________________________ 

 
5.2.2 Pesquisa da vizinhança e métodos de diversificação implementados 

A  pesquisa  da  vizinhança  é  feita  através  da  geração  aleatória  de  soluções  que  resultam  de  um  movimento 
unitário a partir da solução actual. Dependendo da estratégia seguida, os movimentos podem ser de: 

(1) Transferência de rota ou da ordem de visita de rota de um cliente seleccionado aleatoriamente; 

(2) Troca aleatória de um ou mais clientes entre duas rotas seleccionadas aleatoriamente; 

(3) Troca determinística de dois clientes da mesma rota, seleccionada aleatoriamente; 

(4)  Troca  aleatória  de  rota  de  um  cliente  seleccionado  de  forma  determinística  (pertencente  à  rota  mais 
curta); 

Independentemente da estratégia de pesquisa de vizinhança, todos os candidatos gerados (a partir de uma 
solução designada por solução actual) são submetidos a uma verificação do cumprimento das restrições do 
problema.  Caso  alguma  restrição  não  seja  cumprida,  a  solução  é  considerada  inválida  e  parte‐se  para  a 
obtenção de uma nova. 

O  processo  de  obtenção  de  uma  vizinhança  fica  assim  condicionado  às  características  mais  ou  menos 
restritivas  do  problema,  uma  vez  que  em  cada  iteração  são  seleccionados  LISTSIZE  candidatos  que  têm 
obrigatoriamente  de  obedecer  a  todas  as  restrições  do  problema.  Como  nem  sempre  existe  um  número 
suficiente de soluções distintas que cumpram as restrições do problema, o compromisso efectuado foi o de 
permitir que haja soluções duplicadas de entre a lista de candidatos gerada. 

O passo seguinte à pesquisa da vizinhança é o da escolha do candidato considerado mais apto, ou seja, que 
possua menor fitness – valor da função objectivo – ou, alternativamente, que apresente menor número de 
rotas ou menor número de clientes na rota mais curta (critério FORCE_MIN_TRUCKS, revisto adiante), desde 
que o movimento que lhe deu origem (a partir da solução actual) não seja considerado tabu – o movimento 
inverso  de  um  dos  últimos  t  =  TABUSIZE  movimentos  executados,  em  que  TABUSIZE  é  a  dimensão  da  lista 
tabu.  Nas  situações  em  que  um  movimento  tabu  permitir  encontrar  a  melhor  solução  até  momento  é 
aplicado o Critério de Aspiração, isto é, a solução é permitida. 

A estratégia seguida por definição é o movimento (1): é escolhido aleatoriamente um cliente, uma rota de 
destino e uma posição dentro dessa rota, e é transferido da rota na qual estava inserido para a posição da 
rota de destino pré‐determinada, conforme ilustrado na figura 5. 

36 

 
 
Figura 5: Movimento (1) de pesquisa da vizinhança – troca de rota de um cliente 

A  aleatoriedade  é  garantida  através  de  uma  função  –  random_number()  –  que  gera  um  número  entre  0  e 
RAND_MAX  (constante  declarada  na  norma  ISO  C),  que  por  sua  vez  é  convertido  num  intervalo  adequado 
através de manipulação pelos operadores resto e soma. 

Cada  vez  que  é  feita  uma  nova  execução  do  Modelo  é  reinicializada  a  seed  responsável  pela  geração  de 
números  pseudo‐aleatórios  em  função  do  tempo  inicial  do  run  –  garantindo,  por  um  lado,  a  aleatoriedade 
mas inviabilizando, por outro, a reprodutibilidade dos resultados.  

A  estratégia  padrão  seguida  é  suficiente  para  assegurar  a  obtenção  de  uma  solução  de  elevada  qualidade 
(suficientemente próxima do óptimo) em problemas com dimensão e complexidade reduzidas, como é o caso 
do problema analisado no Caso de Estudo. 

No entanto, para problemas com dimensão superior foram implementadas outras estratégias de pesquisa da 
vizinhança  mais  agressivas,  que  permitem  num  número  reduzido  de  iterações  explorar  uma  área  maior  do 
espaço de soluções. 

Por este motivo, os movimentos seguintes são efectuados quando o parâmetro DIVERSIFY é activado, o qual 
estipula que a pesquisa segue uma estratégia de pesquisa mais diversificada, na qual se inclui a pesquisa da 
vizinhança, entre outras regras definidas que são abordadas adiante. 

Os movimentos (2) e (3) são executados sempre que uma rota contenha mais de dois clientes (o que não é o 
caso  dos  exemplos  abaixo  ilustrados,  mas  para  o  efeito  utilizaram‐se  figuras  simplificadas)  e  sempre  que o 
número de reinícios seja par, isto é, sempre que a pesquisa atinja por duas vezes um número de iterações 
sem  melhorias  na  solução  igual  ou  superior  ao  parâmetro  RESTART_IT.  Nas  tentativas  ímpares  segue‐se  a 
estratégia de pesquisa padrão. 

O movimento (2) é inspirado no procedimento de pesquisa local λ‐opt (Lin, 1965) e consiste na troca de um a 
três clientes entre duas rotas escolhidas aleatoriamente o que, por si só, não conduz a pesquisa para novas 
regiões  do  espaço  de  pesquisa  (as  trocas  efectuadas  não  alteram  a  dimensão  das  rotas),  mas  confere  um 
poder superior para escapar a óptimos locais (permite trocas de até três clientes simultaneamente ao passo 
que a estratégia padrão só efectua uma troca por iteração). 

No exemplo ilustrado na figura 6, o cliente F é trocado com o cliente C entre as respectivas rotas. No entanto, 
poderiam  ter  sido  trocados  também  os  clientes  B  e  E  se  a  variável  que  determina  o  número  de  clientes  a 
trocar fosse igual a dois. Essa variável é mais uma vez obtida de forma estocástica: gera‐se um valor entre 0 
(um  cliente)  e  2  (três  clientes);  seguidamente  tenta‐se  trocar  pelo  menos  os  clientes  contidos  numa  dada 
posição (aleatória) entre as duas rotas; se a posição gerada por igual ou superior a dois (três), o movimento 
procederá à troca dos clientes contidos na(s) posição (posições) imediatamente anterior(es) à posição gerada. 

37 

 
 
Figura 6: Movimento (2) de pesquisa da vizinhança ‐ troca de clientes entre duas rotas 

O movimento (3) é, na verdade, parte de um algoritmo de pesquisa local 2‐opt implementado para resolver o 
problema TSP, uma vez que consiste na melhoria de uma dada rota, obtida aleatoriamente, tentando todas 
as  permutações  possíveis  entre  os  clientes  contidos  nessa  rota.  No  entanto,  não  se  trata  de  um  algoritmo 
exaustivo porque a sua execução termina assim que se obtém qualquer melhoria nessa rota ou, caso a rota 
esteja optimizada, mantém‐se inalterada.  

O  algoritmo  é  executado  imediatamente  a  seguir  à  ocorrência  de  um  movimento  (2)  em  ambas  as  rotas 
afectadas, procedendo‐se deste modo à reoptimização (local) das rotas. 

Deste  modo,  paralelamente  à  resolução  do  problema  VRP  é  executada  uma  iteração  do  algoritmo  TSP  em 
duas rotas, escolhidas intencionalmente por ter havido uma troca de (um ou mais) clientes entre elas. 

Na figura 7, ilustra‐se uma iteração do algoritmo TSP implementado (movimento 3), na qual é experimentada 
a troca entre os clientes C e E na rota 3. Não constituindo uma melhoria, o movimento é anulado e tenta‐se 
uma nova permutação. 

 
Figura 7: Movimento (3) de pesquisa da vizinhança ‐ troca de clientes da mesma rota 

O movimento (4) é idêntico ao movimento (1), com a diferença que a rota (de origem) é escolhida de forma 
determinística (a rota de destino e as posições de origem e destino continuam a ser aleatórias).  

Este  movimento  é  executado  consoante  a  configuração  do  parâmetro  FORCE_MIN_TRUCKS,  o  qual  impõe 
uma lógica de pesquisa de soluções na vizinhança que contenham menor número de rotas através da escolha 
sistemática da rota com menor número de clientes, admitindo‐se a deterioração da função objectivo.  

Esta  estratégia  conduz  frequentemente  a  uma  solução  pior,  dependendo  da  função  objectivo,  incidindo 
posteriormente na melhoria da solução encontrada (com menor número de rotas).  

A estratégia de minimização do número de rotas necessárias decorre num período de tempo específico da 
pesquisa – começa quando se atinge 25% do tempo decorrido sem serem encontradas melhorias na pesquisa 
(¼*STOP*MAX_TIME)  e  termina  a  ¾*STOP*MAX_TIME  (75%).  Se  durante  este  intervalo  de  tempo  for 
encontrada uma solução com melhor (menor) fitness ou com menor número de rotas e com fitness até 5% 
superior (face à melhor solução encontrada até ao momento), a estratégia de pesquisa de vizinhança volta a 
ser a pré‐definida (movimento 1). 

38 

 
Embora  este  parâmetro  constitua  uma  estratégia  de  intensificação/diversificação,  é  considerado  um 
objectivo auxiliar devido à possibilidade de deterioração da função objectivo da melhor solução encontrada; 

Na  figura  8  ilustra‐se  um  exemplo  desta  estratégia:  o  movimento  (4)  ocorre  de  forma  idêntica  à  do 
movimento (1), com a diferença que o cliente escolhido para a realização da troca (cliente B) pertence à rota 
com  menor  número  de  clientes  a  visitar  (rota  2).  Com  a  execução  do  movimento,  conseguiu‐se  obter  uma 
solução com menor número de veículos e também com menor distância total (obteve‐se uma poupança de 
s(B;C) = d(CD;C) + d(CD;B) ‐ d(B;C)). 

 
Figura 8: Movimento (4) de pesquisa da vizinhança ‐ troca de rota de um cliente incluído na rota mais curta 

Outro procedimento muito importante para a estratégia de diversificação é o reinício da pesquisa a partir da 
melhor solução encontrada; a configuração correcta do número de iterações que se deve investir entre cada 
reinício  é  crucial  para  a  eficiência  do  modelo  uma  vez  que  um  número  muito  curto  poderá  aprisionar  a 
pesquisa em óptimos locais mas um número muito elevado de iterações tende a desviar a procura para zonas 
do espaço de pesquisa pouco interessantes.  

Assim,  a  estratégia  adoptada  foi  a declaração  de  um número  variável  de  iterações  entre  reinícios, definido 
entre  [RESTART_IT;  UPPER_IT]  sendo  que  o  número  inicial  RESTART_IT  deve  ser  reduzido,  aumentando 
automaticamente  com  o  número  de  iterações  sem  melhorias  e  reinicializado  ao  valor  inicial  após  cada 
melhoria  na  solução  fittest.  Após  um  número  de  iterações  excessivo  sem  melhorias  volta‐se  a  tentar  uma 
pesquisa mais local e assim sucessivamente; 

A eficiência da pesquisa é também altamente influenciada pelos parâmetros LISTSIZE e TABUSIZE, sendo que 
o  primeiro  define  a  dimensão  da  vizinhança  explorada  (contendo  apenas  soluções  válidas,  que  no  entanto 
podem  estar  duplicadas  entre  si)  e  o  segundo  a  quantidade  de  movimentos  tabu  a  reter  em  memória.  Os 
valores destes parâmetros não podem ser muito elevados para não tornar a pesquisa demasiado exaustiva ou 
restritiva – o que compromete a performance do Modelo – nem tão reduzidos que permitam que a pesquisa 
fique facilmente aprisionada em óptimos locais. 

O princípio Tabu, como evidenciado anteriormente, visa tornar a pesquisa mais eficiente através da proibição 
de movimentos contrários aos executados nos t movimentos anteriores sempre que não melhoram a solução 
encontrada (situação em que é aplicado o Critério de Aspiração, ou seja, são permitidas soluções tabu). 

Assim,  evita‐se  que  a  pesquisa  entre  em  ciclos  fechados  com  exploração  de  um  conjunto  reduzido  de 
soluções  (tipicamente  característico  das  regiões  do  espaço  de  pesquisa  onde  existem  óptimos  locais), 
assegurando‐se a continuidade da pesquisa para novas regiões do espaço de busca. O poder de escape dos 
chamados óptimos locais e a cobertura do espaço de pesquisa vai depender da configuração dos parâmetros 
anteriores e dos critérios de terminação. 

39 

 
5.2.3 Split Deliveries 

A implementação da variação do VRP com Entregas Fraccionadas é feita ao nível da pesquisa da vizinhança. A 
divisão de cargas ocorre, se permitida, sempre que no decorrer de um movimento do tipo (1) ou (4) uma das 
rotas da solução obtida não respeitar (no máximo) uma restrição de capacidade. 

A  execução  deste  movimento  no  algoritmo  implementado  pode  ser  exemplificada  conforme  ilustrado  na 
figura 9: se no seguimento do movimento ilustrado na figura 8 a soma da procura dos clientes visitados na 
rota  3  exceder  a  capacidade  do  camião  que  a  percorre,  tornando  desse  modo  a  solução  representada 
impossível, o cliente B é sujeito a uma divisão que, em termos de planeamento, equivale à inclusão na rota 3 
sem exclusão da rota a que pertencia (rota 2) – figura 9b (na prática, o cliente é reinserido na rota de origem 
após efectuada a troca de rotas do movimento 1/4). 

A  divisão  de  cargas  é  feita  ao  nível  da  procura  do  cliente  tal  que  a  soma  das  quantidades  entregues  pelos 
veículos  atribuídos  às  rotas  2  e  3,  respectivamente,  seja  igual  à  procura  do  cliente  B.  A  alocação  das 
quantidades a entregar em cada rota é feita do seguinte modo: à rota que tornaria a solução impossível (no 
exemplo, a rota 3), isto é, cujo somatório das quantidades a entregar excede a capacidade do veículo que a 
percorre, é alocada uma quantidade tal que a soma dos pedidos que vai abastecer é igual à capacidade do 
veículo;  a  quantidade  excedente  do  pedido  feito  pelo  cliente  (B)  é  redistribuída  pela  rota  anteriormente 
atribuída (rota 2). 

No entanto, quando ocorre um fraccionamento da entrega não se obtém um ganho imediato: a solução 9b é 
claramente  pior  que  a  9a:  requer  o  mesmo  número  de  veículos  mas  maior  distância  percorrida  e  maior 
tempo  de  operação  (além  da  distância  superior,  uma  visita  adicional  implica  um  acréscimo  do  tempo  de 
serviço fixo).  

Se o número de iterações entre reinícios da pesquisa (a partir da melhor solução encontrada) e a dimensão 
da vizinhança a visitar forem suficientemente elevados, ocorrerá um novo movimento do tipo (1) ou (4) que 
dará origem a uma solução superior à que se encontra representada na figura 9a (exemplo: figura 9c).  

Assim, torna‐se relevante a configuração correcta dos parâmetros para garantir a eficácia da pesquisa.  

 
Figura 9: Movimento de pesquisa da vizinhança com possibilidade de Divisão da Carga (VRPSD) 

40 

 
Na  implementação  escolhida,  o  fraccionamento  das  entregas  está  limitado  a  duas  visitas  por  cliente, 
atendendo às características do Caso de Estudo uma vez que, cada vez que é feita uma divisão de um pedido 
prejudica‐se  o  tempo  que  demora  a  executar  a  operação  (uma  visita  adicional  implica  um  acréscimo  do 
tempo de serviço fixo), o qual poderá ou não ser compensado à posteriori, com a diminuição do tempo de 
viagem. 

Convém  aqui  realçar  que  as  estratégias  acima  descritas,  em  particular  a  minimização  do  número  de  rotas 
necessárias (estimulada pelo movimento 4) e a Divisão de Cargas, só ocorrem numa fase em que a pesquisa 
entra em estagnação, ou seja, quando a estratégia padrão de pesquisa (movimento 1) não permite encontrar, 
por si só, soluções de maior qualidade.  

No entanto, quando combinada com uma das estratégias de diversificação confere‐se um poder superior à 
pesquisa,  desde  que  seja  permitida  uma  degradação  temporária  da  função  objectivo.  Estes  dois  últimos 
elementos  –  um  conjunto  de  regras  que  orienta  a  pesquisa  e  a  admissão  temporária  de  soluções  piores  – 
fazem a grande distinção de uma metaheurística em relação a uma heurística simples. 

5.2.4 Função Objectivo 

O  Modelo  desenvolvido  permite  escolher  a  Função  Objectivo  (F.O.)  desejada  bem  como  uma  Função 
Objectivo auxiliar que visa conferir maior robustez à pesquisa. 

Foram implementadas cinco F.O. pré‐definidas e uma definida pelo utilizador, sendo que as quatro primeiras 
consistem na minimização de uma componente: 

(1) Distância Total 
(2) Número de veículos (rotas) necessários 
(3) Tempo Total da Operação 
(4) Capacidade Total necessária 

A F.O. (4) só faz sentido num problema com Frota Heterogénea (HFVRP), em que os veículos têm diferentes 
capacidades e custos associados (caso contrário a F.O. (2) tem o mesmo efeito). As F.O. (5) e (6) são funções 
multi‐objectivo que visam minimizar uma combinação das componentes anteriores: 
(5) F.O. Figueiredo (2007) 

   (5) 

A  função  multi‐objectivo  introduzida  por  Figueiredo  (2007)  minimiza  três  componentes:  distância  total, 
número  de  camiões  e  tempo  de  chegada  aos  clientes,  com  majoração  deste  último  termo.  É  importante 
realçar  que, dados  os  valores  assumidos  por  cada  componente  na  função  objectivo, o  termo  distância  tem 
um  peso  de  cerca  de  99%  na  F.O;  o  termo  número  de  camiões  pesa  menos  de  1%  e  o  termo  tempo  é 
desprezável. Adiante se verá (secção 7.2) como é que tal condiciona a qualidade das soluções obtidas. 
Devido ao facto da Função Objectivo de Figueiredo (2007) não ter uma correcta uniformização dos termos 
que  a  compõem,  resolveu‐se  implementar  uma  função  multi‐objectivo  mais  moderada  (6)  que  consiste  na 
minimização de 4 termos: distância, número de veículos, tempo e capacidade utilizada, com ponderações de 
wd, wv, wt e wc na função objectivo, respectivamente, t.q. wd + wv + wt + wc = 1. 

41 

 
(6) F.O. Multi‐Objectivo definida pelo utilizador 

∑ 1∑ 0∑ 0 ∑ 1∑ 1 0 ∑ 1∑ 0∑ 0 ∑ 1∑ 1 0

(6)  
A minimização desta função objectivo leva ao afastamento da solução inicial, através da sucessiva comparação 
com as quatro componentes da solução inicial: distância inicial (di), número de veículos inicial (vi), tempo total 
inicial  (ti)  e  capacidade  utilizada  inicial  (ci).  Há  que  evidenciar,  no  entanto,  que  esta  F.O  requer  um  cuidado 
especial quanto à solução inicial escolhida: a mesma deve ser equilibrada para não afectar a pesquisa, ou seja, 
as suas componentes deverão estar igualmente afastadas do óptimo, o que é difícil de se conseguir garantir a 
priori. A forma de compensar este natural desequilíbrio foi atribuir ponderações às componentes. 

5.2.5 Restrições 

O Modelo implementado resolve problemas com restrições de capacidade, quer a com frota seja homogénea 
(problema  CVRP)  ou  heterogénea  (HFVRP),  e  opcionalmente  permite  definir  a  activação  das  seguintes 
restrições: 

(a) Janelas temporais, rígidas ou flexíveis;  
(b) Dimensão máxima das rotas;  
(c) Acessibilidade; 
(d) Transporte de vários tipos de produto na mesma rota (Cargas Mistas); 

A  activação  da  restrição  (a)  permite  resolver  o  problema  VRPTW,  podendo  esta  ser  relaxada  (janelas 
temporais  flexíveis)  para  admitir  soluções  cujo  tempo  de  chegada  aos  clientes  ultrapasse  o  limite  da  sua 
janela  temporal,  desde  que  o  atraso  não  seja  superior  ao  intervalo  correspondente  à  janela  temporal 
[ready_timej; due_datej], dada por:  

dj ≤ (due_datej ‐ ready_timej) 

Esta  possibilidade  poderá  permitir  encontrar  soluções  mais  interessantes  (do  ponto  de  vista  das 
componentes  distância  e  número  de  rotas  necessários),  podendo  haver  no  entanto  uma  penalização  na 
componente tempo se ocorrer um atraso na chegada ao último cliente visitado (o que implica um atraso na 
duração total da rota). 

A  restrição  (b)  pode  ser  utilizada  como  complemento  da  restrição  de  capacidade,  especialmente  em 
problemas  em  que  esta  não  seja  suficientemente  restritiva  para  prevenir  soluções  impossíveis  ou 
simplesmente desequilibradas (com rotas com muito longas ou com visitas a muitos clientes). 

A  restrição  (c)  visa  respeitar  constrangimentos  físicos  que  tornam  incompatível  a  visita  a  determinados 
clientes por veículos que não tenham o equipamento adequado ou cuja dimensão não permita o acesso (por 
exemplo,  clientes  sem  cais  de  descarga  ou  localizados  em  zonas  densamente  povoadas  com  restrições  de 
acesso de altura e ou peso máximo). 

Finalmente, a restrição (d) visa resolver o problema multi‐produto, cuja descrição é feita na secção seguinte. 

42 

 
5.2.6 Cargas Mistas 

Conforme  referido  no  capítulo  2,  o  problema  do  planeamento  do  Caso  de  Estudo  analisado  consiste  na 
distribuição dos pedidos dos clientes dentro dos prazos estabelecidos para recepção de mercadorias. 

No  entanto,  os  clientes  fazem  pedidos  de  vários  tipos  de  produto  que  não  podem  ser  transportados  nas 
mesmas  condições.  Na  secção  2.3  foi  referido  que  a  frota  disponível  possui  características  heterogéneas, 
sendo uma das variáveis – além da capacidade e da existência ou não de báscula elevatória – a possibilidade 
dos veículos estarem equipados com um ou dois motores frigoríficos. 

Essa  variável  representa  uma  restrição  do  problema  na  medida  em  que  a  possibilidade  de  transporte  de 
cargas mistas fica restringida à existência desse equipamento. 

Por  outras  palavras,  o  veículo  poderá  transportar  um  número  de  produtos  a  temperaturas  diferentes  que 
está directamente relacionado com a quantidade de motores refrigeradores com que está equipado. 

Deste  modo,  esta  restrição  consiste  na  limitação  a  nk+1  tipos  de  produtos  (diferentes),  sendo  que  nk  é  o 
número de motores frigoríficos do veículo k. Devido ao facto da ordem de carregamento dos produtos estar 
intrinsecamente relacionada com a sequência de visita aos clientes (segue‐se uma regra LIFO – Last In First 
Out,  ou  seja,  a  última  mercadoria  a  ser  carregada  no  veículo  corresponde  ao  pedido  do  primeiro  cliente 
visitado),  está  igualmente  garantida  a  possibilidade  de  haver  cargas  compostas  por  dois  tipos  de  produtos 
mas  que  têm  de  ser  transportadas  a  três  temperaturas  diferentes  (figura  10b),  no  caso  do  pedido  de  um 
cliente visitado intermediariamente ser de um tipo de produto não perecível e os restantes pedidos serem de 
outro tipo (perecível). 

A  relação  entre  a  quantidade  de  motores de  frio  e  o  número  de  produtos  diferentes  que um  veículo  pode 
transportar não é portanto directa: depende da ordem pela qual os clientes são visitados (a qual condiciona a 
ordem de carregamento da mercadoria e a disposição da carga dentro de veículo, como vimos).  

Assim,  para  a  restrição  ser  respeitada  a  solução  tem  de  obedecer  a  uma  sequência  de  pedidos  cuja 
alternância  de  tipos  de  produto  não  ultrapasse  o  número  de  temperaturas  (diferentes)  que  o  veículo 
consegue manter durante o transporte.  

 
Figura  10:  Transporte  de  mercadoria  mista:  (a)  três  tipos  de  produto  a  três  temperaturas  diferentes;  (b) 
dois tipos de produtos a duas temperaturas diferentes 

43 

 
5.2.7 Critérios de terminação 

A cada nova iteração, o Modelo verifica se foi atingido um de três critérios de terminação: 

• Tempo de execução ≥ Duração máxima do run (MAX_TIME);  
• Número de vezes em que se atingiu o número máximo de iterações sem melhorias na solução (variável 
em  função  do  tempo)  ≥  Número  máximo  de  reinícios  a  partir  da  melhor  solução  encontrada  sem 
melhorar a solução (NO_RESTARTS); 
• Tempo de execução ≥ Tempo máximo sem melhorias na solução encontrada, sendo este último critério 
definido como uma percentagem da duração total do run (STOP*MAX_TIME); 

Quando  é  verificada  uma  das  condições  anteriores,  a  pesquisa  termina  e  é  devolvida  a  melhor  solução 
encontrada.  Geralmente  a  terminação  ocorre  quando  se  atinge  o  segundo  ou  o  terceiro  critérios;  se  a 
execução  terminar  devido  à  ocorrência  do  primeiro  critério  poderá  significar  que  o  tempo  de  execução 
estipulado é demasiado reduzido – o que compromete a qualidade da solução obtida. 
 

44 

 
5.3 Discriminação dos ficheiros compilados para execução do Modelo desenvolvido  
Ficheiro  Principais funções e respectivas funcionalidades 

<tabu.h>   Cabeçalho (anexo K); 

<tabu.c>   main() – contém todo o ciclo principal e chamada de todas as outras funções; 

<constraints.h>   feasible_sol() – verifica se uma dada solução cumpre todas as restrições do problema; 

<initial_sol.h>   generate_initial_sol()  –  implementação  da  heurística  de  construção  Savings; 


generate_initial_sol2() – implementação de outra heurística de construção (contempla restrições de janelas 
temporais); get_feasible_solution() – altera a solução obtida por uma das heurísticas anteriores de modo a 
obedecer todas as restrições do problema; 

<initialise.h>   get_inputs()  –  inicializa  os  parâmetros  com  dados  do  utilizador  e  ou  do  cabeçalho 
<tabu.h>; 

<getspace.h>   get_space();  free_space  –  aloca  e  liberta  memória,  respectivamente,  para  criação  de 
estruturas; inicializa variáveis; 

<neighbourhood.h>  get_neighbourhood()  –  gera  aleatoriamente  uma  vizinhança,  obtida  a  partir  de 


movimentos entre rotas da solução actual; get_solution() – obtém a melhor solução –  não tabu – encontrada 
entre  a  vizinhança  gerada;  Funções  adicionais  de  pesquisa  da  vizinhança  (utilizadas  para  intensificação  e 
diversificação  da  pesquisa):  switch_next_two();  swap_two_clients();  take_worst_out();  change_route_w(); 
switch_with_all( (movimento 2)); k_interchange() (movimento 3); 

<random.h>   random_number()  –  gera  um  número  aleatório  entre  0  e  uma  constante  RAND_MAX 
(norma  ISO  C).  Esse  valor  é  posteriormente  manipulado  recorrendo  ao  operador  resto  (%)  e  soma  (+); 
rand_seed()  –  actualiza  com informação  temporal  as  seeds  responsáveis  pela  geração  de  números  pseudo‐
aleatórios, assegurando a aleatoriedade em função do tempo;  

<readdata.h>   get_data()  –  importa  inputs  e  faz  tratamento  de  dados  para  utilização  de  valores 
normalizados; 

<solution.h>   update_solution()  –  actualiza  os  dados  e  estatísticas  de  todas  as  soluções; 
copy_solution()  –  copia  uma  solução;  print_solution()  –  imprime  uma  solução  para  o  output  escolhido  (por 
defeito,  para  o  relatório  do  run);  print_solution_list()  –  imprime  uma  lista  de  soluções;  report_solution()  – 
imprime os resultados e estatísticas do run para o ficheiro de output (por defeito, result.xls). Se seleccionado 
pelo utilizador, esta função produz um relatório discriminado da solução final obtida; 

<tabulist.h>   create_tabu_list() – aloca memória e cria uma lista de estruturas com informação sobre 
os  movimentos  tabu  ocorridos;  add_tabu_list()  –  adiciona  a  informação  de  um  movimento  tabu  à  lista  e 
apaga o mais antigo; del_tabu_list() – apaga o movimento tabu mais antigo da lista tabu; print_tabu_list() – 
imprime a lista de movimentos tabu; free_tabu_list() – apaga a lista de estruturas criada e liberta a memória; 

<terminate.h>   termination_criterion()  –  verifica  em  cada  iteração  se  foi  atingido  um  dos  critérios  de 
terminação do run; 

45 

 
5.4 Leitura de inputs e outputs exportados 
5.4.1 Importação e manipulação de inputs 

A localização dos ficheiros de input e output pode ser alterada em cada run no cabeçalho <tabu.h> (Anexo A) 
ou na linha de comandos, aquando da introdução de parâmetros pelo utilizador. 

Conforme o modo de funcionamento escolhido e as opções de importação de dados pré‐definidas, o modelo 
irá importar dados aos ficheiros do tipo comma separated values (extensão .csv) com informação de: 

Clientes  (Anexo  D):  Nº  cliente  (0  para  o  Depósito  ou  Centro  de  Distribuição);  Código  Cliente  (opcional); 
Coordenada  X  (ou  latitude)  e  Coordenada  Y  (ou  longitude)  ou  alternativamente  a  matriz  Distâncias  em 
ficheiro separado; Pedido (ou Procura, em paletes); a Janela Temporal (opcional), i.e, os horários de início e 
fim admissíveis para servir um dado cliente, o Tempo de Serviço (opcional) e a capacidade do maior camião 
que  pode  servir  um  dado  cliente  (Condição  descarga,  opcional).  O  modelo  só  aproveita  os  primeiros  M 
clientes, definido na constante SIZE; 

Veículos:  Nº  camião;  capacidade;  número  de  motores  frigoríficos  (opcional,  apenas  necessário  para  a 
restrição Cargas Mistas). O modelo só aproveita os primeiros N veículos, definido na constante NO_VEHICLES; 

Matriz de distâncias e tempos (opcional): quando seleccionado este input, o modelo ignora as coordenadas 
existentes  no  ficheiro  dos  clientes;  caso  contrário,  calcula  a  matriz  distâncias  e  tempos  utilizando  os 
parâmetros definidos em “Opções de Importação de Dados” e “Constantes Globais”.  

Solução Inicial (apenas para o modo (3)): Conjunto de rotas viável no formato Nº rota | Depósito | Clientes a 
serem  visitados  |  Depósito,  e  pressupõe  que  a  rota  com  o  maior  número  de  clientes  a  ser  visitado  tem 
dimensão idêntica ao parâmetro “Nº máximo de clientes por rota”. 

Devido à variedade de problemas que se pretendia resolver para validar o modelo e compará‐lo com outros 
algoritmos  em  diferentes  instâncias  de  problemas,  foi  necessário  assegurar  que  era  possível  lidar  com 
diferentes  tipos  de  inputs.  Como  tal,  adicionaram‐se  diversas  constantes  e  parâmetros  ao  modelo  (vide 
Anexo A) de modo a conferir grande versatilidade. 
Assim, é possível importar dados em diferentes formatos: 

• Coordenadas dos clientes em sistema linear ou 
• Coordenadas dos clientes em sistema angular ou ainda  
• Importação directa da matriz de distâncias e tempos entre clientes; 

O cálculo da distância linear entre dois pontos A=(ax,ay) e B=(bx,by) é feito através da aplicação da fórmula da 
distância euclidiana bidimensional, dada por (5.1); 

d(A,B) =   (5.1) 

A  importação  de  dados  em  coordenadas  angulares  é  seguida  de  uma  conversão  para  unidades  euclidianas 
através da fórmula da Distância do Círculo Máximo (5.2), sendo que a distância linear, em quilómetros, entre 
dois pontos (σs,λs) e (σf,λf) é dada por  ,  em  que  r  é  o  raio  médio  da  Terra  e  Δφ  e  Δλ  são, 
respectivamente, as diferenças entre as latitudes e longitudes dos dois pontos. Essa distância é aproximada 
da  distância  real  através  de  um  factor  de  circuito  ρ  que  varia  entre  1,14  em  áreas  extra‐urbanas  e  1,3  em 
áreas urbanas (o valor utilizado, que melhor aproxima as distâncias reais do caso de estudo, foi de 1,21); 

46 

 
(5.2) 

A  matriz  de  tempos  de  viagem  pode  ser  importada  directamente  ou  construída  utilizando  o  valor  da 
velocidade  média  com  que  os  veículos  circulam  entre  deslocações.  Adicionalmente,  pode‐se  configurar  os 
tempos de serviço fixo (por cliente) e variável (por quantidade de mercadoria entregue); 

5.4.2 Exportação de outputs 
O modelo devolve dois Outputs:  
• Um relatório do run que inclui a solução inicial, a solução final e todas as soluções intermédias (a solução 
actual  em  cada  iteração),  bem  como  uma  descrição  detalhada  da  solução  final  (opcional,  definido 
previamente no parâmetro “Relatório Output”); indica‐se qual dos critérios de paragem levou ao término 
da execução e produz‐se ainda diversas estatísticas relativamente ao tempo de execução, nº iterações, 
tempo  decorrido  até  encontrar  a  melhor  solução,  %  melhoria  (por  componente  da  F.O.)  em  relação  à 
solução inicial. Ao longo do log é ainda possível encontrar informação relevante como a ocorrência de 
soluções  tabu  ou  o  reinício  (a  partir  da  melhor  solução  encontrada)  por  excesso  de  iterações  sem  se 
obter melhorias na Função Objectivo. 

• Exportação da solução final para ficheiro Excel (ficheiro e respectiva localização definido no parâmetro 
RESULT_FILE),  para  aproveitamento  posterior  e  possível  representação  gráfica  da  solução  final.  Uma 
representação  gráfica  possível  do  output  do  modelo  é  apresentada  no  anexo  F.  O  ficheiro  Excel 
desenvolvido pode ser utilizado para representar qualquer solução (ficheiro Output Model.xls – anexo H). 

Por fim, existem parâmetros que permitem configurar os Outputs devolvidos, entre os quais o principal é a 
opção de devolver um relatório extensivo da melhor solução encontrada, isto é, indica‐se a que horas parte 
cada veículo; a que horas chega ao próximo cliente e que quantidade e tipo de produto entregou em cada 
visita. Nos anexos E e G apresentam‐se dois exemplos do Output produzido após execução do problema do 
Caso de Estudo: No anexo E reproduz‐se a solução obtida para o dia de planeamento 12 (sem a possibilidade 
de fraccionamento de entregas) e no anexo G apresenta‐se a solução obtida para o mesmo problema com 
Split Deliveries – tendo sido este segundo run executado com a opção do relatório da solução. 

No anexo F apresenta‐se uma representação gráfica possível da solução exibida no anexo G. 

Os restantes parâmetros de Output servem propósitos de debug e não se aconselha a sua configuração pois 
elevam grandemente o tamanho do relatório do run produzido. 

47 

 
Capítulo 6 
Resultados 

Neste  capítulo  serão  analisados  os  resultados  obtidos  com  a  aplicação  do  modelo  matemático  descrito  no 
capítulo anterior a uma série de problemas de planeamento de rotas de veículos. 

Na  secção  6.1  aborda‐se  a  aplicação  do  modelo  a  dois  conjuntos  de  instâncias  conhecidos  –  problemas 
benchmark  de  Christofides  (1979)  e  Solomon  (1987).  Os  resultados  obtidos  são  então  discutidos  e 
comparados com as soluções propostas por outros autores, de forma a concluir‐se quanto ao desempenho e 
eficiência do modelo implementado.  

Na  secção  6.2  faz‐se  uma  análise  mais  pormenorizada  ao  desempenho  do  modelo  desenvolvido,  com 
apresentação  de  resultados  segundo  diferentes  cenários  e  Funções  Objectivo  para  cada  uma  das  suas 
componentes,  uma  vez  que  em  6.1  os  únicos  critérios  de  comparação  são  a  distância  total  e  o  tempo  de 
processamento. Assim, na secção 6.2 discutem‐se os resultados obtidos com a aplicação ao caso de estudo 
introduzido no capítulo 2, havendo grande enfoque na comparação com os resultados obtidos por Figueiredo 
(2007)  através  de  um  método  exacto,  em  particular  no  desempenho  e  na  eficiência  dos  modelos,  para  se 
inferir  quanto  às  potencialidades  da  aplicação  de  métodos  aproximados  em  problemas  de  grande 
complexidade computacional. 

Por  fim,  na  secção  6.3  é  feita  uma  análise  de  sensibilidade  a  alguns  dos  parâmetros  mais  influentes  no 
desempenho do modelo em análise. 

Os  resultados  que  a  seguir  se  apresentam  foram  obtidos  através  da  execução  do  modelo  matemático 
desenvolvido,  o  qual  foi  compilado  e  executado  em  ambiente  LINUX  (Fedora  Core  10)  num  computador 
Pentium  IV  3,20  Ghz  com  1  GB  de  RAM.  A  parametrização  utilizada  em  todos  os  runs  ficou  guardada  nos 
respectivos  logs  gerados  (disponíveis  no  anexo  H),  no  entanto  a  seguinte  tabela  pretende  resumir  essa 
informação:  

Instância  Christofides Solomon Caso de Estudo 


Parâmetro Min Máx Min Máx Min  Máx 
Parâmetros específicos do problema
Size (Nº clientes)  50 199 100 100 40 40 
No_vehicles 8 23 3 25 24 30 
Max_clients_per_route  17 25 15 50 3 5 
Parâmetros específicos da pesquisa
Listsize  20 30 20 50 10 10 
Tabusize  5 5 5 10 5 5 
Restart_IT  2 3 3 10 10 10 
Upper_IT  1500 2000 100 1000 1000  1000 
Max_restarts  50000 100000 15000 500000 5000  5000 
Max Time (s) 180 600 600 1000 240 240 
Stop (s)  ‐ ‐ 200 670 120 120 
Tabela 6.1 ‐ Parâmetros utilizados no Modelo para obtenção dos resultados apresentados 

48 

 
6.1 Validação do Modelo ‐ Instâncias Benchmark de Christofides e Solomon 
Um  passo  muito  importante  após  o  desenvolvimento  de  um  modelo  é  a  validação  do  mesmo.  Para  tal, 
recorreu‐se à comparação com os resultados obtidos por outros algoritmos num conjunto de problemas bem 
conhecidos.  O  benchmarking  permite,  deste  modo,  verificar  se  os  resultados  obtidos  estão  próximos  do 
desejável e, em alguns casos, ajuda à identificação de problemas de concepção do modelo. 

No presente caso, constatou‐se uma necessidade de melhorar o método de diversificação da pesquisa uma 
vez  que  os  resultados  obtidos  inicialmente  indicavam  que  o  modelo  falhava  onde  falha  grande  parte  das 
heurísticas  –  ficava  facilmente  preso  nos  mínimos  locais  –  facto  explicável  pela  dimensão  e  complexidade 
superior dos problemas, especialmente devido ao número bastante superior de clientes por rota. 

Assim,  implementou‐se  uma  nova  função  de  pesquisa  da  vizinhança  conjuntamente  com  a  refinação  da 
estratégia  de  diversificação  da  pesquisa,  mais  concretamente  tornando  variável  o  número  de  iterações 
necessário para reiniciar a pesquisa a partir da melhor solução encontrada até ao momento. 

Correu‐se o modelo em dois conjuntos de instâncias distintos – o conjunto de 14 problemas do tipo CVRP de 
Christofides,  Mingozzi  e  Toth  (1979)  e  o  conjunto  de  56  instâncias  de  Solomon  (1987),  referência  para 
problemas da variante CVRPTW. Em ambos os conjuntos de problemas, a referência utilizada para efeitos de 
benchmarking  foram  os  resultados  obtidos  por  Rochat‐Taillard  (1995),  que  conseguiram  um  desempenho 
notável  ao  aplicar  pela  primeira  vez  o  conceito  de  procedimento  de  memória  adaptativa  a  uma  heurística 
Tabu  Search  para  resolver  o  problema  de  planeamento  de  rotas  de  veículos.  No  capítulo  4.4  pode  ser 
consultada uma descrição sucinta deste e de outros algoritmos referidos. 

O  conjunto  de  problemas  de  Christofides  incorpora  as  restrições  de  um  CVRP  clássico,  obedecendo  a 
restrições de capacidade de uma frota homogénea e, adicionalmente, em metade das instâncias obriga ainda 
a que se obedeça a uma restrição adicional quanto ao número máximo de clientes que se pode visitar por 
rota.  

A tabela 6.2 apresenta de forma resumida o desempenho de algumas heurísticas, para comparação com os 
resultados  obtidos  neste  trabalho.  A  informação  respeitante  aos  modelos  desenvolvidos  pelos  autores 
citados foi retirada de Laporte (2007), não devendo no entanto ser utilizada para efeitos de comparação. 
% média sobre a melhor  Tempo de 
Autores – Algoritmos  solução encontrada para  processamento 
os 14 problemas  médio (minutos) 
Taillard (1993) ‐ Tabu Search Parallel  0,024  21,30 
Gendreau, Hertz e Laporte (1994) ‐ Taburoute  0,82  55,59 
Rochat‐Taillard (1995) ‐ Adaptive Memory  0,005  16,19 
Toth‐Vigo (1998) ‐ Granular Tabu Search  0,64  3,84 
Mester e Bräysy (2004) ‐ AGES best  0,03  7,72 
                                           ‐ AGES fast  0,07  0,27 
Guerreiro ‐ Tabu Search  3,97  4,51 
Tabela 6.2 ‐ Comparação da performance com os algoritmos mais eficientes aplicados às instâncias 
de problemas benchmark de Christofides et al. (1979) ‐ Adaptado de Laporte (2007) 
                                                  
4
 Atinge os melhores resultados em 12 dos 14 problemas de Christofides et al. (1979) 
5
 Supera os melhores resultados de Taillard (1993) em 2 dos 14 problemas de Christofides et al. (1979) 

49 

 
Os  resultados  obtidos  em  cada  um  dos  problemas  são  apresentados  no  Anexo  B,  bem  como  a  respectiva 
comparação  com  as  melhores  soluções  encontradas  por  Rochat‐Taillard  (1995).  As  soluções  iniciais  foram 
obtidas a partir de uma implementação do algoritmo adaptado do Savings de Clark e Wright (1964), e após 
aplicação  da  metaheurística  desenvolvida  conseguiu‐se  uma  melhoria  de  quase  10%,  em  média,  face  à 
solução inicial (%IS).  

Obtiveram‐se  resultados  em  média  4%  acima  dos  melhores  resultados  (%MRC)  obtidos  por  métodos 
aproximados,  havendo  no  entanto  que  assinalar  uma  elevada  variabilidade  nestes  resultados  uma  vez  que 
em 4 das 14 instâncias (7, 9, 13 e 14) conseguiu‐se obter soluções melhores que as de Rochat‐Taillard (1995), 
ao passo que noutras instâncias o resultado obtido ficou muito aquém do esperado. 

O  conjunto  de  instâncias  de  Solomon  é  constituído  por  56  problemas  do  tipo  CVRPTW,  com  restrições  de 
capacidade e janelas temporais, cada um com 100 clientes, organizados em 6 categorias distintas (C1, C2, R1, 
R2,  RC1  e  RC2).  Os  problemas  do  tipo  ‘R’  têm  clientes  uniformemente  distribuídos,  os  do  tipo  ‘C’  contêm 
clusters de clientes e a categoria ‘RC’ é uma mistura das anteriores. Para cada uma destas categorias, foram 
ainda  propostos  dois  conjuntos,  um  composto  pelos  problemas  R1,  C1  e  RC1  com  um  horizonte  de 
planeamento estreito e capacidade reduzida; os problemas do tipo R2, C2 e RC têm um horizonte temporal 
alargado e capacidade superior, traduzindo‐se em rotas mais curtas no primeiro conjunto de problemas. 

O  conjunto  de  problemas  de  Solomon,  computacionalmente  mais  exigente,  permitiu  obter  resultados 
promissores  uma  vez  que  os  resultados  obtidos  ficaram  bastante  próximos  de  alguns  dos  algoritmos  mais 
eficientes  (vide  tabela  6.3),  como  por  exemplo  Taillard  et.  al  (1997),  em  um  tempo  computacional  muito 
reduzido. 

Gambardella  Rochat‐Taillard  Shaw  Kilby et  Taillard et  Guerreiro  Comparação 


Instâncias  Autores 
et al. (1999)  (R‐T) (1995)  (1998)  al. (1999) al. (1997)  Tabu Search com R‐T % 
R1  Veículos  12,38  12,58 12,33 12,67 12,39  14,25  13,3%
(média 12  Distância total 1210,83  1197,42 1201,79 1200,33 1230,48  1273,24  6,3%
Inst.)  Tempo proc.(s) 1800  2700 3600 2900 6887  348  ‐87,1%
C1  Veículos  10,00  10 10,00 10,00 10,00  10,78  7,8%
(média 9  Distância total 828,38  828,38 828,38 830,75 858,59  883,47  6,7%
Inst.)  Tempo proc.(s) 300  3200 ‐ 2900 7315  358  ‐88,8%
RC1  Veículos  11,92  12,33 11,95 12,12 12,00  14,63  18,6%
(média 8  Distância total 1388,13  1377,39 1364,17 1388,15 1387,01  1466,55  6,5%
Inst.)  Tempo proc.(s) 1800  2600 3600 2900 5632  470  ‐81,9%
R2  Veículos  3,00  3,09 ‐ 3,00 3,00  5,82  88,3%
(média 11  Distância total 960,31  961,72 ‐ 966,56 1046,56  983,15  2,2%
Inst.)  Tempo proc.(s) 1800  9800 ‐ 2900 3372  190  ‐98,1%
C2  Veículos  3,00  3 ‐ 3,00 3,00  3,50  16,7%
(média 8  Distância total 591,85  589,86 ‐ 592,29 591,14  643,96  9,2%
Inst.)  Tempo proc.(s) 1800  3600 ‐ 2900 8187  371  ‐89,7%
RC2  Veículos  3,33  3,62 ‐ 3,38 3,38  6,00  65,7%
 (média 8  Distância total 1149,28  1119,59 ‐ 1133,42 1220,28  1141,78  2,0%
Inst.)  Tempo proc.(s) 1800  7800 ‐ 2900 5798  197  ‐97,5%
Veículos  418  427 ‐ 423 419  525  23,1%
Total 
Distância total 57582,87  57098,10 ‐ 57423,75 59592,67  60063,08  5,2%
(56 Inst.) 
Tempo proc.(s) 87300  281000 ‐ 162400 342507  17794  ‐93,7%
Tabela  6.3  ‐  Comparação  da  performance  com  os  algoritmos  mais  eficientes  aplicados  às  instâncias  de 
problemas benchmark de Solomon (1987) ‐ Adaptado de Gambardella et al. (1999) 

50 

 
Para  este  conjunto  de  instâncias,  a  maioria  dos  autores  que  divulgam  os  seus  resultados  apresenta 
igualmente  o  número  obtido  de  rotas  necessárias,  mas  para  a  comparação  de  desempenho  não  foi 
considerado  importante  uma  vez  que  em  parte  dos  problemas  cujo  óptimo  é  conhecido,  o  óptimo 
corresponde a um número de rotas superior àquele que é apresentado nas soluções da maioria dos autores 
(vide Anexo C). 

Assim, a minimização do número de rotas é importante para a resolução destes problemas com obtenção de 
resultados  satisfatórios,  mas  não  deverá  ser  a  única  componente  da  função  objectivo  pois  em  alguns 
problemas a pesquisa levará ao afastamento do óptimo.  

Assim, após análise aos resultados obtidos verifica‐se que na componente distância obteve‐se um resultado 
em média 5% superior aos resultados obtidos por Rochat‐Taillard (1995), escolhido como benchmark por ser 
um  dos  algoritmos  mais  eficientes,  embora  o  Multiple  Ant  Colony  System  de  Gambardella  et.  al  (1999) 
obtenha resultados muito próximos em aproximadamente um terço do tempo. 

Analisando  detalhadamente  por  grupo  de  instâncias  (anexo  C),  observa‐se  que  os  piores  resultados  (mais 
distantes  do  óptimo  e  com  maior  variabilidade)  foram  obtidos  nas  instâncias  do  tipo  ‘C’  –  com  clusters  de 
clientes –, ao passo que as melhores soluções foram obtidas nos problemas R2 e RC2, caracterizados por ter 
um horizonte temporal mais alargado, apesar de nesses mesmos problemas se utilizar em média um maior 
número de veículos nas soluções encontradas. Conseguiu‐se igualar os resultados de Rochat‐Taillard em três 
instâncias (C101, C108 e C202) e superar em seis outras (R201, R205, R210, RC201, RC202 e RC207), sendo 
que destes conseguiu‐se atingir os melhores resultados alcançados por um método aproximado de pesquisa 
nos problemas RC202 e RC207 (Solomon, 2005). 

Conforme se pode também verificar no quadro do anexo C, as soluções obtidas reduziram, em média, para 
metade  a  distância  total  da  solução  inicial  obtida  a  partir  de  uma  heurística  de  construção  implementada 
(vide capítulo 5.1). De realçar que as soluções iniciais obtidas são de qualidade bastante má, o que pode ter 
influenciado  negativamente  o  desempenho  do  modelo,  conforme  demonstrado  adiante  na  secção  3  do 
presente  capítulo.  Não  foi  no  entanto  possível  construir  soluções  iniciais  de  qualidade  superior  devido  à 
natureza altamente restritiva dos problemas no que toca às janelas temporais dos clientes. 

Nas  41  instâncias  em  que  é  conhecido  o  óptimo  global  (Solomon,  2005),  verificado  a  partir  de  métodos 
exactos, obtiveram‐se resultados em média 4,5% superiores (piores) face aos resultados obtidos por Rochat‐
Taillard (1995) e, para essas mesmas instâncias, 9% em média acima do óptimo global. 

Tendo em conta os resultados obtidos nos dois conjuntos de instâncias, considera‐se que os resultados são 
suficientemente bons para o propósito do modelo. No entanto, a qualidade das soluções é prejudicada pela 
variabilidade  dos  resultados,  explicada  parcialmente  pela  natureza  aleatória  da  pesquisa  da  vizinhança.  No 
entanto, uma estratégia eficaz de diversificação da pesquisa pode contornar essa debilidade do modelo. 

No capítulo 7 faz‐se menção às melhorias possíveis de implementar no modelo desenvolvido que poderiam 
permitir  que  a  estratégia  de  pesquisa  pelo  espaço  de  soluções  fosse  mais  poderosa  de  modo  a  obter  um 
conjunto de soluções mais próximas do óptimo global e sobretudo com menor variabilidade. 

51 

 
6.2 Resultados da Aplicação do Modelo ao Caso de Estudo 
O caso de estudo que aqui se apresenta utiliza dados reais do planeamento feito pela Gestiretalho – empresa 
do  grupo  Jerónimo  Martins  –  para  quatro  dias  de  operação  de  distribuição  dos  produtos  provenientes  do 
Centro de Distribuição da Azambuja (armazém 5401 ‐ Não Perecíveis). 

O problema contém várias restrições que não podem ser violadas, incluindo algumas restrições que não estão 
geralmente  presentes  nas  variantes  mais  conhecidas  do  VRP  –  restrições  de  capacidade  de  uma  frota 
heterogénea,  restrições  de  janelas  temporais  dos  clientes  e  restrições  de  acessibilidade.  Nestas  últimas 
incluem‐se algumas rotas “proibidas” na matriz de distâncias fornecida e respeita‐se também a capacidade 
máxima do camião que pode fornecer cada cliente. 

Esta última restrição teve de ser relaxada por duas vezes – nos dias de planeamento 13 e 14 (vide Anexo D, a 
negrito)  –  devido  ao  pedido  de  alguns  clientes  ser  superior  à  capacidade  do  maior  camião  admissível.  A 
alternativa  seria  abastecer  esses  clientes  com  entregas  fraccionadas,  variante  que  se  revelou  bastante 
complexa de implementar, em particular numa heurística de construção adequada que respeitasse todas as 
restrições do problema. 

Assim, considerou‐se que as adaptações introduzidas foram pouco significativas para afectar a comparação 
dos resultados.  

Há ainda que mencionar que os resultados foram obtidos em tempos de execução muito aceitáveis devido à 
complexidade reduzida dos problemas, tanto pela sua dimensão (40 clientes) como pelo número máximo de 
clientes por rota (entre dois a cinco clientes, devido a restrições de capacidade, dependendo da utilização da 
divisão  de  cargas),  reduzidos,  ao  contrário  dos  problemas  benchmark,  nos  quais  a  maior  dificuldade  era 
muitas vezes resolver o problema TSP associado a cada rota, dada a capacidade elevada dos veículos face ao 
pedido médio dos clientes. 

As soluções iniciais foram obtidas através da implementação de uma adaptação da heurística Savings de Clark 
e Wright (1964). Para o dia de planeamento 12 a solução obtida respeitava todas as restrições do problema; 
no entanto, para os restantes dias foi encontrada uma solução inicial manualmente a partir da solução obtida 
da implementação da heurística Savings, devido à não satisfação de algumas restrições (de acessibilidade e 
de janelas temporais) das soluções obtidas.  

No  seu  trabalho,  Figueiredo  (2007)  fez  uma  análise  generalizada  da  aplicabilidade  do  cenário  VRPSD 
comparando‐o  com  um  VRP  simples  e  seguidamente  propôs  dois  cenários  VRPSD  –  diferindo  apenas  no 
número permitido de visitas a clientes.  

Tendo em conta que neste trabalho são propostos dois cenários, com e sem divisão de cargas – estando no 
primeiro  cenário  o  fraccionamento  de  mercadorias  limitado  a  duas  visitas  por  cliente  (à  semelhança  do 
cenário  VRPSD  simples  de  Figueiredo)  –  considerou‐se  relevante  fazer  uma  análise  mais  aprofundada  do 
impacto que a divisão de cargas tem neste Caso de Estudo concreto. 

52 

 
6.2.1 Aplicabilidade da Divisão de Cargas ao Caso de Estudo 

O  cenário  Split  Deliveries  requer  um  estudo  prévio  para  análise  da  aplicabilidade  ao  caso  de  estudo,  pois 
conforme demonstrado por Archetti et al. (2006a), a divisão de cargas permite obter maiores ganhos quando 
a  média  da  procura  é  ligeiramente  superior  a  metade  e  inferior  a  dois  terços  da  capacidade  dos  veículos 
utilizados.  Assim,  apresenta‐se  na  tabela  6.4  os  dados  referentes  ao  Caso  de  Estudo  apresentado  em 
Figueiredo (2007), com o qual vamos comparar os resultados obtidos na secção seguinte. 

Capacidade  Número 
Dia  12  13  14  15 
da loja  de lojas 
Média 13,56 13,67 11,22  11,11 
21  9  % Capacidade 64,6% 65,1% 53,4%  52,9% 
Desvio Padrão 4,30 6,50 5,67  5,42 
Média 13,38 9,63 10,00  10,50 
24  27  % Capacidade 55,8% 40,1% 41,7%  43,8% 
Desvio Padrão 5,05 3,78 6,72  4,86 
Média 13,50 12,75 15,00  19,75 
33  4  % Capacidade 40,9% 38,6% 45,5%  59,8% 
Desvio Padrão 9,40 3,77 5,29  5,85 
Volume em paletes  524  434  421  451 
Tabela 6.4 ‐ Estudo da procura diária por tipo de loja (Adaptado de Figueiredo, 2007) 

Foi feita a divisão dos clientes pela capacidade máxima do veículo que podem receber, a qual constitui uma 
das restrições do problema. Conforme se pode observar, existem no Caso de Estudo apenas 4 clientes que 
podem  ser  servidos  por  qualquer  tipo  de  veículo;  27  clientes  que  podem  ser  abastecidos  por  veículos  de 
capacidade  igual  ou  inferior  a  24  paletes;  e  9  lojas  que  apenas  têm  condições  para  receber  veículos  com 
capacidade de até 21 paletes.  

Do ponto de vista dos veículos, os camiões com capacidade de 33 paletes apenas podem servir 4 clientes, ao 
passo  que  as  rotas  atribuídas  aos  veículos  com  capacidade  de  24  paletes  podem  incluir  outros  27  clientes, 
além  desses  4  –  há  portanto  31  clientes  a  considerar  nas  rotas  dos  veículos  de  24  paletes.  Quanto  aos 
veículos  de  21  paletes,  não  há  qualquer  restrição  a  considerar  pelo  que  podem  ser  utilizados  para  servir 
qualquer cliente do problema. 

A priori, o fraccionamento de entregas será mais vantajoso no planeamento das rotas que incluam as lojas 
que  podem  receber  veículos  com  capacidade  igual  ou  inferior  a  21  paletes,  uma  vez  que  a  variabilidade 
reduzida da procura não influencia muito estes resultados.  

Na tentativa de confirmar essa possibilidade, foi feita a seguinte análise do ganho esperado com a aplicação 
da  divisão  de  cargas,  em  termos  da  afectação  no  número  de  rotas  necessárias  para  suprir  a  procura  total. 
Seguidamente apresentam‐se 3 gráficos, baseados no trabalho de Archetti et al. (2006a), onde são visíveis as 
vantagens de aplicar a Divisão de Cargas ao Caso de Estudo em análise. 

Conforme  se  pode  verificar  nos  gráficos  2  a  4,  a  aplicação  das  Entregas  Fraccionadas  ao  presente  Caso  de 
Estudo permite obter maiores ganhos quando a procura média dos clientes é ligeiramente superior a metade 
da capacidade do veículo. Neste ponto, em que D =   ,  é  possível  abastecer  todos  os  clientes  com 
recurso a aproximadamente metade das rotas, o que significa que no worst‐case scenario podemos poupar 
até metade do número de veículos necessários e com isso encurtar a distância e tempo totais da operação.  

53 

 
Não obstante, obtém‐se ganhos sempre que o rácio   ,  representado  no  eixo do  lado  direito,  for 
superior a 1, correspondendo de um modo grosseiro a uma procura média D Є   . 
 
Variação do número de rotas necessárias consoante a procura média dos clientes
Nº Rotas necessárias  para 

11
satisfazer Procura Total

45 2,00

Rácio r(VRP)/r(VRPSD)
40
35 1,50
30
25
1,00
20
15
10 0,50
5
0 0,00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Procura Média dos Clientes
r(VRP) r(VRPSD) r(VRP)/ r(VRPSD)
Gráfico 2 – Total de rotas necessárias para abastecer 40 clientes com veículos com capacidade de 21 paletes 
em função da procura média: comparação dos cenários com divisão de carga e sem divisão de carga 

 
Variação do número de rotas necessárias consoante a procura média dos clientes
35 13 2,00
Nº Rotas necessárias  para 
satisfazer Procura Total

Rácio r(VRP)/r(VRPSD)
30
25 1,50
20
1,00
15
10 0,50
5
0 0,00
1 3 5 7 9 11 13 15 17 19 21 23 25
Procura Média dos Clientes
r(VRP) r(VRPSD) r(VRP)/ r(VRPSD)
Gráfico 3 – Total de rotas necessárias para abastecer 31 clientes com veículos com capacidade de 24 paletes 
em função da procura média: comparação dos cenários com divisão de carga e sem divisão de carga 

 
Variação do número de rotas necessárias consoante a procura média dos clientes
17
5 1,40
Nº Rotas necessárias  para 
satisfazer Procura Total

Rácio r(VRP)/r(VRPSD)

1,20
4
1,00
3 0,80
2 0,60
0,40
1
0,20
0 0,00
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33
Procura Média dos Clientes
r(VRP) r(VRPSD) r(VRP)/ r(VRPSD)
Gráfico 4 – Total de rotas necessárias para abastecer 4 clientes com veículos com capacidade de 33 paletes 
em função da procura média: comparação dos cenários com divisão de carga e sem divisão de carga 

54 

 
6.2.2 Comparação dos resultados obtidos com Figueiredo (2007) 

Nesta  secção  apresenta‐se  um  conjunto  de  quadros  retirados  de  Figueiredo  (2007),  com  inclusão  dos 
resultados obtidos neste trabalho para dois cenários: sem divisão de cargas (C1 e C2) e com divisão de cargas 
(C3 e C4). Apresentam‐se ainda resultados de dois runs para cada problema: em C1 e C3 utilizou‐se a função 
multi‐objectivo (5) introduzida por Figueiredo (2007). 

Devido ao facto da função objectivo de Figueiredo (2007) não ter uma correcta uniformização dos termos que 
a compõem, recorreu‐se a uma função multi‐objectivo mais moderada (6) nos runs C2 e C4.  

Os  pesos  relativos  utilizados  para  esta  F.O.  em  ambos  os  cenários  –  com  e  sem  Split  Deliveries  –  foram  os 
seguintes: wd = 50%; wv = 10%; wt = 30%; wc = 10%. 

Os  resultados  obtidos  foram  agrupados  nas  várias  componentes  da(s)  função(ões)  objectivo  em:  distância, 
número de veículos e tempo total. É ainda comparada a distância média por veículo, o tempo médio por rota 
e, para um dos dias do planeamento, apresenta‐se a discriminação do tempo total necessário para completar 
a distribuição nos seus componentes mais elementares. 

Para a componente distância obtiveram‐se os resultados apresentados na tabela 6.5. Comparativamente com 
o planeamento real, obtiveram‐se poupanças na ordem dos 20%. É possível verificar que, mesmo ser recorrer 
à  divisão  de  cargas  como  se  procedeu  em  Figueiredo  (2007),  é  possível  atingir  resultados  igualmente 
próximos  com  um  método  aproximado.  Com  a  divisão de  cargas (limitada  a  um  máximo  de duas  rotas  por 
cliente), obtiveram‐se resultados em média 5% abaixo dos de Figueiredo (2007) nesta componente. 

Este facto é explicável devido ao método exacto de Figueiredo não ter atingido o óptimo global na maioria 
dos  dias  de  planeamento  e  ainda  devido  à  decomposição  em  4  subproblemas  de  menor  dimensão.  Deste 
modo, mesmo que com tempos de execução superiores se obtivesse o óptimo através de métodos exactos, 
encontrar‐se‐iam soluções óptimas dos subproblemas mas não necessariamente do problema no seu todo. 

Distância (km)  12  13  14  15  total  % Real 


Planeamento real  3391  2984  3085  3014  12474   ‐ 
VRPSD simples (Figueiredo, 2007)  3163  2481  2429  2577  10650  ‐14,6% 
VRPSD (Figueiredo, 2007)  2937  2366  2309  2448  10060  ‐19,4% 
Adaptação Savings / Sol. Inicial  3217  2739  2457  2924  11337  ‐9,1% 
(C1) TS Guerreiro F.O=F.O Figueiredo  2922  2376  2248  2487  10033  ‐19,6% 
(C2) TS Guerreiro F.O=mix  3070  2386  2320  2479  10255  ‐17,8% 
(C3) TS Guerreiro SD F.O=F.O Figueiredo  2740 2251 2198 2248  9437  ‐24,3%
(C4) TS Guerreiro SD F.O=mix  2808  2384  2237  2257  9686  ‐22,4% 
Tabela 6.5 ‐ Total de quilómetros por dia de operação 

As mesmas razões apresentadas anteriormente levaram a que se conseguisse, com uma heurística, superar 
(nos  cenários  C1,  C3  e  C4)  os  resultados  obtidos  na  componente  “Número  de  veículos”  (tabela  6.6)  por 
Figueiredo (2007) através de métodos exactos, atingindo‐se uma redução do número necessário de veículos 
superior  a 20%,  face  ao planeamento  real.  Em  ambas  as  componentes  até  aqui  analisadas,  a  aplicação das 
Split Deliveries (cenários C3 e C4) permite atingir ganhos na ordem dos 6% face aos respectivos cenários sem 
divisão  de  cargas  (C1  e  C2),  no  entanto  fica  perceptível  que  os  maiores  ganhos  derivam  da  resolução  do 
problema em toda a sua dimensão, factor decisivo face ao modelo de Figueiredo (2007) que, devido à sua 
natureza exacta, exigiu a subdivisão do problema em clusters. 

55 

 
Nº veículos  12  13  14  15  total  % Real 
Planeamento real  29  25  26  26  106   ‐ 
VRPSD simples (Figueiredo, 2007)  27  21  21  22  91  ‐14,2% 
VRPSD (Figueiredo, 2007)  25  20  20  21  86  ‐18,9% 
Adaptação Savings / Sol. Inicial  28  23  21  25  97  ‐8,5% 
(C1) TS Guerreiro F.O=F.O Figueiredo  25  20  19  21  85  ‐19,8% 
(C2) TS Guerreiro F.O=mix  26  20  20  21  87  ‐17,9% 
(C3) TS Guerreiro SD F.O=F.O Figueiredo  23 19 19 19  80  ‐24,5%
(C4) TS Guerreiro SD F.O=mix  23  20  19  19  81  ‐23,6% 
Tabela 6.6 ‐ Número de veículos necessários por dia de operação 

A redução do número necessário de veículos é bastante importante neste problema em particular (do Caso 
de Estudo) porque a distância média entre o centro de distribuição e um qualquer cliente é bastante superior 
à  distância  média  entre  quaisquer  dois  clientes.  Assim,  a  supressão  de  uma  rota  proporciona  grandes 
poupanças na distribuição diária. 

A combinação dos resultados anteriores levam à tabela seguinte (6.7), onde é perceptível que não existem 
grandes  diferenças,  face  ao  planeamento  real,  na  distância  média  percorrida  em  cada  rota.  Este  quadro 
demonstra  que  é  possível  delinear  um  planeamento  com  um  número  menor  de  rotas  de  extensão  média 
semelhante. 

Distância média por veículo (km)  12  13  14  15  total  % Real 


Planeamento real  116,93  119,36  118,65  115,92  117,68  ‐  
VRPSD simples (Figueiredo, 2007)  117,15  118,14  115,67  117,14  117,03  ‐0,5% 
VRPSD (Figueiredo, 2007)  117,48  118,30  115,45  116,57  116,98  ‐0,6% 
Adaptação Savings / Sol. Inicial  114,89  119,09  117,00  116,96  116,88  ‐0,7% 
(C1) TS Guerreiro F.O=F.O Figueiredo  116,88  118,80  118,32  118,43  118,04  0,3% 
(C2) TS Guerreiro F.O=mix  118,08  119,30  116,00  118,05  117,87  0,2% 
(C3) TS Guerreiro SD F.O=F.O Figueiredo  119,13 118,47 115,68 118,32  117,96  0,2%
(C4) TS Guerreiro SD F.O=mix  122,09  119,20  117,74  118,79  119,58  1,6% 
Tabela 6.7 ‐ Média de quilómetros efectuada por cada uma das rotas para cada dia de operação 

Os  runs  executados  com  as  funções  objectivo  C2  e  C4  obtiveram  os  melhores  resultados  na  componente 
temporal (tabela 6.8), devido à Função Objectivo escolhida ter maior ponderação do factor tempo.  

Nos cenários C1 e C3, as soluções obtidas foram fortemente penalizadas nesta componente, facto explicado 
adiante na tabela 6.10 após discriminação dos tempos de operação para um dos dias de planeamento. 

Tempo total (min)  12  13  14  15  total  % Real 


Planeamento real  4920 4454 4100 4436  17910  ‐
VRPSD simples (Figueiredo, 2007)  4716 3976 3863 4008  16563  ‐7,5%
VRPSD (Figueiredo, 2007) 4986 4190 4029 4012  17217  ‐3,9%
Adaptação Savings / Sol. Inicial  5178 5832 5334 5658  22002  22,8%
(C1) TS Guerreiro F.O=F.O Figueiredo  5748 5682 4842 4794  21066  17,6%
(C2) TS Guerreiro F.O=mix 4578 3870 3720 3924  16092  ‐10,2%
(C3) TS Guerreiro SD F.O=F.O Figueiredo  6916 6407 6213 6546  26082  45,6%
(C4) TS Guerreiro SD F.O=mix  4801 3867 4318 3791  16777  ‐6,3%
Tabela 6.8 ‐ Tempo (minutos) necessário para completar a operação por dia de operação 

56 

 
Na tabela 6.9 procura‐se apresentar o impacto que uma variação do tempo total da operação tem na duração 
média de cada rota, tendo em conta o número variável de veículos para cada dia de planeamento. 

Pode‐se  verificar  que,  apesar  de  na  maior  parte  dos  cenários  o  tempo  total  diminuir  em  relação  ao 
planeamento real, o tempo médio por rota aumenta consideravelmente devido à diminuição do número de 
veículos utilizados, podendo esse aumento superar os 90% face ao planeamento real, no cenário C3, e 45% 
no cenário C1. Tal significa que a duração média de uma rota no planeamento actual aumenta de cerca de 3 
horas para quase 5,5h, no cenário C3, ou mais de 4h, no cenário C1. 

Este impacto negativo pode inviabilizar estas soluções uma vez que os veículos são geralmente utilizados em 
mais do que uma rota por dia, sendo o planeamento de cada veículo feito em função do tempo que demora a 
percorrer a distância entre os clientes servidos e o centro de distribuição. 

Tempo médio por rota (min)  12 13 14 15  total  % Real


Planeamento real  169,66 178,16 157,69 170,62  168,96  ‐
VRPSD simples (Figueiredo, 2007)  174,67  189,33  183,95  182,18  182,01  7,7% 
VRPSD (Figueiredo, 2007) 199,44 209,50 201,45 191,05  200,20  18,5%
Adaptação Savings / Sol. Inicial  184,93  253,57  254,00  226,32  226,82  34,2% 
(C1) TS Guerreiro F.O=F.O Figueiredo  229,92  284,10  254,84  228,29  247,84  46,7% 
(C2) TS Guerreiro F.O=mix 176,08 193,50 186,00 186,86  184,97  9,5%
(C3) TS Guerreiro SD F.O=F.O Figueiredo  300,70 337,21 327,00 344,53  326,03  93,0%
(C4) TS Guerreiro SD F.O=mix  208,74 193,35 227,26 199,53  207,12  22,6%
Tabela 6.9 ‐ Tempo médio (minutos) de duração de cada rota por dia de operação 

Na  tabela  seguinte  (6.10)  tenta‐se  explicar  porque  é  que,  apesar  da  distância  total  e  número  de  veículos 
requeridos ser inferior ao real em todos os cenários, o tempo médio por rota é superior e em alguns casos o 
tempo total aumentou.  

Esse impacto é explicado pelo facto de, ao contrário de em Figueiredo (2007), onde se dividiram em clusters 
os  clientes  incluídos  no  planeamento  da  manhã  e  no  da  tarde  (para  efeitos  de  redução  de  complexidade 
computacional), aqui removeu‐se essa restrição, causando a possibilidade dos veículos servirem clientes cuja 
janela temporal permitia serviço de manhã conjuntamente com clientes do planeamento da tarde.  

A diferença entre o fim da janela temporal dos clientes da manhã e o início da janela temporal dos clientes da 
tarde traduz‐se num atraso de várias horas, preponderante na penalização desta componente. 

Exemplos deste evento encontram‐se representados nos Anexo E e G (a itálico). O anexo G foi executado com 
a opção de produção de relatório e torna mais perceptível, com a consulta das janelas temporais dos clientes 
no Anexo D, o impacto dos atrasos na operação. 

Este  atraso  poderia  ainda  ser  superior  se  esta  restrição  tivesse  sido  relaxada  com  a  utilização  de  janelas 
temporais flexíveis – estratégia também possível no Modelo implementado.  

Os  atrasos,  naturalmente  indesejáveis  numa  operação  (especialmente  se  conhecidos  a  priori),  podem  ser 
combatidos  de  duas  formas  durante  o  planeamento:  no  presente  trabalho  optou‐se  por  dar  maior  peso  à 
componente  tempo  na  Função  Objectivo,  pelo  que  a  minimização  da  F.O.  irá  implicitamente  reduzir  a 
possibilidade de ocorrência de atrasos. No entanto, e como se pode constatar no exemplo abaixo (run C4), 
não é possível garantir a inexistência de atrasos através deste método; outra forma mais eficaz de contornar 
o  problema  seria  implementar  os  atrasos  como  uma  restrição  do  problema,  o  que  não  seria  aliás  difícil. 

57 

 
Contudo,  considerou‐se  que  a  colocação  de  um  número  excessivo  de  restrições  no  problema  prejudica 
fortemente  a  eficiência  da  pesquisa  –  tornando  o  Modelo  mais  susceptível  de  ficar  preso  em  torno  de 
óptimos locais. 

A  componente  fixa  dos  tempos  de  serviço  varia  com  o  número  total  de  visitas,  ao  passo  que  o  tempo  de 
serviço variável depende apenas da quantidade a entregar, em paletes. Assim, a componente variável muda 
com o problema (ou dia de planeamento) mas não com a solução de cada problema.  

Os valores utilizados nos tempos de serviço (tanto neste trabalho como no de Figueiredo) foram de 2 minutos 
por  palete  na  operação  de  descarga  (tempo  de  serviço  variável)  e  de  20  minutos  por  cada  visita  a  cliente 
(tempo de serviço fixo).  

Daqui se retira que para o dia de planeamento exemplificado, foram servidos 39 clientes (um dos clientes não 
fez  qualquer  pedido),  sendo  o  número  médio  de  visitas  a  cada  cliente  igual  a  1  no  cenário  sem  divisão  de 
cargas, ao passo que com Split Deliveries esse rácio é de 1,36 (53 visitas) e de 1,21 (47 visitas) nos runs C3 e 
C4, respectivamente. 

Assim, o cenário com Divisão de Cargas (runs C3 e C4), apesar de apresentar tempos de viagem inferiores, é 
penalizado  na  componente  temporal  em  relação  ao  cenário  em  que  o  fraccionamento  de  entregas  não  é 
permitido (runs C1 e C2, respectivamente) devido ao maior número médio de visitas por cliente.  

Discriminação dos tempos (min) ‐ dia 12  Variável Fixo Viagem Atrasos  total  % Real


Planeamento real  1048  860  3012  0  4920  ‐ 
VRPSD simples (Figueiredo, 2007)  1048  1020  2648  0  4716  ‐4,1% 
VRPSD (Figueiredo, 2007)  1048  1200  2738  0  4986  1,3% 
Adaptação Savings / Sol. Inicial  1048 780 2870 480  5178  5,2%
(C1) TS Guerreiro F.O=F.O Figueiredo  1048  780  2623  1297  5748  16,8% 
(C2) TS Guerreiro F.O=mix  1048  780  2750  0  4578  ‐7,0% 
(C3) TS Guerreiro SD F.O=F.O Figueiredo  1048 1060 2538 2270  6916  40,6%
(C4) TS Guerreiro SD F.O=mix  1048 940 2597 216  4801  ‐2,4%
Tabela 6.10 ‐ Discriminação dos tempos de operação para o dia 12 

Finalmente,  apresenta‐se  na  tabela  6.11  os  tempos  de  processamento  computacional  dos  vários  runs, 
comparativamente com os divulgados por Figueiredo (2007). 

Tempo até encontrar melhor solução  % VRPSD 
12  13  14  15  total  % VRPSD
(segundos)  simples 
VRPSD simples (Figueiredo,2007)  21792  14575  15638  16039  68044,00  ‐  ‐ 
VRPSD (Figueiredo,2007)  22136  15155  22705  22698  82694,00  ‐  ‐ 
(C1) TS Guerreiro F.O=F.O Figueiredo  25,39  29,88  15,23  15,92  86,42  0,13%  0,10% 
(C2) TS Guerreiro F.O=mix  9,11  11,38  13,35  55,16  89,00  0,13%  0,11% 
(C3) TS Guerreiro SD F.O=F.O Figueiredo  144,39 34,18 25,44 12,44 216,45  0,32%  0,26%
(C4) TS Guerreiro SD F.O=mix  18,49  4,17  74,47  59,30  156,43  0,23%  0,19% 
Tabela  6.11  –  Tempo  de  processamento,  em  segundos,  necessário  para  obtenção  dos  resultados 
apresentados  

Se  considerarmos  que  em  Figueiredo  (2007)  recorreu‐se  à  subdivisão  do  problema  em  4  grupos  de 
aproximadamente 10 clientes e em 3 desses grupos não se conseguiu garantir o óptimo, e tendo em conta 
que o tempo de execução de um Modelo Exacto aumenta exponencialmente com o incremento da dimensão 
do problema, o Modelo de Figueiredo poderia demorar vários dias para resolver o problema em toda a sua 

58 

 
dimensão.  Fica  então  evidente  que  os  métodos  exactos  são  muito  mais  demorados  e  mesmo  com  as 
estratégias  adoptadas  por  Figueiredo  (2007)  para  simplificação  da  complexidade  do  problema,  a  diferença 
dos tempos de execução ficou em três ordens de grandeza. 

No gráfico 5 são apresentadas as componentes da função objectivo dos vários cenários, comparativamente 
com os de Figueiredo (2007) face ao planeamento real. Fica evidente que a resolução do problema no seu 
todo  permite  reduzir  significativamente  a  distância  e  o  número  de  veículos  requeridos  para  completar  a 
operação, mesmo com uma heurística de construção, no entanto a junção dos clientes do planeamento da 
manhã  com  os  da  tarde  vem  provocar  atrasos  significativos  na  operação.  Esse  constrangimento  pode  ser 
ultrapassado com o aumento da ponderação na Função Objectivo da componente Tempo. 

É deste modo visível que a função objectivo (6) é bastante mais equilibrada que a de Figueiredo, conseguindo 
minimizar  a  componente  tempo  com  resultados  igualmente  competitivos  nas  componentes  de  distância  e 
número de veículos face ao VRPSD de Figueiredo (2007). Os resultados obtidos com a F.O. (5) só seriam de 
considerar se a componente tempo fosse desprezável para a operação.  

Resultados da aplicação do Modelo vs Figueiredo (2007) face ao Planeamento Real

45,63%
0,5
VRPSD simples 
0,4 (Figueiredo, 2007)

0,3 VRPSD (Figueiredo, 
22,85%
% do Planeamento Real

2007)
17,62%

0,2
Adaptação Savings / 
Sol. Inicial
0,1
TS Guerreiro F.O=F.O 
0 Figueiredo

‐0,1 TS Guerreiro F.O=mix
Distância % Planeamento 
Real Nº Camiões % 
‐14,62%

‐0,2 Planeamento Real Tempo total % 


‐9,11%

TS Guerreiro SD 
‐14,15%
‐19,35%

‐8,49%
‐17,79%

‐6,33%
‐19,57%

Planeamento Real F.O=F.O Figueiredo
‐3,87%
‐18,87%

‐7,52%
‐17,92%
‐22,35%

‐10,15%

‐0,3
‐19,81%
‐24,35%

TS Guerreiro SD 
‐23,58%
‐24,53%

F.O=mix

Gráfico  5  –  Gráfico  com  resultados  da  aplicação  do  Modelo  ao  Caso  de  Estudo,  comparativamente  com 
Figueiredo (2007) face ao planeamento real 

6.3 Análise de Sensibilidade 
Nesta  secção  apresentam‐se  algumas  das  análises  efectuadas  ao  desempenho  do  modelo,  com  vista  à 
determinação dos parâmetros mais influentes na obtenção da solução final, bem como a aferição da robustez 
do  modelo.  Para  os  seguintes  quadros,  utilizou‐se  como  base  o  dia  de  planeamento  12  do  caso  de  estudo 
apresentado, e em todos os runs a solução inicial foi gerada através da heurística Savings implementada, e a 
execução foi feita sem recurso a Split Deliveries nem estratégias de diversificação da pesquisa.  
Nas  tabelas  6.12  e  6.13  a  função  objectivo  utilizada  foi  a  minimização  da  distância  total  e  em  ambas  se 
comparam  os resultados  obtidos  com  o  Melhor  Resultado  Conhecido  (MRC).  Na  tabela  6.12  fez‐se variar  a 
duração limite de cada run. Foi utilizada a média de 3 runs consecutivos, excluindo‐se o pior resultado, para a 

59 

 
avaliação da variabilidade dos resultados obtidos. Foi possível verificar que, para runs com duração igual ou 
superior  a  30  segundos,  os  resultados  atingidos  apresentavam  uma  variabilidade  reduzida,  com  desvio 
padrão  inferior  a  1%  da  média  e  com  diferença  inferior  a  1%  em  relação  ao  melhor  resultado  atingido 
(%MRC). 

Tempo médio nec. p/  Desvio Padrão 
Influência da duração do Run  Média 3 runs  % MRC 
atingir a melhor sol.  3 runs 
MRC  111,65 2917 ‐ ‐ 
Duração cada Run=5 sec 2,41 3039 4,2%  1,53
Duração cada Run=10 sec  5,12 2984 2,3%  52,21
Duração cada Run=20 sec  10,25 2972 1,9%  61,49
Duração cada Run=30 sec  8,71 2943 0,9%  17,67
Duração cada Run=60 sec  24,86 2941 0,8%  7,81
Duração cada Run=120 sec  66,71 2940 0,8%  10,02
Duração cada Run=180 sec  82,93 2928 0,4%  19,05
Tabela 6.12 ‐ Influência da duração do Run no Desempenho do Modelo 

Na  tabela  6.13  apresentam‐se  os  resultados  dos  vários  runs  executados  com  diferentes  soluções  iniciais. 
Como  esperado,  verificou‐se  uma  forte  correlação  entre  a  qualidade  da  solução  final  e  da  solução  inicial, 
especialmente quando se forçou a utilização de soluções iniciais com qualidade mais fraca. 

Assim,  é  necessário  haver  um  cuidado  especial  na  selecção  da  solução  inicial  para  não  comprometer  os 
resultados finais. 

Influência da Solução Inicial  Duração run (s) F.O Sol. Inicial F.O Melhor Sol. % Melhoria  % MRC


Sol. Inicial F.O=3408  30 3408 3038 ‐10,86%  4,1%
Sol. Inicial F.O=3212  30 3212 3010 ‐6,29%  3,2%
Sol. Gerada Savings  30 3108 2951 ‐5,05%  1,2%
Sol. Inicial F.O=3062  30 3062 2949 ‐3,69%  1,1%
Sol. Inicial F.O=2955  30 2955 2954 ‐0,03%  1,3%
Sol. Inicial F.O=2955  60 2955 2936 ‐0,64%  0,7%
Sol. Inicial F.O=2936  120 2936 2922 ‐0,48%  0,2%
Tabela 6.13 – Influência da Solução Inicial no Desempenho do Modelo 

Na  tabela  6.14  apresentam‐se  os  resultados  obtidos  nos  vários  runs  com  a  Função  Objectivo  (6),  fazendo 
variar  as  componentes  distância  e  tempo  (componente  Nº  veículos  com  peso  fixo  de  10%).  Esta  análise 
permite concluir que convém haver uma ponderação mínima de 10% da componente tempo na F.O. de modo 
a minimizar a ocorrência de atrasos que penalizem a solução final na componente tempo total. 

Influência da F.O % Melhoria  % Melhoria 


Distância  Tempo 
(Duração Run = 60 sec)  Distância  Tempo 
Sol. Inicial  3062 ‐ 4848 ‐ 
0% dist 90% tempo  2949 ‐3,69% 4470 ‐7,80%
10% dist 80% tempo  2949 ‐3,69% 4458 ‐8,04%
20% dist 70% tempo  2988 ‐2,42% 4494 ‐7,30%
30% dist 60% tempo  2978 ‐2,74% 4488 ‐7,43%
40% dist 50% tempo  2972 ‐2,94% 4488 ‐7,43%
50% dist 40% tempo  2969 ‐3,04% 4488 ‐7,43%
60% dist 30% tempo  2963 ‐3,23% 4488 ‐7,43%
70% dist 20% tempo  2952 ‐3,59% 4470 ‐7,80%
80% dist 10% tempo  2961 ‐3,30% 4488 ‐7,43%
90% dist 0% tempo  2923 ‐4,54% 5268 ‐ 8,66%
Tabela 6.14 ‐ Influência da F.O no Desempenho do Modelo 

60 

 
Capítulo 7 
Conclusões e Desenvolvimentos Futuros 
O  problema  clássico  de  planeamento  de  rotas  de  veículos,  bem  como  as  variantes  que  daí  derivaram,  tem 
vindo  ao  longo  do  tempo  a  ser  estudado  através  de  diversas  metodologias,  com  vista  à  obtenção  dos 
melhores resultados em tempo útil. 

O âmbito deste trabalho recaiu na comparação com um modelo exacto para aferição das reais capacidades 
de  um  modelo  aproximado. Foi  desenvolvido  um Modelo  versátil,  com  incorporação  de  todas  as principais 
restrições  de  um  VRP  e  as  do  Caso  de  Estudo  analisado,  que  permite  resolver  problemas  com  diferentes 
características independentemente dos dados disponíveis. O tradeoff da versatilidade conseguida traduz‐se 
na  necessidade  de  parametrização,  dependendo  do  problema  analisado,  de  forma a  tirar  o  melhor  partido 
das vantagens oferecidas pelo Modelo. 

O presente trabalho vem reforçar o bom desempenho das heurísticas face aos métodos exactos, através da 
comparação  feita  com  os  resultados  de  Figueiredo  (2007)  e  com  o  planeamento  real  utilizado  no  Caso  de 
Estudo. 

Os  resultados  obtidos  em  6.2,  em  comparação  com  os  obtidos  por  Figueiredo  (2007),  são  considerados 
bastante promissores na medida em que vêm comprovar que um método aproximado pode competir com 
um  método  exacto,  revelando‐se  acima  de  tudo  muito  mais  eficiente  mas  com  a  desvantagem  de  não 
conseguir contudo garantir a obtenção do óptimo global.  

Os resultados obtidos permitem afirmar que uma simples heurística de construção (inspirado no conceito de 
Savings  de  Clark  e  Wright,  1964)  permite  obter  soluções  de  qualidade  superior  ao  planeamento  real,  nas 
componentes distância e número de veículos necessários. 

A  comparação  feita  exclusivamente  através  da  função  objectivo  utilizada  por  Figueiredo  (2007)  permite 
afirmar que se conseguem obter melhores resultados do que qualquer dos cenários proposto por Figueiredo, 
mesmo sem se recorrer ao fraccionamento das entregas. No entanto tal só acontece porque o peso relativo 
da componente tempo na F.O. (5) é desprezável.  

Uma comparação minuciosa por componente da Função Objectivo permite constatar que, consoante a F.O 
escolhida,  o  modelo  conseguiu  obter  resultados  com  uma  distância  total  e  número  total  de  veículos 
necessários  inferiores,  mas  com  penalização  na  componente  tempo  devido  a  atrasos  incorridos  devido  à 
possibilidade de existência de rotas que contêm visitas a clientes do planeamento da manhã e da tarde.  

Quando utilizada uma F.O com peso relativo da componente tempo igual ou superior a 10%, obtiveram‐se 
resultados bastante melhores nesta componente, superando os resultados obtidos por Figueiredo em todas 
as componentes da F.O. para a maioria dos dias de planeamento. 

A  comparação  exaustiva  entre  os  resultados  obtidos  com  a  F.O.  (6)  (no  cenário  C4)  e  o  cenário  VRPSD  de 
Figueiredo (2007), indica que se conseguiram poupanças relativas de 4% na componente distância total com 
a  redução  em  6%  do  número  total  de  rotas  necessárias,  havendo  ainda  um  ganho  relativo  de  3%  na 
componente tempo. 

61 

 
As diferentes condições em que os modelos foram executados, para o mesmo problema, vieram dificultar a 
comparação do desempenho real dos métodos, tendo em conta a divisão do problema feita por Figueiredo 
em 4 clusters de clientes: por planeamento manhã/tarde e por dispersão espacial. A resolução do problema 
em  toda  a  sua  dimensão  permitiu,  por  um  lado,  encontrar  soluções  melhores  que  a  divisão  feita 
anteriormente  não  permitia  mas,  por  outro  lado,  evidenciou  um  novo  problema,  ao  permitir  rotas  com 
clientes do planeamento da manhã e da tarde, uma vez que tal provoca atrasos consideráveis na operação. 

A execução do modelo exacto ao problema em toda a sua dimensão (40 clientes) levaria a uma diferença de 
desempenho superior em termos de tempo de processamento, não de horas mas possivelmente de dias. Este 
facto tem toda a relevância para a aplicação por uma empresa no planeamento diário da sua operação, pois a 
sua utilização é condicionada pela demora na obtenção de resultados. Quando aplicado a um problema de 
dimensão  real  com  centenas  de  clientes,  torna‐se  mesmo  impossível  devolver  quaisquer  resultados  em 
tempo útil através da utilização exclusiva de métodos exactos. 

A  validação  feita  na  secção  6.1  com  instâncias  benchmark  comprovou  a  competitividade  do  modelo  em 
relação aos algoritmos mais eficientes de entre os referenciados na literatura, e ficou também evidenciado a 
proximidade  do  óptimo  global  que  o  Modelo  implementado  permite  atingir.  Os  resultados  obtidos  ficaram 
em média 9% aquém do óptimo global (para o conjunto de instâncias testadas cujo óptimo é conhecido) e 
apenas  5%  pior  que  os  melhores  resultados  obtidos  por  heurísticas,  com  a  particularidade  de  se  terem 
encontrado melhores soluções em algumas instâncias. 

Ficou  também  comprovado,  após  realização  de  análises  de  sensibilidade  (secção  6.3),  que  alguns  dos 
parâmetros  mais  influentes  no  desempenho  do  modelo  heurístico  desenvolvido  são  a  duração  do  run,  a 
qualidade da solução inicial e o peso dos componentes da F.O a optimizar, dependendo da Função Objectivo 
utilizada.  A  configuração  correcta  da  estratégia  de  diversificação  assume  particular  relevância  quando  se 
pretende resolver problemas de maior dimensão e que contenham maior número de clientes por rota. 

Em relação ao Caso de Estudo, constatou‐se que o método de planeamento actual da Jerónimo Martins tem 
muito  por  onde  ser  melhorado,  conseguindo‐se  poupanças  superiores  a  20%  ao  nível  da  distância  total 
percorrida,  no  tempo  total  de  operação  e  particularmente  no  número  de  rotas  necessárias  para  abastecer 
todos  os  clientes,  ao  mesmo  tempo  que  se  assegura  o  nível  de  serviço  das  lojas.  Por  outras  palavras,  é 
possível garantir os prazos e qualidade exigidos com redução de custos operacionais. 

Tendo  em  conta  o  objectivo  inicial,  tentou‐se  implementar  uma  interface  user  friendly  que  facilite  uma 
eventual integração com as operações da empresa sobre a qual recaiu o Caso de Estudo.  

Como tal, uma eventual continuação que este trabalho mereceria seria a aplicação do Modelo desenvolvido 
para a modelação da operação real da Jerónimo Martins, com maior número de restrições mas também de 
possibilidades, com vista à possível implementação nas operações da empresa. 

O sucesso de uma possível implementação depende, claro está, da realização de estudos prévios do impacto 
que  a  alteração  no  planeamento  diário  tem  nos  custos  da  operação,  bem  como  de  possíveis 
constrangimentos adicionais que a mesma possa causar. 

Uma evolução natural do Modelo desenvolvido seria a adaptação para resolver a variante multi‐depósito do 
VRP. A implementação não é, no entanto, directa, uma vez que além da habitual atribuição de uma frota de 

62 

 
veículos  a  cada  centro  de  distribuição,  há  que  contemplar  eventuais  carregamentos  em  centros  de 
distribuição diferentes daquele a que cada veículo está alocado.  

No caso específico da Jerónimo Martins, podem‐se considerar 5 centros de distribuição, após agregação dos 
armazéns  que  os  compõem,  levantando  naturais  dificuldades  na  alocação  da  frota  a  cada  Centro  de 
Distribuição.  O  planeamento  deverá  ser  feito  de  forma  integrada  entre  os  vários  armazéns  que  compõem 
cada Centro de Distribuição, tratando‐se portanto de um problema multi‐produto.  

A optimização desse problema passa pela criação de rotas com carga mista, isto é, com distribuição de mais 
do  que  uma  variedade  de  produto  em  cada  rota,  uma  vez  que  a  entrega  simultânea  de  mais  do  que  um 
pedido feito por cada cliente permitiria, minimizar o número de visitas a cada cliente, além de minimizar as 
componentes analisadas neste trabalho. 

Entre as principais restrições adicionais a considerar no problema multi‐produto e multi‐depósito coloca‐se a 
ordem de carregamento de cada tipo de produto no camião, condicionado pela rota que lhe foi atribuída, e 
ainda  a  afectação  do  normal  funcionamento  dos  armazéns  quando  sobrecarregados  com  o  tráfego  interno 
adicional de camiões a fazerem carregamentos Less‐Than‐Truckload para realização de rotas com carga mista. 

A  optimização  do  problema  de  planeamento  real  com  inclusão  de  rotas  com  carga  mista  na  distribuição 
diária,  recorrendo  ao  fraccionamento  dos  pedidos  –  devido  a  restrições  de  capacidade/acessibilidade  dos 
veículos  face  ao  pedido  médio  das  lojas  –  permitiria  obter  ganhos  substanciais  no  planeamento, 
principalmente no número de veículos expedidos e consequentemente na distância e tempo totais. 

Há  que  considerar  no  entanto  que  o  caso  real  é  difícil  de  modelar  na  íntegra  devido  à  inclusão  no 
planeamento de rotas fixas, resultantes de pedidos com variabilidade reduzida, e ainda devido à realização de 
operações de backhauling, cross‐docking e transhipment – o que, aliado à dificuldade inerente à previsão da 
expedição  dos  pedidos  e  da  variabilidade  dos  mesmos  –  faz  com  que  o  planeamento  diário  da  Jerónimo 
Martins constitua um desafio que continua a motivar o interesse académico.  

Como tal, uma eventual implementação de um Modelo na operação da JM deverá ser acompanhado de perto 
para  partilha  de  informação  e  resolução  de  conflitos  resultantes  de  comportamentos  inesperados  do 
planeamento obtido. Deste modo, a detecção precoce de restrições imprevistas poderá evitar situações que 
causem constrangimento à operação, sendo eventualmente aconselhável uma fase de testes. 
Outra  evolução  possível  do algoritmo  desenvolvido  seria  o  investimento na  vertente  do desempenho,  para 
competição com os outros algoritmos existentes em problemas benchmark. 

Também aqui há espaço para melhorias no que toca à diversificação da pesquisa e no processo de geração da 
vizinhança; no primeiro, é possível a criação de atributos de memória de curta e de longa duração, através da 
implementação  de  uma  lista  com  as  melhores  soluções  obtidas  (actualmente  só  fica  guardada  a  melhor 
solução), programando posteriormente os timings para a ocorrência de uma estratégia quer de diversificação 
(melhorada), para se prosseguir a pesquisa para uma zona não explorada, quer de intensificação, através do 
recomeço da pesquisa a partir das melhores soluções encontradas; 

Quanto ao segundo, a implementação deveria ter em conta as melhores práticas desenvolvidas na literatura, 
utilizando por exemplo as características de um algoritmo genético e recombinando as melhores soluções, à 
semelhança do que fizeram Rochat‐Taillard (1995) com o seu Adaptive Memory Procedure. 

63 

 
Bibliografia 
Archetti, C.;  Savelsbergh, M.;  Speranza, M. (2006a). Worst‐ case analysis  for  split  delivery  vehicle  routing  
problems,  Transportation Science Ed. 40, pp. 226‐234. 

Archetti,  C.;    Savelsbergh,  M.;    Speranza,  M.  (2006b).  To  Split  or  Not  To  Split:  That  is  the  Question. 
Transportation Research Ed. 44, pp.  114‐123. 

Archetti,  C.;    Savelsbergh,  M.;    Speranza,  M.  (2008).  An  Optimization‐Based  Heuristic  for  the  Split  Delivery 
Vehicle Routiong Problem. Transportation Science Ed. 42, pp. 22‐31. 

Belfiore, P. (2006). Scatter Search para Problemas de Roterização de Veículos com Frota Heterogénea, Janelas 
de Tempo e Entregas Fraccionadas. Tese de doutoramento. Escola Politécnica da Universidade de S. Paulo, 
Departamento de Engenharia de Produção. 

Beasley,  J.;  Christofides,  N.  (1997).  Vehicle  routing  with  a  sparse  feasibility  graph,  European  Journal  of 
Operational Research, volume 98 pages 499‐511. 

Bianchi,  L.  "Notes  on  Dynamic  Vehicle  Routing  ‐  The  State  of  Art".  (2000).  Technical  Report,  IDSIA‐05‐01, 
IDSIA, Switzerland. 

Blum,  C.  e  Roli,  A.  (2003).  “Metaheuristics  in  Combinatorial  Optimization:  Overview  and  Conceptual 
Comparison,” ACM Computing Surveys, vol. 35, no. 3, pp. 268–308. 

Bräysy,  O.,  Kytöjoki,  J.,  Nuortio,  T.  &  Gendreau,  M.  (2005).  Vehicle  Routing  Problem  with  Time  Windows, 
University of Bridgeport, Department of Computer Science and Engineering, 39 (1), 119. 

Brejon,  S.  (1998).  Algoritmo  para  Resolução  do  Problema  de  Programação  do  Transporte  de  Suprimentos 
para  Unidades  Marítimas  de  Exploração  de  Petróleo.  Dissertação  de  Mestrado.  Escola  Politécnica, 
Universidade de São Paulo, p. 132. 

Burrows, W.  (1988). "The Vehicle Routing Problem with Loadsplitting: A Heuristic Approach". In 24th Annual 
Conference of the Operational Research Society of New Zealand, pp. 33‐38. 

Christofides,  N.;  Mingozzi,  A.  e  Toth,  P.  (1979).  The  vehicle  Routing  Problem.  Combinatorial  Optimization. 
Wiley, Chichester, pp. 315‐338. 

Christofides, N.;  Mingozzi, A.  e  Toth,  P.  (1981). Exact  Algorithms  for  the  Vehicle Routing  Problem  based  on 
Spanning tree and shortest path relaxation. Mathematical Programming. Vol. 20, pp. 255‐282. 

Clark  G.  e  Wright,  J.  (1964).  Scheduling  of  vehicles  from  a  central  depot  to  a  number  of  delivery  points, 
Operations Research, 12, pp. 568‐581. 

Clausen,  J.  (1999).  Branch  and  Bound  Algorithms  –  Principles  and  Examples.  Department  of  Computer 
Science, University of Copenhagen. 

Colorni, A.; Dorigo, M.;  Maffioli, F.; Maniezzo, V.;  Righini, G. e Trubian, M. (1996). Heuristics from nature for 
hard combinatorial optimization problems.  International Transactions in Operational Research, 3, 1, pp. 1‐21. 

Cordeau , J.‐F.; Laporte, G.  e Mercier, A. (2001)."A unified tabu search heuristic for vehicle routing problems 
with time windows". Journal of the Operational Research Society 52, 928‐936.  

Dantzig, G. e Ramser., R. (1959).  "The Truck Dispatching Problem". Management Science 6, pp 80‐91. 

Dror, M.; Trudeau, P. (1989). “Savings by split delivery routing”, Transportation Science, 23: 141‐145. 

64 

 
Dror, M.; Trudeau. (1990). P. “Split delivery routing”, Naval Research Logistics, Ed. 37, pp. 383‐402. 

Dullaert,  W.;  Janssens,  G.;  Sörensen,  K.;  Vernimmen,  B.  (2002).  New  heuristics  for  the  Fleet  Size  and  Mix 
Vehicle Routing Problem with Time Windows. Journal of the Operational Research Society, vol. 53, n. 11, pp. 
1232‐1238. 

Figueiredo,  F.  (2007).Planeamento  de  Rotas  de  Veículos  com  Entregas  Fraccionadas.  Dissertação  de 
Mestrado. Universidade Técnica de Lisboa, Instituto Superior Técnico. 

Foundation for Scientific and Industrial Research (SINTEF). (2002). Vehicle Routing and Traveling Salesperson 
Problems. Department of Optimization. Noruega. 

Gambardella,  L.;  Taillard,  E.  e  Agazzi,  G.  (1999).  "MACS‐VRPTW:  A  Multiple  Ant  Colony  System  for  Vehicle 
Routing Problems with Time Windows". Technical Report, IDSIA‐06‐99, IDSIA, Switzerland. 

Gendreau, M.; Laporte, G. e Potvin, J. Y. (1998). Metaheuristics for the Vehicle Routing Problem. Les Cahiers 
du GERAD, G‐98‐52. Centre de Recherche sur les Transports, Université de Montréal. 

Gendreau,  M.  (2003).  An  Introduction  to  Tabu  Search.  Handbook  of  Metaheuristics,  Kluwer  Academic 
Publishers, International Series in Operations Research & Management Science, pp. 37‐54. 

Glover,  F.  (1986).  Future  Paths  for  Integer  Programming  and  Links  to  Artificial  Intelligence,  Computers  and 
Operations Research, Vol. 13, No. 5, 533‐549. 

Glover, F. e Laguna, M. (1997). Tabu Search, Kluwer Academic Publishers, Norwell, MA. 

Glover, F.;  Kochenberger, G. (2003). Handbook of Metaheuristics, Kluwer Academic Publishers, International 
Series in Operations Research & Management Science. 

Golden, L.  e Assad, A. (1988). Vehicle Routing: Methods and Studies. North‐Holland, Amsterdam.  

Henderson, D.; Jacobson, S. e Johnson, A. (2003). The Theory and Practive of Simulated Annealing, Handbook 
of Metaheuristics, Kluwer Academic Publishers, International Series in Operations Research & Management 
Science, pp. 287‐319. 

Ho, S. e Haugland, D. (2004). A tabu search heuristic for the vehicle routing problem with time Windows and 
split deliveries. Computers & Operations Research, vol. 31, n. 12, pp. 1947‐1064. 

Hjorring, C. (1995). "The Vehicle Routing Problem and Local Search Metaheuristics". PhD thesis, Department 
of Engineering Science, University of Auckland. 

Kirkpatrick, S.; Gelat, C. e Vecchi, M. (1983). Optimization by simulated annealing. Science, vol. 220 pp. 671‐
680. 

Land, A. e Doig, A. (1960). An automatic method for solving discrete programming problems", Econometrica, 
28, pp. 497‐520. 

Laporte,  G.  e  Louveaux,  F.  (1997).  Solving  Stochastic  Routing  Problems  with  the  Integer  L‐Shaped  Method. 
Fleet Management and Logistics, Springer, Cap 7, pp. 159‐167. 

Laporte, G. e Semet, F. (1998). Classical Heuristics for the Vehicle Routing Problem. Les Cahiers du GERAD, G‐
98‐54. GERAD, Université de Montréal,  Canada / LIMAV, Université du Valenciennes et du Hainaut‐
Cambresis, France . 

65 

 
Laporte,  G.; Gendreau, M. ; Potvin, J.‐Y. e Semet, F. (1999). Classical and Modern Heuristics for the Vehicle 
Routing Problem.  Les Cahiers du GERAD, G–99–21. Centre de Recherche sur les Transports, Université de 
Montréal. 

Laporte, G. (2007). Metaheuristics f or the Vehicle Routing Problem: Fifteen Years o f Research. Consultado 
em 2009, 15 de Janeiro, www.hec.ca/chairedistributique/metaheuristics.pdf 

Lenstra,  J.;  Rinnooy  Kan,  A.  (1981).  Complexity  of  Vehicle  and  Scheduling  Problems.  Networks,  vol.  11,  pp 
221‐227. 

Matos,  A.  (2005).  Meta‐heurísticas  em  problemas  de  estabelecimento  de  rotas  com  restrições  de 
programação e sua calendarização. Tese de doutoramento. Universidade Técnica de Lisboa, Instituto Superior 
Técnico. 

Mester, D. & Bräysy, O. (2007). Active Guided Evolution Strategies for Large Scale Capacitated Vehicle Routing 
Problems. Computers & Operations Research, 34 (10), pp. 2964‐2975.  

Pessoa, A.; Aragão, M.; Uchoa, E. (2007). “A Robust Branch‐Cut‐and‐Price Algorithm for the Heterogeneous 
Fleet Vehicle Routing Problem”, Mathematical Programming , on‐line first, 2007 

Reeves,  C.  (2003).  Genetic  Algorithms.  Handbook  of  Metaheuristics,  Kluwer  Academic  Publishers, 
International Series in Operations Research & Management Science, pp. 55‐82. 

Rochat, Y. e Taillard, É. (1995). Probabilistic diversification and intensification in local search for Vehicle 
Routing, Journal of heuristics 1, 1995, pp. 147 – 167. 

Solomon,  M.  (1987).  Algorithms  for  the  Vehicle  Routing  and  Scheduling  Problem  with  Time  Window 
Constraints, Operations Research 35, pp. 254 – 265. 

Solomon,  M.  e  Desrosiers,  J.  (1988).  Time  Window  Constrained  Routing  and  Scheduling  Problem. 
Transportation Science, vol. 22, n. 1, pp 1‐13. 

Solomon, M. (act. Março 2005), “VRPTW Benchmark  Problems”, Página consultada em 30 de Agosto de 2009 
<http://w.cba.neu.edu/~msolomon/problems.htm>. 

Taillard, É. (1993). Parallel Iterative Search Methods for Vehicle Routing Problems, Networks 23, pp. 661‐676. 

Taillard, É. (1999). A heuristic column generation method for the heterogeneous fleet  VRP. RAIRO Recherche 
Opérationnelle, vol. 33, pp. 1‐14. 

Tansini, L. e Viera, O. (2004). Adapted Clustering Algorithms for the Assignment Problem in the MDVRPTW, 
Universidad de la República, Uruguai. 

Toth, P. e Vigo, D. (2002). The Vehicle Routing Problem, S.I.A.M Monographs on Discrete Mathematics and 
Applications. Philadelphia. 

Van Breedam, A. (1994). An analysis of the behavior of the heuristics for the vehicle routing problem for a 
selection of problems with vehicle‐related, customer‐related, and time‐related constraints. Ph.D. dissertation, 
University of Antwerp. 

Voß S.; Martello,  S.; Osman, I.;  Roucairo,  C.  (1999).  Meta‐Heuristics: Andvances  and  Trends  in  Local Search 
Paradigms for Optimization. Kluwer, Boston . 

Zhu, K.; Ong, K. (2000). "A reactive method for real time dynamic vehicle routing problem", 12th ICTAI 2000, 
Vancouver, Canada. 

66 

 
Anexo A 
Cabeçalho do Modelo Implementado com os parâmetros 

//Run Options (Termination Criterion and Diversification Parameters) 
#define PARAMETERS 0                //run parametrization 0:Default; 1:Short; 2:Long; 
                                    // 3: Optimised; 4: Customizable (EXPERIMENTAL) 
#define MAX_TIME 149.999            //limit time per run 
#define STOP 0.5                    //% MAX_TIME of run without improvements  
#define MAX_RESTARTS 1500          //stop execution after MAX_RESTARTS 
#define DIVERSIFY 2                 //diversify Auto (2), On (1) or Off(0) 
#define RESTART_IT 10               //set current solution to best found after RESTART_IT iterations without 
improvement (set this value to 1 with diversify off for a simple heuristic) 
#define UPPER_IT 1000               //If Auto Diversify is On (2), Makes diversification strategy more frequent 
for low values, yet search space is wider for high values 
#define INITIAL_SOL 2               //1: run ONLY Savings algorithm 
                                    //2: Savings algorithm ‐> Optimization 
                                    //3: Optimization with initial solution import 
                                    //4: Generate feasible solution ‐> Optimization 
                                    //5: run ONLY feasible_sol2 Construction heuristic 
#define SPLIT_CRITERION 0.5         //necessary % of client's demand to make a split 
#define ISOL_CRITERION 2            //Initial solution construction. minimize:  
                                    //0:distance  1:ready_time  2:mix of both 
 
//Objective Function 
#define OBJECTIVE 1                 //objective function (See below, 1 = OF1, i = OFi) 
#define FORCE_MIN_TRUCKS 1       //heads search to no_vehicles minimization 
#define OF1   "Minimize Total Distance" 
#define OF2   "Minimize Total Necessary # of Vehicles" 
#define OF3   "Minimize Total Time" 
#define OF4   "Minimize Total Capacity" 
#define OF5   "(Figueiredo, 2007) Objective Function" 
#define OF6   "User defined Objective Function" 
 
//Constraints Options       
#define UNLOAD 1                    //define Unload Constraints On 1 or Off 0 
#define T_WINDOW 2                  //define Soft (1), Hard (2) or No (0) time windows Constraints 
#define SPLIT 1                     //define Split Deliveries On (1) or Off (0) 
#define MIX_CARGO 0                 //define Single (0) or Multiple Cargo (See below, 1 = CID1, i = CIDi) 
 
//Model Constants 
#define SIZE 40                     //number of clients 
#define NO_VEHICLES 30              //number of vehicles 
#define LISTSIZE 10                 //size of neighbourhood list 
#define TABUSIZE 5                  //size of tabu list 
#define MAX_FITNESS 100000.00   //upper limit for minimum search 
 
//Case Study Constants 
#define MAX_CLIENTS_PER_ROUTE 4   //max number of clients per route 
#define AVG_SPEED 1                 //considered avg speed in Km/min for the calc of total_time (if 
TIMES_MATRIX import is Off) 
#define MIN_PER_PALETTE 2           //Float Service time as function of demand 
#define MIN_PER_STORE 20            //Fixed Service time per client visited 
 
//Global Constants 
#define AVG_RADIUS 6371.01         //[in Kms] Average Earth Radius (for distance calcs) 
#define C_FACTOR 1.21               //Circuity Factor (1.3 in metropolitan areas/1.14 in rural areas) 
 

67 

 
//Default File Locations 
#define VEHICLES_FILE   "vehicles.csv" 
#define CLIENTS_FILE   "clients12.csv" 
#define MATRIX_FILE   "matrixes_JM.csv" 
#define ROUTES_FILE   "initial_sol.csv" 
#define RESULT_FILE   "result.xls" 
 
//Data Import Options 
//CLIENTS_FILE format [optional]: 
//Customer_no [customer_id] [xcoord] [ycoord] demand [cargo_id] [tw_ready_time] [tw_due_date] 
[service_time] [acessibility_constraint] 
#define CUSTOMER_ID 1               //gets customer_id column data from CLIENTS_FILE 
#define DIST_MATRIX 1               //imports distance matrix On (1) or calc one (0). distance matrix import 
ignores xcoord and ycoord import from CLIENTS_FILE 
#define TIMES_MATRIX 1              //imports times matrix On (1) or calc one (0). times matrix import ignores 
AVG_SPEED calc 
#define ANG_UNITS 1                 //converts GPS Coordinates (1), else (0) calculates euclidean distances 
#define FIXED_SERV_TIME 0           //if On (1), imports service times from CLIENTS_FILE. Else, calcs from 
MIN_PER_PALETTE and MIN_PER_STORE constants 
//The remaining optional data import depends on time_window and acessibility constraint options  
 
//Output Options 
#define REPORT_OUTPUT 1             //set output report On (1) or Off (0) 
#define PRINT 0                     //set log to print every generated solution On (1) or Off (0) (Generated Log 
size may vary up to 30MB/min) 
#define PRINT_ID 0                  //If CUSTOMER_ID is On, prints Customer_id (1) instead of Customer_no (0) 
#define TABU_INFO_LOG 0             //Keeps a record of tabu moves if selected (1) 
#define PRINT_MATRIX 0              //Prints distance and time matrixes (for debug purposes) 
 

(…) 

 
 
 
 
 
 
 
 
 
 
 

68 

 
Anexo B 
Resultados das instâncias de Christofides, Mingozzi e Toth 

 
 
 
 
 
Melhor Resultado  Implementação  Duração até 
Instância  TS Guerreiro  % IS  % MRC 
Conhecido (MRC)  Savings  sol. final (s) 
vrpnc1*  524,61  605,57  566,91  ‐6,4%  +8,1%  58,47 
vrpnc2  835,26  903,47  883,61  ‐2,2%  +5,8%  60,90 
vrpnc3  826,14  1007,16  913,47  ‐9,3%  +10,6%  113,08 
vrpnc4  1028,42  1230,93  1113,54  ‐9,5%  +8,3%  140,75 
vrpnc5  1291,29  1590,49  1448,89  ‐8,9%  +12,2%  236,10 
vrpnc6**  555,43  605,57  566,79  ‐6,4%  +2,0%  136,81 
vrpnc7**  909,68  903,47  880,96  ‐2,5%  ‐3,2%  131,11 
vrpnc8**  865,94  1007,16  879,90  ‐12,6%  +1,6%  585,61 
vrpnc9**  1162,55  1230,93  1161,22  ‐5,7%  ‐0,1%  313,24 
vrpnc10**  1395,85  1590,49  1503,27  ‐5,5%  +7,7%  332,48 
vrpnc11  1042,11  1442,91  1222,00  ‐15,3%  +17,3%  502,04 
vrpnc12*  819,56  982,96  848,33  ‐13,7%  +3,5%  528,33 
vrpnc13**  1541,14  1768,83  1431,87  ‐19,0%  ‐7,1%  405,66 
vrpnc14**  866,37  842,93  786,57  ‐6,7%  ‐9,2%  244,55 
Soma  13664,35  15712,87  14207,33  ‐9,6%  3,97%  3789,13 

* Óptimo Global conhecido 
** Sujeito a restrições de dimensão das rotas 
A sublinhado: Supera os melhores resultados de Rochat‐Taillard em 4 dos 14 problemas de Christofides (1979) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

69 

 
Anexo C 
Resultados das instâncias de Solomon 

Óptimo  Nº  Rochat‐ Nº  TS  Nº  % Sol.  %  Duração 


Instância  Sol. Inicial % R‐T 
Global  rotas  Taillard (R‐T) rotas Guerreiro rotas Inicial  Óptimo (s) 
R1                 
R101  1637,7  20 1656,2  19 2466,2 1709,0 21 ‐30,7%  3,2%  4,4% 162,7
R102  1466,6  18 1477,4  18 2716,8 1500,3 18 ‐44,8%  1,6%  2,3% 665,9
R103  1208,7  14 1222,9  14 2916,3 1325,2 15 ‐54,6%  8,4%  9,6% 373,0
R104  971,5  11 1013,3  10 1650,5 1060,8 12 ‐35,7%  4,7%  9,2% 379,9
R105  1355,3  15 1404,8  14 2364,5 1476,2 16 ‐37,6%  5,1%  8,9% 197,6
R106  1234,6  13 1293,9  12 2514,2 1346,7 15 ‐46,4%  4,1%  9,1% 431,2
R107  1064,6  11 1085,8  11 2741,0 1170,5 12 ‐57,3%  7,8%  9,9% 807,4
R108  ‐  ‐ 965,3  10 2566,5 1045,9 12 ‐59,2%  8,3%  ‐ 146,3
R109  1146,9  13 1186,4  12 2326,2 1214,5 14 ‐47,8%  2,4%  5,9% 317,8
R110  1068,0  12 1107,9  11 1756,1 1197,2 13 ‐31,8%  8,1%  12,1% 104,1
R111  1048,7  12 1070,9  11 1730,0 1139,3 12 ‐34,1%  6,4%  8,6% 503,1
R112  ‐  ‐ 965,7  10 1354,0 1093,2 11 ‐19,3%  13,2%  ‐ 90,5
Média R1  ‐  ‐ 1197,42  12,25 2258,51  1273,24  14,25 ‐43,6%  6,3%  7,7%  348,3 
C1                     
C101*  827,3  10 828,9  10 1670,1 828,9 10 ‐50,4%  0,0%  0,2% 802,6
C102  827,3  10 828,9  10 2090,5 868,5 11 ‐58,5%  4,8%  5,0% 465,7
C103  826,3  10 828,1  10 1540,5 925,0 11 ‐40,0%  11,7%  11,9% 127,3
C104  822,9  10 841,6  10 1499,1 925,2 11 ‐38,3%  9,9%  12,4% 104,5
C105  827,3  10 828,9  10 1577,6 910,7 11 ‐42,3%  9,9%  10,1% 565,5
C106  827,3  10 828,9  10 1543,98 892,6 11 ‐42,2%  7,7%  7,9% 182,6
C107  827,3  10 828,9  10 1660,7 896,7 11 ‐46,0%  8,2%  8,4% 438,4
C108*  827,3  10 828,9  10 1405,0 828,9 10 ‐41,0%  0,0%  0,2% 432,7
C109  827,3  10 828,9  10 1632,2 874,6 11 ‐46,4%  5,5%  5,7% 100,0
Média C1  826,70  10,00  828,38  10,00 1624,41  883,47  10,78 ‐45,6%  6,7%  6,9%  357,7 
RC1                   
RC101  1619,8  15 1737,0  15 2621,4 1781,5 18 ‐32,0%  2,6%  10,0% 638,1
RC102  1457,4  14 1480,7  13 2981,5 1547,9 16 ‐48,1%  4,5%  6,2% 528,6
RC103  1258,0  11 1264,3  11 2092,0 1397,8 13 ‐33,2%  10,6%  11,1% 607,2
RC104  ‐  ‐ 1157,2  10 1866,9 1190,3 11 ‐36,2%  2,9%  ‐ 471,2
RC105  1513,7  15 1543,2  15 2484,7 1652,5 18 ‐33,5%  7,1%  9,2% 486,3
RC106  ‐  ‐ 1415,6  12 2050,0 1538,3 15 ‐25,0%  8,7%  ‐ 367,7
RC107  1207,8  12 1262,4  11 1907,1 1362,2 13 ‐28,6%  7,9%  12,8% 504,6
RC108  1114,2  11 1149,6  11 1887,4 1261,7 13 ‐33,2%  9,8%  13,2% 157,8
Média RC1  ‐  ‐ 1377,39  11,88 2236,37  1466,55  14,63 ‐34,4%  6,5%  10,2%  470,2 
R2                     
R201**  1143,2  8 1485,4  4 1892,9 1271,6 11 ‐32,8%  ‐14,4%  11,2% 77,0
R202  ‐  ‐ 1101,5  4 2945,5 1132,1 8 ‐61,6%  2,8%  ‐ 47,8
R203  ‐  ‐ 913,0  4  2853,1  976,0  8  ‐65,8%  6,9%  ‐  291,0 
R204  ‐  ‐ 824,6  3  2619,4  842,5  5  ‐67,8%  2,2%  ‐  60,6 
R205**  ‐  ‐ 1205,6  3  2961,4  1157,9  6  ‐60,9%  ‐4,0%  ‐  60,8 
R206  ‐  ‐ 956,1  3  2807,8  1022,0  5  ‐63,6%  6,9%  ‐  199,2 
R207  ‐  ‐ 814,8  3  3030,8  879,8  4  ‐71,0%  8,0%  ‐  195,7 
R208  ‐  ‐ 708,8  3  2649,5  766,6  3  ‐71,1%  8,2%  ‐  199,0 
R209  ‐  ‐ 901,9  4  3435,7  944,7  6  ‐72,5%  4,7%  ‐  157,2 
R210**  ‐  ‐ 1087,3  3  3544,2  966,0  4  ‐72,7%  ‐11,2%  ‐  466,4 
R211  ‐  ‐ 794,5  3  3135,3  855,5  4  ‐72,7%  7,7%  ‐  335,5 
Média R2  ‐  ‐ 961,72  2,91 2897,79  983,15  5,82 ‐66,1%  2,2%  11,2%  190,0 

70 

 
C2                     
C201  589,1  3 591,6  3  1548,0  645,8  4  ‐58,3%  9,2%  9,6%  1006,5 
C202*  589,1  3 591,6  3  1884,1  591,6  3  ‐68,6%  0,0%  0,4%  141,7 
C203  588,7  3 591,2  3  1490,5  621,7  3  ‐58,3%  5,2%  5,6%  715,6 
C204  588,1  3 597,8  3  1420,8  699,1  4  ‐50,8%  16,9%  18,9%  207,4 
C205  586,4  3 588,9  3  842,6  617,6  3  ‐26,7%  4,9%  5,3%  11,7 
C206  586,0  3 588,5  3  1364,9  655,6  4  ‐52,0%  11,4%  11,9%  329,9 
C207  585,8  3 588,5  3  1704,5  617,0  3  ‐63,8%  4,8%  5,3%  281,9 
C208  585,8  3 588,5  3  1104,0  703,2  4  ‐36,3%  19,5%  20,0%  273,5 
Média C2  587,38  3,00  589,86  3,00 1419,90  643,96  3,50 ‐54,6%  9,2%  9,6%  371,0 
RC2                     
RC201**  1261,8  9 1469,7  5  3595,6  1429,3  7  ‐60,2%  ‐2,7%  13,3%  105,5 
RC202**  1092,3  8 1443,7  4  2147,0  1261,0  9  ‐41,3%  ‐12,7%  15,4%  220,5 
RC203  ‐  ‐ 1014,0  4  1843,8  1045,0  6  ‐43,3%  3,1%  ‐  161,9 
RC204  ‐  ‐ 843,1  3  1257,6  859,2  3  ‐31,7%  1,9%  ‐  250,6 
RC205  1154,0  7 1286,7  5  3417,1  1313,1  8  ‐61,6%  2,1%  13,8%  177,6 
RC206  ‐  ‐ 1207,8  4  1852,3  1215,1  6  ‐34,4%  0,6%  ‐  66,5 
RC207**  ‐  ‐ 1079,1  4  1777,2  1054,7  5  ‐40,7%  ‐2,3%  ‐  292,0 
RC208  ‐  ‐ 919,8  3  1365,7  956,7  4  ‐29,9%  4,0%  ‐  300,9 
Média RC2  ‐  ‐ 1119,59  3,38 2157,03  1141,78  6,00 ‐47,1%  2,0%  14,1%  196,9 
Total  ‐  ‐ 57716,50  433 120103,95 60063,02  525 ‐50,0%  4,1%  9,0%  17794,1

* Iguala os melhores resultados de Rochat‐Taillard (1995) em 3 dos 56 problemas de Solomon (1987) 
** Supera os melhores resultados de Rochat‐Taillard (1995) em 6 dos 56 problemas de Solomon (1987) 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

71 

 
Anexo D 
Inputs Clientes JM ‐ Dia Planeamento 12 

Pedido (paletes)  Início  Restrição 


Nº  Código  Coordenada  Coordenada  Fim Janela 
Janela  Cap. maior 
cliente  Cliente  Latitude  Longitude  12  13  14  15  Temporal 
Temporal  camião 
0  5401  39,53221  ‐8,90789 0 0 0 0 0 1440  33
1  401  38,71036  ‐9,16145 13 14 9 7 420 660  21
2  407  38,75780  ‐9,27565 8 12 12 10 420 660  24
3  408  38,76474  ‐9,20781 16 3 24 11 840 960  24
4  411  38,77526  ‐9,28496 20 10 22 17 420 660  33
5  412  38,71643  ‐9,23921 23 18 16 26 840 960  33
6  416  38,69228  ‐9,34084 11 8 9 6 840 1020  24
7  417  38,72675  ‐9,24070 7 10 10 23 780 960  33
8  419  38,76092  ‐9,26029 15 21 10 11 420 660  21
9  422  38,70134  ‐9,42019 13 11 5 9 840 1020  24
10  424  38,68050  ‐9,31947 7 4 3 3 840 1020  24
11  425  38,75756  ‐9,25562 15 17 12 12 420 660  21
12  428  38,75283  ‐9,28456 19 11 11 19 840 960  24
13  430  38,78733  ‐9,31734 4 13 12 13 420 660  33
14  434  38,68837  ‐9,33847 10 9 4 8 840 1020  21
15  435  38,74864  ‐9,29855 11 8 13 13 840 1020  24
16  438  38,69585  ‐9,21569 17 24 12 18 420 660  21
17  439  38,73794  ‐9,22489 14 6 6 14 420 660  24
18  440  38,73000  ‐9,14000 11 6 5 15 420 660  24
19  441  38,73476  ‐9,14207 20 19 19 16 420 660  24
20  444  38,70526  ‐9,23561 7 6 14 5 840 960  21
21  447  38,71463  ‐9,42480 26 14 7 7 840 1020  24
22  451  38,71372  ‐9,14059 8 14 10 7 420 660  21
23  453  38,71947  ‐9,12991 21 14 24 21 420 660  21
24  458  38,74850  ‐9,19109 7 5 3 5 420 660  24
25  462  38,78920  ‐9,34393 18 12 28 20 780 960  24
26  475  38,72835  ‐9,28339 16 7 19 14 840 960  24
27  476  38,75025  ‐9,22930 17 10 8 11 420 660  24
28  806  38,69613  ‐9,32839 19 6 16 17 840 1020  24
29  812  38,76571  ‐9,23056 0 12 0 0 840 960  24
30  813  38,68540  ‐9,34272 12 13 10 14 840 1020  24
31  820  38,70527  ‐9,37848 15 18 3 6 840 1020  24
32  822  38,73236  ‐9,13422 12 5 5 12 420 660  21
33  825  38,75395  ‐9,19527 9 9 8 4 420 660  24
34  826  38,71311  ‐9,41376 14 8 5 7 840 1020  21
35  828  38,71599  ‐9,16386 11 10 8 9 420 660  24
36  832  38,74422  ‐9,21705 5 11 3 13 840 960  24
37  835  38,69288  ‐9,32641 21 7 9 2 420 660  24
38  836  38,73913  ‐9,12506 9 11 3 8 420 660  24
39  839  38,69577  ‐9,29278 11 8 9 12 840 1020  24
40  854  38,79389  ‐9,10763 12 10 15 7 420 660  24
 
 
 

72 

 
Anexo E 
Solução obtida para o dia de planeamento 12 do Caso de Estudo com F.O = (Figueiredo, 2007) 
sem divisão de cargas e sem utilização de estratégias de diversificação da pesquisa (sem relatório) 

 1: Time: 0.0 (Delay = 0.0)  Route:  0  0  
 2: Time: 3.7 (Delay = 0.0)  Route:  0  9  6  0  
 3: Time: 2.6 (Delay = 0.0)  Route:  0 16  0  
 4: Time: 2.4 (Delay = 0.0)  Route:  0 19  0  
 5: Time: 2.8 (Delay = 0.0)  Route:  0 38 32  0  
 6: Time: 3.0 (Delay = 0.0)  Route:  0 35 18  0  
 7: Time: 2.4 (Delay = 0.0)  Route:  0  8  0  
 8: Time: 7.7 (Delay = 4.2)  Route:  0 33 31  0  
 9: Time: 2.6 (Delay = 0.0)  Route:  0 12  0  
10: Time: 2.8 (Delay = 0.0)  Route:  0 28  0  
11: Time: 0.0 (Delay = 0.0)  Route:  0  0  
12: Time: 7.8 (Delay = 4.6)  Route:  0  2 26  0  
13: Time: 3.0 (Delay = 0.0)  Route:  0 24 27  0  
14: Time: 3.1 (Delay = 0.0)  Route:  0 22  1  0  
15: Time: 2.5 (Delay = 0.0)  Route:  0 23  0  
16: Time: 4.0 (Delay = 0.0)  Route:  0  7 21  0  
17: Time: 7.8 (Delay = 4.8)  Route:  0 11 36  0  
18: Time: 1.9 (Delay = 0.0)  Route:  0 40  0  
19: Time: 0.0 (Delay = 0.0)  Route:  0  0  
20: Time: 7.0 (Delay = 3.4)  Route:  0 13 25  0  
21: Time: 3.5 (Delay = 0.0)  Route:  0 14 15  0  
22: Time: 2.6 (Delay = 0.0)  Route:  0  5  0  
23: Time: 3.7 (Delay = 0.0)  Route:  0 10 34  0  
24: Time: 2.9 (Delay = 0.0)  Route:  0 37  0  
25: Time: 7.7 (Delay = 4.6)  Route:  0 17 20  0  
26: Time: 2.2 (Delay = 0.0)  Route:  0  3  0  
27: Time: 2.6 (Delay = 0.0)  Route:  0  4  0  
28: Time: 3.5 (Delay = 0.0)  Route:  0 30 39  0  
 
Fitness = 2947.575 
Total Distance = 2922.000 [Km] 
Number of vehicles used = 25 
Total time = 95.8 [h] = 43.7 RT (Route Time) + 13.0 FST (Fixed Service Time) + 17.5 VST (Variable Service Time) 
+ 21.6 TD (Total Delay) 
Capacity = 561.0 [palettes] 
 
Objective Function = (Figueiredo, 2007) Objective Function 
 
      Initial Sol  Final Sol   % Improvement over Initial Sol 
Fitness:       3245.6    2947.6    9.2% 
Total Distance:     3217.0    2922.0    9.2% 
# used vehicles:     28    25    10.7% 
Total time:     86.3    95.8    ‐11.0% 
Capacity:     624.0    561.0    10.1% 
 
Time spent to find best solution = 25.390 sec  
Total Elapsed time = 60.000 sec 
Necessary iterations to find best solution = 7965 
Total iterations made = 19149 
 
Run finished @ Thu Aug 13 22:30:29 2009 

73 

 
Anexo F 
Possível representação espacial da solução anterior (mapa retirado de GoogleMaps) 

 
 

 
 

74 

 
Anexo G 
Solução obtida para o dia de planeamento 12 do Caso de Estudo com F.O = (Figueiredo, 2007) 
com divisão de cargas e com utilização de estratégias de diversificação da pesquisa (com relatório) 

 1:  Time:3.0 (Delay=0.0)  Load=22.0  Route:  0 24 27  0  


 2:  Time:9.8 (Delay=5.7)  Load=24.0  Route:  0 37  6  9  0  
 3:  Time:3.1 (Delay=0.0)  Load=21.0  Route:  0 33  8  0  
 4:  Time:0.0 (Delay=0.0)  Load=0.0  Route:  0  0  
 5:  Time:7.8 (Delay=4.7)  Load=23.0  Route:  0  2 12  0  
 6:  Time:2.9 (Delay=0.0)  Load=21.0  Route:  0 37  0  
 7:  Time:7.8 (Delay=4.8)  Load=21.0  Route:  0 11  3  0  
 8:  Time:3.8 (Delay=0.0)  Load=24.0  Route:  0 26 28 30  0  
 9:  Time:2.6 (Delay=0.0)  Load=17.0  Route:  0 16  0  
10:  Time:3.0 (Delay=0.0)  Load=24.0  Route:  0 19 40  0  
11:  Time:7.7 (Delay=3.1)  Load=21.0  Route:  0 33 27 13 34  0  
12:  Time:3.4 (Delay=0.0)  Load=21.0  Route:  0 20 28  0  
13:  Time:7.7 (Delay=4.2)  Load=23.0  Route:  0 18 35  3  0  
14:  Time:0.0 (Delay=0.0)  Load=0.0  Route:  0  0  
15:  Time:0.0 (Delay=0.0)  Load=0.0  Route:  0  0  
16:  Time:4.0 (Delay=0.0)  Load=32.0  Route:  0  7 21  0  
17:  Time:0.0 (Delay=0.0)  Load=0.0  Route:  0  0  
18:  Time:0.0 (Delay=0.0)  Load=0.0  Route:  0  0  
19:  Time:7.8 (Delay=4.2)  Load=33.0  Route:  0  4  5  0  
20:  Time:3.9 (Delay=0.0)  Load=24.0  Route:  0  7 25 36  0  
21:  Time:2.8 (Delay=0.0)  Load=19.0  Route:  0 38 32  0  
22:  Time:3.1 (Delay=0.0)  Load=19.0  Route:  0 32 19 18  0  
23:  Time:9.5 (Delay=5.5)  Load=24.0  Route:  0 24 10 31  0  
24:  Time:3.1 (Delay=0.0)  Load=21.0  Route:  0 22  1  0  
25:  Time:2.5 (Delay=0.0)  Load=21.0  Route:  0 23  0  
26:  Time:3.2 (Delay=0.0)  Load=24.0  Route:  0  4 17  0  
27:  Time:3.7 (Delay=0.0)  Load=21.0  Route:  0  5 39 14  0  
28:  Time:9.2 (Delay=5.5)  Load=24.0  Route:  0  2 15 26  0  
Total   Time:115.27    Load=524.0 
 
Fitness = 2763.553 
Total Distance = 2740.000 [Km] 
Number of vehicles used = 23 
Total time = 115.27 [h] = 42.3 RT + 17.7 FST + 17.5 VST + 37.8 TD 
Capacity = 537.0 [palettes] 
Total No of clients = 53 
 
Objective Function = (Figueiredo, 2007) Objective Function 
 
      Initial Sol  Final Sol   % Improvement over Initial Sol 
Fitness:      3416.59   2763.55   19.1% 
Total Distance:    3387.0    2740.0    19.1% 
# used vehicles:    29    23    20.7% 
Total time:    95.07    115.27    ‐21.2% 
Capacity:    675.0    537.0    20.4% 

Solution Report: 
Truck 1 with capacity 24 leaves 5401‐Azambuja at 6h19 and goes to 458‐PD Fonte Nova 
It arrives at client 458‐PD Fonte Nova at 7h0, unloads 5 palettes and at 7h34 goes to 476‐PD Reboleira 
It arrives at client 476‐PD Reboleira at 7h44, unloads 17 palettes and at 8h38 goes to 5401‐Azambuja 
Truck 2 with capacity 24 leaves 5401‐Azambuja at 6h4 and goes to 835‐PD Oeiras 
It arrives at client 835‐PD Oeiras at 7h0, unloads 0 palettes and at 8h2 goes to 416‐PD Rebelva 

75 

 
Truck delayed 300 min due to time windows constraints!  
It arrives at client 416‐PD Rebelva at 14h0, unloads 11 palettes and at 14h42 goes to 422‐PD Cascais‐Villa 
It arrives at client 422‐PD Cascais‐Villa at 9h0, unloads 13 palettes and at 9h46 goes to 5401‐Azambuja 
 
Truck 3 with capacity 21 leaves 5401‐Azambuja at 6h19 and goes to 825‐PD Benfica 
It arrives at client 825‐PD Benfica at 7h0, unloads 6 palettes and at 7h38 goes to 419‐PD Queluz II 
It arrives at client 419‐PD Queluz II at 7h52, unloads 15 palettes and at 8h42 goes to 5401‐Azambuja 
 
Truck 4 doesn’t leave 5401‐Azambuja 
 
Truck 5 with capacity 24 leaves 5401‐Azambuja at 6h12 and goes to 407‐PD Massamá II 
It arrives at client 407‐PD Massamá II at 7h0, unloads 4 palettes and at 7h36 goes to 428‐PD Massamá 
Truck delayed 273 min due to time windows constraints!  
It arrives at client 428‐PD Massamá at 14h0, unloads 19 palettes and at 14h58 goes to 5401‐Azambuja 
 
Truck 6 with capacity 21 leaves 5401‐Azambuja at 6h4 and goes to 835‐PD Oeiras 
It arrives at client 835‐PD Oeiras at 7h0, unloads 21 palettes and at 8h2 goes to 5401‐Azambuja 
 
Truck 7 with capacity 21 leaves 5401‐Azambuja at 6h13 and goes to 425‐PD Queluz 
It arrives at client 425‐PD Queluz at 7h0, unloads 15 palettes and at 7h50 goes to 408‐PD Colina do Sol 
Truck delayed 267 min due to time windows constraints!  
It arrives at client 408‐PD Colina do Sol at 14h0, unloads 6 palettes and at 14h52 goes to 5401‐Azambuja 
 
Truck 8 with capacity 24 leaves 5401‐Azambuja at 13h11 and goes to 475‐PD Queijas 
It arrives at client 475‐PD Queijas at 14h0, unloads 7 palettes and at 14h52 goes to 806‐PD Sassoeiros 
It arrives at client 806‐PD Sassoeiros at 15h0, unloads 5 palettes and at 15h58 goes to 813‐PD Carcavelos II 
It arrives at client 813‐PD Carcavelos II at 16h3, unloads 12 palettes and at 16h47 goes to 5401‐Azambuja 
 
Truck 9 with capacity 21 leaves 5401‐Azambuja at 6h10 and goes to 438‐PD Restelo 
It arrives at client 438‐PD Restelo at 7h0, unloads 17 palettes and at 7h54 goes to 5401‐Azambuja 
 
Truck 10 with capacity 24 leaves 5401‐Azambuja at 6h18 and goes to 441‐PD Duque d'Avila 
It arrives at client 441‐PD Duque d'Avila at 7h0, unloads 12 palettes and at 8h0 goes to 854‐PD Sacavem 
It arrives at client 854‐PD Sacavem at 8h16, unloads 12 palettes and at 9h0 goes to 5401‐Azambuja 
 
Truck 11 with capacity 21 leaves 5401‐Azambuja at 6h19 and goes to 825‐PD Benfica 
It arrives at client 825‐PD Benfica at 7h0, unloads 3 palettes and at 7h38 goes to 476‐PD Reboleira 
It arrives at client 476‐PD Reboleira at 7h47, unloads 0 palettes and at 8h41 goes to 430‐PD Rinchoa 
It arrives at client 430‐PD Rinchoa at 8h58, unloads 4 palettes and at 9h26 goes to 826‐PD Cascais 
Truck delayed 143 min due to time windows constraints!  
It arrives at client 826‐PD Cascais at 14h0, unloads 14 palettes and at 14h48 goes to 5401‐Azambuja 
 
Truck 12 with capacity 21 leaves 5401‐Azambuja at 13h9 and goes to 444‐PD Miraflores 
It arrives at client 444‐PD Miraflores at 14h0, unloads 7 palettes and at 14h34 goes to 806‐PD Sassoeiros 
It arrives at client 806‐PD Sassoeiros at 14h48, unloads 14 palettes and at 15h46 goes to 5401‐Azambuja 
 
Truck 13 with capacity 24 leaves 5401‐Azambuja at 6h17 and goes to 440‐PD Tomas Ribeiro 
It arrives at client 440‐PD Tomas Ribeiro at 7h0, unloads 2 palettes and at 7h42 goes to 828‐PD Ferreira Borges 
It arrives at client 828‐PD Ferreira Borges at 7h49, unloads 11 palettes and at 8h31 goes to 408‐PD Colina do Sol 
Truck delayed 223 min due to time windows constraints!  
It arrives at client 408‐PD Colina do Sol at 14h0, unloads 10 palettes and at 14h52 goes to 5401‐Azambuja 
 
Truck 14 doesn’t leave 5401‐Azambuja 
 
Truck 15 doesn’t leave 5401‐Azambuja 
 
Truck 16 with capacity 33 leaves 5401‐Azambuja at 12h12 and goes to 417‐PD Carnaxide 
It arrives at client 417‐PD Carnaxide at 13h0, unloads 6 palettes and at 13h34 goes to 447‐PD Alvide 
It arrives at client 447‐PD Alvide at 13h57, unloads 26 palettes and at 15h9 goes to 5401‐Azambuja 
 
Truck 17 doesn’t leave 5401‐Azambuja 
 
Truck 18 doesn’t leave 5401‐Azambuja 

76 

 
 
Truck 19 with capacity 33 leaves 5401‐Azambuja at 6h13 and goes to 411‐PD Agualva 
It arrives at client 411‐PD Agualva at 7h0, unloads 10 palettes and at 8h0 goes to 412‐PD Linda A Velha 
Truck delayed 231 min due to time windows constraints!  
It arrives at client 412‐PD Linda A Velha at 14h0, unloads 23 palettes and at 15h6 goes to 5401‐Azambuja 
 
Truck 20 with capacity 24 leaves 5401‐Azambuja at 12h12 and goes to 417‐PD Carnaxide 
It arrives at client 417‐PD Carnaxide at 13h0, unloads 1 palettes and at 13h34 goes to 462‐PD Mem Martins 2 
It arrives at client 462‐PD Mem Martins 2 at 13h49, unloads 18 palettes and at 14h45 goes to 832‐PD Damaia 
It arrives at client 832‐PD Damaia at 15h3, unloads 5 palettes and at 15h33 goes to 5401‐Azambuja 
 
Truck 21 with capacity 21 leaves 5401‐Azambuja at 6h18 and goes to 836‐PD Olaias 
It arrives at client 836‐PD Olaias at 7h0, unloads 9 palettes and at 7h38 goes to 822‐PD Almirante Reis 
It arrives at client 822‐PD Almirante Reis at 7h42, unloads 10 palettes and at 8h26 goes to 5401‐Azambuja 
 
Truck 22 with capacity 21 leaves 5401‐Azambuja at 6h19 and goes to 822‐PD Almirante Reis 
It arrives at client 822‐PD Almirante Reis at 7h0, unloads 2 palettes and at 7h44 goes to 441‐PD Duque d'Avila 
It arrives at client 441‐PD Duque d'Avila at 7h46, unloads 8 palettes and at 8h46 goes to 440‐PD Tomas Ribeiro 
It arrives at client 440‐PD Tomas Ribeiro at 8h48, unloads 9 palettes and at 9h30 goes to 5401‐Azambuja 
 
Truck 23 with capacity 24 leaves 5401‐Azambuja at 6h19 and goes to 458‐PD Fonte Nova 
It arrives at client 458‐PD Fonte Nova at 7h0, unloads 2 palettes and at 7h34 goes to 424‐PD Alto da Barra 
Truck delayed 322 min due to time windows constraints!  
It arrives at client 424‐PD Alto da Barra at 14h0, unloads 7 palettes and at 14h34 goes to 820‐PD Alapraia 
It arrives at client 820‐PD Alapraia at 8h38, unloads 15 palettes and at 9h28 goes to 5401‐Azambuja 
 
Truck 24 with capacity 21 leaves 5401‐Azambuja at 6h11 and goes to 451‐PD 1º Dezembro 
It arrives at client 451‐PD 1º Dezembro at 7h0, unloads 8 palettes and at 7h36 goes to 401‐PD Lapa 
It arrives at client 401‐PD Lapa at 7h42, unloads 13 palettes and at 8h28 goes to 5401‐Azambuja 
 
Truck 25 with capacity 21 leaves 5401‐Azambuja at 6h15 and goes to 453‐PD Graça 
It arrives at client 453‐PD Graça at 7h0, unloads 21 palettes and at 8h2 goes to 5401‐Azambuja 
 
Truck 26 with capacity 24 leaves 5401‐Azambuja at 6h13 and goes to 411‐PD Agualva 
It arrives at client 411‐PD Agualva at 7h0, unloads 10 palettes and at 8h0 goes to 439‐PD Alfragide 
It arrives at client 439‐PD Alfragide at 8h14, unloads 14 palettes and at 9h2 goes to 5401‐Azambuja 
 
Truck 27 with capacity 21 leaves 5401‐Azambuja at 13h14 and goes to 412‐PD Linda A Velha 
It arrives at client 412‐PD Linda A Velha at 14h0, unloads 0 palettes and at 15h6 goes to 839‐PD Paço d'Arcos 
It arrives at client 839‐PD Paço d'Arcos at 15h15, unloads 11 palettes and at 15h57 goes to 434‐PD Carcavelos 
It arrives at client 434‐PD Carcavelos at 16h4, unloads 10 palettes and at 16h44 goes to 5401‐Azambuja 
 
Truck 28 with capacity 24 leaves 5401‐Azambuja at 6h12 and goes to 407‐PD Massamá II 
It arrives at client 407‐PD Massamá II at 7h0, unloads 4 palettes and at 7h36 goes to 435‐PD São Marcos 
Truck delayed 325 min due to time windows constraints!  
It arrives at client 435‐PD São Marcos at 14h0, unloads 11 palettes and at 14h42 goes to 475‐PD Queijas 
It arrives at client 475‐PD Queijas at 8h35, unloads 9 palettes and at 9h27 goes to 5401‐Azambuja 
 
Truck 29 doesn’t leave 5401‐Azambuja 
 
Truck 30 doesn’t leave 5401‐Azambuja 
 
Time spent to find best solution = 144.390 sec  
Total Elapsed time = 240.000 sec 
Necessary iterations to find best solution = 77448 
Total iterations made = 126712 
 
Run finished @ Tue Sep 15 15:48:36 2009 

77 

 
Anexo H 
Código não compilado e ficheiro executável do Modelo Implementado 

<Fornecido CD em anexo> 

78 

Você também pode gostar