Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
i
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
v
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).
1
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.
2
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.
3
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
4
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
5
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.
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
6
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).
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.
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
7
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).
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
8
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.
9
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)
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;
<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;
<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:
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.
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.
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.
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.
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.
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.
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%
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.
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.
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
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
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)
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