A pesquisa Operacional e os Recursos Renováveis 4 a 7 de novembro de 2003, Natal-RN
UM MODELO LINEAR PARA O PROBLEMA DO CAIXEIRO VIAJANTE COM DEMANDAS HETEROGÊNEAS
João Fernando Machry Sarubbi Universidade Federal de Minas Gerais
Av. Antônio Carlos 6627 – Pampulha CEP 31270-901 Belo Horizonte MG - ICEX - Departamento de Ciência da Computação, Sala 4010, email: [email protected]
Henrique Pacca Loureiro Luna Universidade Federal de Minas Gerais
Av. Antônio Carlos 6627 – Pampulha CEP 31270-901 Belo Horizonte MG - ICEX - Departamento de Ciência da Computação, Sala 4010, email: [email protected]
Resumo: Problemas de entrega estão presentes em diversas aplicações. Neste trabalho é modelado um problema que, conhecida uma malha viária representada por um grafo G=(V,E), um único veículo, que sai de uma origem qualquer, precisa percorrer um circuito Hamiltoniano entregando uma quantidade Qi de itens para cada uma das V localidades. Sabe-se também que em cada localidade um, e somente um, tipo de produto é entregue e que as demandas em cada localidade são heterogêneas. O objetivo é então minimizar o custo total composto do custo de percorrer uma estrada com um caminhão vazio adicionado com o de transportar cada item a ser entregue. Este problema foi por nós nomeado de Problema do Caixeiro Viajante com Demandas Heterogêneas(PCVDH). Neste artigo é dado uma formulação linear de fluxos para o PCVDH e são apresentadas características comuns entre outros problemas já conhecidos na literatura.
Palavras chaves: Problema do Caixeiro Viajante, Problema de Mínima Latência e Problema do Caixeiro Viajante com Demandas Heterogêneas.
Abstract: Delivery problems are common in different applications. We model a problem that known the roads represented by a graph G=(V,E) and knowing that there is an unique truck that leaves an origin and needs to cover a Hamiltonian circuit delivering an amount Qi of items for each one of V visited places. The objective is then to minimize the total cost composed of the cost to cover a road with an empty truck added with the cost to carry each item to be delivered.
We nominated this problem by Traveling Salesman Problem with Heterogeneous Demands (TSPHD). In this work we give a linear flow formularization for the TSPHD and we give some common characteristic among other well-known problems in the literature.
Keywords: Traveling Salesman Problem, Minimum Latency Problem e Traveling Salesman Problem with Heterogeneous Demands.
1. INTRODUÇÃO
Problemas de entrega estão presentes tem diversas aplicações. Quando vamos ao supermercado nos deparamos com diversos produtos oriundos de diferentes cidades, estados e até países. Desde hortifrutigranjeiros até computadores e automóveis, somos inundados com mercadorias de diferentes marcas, tipos e fabricantes. Cada um destes fabricantes produz estes produtos em diferentes lugares, sendo obrigados a ter um custo de transporte para que cada um alcance os consumidores. Uma boa parte do custo destas mercadorias está inserido neste transporte e uma redução do mesmo é muito importante, pois beneficia tanto as empresas produtoras, que não precisam gerar tantos gastos, como os consumidores que podem comprar estes produtos com um custo mais razoável.
Muito se tem estudado na literatura a respeito de otimizar rotas economizando tempo e combustível. Um dos problemas clássicos e mais estudados a este respeito é o Problema do
Caixeiro Viajante. Ele consiste em, dado um conjunto de distâncias, ou tempos de viagem, entre diversas localidades, achar um circuito de comprimento mínimo que, saindo de uma origem, percorra todas as localidades, passando exatamente uma vez em cada localidade e depois voltando para a origem. Este problema, por si só, é muito interessante e tem muitas aplicações teóricas e práticas, mas só leva em consideração as distâncias a serem percorridas. Se quisermos modelar um problema de entrega de mercadorias, onde o tipo e a quantidade destas mercadorias é, além das distâncias, importante para o cálculo total do custo, o Problema do Caixeiro Viajante não é a melhor opção.
Existe também, na literatura, um outro problema chamado de Problema de Mínima Latência. Ele consiste em, dado um conjunto de tempos entre diversas cidades (tarefas) calcular o atraso entre o nó origem e o nó atual e seu objetivo, no final, é minimizar o somatório dos atrasos entre todas as localidades envolvidas e a origem. Este problema também é muito interessante e foi utilizado primeiramente na otimização do agendamento de tarefas para máquinas industriais. Além disto, este problema pode ser interpretado como minimizar o custo de um caminhão que, saindo carregado, tenha que entregar uma unidade de um produto em cada local e que exista um custo que é proporcional ao número de produtos transportados em cada trecho. Outra interpretação cabível é um trabalhador que recebe n tarefas de diferentes dificuldades no mesmo instante de tempo t e que precisa decidir qual a ordem das tarefas, sabendo que tarefas mais simples terminarão primeiro e o cliente receberá o produto mais cedo, maximizando sua satisfação.
O nosso trabalho combina e estende estes dois problemas anteriores. Ele consiste em achar um caminho de menor custo que, saindo de uma origem, percorra todas as localidades, passando exatamente uma vez em cada localidade e depois voltando para a origem. Além dos custos fixos associados à passagem nos trechos, um conjunto de custos unitários para se transportar cada tipo de mercadoria em cada trecho é dado, e um parâmetro de demanda é associado a cada localidade. Neste problema de entrega o tipo e a quantidade das mercadorias é, além das distâncias, importantes para o cálculo total do custo. Este problema é então mais completo, englobando tanto o Problema do Caixeiro Viajante como o Problema de Mínima Latência. Não necessariamente a menor distância (ou o menor tempo total) é a melhor solução.
Podem existir casos em que seja melhor percorrer uma distância maior para logo nas primeiras visitas entregar mais mercadorias, deixando o caminhão mais vazio e economizando no custo de transportar a mercadoria das localidades subseqüentes.
2. PROBLEMA DO CAIXEIRO VIAJANTE
Problema do Caixeiro Viajante (PCV), do inglês, Traveling Salesman Problem, é um dos mais tradicionais e conhecidos problemas de otimização combinatória. Ele consiste em um conjunto de nós V={1,...,n} e um conjunto de arestas E, onde os nós os representam cidades e as arestas representam pares ordenados de cidades pelos quais uma ligação direta é possível. Além disto, para cada par ordenado, um peso, proporcional à distância ou ao tempo de viagem, é atribuído. O problema é encontrar um caminho, começando da cidade 1, que, além de visitar cada cidade exatamente uma vez, retorne para a cidade 1 com o tempo total de viagem mínimo.
Resumindo, o problema é encontrar um caminho Hamiltoniano de menor tempo, ou de mínimo custo total, num grafo G=(V,E) [WAG69] [CH79] [NEM88].
Dantzig, Fulkerson e Johnson[DANT54] foram os primeiros a formular o Problema do Caixeiro Viajante como um problema de programação linear inteira. Além da função objetiva que mensura o custo de passagem nos arcos, o modelo é formado por quatro conjuntos de restrições. Os dois primeiros conjuntos de restrições obrigam que chegue e saia um, e somente um, arco em cada nó do grafo G=(N,E) que serve como suporte para o modelo. Outro conjunto de restrições elimina ciclos de tamanho menor que | N | e, o último conjunto impõe a condição de integralidade para o problema [DANT54][GOL00].
O número de restrições que inibem ciclos cresce de forma exponencial em relação ao aumento do número de nós do grafo. Este elevado número de restrições faz com que o problema
se torne extremamente complexo e computacionalmente difícil. A literatura classifica o PCV como NP-Hard.
Miller, Tucker e Zemlin[MTZ60][GOL00] propuseram uma formulação para o PCV denominada Folha de Cravo. O nó origem é o nó 1. Nesta formulação o caixeiro viajante deve visitar as outras n-1 cidades, salvo a cidade 1, exatamente uma vez. Durante seu trajeto ele deve retornar à cidade origem exatamente t vezes, incluindo o retorno final, e não deve visitar mais de p cidades diferentes em um ciclo.
2.1 PCV com Formulação de Fluxos
Em 1984, Finke, Claus e Gunn [FCG84] construíram uma formulação de fluxos para o PCV. Nela existem dois produtos distintos P e Q e um vértice s∈V selecionado arbitrariamente em um grafo G=(N,E). Neste problema o caixeiro deixa a origem com uma quantidade N de produtos do tipo P e vazio de produtos do tipo Q. A cada nó que o caixeiro visitava uma unidade do produto P era deixada e uma unidade do produto Q era recolhida até que o caixeiro só transporte mercadorias do tipo Q. Também em 1984, Claus desenvolveu um modelo de fluxos para o PCV [GOL00].
3. PROBLEMA DO CAIXEIRO VIAJANTE COM DEPENDÊNCIA DE TEMPO
O Problema do Caixeiro Viajante com Dependência de Tempo (PCVDT), do inglês Time-Dependent Traveling Salesman Problem é uma generalização do PCV. No PCVDT o custo de transição depende não somente das localidades envolvidas, mas também de suas posições na seqüência que define o caminho Hamiltoniano [PIC78]. Desta forma, dado um grafo G=(V,E) representado como uma matriz de custo dependente do tempo, o objetivo é encontrar um caminho Hamiltoniano de menor custo. A matriz de custos associa a cada aresta
E j i, )∈
( uma função de custo dependente do tempo cij(t). Um nó origem é escolhido e dele o caixeiro parte [HAM99]. É assumido que o tempo de viagem entre quaisquer duas cidades corresponde ao período de uma unidade de tempo.
3.1 Modelos
Em meados de 1956, Bowman [BOW56] sugeriu uma variável dependente do tempo para problemas de agendamento. Hadley [HAD64], Miller, Tucker e Zemlin[MTZ60] e Picard e Queyranne [PIC78] apresentaram formulações para o PCVDT, mas todas as formulações lineares requereram um número de restrições na ordem de n2. É conveniente salientar que uma formulação que requeria 2n restrições foi proposta em [PIC78], mas utilizava uma função objetivo quadrática.
Apesar da existência de variáveis dependentes do tempo desde 1956 [BOW56], o PCVDT foi introduzido somente em 1973 por Fox [FOX73]. O problema também foi estudado por [PIC78], [FOX79], [FOX80], [MD92], e [HAM99].
Fox, em sua tese de doutorado [FOX73], mostrou cinco formulações de programação linear inteira e uma formulação de fluxos para o PCVDT. Nenhuma destas formulações conseguiu resultados satisfatórios. Um algoritmo Branch-and-Bound não foi capaz de resolver um problema de 10 cidades em 12 minutos (o computador não foi especificado) [PIC78].
3.2 Problema de Mínima Latência
O Problema de Mínima Latência (PML), do inglês Minimum Latency Problem, também conhecido por Traveling Repairman Problem e Deliveryman Problem é um problema variante do PCV no qual o objetivo é encontrar um circuito partindo de uma origem o que minimize a soma dos tempos de espera (latência) dos consumidores [BLUM94]. A latência de um vértice pode ser definida como a distância entre este vértice e o nó raiz. Este tempo de espera é
capturado em relação ao ponto de vista dos consumidores [TSIT92]. O PML também pode ser interpretado como um problema de agendamento de tarefas onde o tempo total das tarefas precisa ser mínimo [EIJL95].
O Problema de Mínima Latência foi introduzido em 1967 por Conway, Maxwell e Miller [CON67] com ênfase nos problemas de agendamento de tarefas caracterizando-o, também, como um problema variante do PCV. Em 1976, Sahni e Gonzalez [SAH76] também caracterizaram matematicamente o problema como uma variante do PCV, onde o tempo, latência, era o principal fator de custo.
Soluções ótimas para o problema foram produzidas por Lucena [LUC90], Simchi-Levi e Berman [SIM91] e Fischetti, Laporte e Martelo [FIS93]. Lucena propôs um algoritmo enumerativo baseado numa formulação não-linear inteira onde os limites inferiores foram obtidos por relaxação Lagrangeana. Ele relata resultados ótimos para problemas de até 30 nós.
Simchi-Levi e Berman descrevem um método Branch-and-Bound baseado na relaxação da árvore geradora mínima. Fischetti et al. propuseram um algoritmo Branch-and-Bound baseado numa formulação de programação inteira [BLUM94][EIJL95].
Tanto o PML como o PCV são casos especiais do Problema do Caixeiro Viajante com Dependência de Tempo. No PCVDT a função de custo é uma métrica que contabiliza a distância da aresta e a ordem de visitação dos nós, gerando uma função de custo c(e,i). O custo do PCV é um caso especial onde a função de custo depende somente do custo da aresta, c(e,i) = e. Já o PML é um caso onde o custo é dado por c(e,i) = (n-i)*e [BLUM94]. Por exemplo, considerando um caminhão que precise entregar N itens em N pontos e retorna para o ponto de partida. Se o caminhão percorre uma distância D com k itens, então o custo é proporcional a (k+u)D. O valor k representa à quantidade de itens que devem ser entregues, o valor u é proporcional ao peso do caminhão [BLUM94].
Uma modelagem para o PML foi formulada por [EIJL95]. Eijl considera um grafo )
}, 0 {
(V A
G= ∪ , onde V={1,...,n}. Cada arco(i,j) está associado a um tempo de viagem
∈Z0+
pij . Eijl assume que o tempo de visitação está incluído no tempo de viagem, desta forma o tempo de chegada no nó i é igual ao tempo de partida do nó i. O nó 0 é o nó de partida, isto é, cada caminho começa e termina no nó 0. Ele assume que cada caminho inicia no tempo 0. Então o tempo de espera do consumidor localizado no nó i é igual ao tempo de partida do nó i. Desta forma o problema é determinar um caminho que minimize a soma dos tempos de partida nos nós.
Bianco, Ricciardelli e Spadoni [BRS89] desenvolveram uma modelagem para o Problema de um Veículo de Entrega (PUVE), do inglês, Single Vehicle Delivery Problem. Este problema caracteriza-se por um único veículo, saindo de uma origem 1, que percorrendo um circuito Hamiltoniano necessita entregar qi passageiros em cada nó i do grafo G=(V,A). Além disto, o motorista necessita, após percorrer todos os nós, entregar q1 passageiros no nó origem (nó 1).
Este problema está extremamente relacionado ao PML. A diferença está na quantidade heterogênea qi de passageiros entregues em cada nó i. Fazendo qi =1∀i∈V o problema se transforma no PML. Desta forma podemos classificar este problema como uma variação mais abrangente e complexa do PML. Isto é observado pois o custo não está só relacionado ao tempo e a ordem de visitação dos nós, mas também à quantidade de passageiros entregues em cada nó, priorizando assim os nós que tem uma demanda maior.
Bianco, Ricciardelli e Spadoni [BRS89] resolveram o problema anterior de forma exata através de um algoritmo que utilizou relaxação Lagrangeana e programação dinâmica.
Blum et al. no artigo "The Minimum Latency Problem" [BLUM94] estudaram sobre um problema que combinava os objetivos do PCV e do PML. Ele foi chamado de Positive-Linear Time Dependent Travelling Salesman Problem. Nele, o custo total é um produto dos custos do PCV e do PML.
Neste artigo também iremos trabalhar com um modelo que é uma aproximação entre o PCV e o PML. Este problema foi chamado por nós de Problema do Caixeiro Viajante com Demandas Heterogêneas e será explicado e formulado no tópico seguinte.
4. PROBLEMA DO CAIXEIRO VIAJANTE COM DEMANDAS HETEROGÊNEAS
Existem muitas variedades de problemas de roteamento de veículos. O problema básico é o problema operacional no qual uma frota de veículos com capacidades fixadas (número, capacidade de armazenamento, velocidade e outras) é usada para transportar mercadorias ou pessoas entre especificadas localidades de entrega e coleta e cada localidade possui uma demanda correspondente. O problema é determinar que demandas serão transportadas e qual rota será seguida por cada veículo para um determinado conjunto de demandas.
O objetivo mais comum é minimizar o custo total incluindo combustível, pessoal e depreciação dos veículos. As rotas selecionadas devem satisfazer uma variedade de restrições, como a capacidade de transporte, janelas de tempo e escalonamento dos horários dos motoristas [BRS89].
Neste artigo iremos focalizar um problema peculiar onde um único veículo, saindo de
∑ ∑
∈ ∈
+
E j
i k K
ijk ijk ij
ijx c f
b Min
) , (
) (
) 1 (
sujeito a:
∑
∈∈
∀
−
=
−
E j o
k
ojk d k k
f
) , (
, )
2 (
∑
∈∈
∀
=
E k i
k
ikk d k k
f
) , (
, )
3 (
∑ ∑
∈ ∈
≠
∈
∀
=
−
E j
i jl E
jlk
ijk f k K j k
f
) ,
( ( ,)
, ,
0 )
4 (
K k E j i x
d
fijk ≤ k ij, ∀(, )∈ ,∀ ∈ )
5 (
K k E j i
fijk ≥0, ∀( , )∈ ,∀ ∈ )
6 (
∑
∈∈
∀
=
E j i
ij j V
x
) , (
, 1 )
7 (
∑
∈∈
∀
=
E j i
ij i V
x
) , (
, 1 )
8 (
E j i xij∈{0,1}, ∀( , )∈ )
9 (
∑ ∑
∈ ∈
∈
∀
−
=
−
E j
o k K
k
oj d k k
g
) , (
, )
10 (
∑ ∑
∈ ∈
∈
∀
=
−
E k
i k j K
k kj
ik g d k k
g
) ,
( ( , )
, )
11 (
E j i x
d
g ij
K k
k
ij ∀ ∈
≤
∑
∈
) , ( , )
12 (
E j i gij ≥0, ∀(, )∈ )
13 (
A função objetivo (1) leva em conta não só os custos fixos mas também os custos variáveis relativos aos fluxos dos produtos. A restrição (2) assegura que o fluxo que emana do nó origem destinado ao nó de demanda k é igual à demanda do nó k. As restrições (3) impõem que a demanda de um produto k é igual ao fluxo desse produto que chega ao vértice k. As restrições (4) garantem a conservação do fluxo de um dado produto através dos vértices de passagem daquele produto. As restrições (5) obrigam que o fluxo seja nulo nos arcos não escolhidos para compor a solução. As restrições (6) asseguram a não negatividade do fluxo de cada produto k. As restrições (7) asseguram que incide um, e somente um, arco em cada nó e as restrições (8) asseguram que sai um, e somente um, arco a partir de cada nó. As restrições (9) estabelecem que as variáveis xij são binárias. A restrição (10) é relativa ao fluxo global e diz que o fluxo total que sai da origem é igual ao somatório das demandas dos destinos dos diversos produtos. As restrições (11) também são relativas ao fluxo global e asseguram que o fluxo proveniente de um determinado nó menos o que sai é igual à demanda deste nó. As restrições (12) asseguram que se existe fluxo numa aresta o valor de gij desta aresta é menor ou igual ao somatório de todas as demandas. Contudo, se não existe fluxo, o valor de gij é igual a zero. E, finalmente, as restrições (13) asseguram que as variáveis gij são não negativas.
Observamos que, embora aparentemente redundantes, são as restrições (10), (11) (12) e (13) que constituem a chave para se evitar a formação de ciclos no problema. A inclusão das variáveis fijkno modelo é necessária para se fazer a contabilidade dos custos variáveis associados aos diversos produtos, mas por si só não asseguraria a eliminação de ciclos na solução do problema de programação linear inteira mista. Em relação à formulação tradicional
de Dantzig, Fulkerson e Johnson [DANT54], que se limita ao espaço das variáveis xij, a inclusão das variáveis de fluxo fijk e gij aumenta de forma polinomial o número de variáveis do problema. Em vez de se trabalhar com apenas uma variável binária xij para cada arco (i,j)∈E, a formulação (1)-(13) opera também com | E | variáveis contínuas para cada arco (i,j)∈E, mas isto elimina a necessidade de se incluir um número exponencial de restrições de eliminação de ciclos presentes no modelo original de Dantzig et al.[DANT54].
Miller, Tucker e Zemlin [MTZ60] utilizaram um raciocínio parecido na sua formulação de 1960. Fox, Gavish e Graves em [FOX80] também utilizaram uma forma de se eliminar ciclos parecida com Miller et al.[MTZ60] e com a nossa formulação (1)-(13), mas trabalharam somente com as variáveis originais, ao invés de utilizar um conjunto de variáveis adicionais como as gij. É conveniente salientar que como o problema é assimétrico existem duas variáveis (tanto as binárias, como as de fluxo e de fluxo global) para cada par de nós adjacentes.
Em transporte de mercadorias o custo fixo pode ser entendido como o custo que um cidadão tem que desembolsar para percorrer uma estrada.Um exemplo é o custo que um caminhão, mesmo que vazio, precisa para percorrer uma determinada estrada. Outro exemplo é o custo de um pedágio. Estes custos podem ser combinados ou não para formar o custo fixo. Já o custo variável pode representar o gasto referente à quantidade de mercadorias que trafegam pela estrada. Quanto mais pesado estiver um veículo mais gasto o mesmo terá com combustível, com manutenção ou eventuais multas por excesso de peso. Este custo não é só mensurado pela quantidade de mercadorias, mas também pelo tipo de mercadoria transportada. Por exemplo, pode ser interessante a contabilidade de um custo maior por unidade de peso de alimentos perecíveis, a fim de se priorizar a entrega desse tipo de produto. Além disto, variando as demandas e os custos pode-se aumentar ou diminuir a prioridade de entrega de mercadorias.
Clientes mais importante podem ter prioridade maior neste modelo.
O custo variável também pode ser interpretado como no Problema de Mínima Latência.
Nele o custo é relativo à posição de visitação dos nós, da mesma forma que o custo variável no nosso problema. A diferença básica entre o custo variável do nosso problema e o custo no Problema de Mínima Latência diz respeito à quantidade de mercadorias que serão entregues em cada nó. Se dk =1,∀k∈K então o nosso custo variável representa o PML. Como não necessariamente estas demandas são unitárias então nosso custo é pelo menos maior, e ao mesmo tempo proporcional, ao custo do Problema de Mínima Latência.
O nosso modelo é um caso geral do Problema de um Veículo de Entrega apresentado por Bianco , Ricciardelli e Spadoni em [BRS89]. Neste problema deseja-se encontrar a melhor rota para um veículo sabendo que é necessário entregar passageiros em diversas localidades, cada uma com uma quantidade diferente de passageiros a ser entregue.
Um modelo parecido com o (1)-(13) foi desenvolvido por Randazzo[TRAN01] em sua tese de doutorado. Ela também minimiza os custos fixos e variáveis referentes à abertura do enlace de comunicação e ao custo de transmitir as mercadorias, respectivamente, mas no problema de Randazzo nem todos os vértices necessariamente possuem demandas, podendo gerar um ciclo que não contém todos os nós do grafo. O modelo de Randazzo tem como intuito gerar anéis e não foi ligado nem ao PCV nem ao PML e nenhum resultado computacional foi apresentado.
Quando os valores de bij =0,∀(i,j)∈E e dk =1,∀k∈K −o o nosso modelo torna-se o Problema de Mínima Latência. Quando cijk =0,∀(i, j)∈E,∀k∈Ko nosso modelo torna-se o Problema do Caixeiro Viajante propriamente dito.
5.RESULTADOS COMPUTACIONAIS
Os testes foram realizados em uma máquina Sun Blade 100 que possui dois processadores UltraSPARC de 500 MHz e 1 Gbyte de memória RAM. O sistema operacional é
o Solaris 5.8. Foi utilizado o resolvedor Cplex 7.0 da Ilog com valores padrão para os parâmetros, exceto o limite total de tempo que foi alterado para 7200 segundos, salvo a primeira base de dados para a qual este valor foi alterado para 5400 segundos.
Foi desenvolvido um programa em linguagem C que dada uma matriz de dados, um número n de nós, uma origem o e um valor
θ
gera um arquivo de dados. Este programa gera demandas aleatórias entre 1 e 130 unidades ∀i∈V −oe gera também custos variáveis de no mínimo 1 e no máximoθ
% do custo fixo referente a cada arco(i,j) e a cada produto k. Existe apenas uma restrição a respeito da máxima relação (em porcentagem) entre o custo variável e o custo fixo. Esta relação é dada pelo valorθ
. Após ser gerado o arquivo de dados, este arquivo é lido por outro programa, também em linguagem C, e gerado um arquivo em um formato chamado LP, que será utilizado pelo resolvedor CPLEX 7.0 da ILOG.5.1 Base da Dados 1
A primeira base de testes foi retirada da base de dados do DNER (Departamento Nacional de Estradas de Rodagem) e contém uma matriz de distâncias reais entre 25 capitais brasileiras. Por questão de cálculo foram retirados alguns arcos da matriz para que esta não apresente n2-n arestas e, conseqüentemente, n2-n variáveis binárias. A partir dos valores dados como entrada para o programa gerador, uma instância é criada e resolvida pelo resolvedor Cplex. As demandas em cada localidade sempre foram as mesmas e atribuímos valores maiores para cidades de maior população como São Paulo, Rio de Janeiro e Belo Horizonte e demandas menores para outras cidades não tão populosas. As demandas variaram entre 20 e 130 unidades.
O custo variável por unidade de produto transportada em cada arco, cijk, variou entre 0.8% e 1.3% do valor de bij referente a este arco(i,j).
Nesta primeira bateria de testes dois grafos (G1) e (G2), onde os nós representam 25 capitais brasileiras foram usados para estes experimentos. Cada experimento (E1,E2,...,E25) foi composto de um subgrafo de um destes dois grafos. Até o experimento 15 (E15) foi utilizado o grafo representado pela figura (G1) e resultados exatos foram obtidos com subgrafos de até 20 nós do grafo (G1). Dos experimentos E16 até o E25 foi utilizado como base o grafo representado pela figura (G2) e resultados satisfatórios foram adquiridos com todo o grafo, ou seja, com um grafo de 25 nós. Foi atribuído um tempo máximo de 5400 segundos para o software Cplex funcionar.
Os campos | V | e | E | da tabela 1 representam o número de nós e de arcos, respectivamente, do grafo utilizado na resolução. O campo ¨Origem¨ mostra qual é o
nó origem do experimento. O campo ¨Variáveis Inteiras¨ se refere ao número de variáveis inteiras do problema, que é sempre duas vezes maior que o número de arcos. Os campos
¨Variáveis Contínuas¨ e ¨Restrições¨ se referem ao número de variáveis contínuas e restrições, respectivamente, do arquivo LP lido pelo software Cplex. Os valores dos experimentos são mostrados na tabela 2.
Na tabela 2 temos os valores relativos a resolução dos problemas, pelo software Cplex, através da modelagem (1)-(13). O campo ¨Nós Branch-and-Bound¨ se refere ao número de nós Branch-and-Bound que o Cplex resolveu no experimento específico.O campo ¨Iterações do Cplex¨ representa o número de iterações que o software Cplex resolveu e o campo ¨Tempo do Cplex¨ representa o tempo, em segundos, que o Cplex levou para resolver cada um dos experimentos. O campo ¨Gap do Cplex(%)¨ é relativo ao valor Gap dado pelo Cplex, que representa a diferença, em porcentagem, entre o limite inferior do problema e o limite superior do mesmo. Quando o ¨Gap do Cplex(%)¨ tem valor zero o cplex resolveu o problema de forma ótima.
Utilizando o grafo representado na figura (Grafo1), que é mais denso, em relação a quantidade de arcos, só conseguimos resolver problemas de até 20 nós. Já com o grafo representado na figura (Grafo2), que é mais esparso, conseguimos resultados com todo o grafo.
Isto mostra que a esparcidade do grafo a ser utilizado como base de dados é muito importante para a obtenção ou não da solução ótima. Não foi realizado nenhum estudo a respeito da escolha da origem na solução final.
5.2 Base de Dados 2
Na segunda base de testes é utilizado como grafo de referência o grafo representado na figura (Grafo2). A diferença na geração de instâncias entre a segunda parte da primeira base de dados e a segunda base de dados está na geração aleatória das demandas, estas entre 1 e 130 unidades, e na inclusão de um parâmetro extra chamado de valor
θ
no programa gerador. Estevalor representa, em porcentagem, a maior relação possível entre o custo variável de se transportar uma mercadoria k pelo arco (i,j) e o valor de bij. Os valores das instâncias testadas estão contidos na tabela 3.
A tabela 4 mostra os valores relacionados à resolução dos experimentos da base de dados 2 pelo software Cplex. O campo ¨Gap Linear(%)¨ se refere ao Gap entre a solução inteira mista e a solução
linear do problema relaxado. Este campo é calculado pela fórmula [(VO-VR)/VO x 100], onde VO é o valor inteiro ótimo e VR representa o valor da solução linear relaxada. O campo ¨CF/CV (%)¨
diz respeito à relação, em porcentagem, entre o
custo fixo total e o custo variável total do problema. O campo ¨Nós Branch-and-Bound¨ se refere ao número de nós Branch-and-Bound que o Cplex resolveu no experimento específico. O campo ¨Iterações do Cplex¨ representa o número de iterações em que o Cplex computou e o campo ¨Tempo do Cplex¨ representa o tempo, em segundos, que o Cplex levou para resolver cada um dos experimentos. O campo ¨Gap do Cplex(%)¨ é relativo ao valor Gap dado pelo Cplex, que representa a diferença, em porcentagem, entre o limite inferior do problema e o limite superior do mesmo. Quando o Gap tem valor zero o Cplex resolveu o problema de forma ótima.
Nesta segunda bateria de testes foi verificado o software Cplex, através da modelagem (1)-(13), resolveu a maior parte dos problemas no tempo hábil de 7200 segundos. O software Cplex resolveu todos os experimentos e o algoritmo de Benders a maioria deles. Foi verificado também que a relaxação linear do modelo não é muito boa, isto é, o vão da relaxação linear é alto. Isto ocorre principalmente para problemas onde o valor
θ
é maior. Também foi visto que quanto maior o valor deθ
menor o valor de CF/CV. Isto é fácil de verificar já que quanto maior o valor deθ
maior o valor de CV e, conseqüentemente, menor o valor de CF/CV, já que o valor CF é constante para um mesmo experimento.6. CONCLUSÃO
Neste trabalho introduzimos um problema de entrega de mercadorias denominado por nós de Problema do Caixeiro Viajante com Demandas Heterogêneas (PCVDH), no qual um caminhão deve percorrer um circuito Hamiltoniano deixando uma quantidade de demandas heterogêneas em cada localidade. Consideramos, para fins de cálculo do custo total, que temos como intuito minimizar, um custo fixo, de percorrer um trecho com este veículo vazio, adicionado a um custo variável, de transporte de cada uma das mercadorias destinadas às diversas localidades.
Comparamos o PCVDH com muitos outros problemas. Descobrimos que na verdade o PCVDH combina os custos tanto do Problema do Caixeiro Viajante(PCV) como do Problema de Mínima Latência(PML). Apesar de tanto o PCV como o PML serem casos particulares do PCVDT e o PCVDH ser uma composição do PCV e do PML, o PCVDH tem características próprias, que o PCVDT não possui. O custo total no PCVDH é composto de duas parcelas distintas de dois problemas relativos ao PCVDT, que formam um problema único e diferente do PCV e do PML. O PCVDT é, sim, um problema mais amplo, onde o custo que depende do tempo não necessita ter nenhuma função específica. Já no PCVDH, o custo, que é dependente do tempo, isto é, a parte relativa ao custo variável, possui a propriedade de diminuir constantemente, até o caminhão entregar todas as mercadorias e o custo se tornar zero.
Neste artigo fizemos um modelo de formulação linear de fluxos (1)-(13) para modelar PCVDH e utilizamos o software Cplex7.0 para realizar os experimentos. No modelo introduzimos as variáveis gij, também citadas em [TRAN01], relativas ao fluxo global no arco (i,j) e que inibem sub-ciclos.
7. REFERÊNCIAS BIBLIOGRÁFICAS
[BLUM94] A. Blum and P. Chalasani and D. Coppersmish and B. Pulleyblank and P.
Raguavan and M. Sudan. The minimum latency problem, Proc 26th Annual ACM Symposium on Theory of Computting, 1994.
[BOW56] E. H. Bowman. Production scheduling by the transportation method of linear programming, Operations Research, vol 4, num 1, pages 100-103, 1956.
[BRS89] L. Bianco and S. Ricciardelli and M. Spadoni. A new algorithm for the single vehicle delivery problem, Conference on the Practice and Theory of Operations Management et 4es Journées Francophones sur la Logistique et le Transportes ,pages 313-320, 1989.
[CH79] N. Christofides. The traveling salesman problem, Wiley Chichester, pages 131- 149, 1979.
[CON67] R. Conway and W. Maxwell and L. Miller. Theory of scheduling, Addison- Wesley, 1967.
[DANT54] R. Dantzig and R. Fulkerson and S. Johnson. Solution of a large-scale traveling- salesman problem, Operations Research, vol 2, pages 393-410, 1954.
[EIJL95] C. Eijl. A polyhedral approch to the delivery man problem Eindhoven University of Tecnology Memorandum COSOT 95, 1995.
[FCG84] G. Finke and A. Claus and E. Gunn. A two-commodity network flow approach to the traveling salesman problem, Congress Numerantium, vol 41, 1984.
[FIS93] M. Fischetti and G. Laporte and S. Martelo. The delivery man problem and cumulative methods, Operations Research, vol 6, pages 1055-1064, 1993
[FOX73] K. Fox. Production scheduling on parallel lines with dependencies. Johns Hopkins University, 1973.
[FOX79] K.R. Fox and B. Gavish and S. C. Graves. The time dependent traveling salesman problem and extensions, Boeing Commercial Airplane Company, University of Rochester e Massachusetts Institute of Tecnology, 1979
[FOX80] K. Fox and B. Gavish and S. Graves. An n-constraint formulation of the (time- dependent) traveling salesman problem, Operations Research vol 28, pages 1018-
1021, 1980.
[GOL00] M. Goldbarg and H. P. L. Luna. Otimização combinatória e programação linear, Campus, 2000.
[HAD64] G. Hadley. Nonlinear and dynamic programming, Addison-Wesley Publishing Co, 1964.
[HAM99] M. Hammar. Lower bounds and approximation guarantees for parallel search on concurrent rays and time dependent traveling salesman problems, Departament of Computer Science, Lund University, 1999.
[LUC90] A. Lucena. Time-dependent traveling salesman problem - the deliveryman case.
Networks 20, pages 753-763, 1990.
[MD92] C. Malandraki and M.S. Daskin. Time dependent vehicle routing problems:
formulations, properties and heuristic algorithms, Transportation Science, vol 26, num 3, pages 185-200, 1992.
[MTZ60] C.E. Miller and A.W. Tucker and R.A. Zemlin. Integer programming formulation of traveling salesman problems, ACM, vol 7, number 4, pages 326-329, 1960.
[NEM88] G. Nemhauser and L.A. Wolsey. Integer and combinatorial optimization, Wiley Interscience Series in Discrete Mathematics and Optimization, 1988.
[PIC78] J. C. Picard and M. Queyranne. The time-dependent traveling salesman problem and its application to the tardiness problem in one-machine scheduling, Operations Research, vol 26, pages 86-110, 1978.
[SAH76] S. Sahni and T. Gonzalez. P-Complete approximation problems, Journal of the Association for Computing Machinery, vol 23, num 3, pages 555-565 1976.
[SIM91] D. Simchi-Levi and O. Berman. Minimize the total flow time of n jobs on a network, IIE Trans, vol 23, pages 236-244, 1991.
[TRAN01] C. D. Randazzo. Algoritmos para problemas de planejamento de redes multi- níveis, Departamento de Ciência da Computação, Universidade Federal de Minas Gerais, 2001.
[TSIT92] J. N. Tsitsiklis. Special cases of travelling salesman and repairman problems with time windows, Networks, vol 22, pages 263-282, 1992.
[WAG69] H. M. Wagner. Principles of operations research - with applications to managerial decisions, Prentice-Hall, 1969.