3.6 Esquemas para obtenção do limite inferior elementar
3.6.2 Esquemas gradativamente elementar
Os segundo e terceiro esquemas permitem popular o PMR também com colunas inviáveis, que contém ciclos. Para isso os subproblemas utilizados foram o ng-SPPRC e q-routes.
Os Algoritmos 6 e 7 representam o funcionamento dos métodos que permitem ciclos combi- nados com as restrições SSR e SDC, respectivamente. As vizinhanças usadas não tiveram seu tamanho alterado durante a execução, sendo fixadas em |Vi| = 10, ∀i ∈ N , conforme orientado
pelos autores Baldacci, Mingozzi e Roberti (2011). O valor zSP representa o valor da variável
gerada pelo subproblema com custo reduzido mais negativo, sendo esta variável elementar ou não.
Primeiramente, buscando visualizar a melhoria alcançada pelo uso das novas restrições, ne- nhum corte das famílias SSR ou SDC foi adicionado ao PMR. Assim o esquema permite ciclos na solução ótima λ∗ e fica reduzido às linhas 1 a 4 e 6 a 12 no Algoritomo 6, onde somente a
estratégia DSSR é usada e na linha 7 o PMR é resolvido sem as SDC ou SSR.
O segundo esquema é executado da mesma forma que o apresentado pela Figura 3.6. A diferença aqui, é que a solução ótima λ∗ não tem garantida a elementariedade, pois não há
utilização das SDC para eliminar os ciclos da solução final. A condição de parada do laço mais externo é a não existência de restrições SSR violadas pela solução ótima corrente.
O Algoritmo 7 apresenta o último esquema usado, representado na Figura 3.7. Neste caso são adicionadas somente as restrições SDC. Estas restrições, após a finalização do procedimento de Geração de Colunas, visa proibir a participação de colunas não-elementares da solução ótima λ∗.
A cada iteração do laço mais interno (linhas 6 a 12), todas as colunas geradas pelos subproblemas são adicionadas ao PMR, até que o menor custo reduzido dentre as variáveis geradas tenha seu valor igual ou maior do que 0. Durante a segunda parte do algoritmo é iniciada uma varredura na solução atual do problema que procura por variáveis básicas que contenham ciclos. Para cada cliente i ∈ N que tenha um ciclo na solução em alguma das variáveis básicas, ele terá uma SDC gerada e adicionada ao PMR.
Algoritmo 6: Esquema Column-and-Cut não-elementar
1 INICIALIZAÇÃO
2 Considere as vizinhanças Vi, ∀i ∈ N , se o subproblema as utiliza
3 Considere um conjunto inicial E = {∅}, dos clientes que terão a elementariedade
requerida através da DSSR
4 Construa para o PMR uma solução inicial viável 5 repita
6 repita
7 Resolva o PMR com as SSR
8 Resolva o subproblema com as vizinhanças Vi, ∀i ∈ N , caso este as utilize.
9 se zSP < 0 então
10 Adicione as colunas de custo reduzido negativo geradas ao PMR 11 Atualize E ← E ∪ {i}, caso na coluna com menor custo reduzido
negativo exista ciclo para um dado cliente i
12 até que zSP ≥ 0
13 sea solução λ∗ é violada por alguma SSR faça 14 Adicione as restrições SSR violadas ao PMR 15 até quenão existam mais SSR violadas
A contribuição dos cortes SDC são levadas ao subproblema escolhido, conforme mostrado na Seção 3.4.2. Estes cortes ajudarão na formação de rotas mais elementares, já que tornará mais atrativo a visitação uma única vez de um nó que tenha uma SDC.
Algoritmo 7: Esquema Column-and-Cut gradativamente elementar
1 INICIALIZAÇÃO
2 Considere as vizinhanças Vi, ∀i ∈ N , se o subproblema as utiliza
3 Considere um conjunto inicial E = {∅}, dos clientes que terão a elementariedade
requerida através da DSSR
4 Considere um conjunto inicial ℰ = {∅}, dos clientes que terão a elementariedade requerida
através das SDC
5 Construa para o PMR uma solução inicial viável 6 repita
7 repita
8 Resolva o PMR com as SDC para o dado conjunto ℰ
9 Resolva o subproblema com as vizinhanças Vi, ∀i ∈ N , caso este as utilize.
10 se zSP < 0 então
11 Adicione as colunas de custo reduzido negativo geradas ao PMR 12 Atualize E ← E ∪ {i}, caso na coluna com menor custo reduzido
negativo exista ciclo para um dado cliente i
13 até que zSP ≥ 0
14 para todacoluna λ∗
r > 0 do PMR que contenha ciclos em um cliente i faça 15 Atualize o conjunto dos clientes que requerem elementariedade, ℰ ← ℰ ∪ {i} 16 Adicione ao PMR ou atualize as SDC referentes aos clientes i ∈ ℰ
17 fim para todo
A Figura 3.8 ilustra o processo iterativo de adição de colunas (variáveis) e cortes (restrições) ao problema. Para este trabalho, sempre que uma nova coluna era adicionada ao PMR, caso já existisse algum corte no problema, o corte também seria atualizado com as informações das novas colunas.
(a)
(b)
Capítulo 4
Experimentos e resultados
computacionais
Os modelos foram desenvolvidos usando a linguagem C/C++ junto com a tecnologia IBM CPLEX® 12.5 Callable em um notebook com sistema operacional Ubuntu Linux 14.04 LTS,
processador IntelTM Core® i5-4210U e 4GB de RAM. Os testes foram executados em uma má-
quina DellTM PowerEdge® T620 workstation, equipada com dois processadores IntelTMXeon®
E5-2600v2 e 96GB de RAM.
4.1
Instâncias utilizadas e primeiros experimentos
As intâncias utilizadas foram algumas das disponíveis na literatura. As instâncias dos tipos A, B e P são de autoria de Augerat (1995). As E de Christofides e Eilon (1969) e F de Fisher (1994). No nome de cada instância é possível identificar o autor pela primeira letra, o número de nós clientes que é precedido pela letra n e o número mínimo de veículos para atender a demanda, precedido pela letra k. Elas foram escolhidas por terem seu valor ótimo (LS ) conhecido para o PRVC. As instâncias e suas respectivas capacidades são apresentadas na Tabela 4.1. Elas tem diferentes características, o número de nós clientes, total de veículos, a localização do depósito (central, corner ou aleatória) e se os clientes são clusterizados (agrupados) ou randômicos. Quanto mais clusterizada a instância, maior a tendência a formação de ciclos, visto que os clientes estão mais próximos entre si.
Tabela 4.1: Instâncias e respectivas capacidades
Instância A B E-n101-k14 E-n101-k8 E-n22-k4 E-n23-k3 E-n30-k3
Capacidade 100 100 112 200 6000 4500 4500
Instância E-n33-k4 E-n51-k5 E-n76-k10 E-n76-k7 E-n76-k8 F-n45-k4 P-n51-k10
Capacidade 8000 160 140 220 180 2010 80
Nos primeiros testes realizados para instâncias de maior porte, foi a verificada a dificuldade de convergência para o LI pelos algoritmos ng-SPPRC e ESPPRC. Diferente do método das q-routes que tem seu tempo computacional definido, ambos os algoritmos, do Problema do Ca- minho Mínimo com Restrição de Recursos, irão convergir se, e somente se, são gerados todos os rótulos não-dominados para o nó destino n + 1. Isso ocorre mais rápido à medida em que se aumenta a quantidade de recursos usados no critério de dominância, como é comum na litera- tura, janelas de tempo e coleta e entrega. Vale novamente ressaltar que este trabalho utilizou somente a capacidade como recurso que ditava a viabilidade de um novo rótulo. Assim, este algoritmo poderia ser chamado de Problema do Caminho Mínimo (Elementar) com Restrição
de Capacidade. Como meio de compensar essa dificuldade de convergência, definiu-se que o algoritmo é executado por até 60 segundos. Se este limite é atingido são entregues ao PMR os rótulos (colunas) gerados para o nó n + 1.
Em busca de melhorar a política de dominância, uma alternativa proposta por Jepsen et al. (2008) foi cogitada. Quando as restrições SSR são utilizadas pode-se criar um novo recurso 𝒯 = |S ∩ U | mod κ, que representa o número de visitas realizadas a S desde que a última penalidade foi paga por visitar κ nós em S. Isso não foi feito por dois motivos, o primeiro iria alterar a complexidade do subproblema, deixando de ser robusto e com isso, poderia provocar um desequilíbrio quando se fosse comparado aos outros métodos usando as SDC ou ao q-routes e suas combinações, pois este subproblema não trabalha com dominância. Um subproblema robusto é um subproblema que não tem sua complexidade alterada, por exemplo a adição de um recurso na dominância, quando o PMR sofre alguma alteração.
A combinação dos subproblemas que permitem ciclos com as restrições SSR e SDC simulta- neamente não foi possível. A questão é que sem a técnica de branch-and-bound (LAND; DOIG, 1960) para fixar as as variáveis, não foi possível interromper a geração de colunas com a solução ótima elementar e simultaneamente sem nenhuma SSR violada. Isso porque os procedimentos acabavam ficando presos no laço mais interno gerando as mesmas colunas e sem atingir o custo reduzido positivo ou igual a 0.
A quantidade de colunas adicionadas ao PMR se dava da seguinte maneira, para os algoritmos ESPPRC e ng-SPPRC todas as colunas geradas para o nó n + 1 eram adicionadas ao PMR. Já para o método das q-routes, para cada cliente i ∈ N escolhe-se a demanda total d∗ que minimiza
o custo reduzido da q-route correspondente, dado por c0i+ R(d∗,i), para ser inserido no PMR.
As restrições SDC eram adicionadas conforme explicado na Seção 3.4.2. As restrições SSR foram enumeradas usando |S| = 3 e κ = 2, conforme orientado pelos autores Jepsen et al. (2008). Além disso, no máximo ⌊|N |
4 ⌋ SSR violadas pela solução ótima eram adicionadas ao mestre a
cada iteração. Esse número foi definido empiricamente, pois se mostrou mais adequado durante os testes realizados.
Conforme feito por Baldacci, Hadjiconstantinou e Mingozzi (2004), os custos de conexão entre os dois clientes i e j é um valor inteiro dado por cij = ⌊eij + 0,5⌋, onde eij é a distância
euclidiana entre i e j.
Uma ferramenta computacional que se mostrou muito útil e que acelerou boa parte dos testes foram as operações bit-a-bit. Ela foi usada para representar a composição dos conjuntos U e Π dos métodos. Para cada cliente que i ∈ N que participasse ou fosse inviável em um rótulo nos algoritmos SPPRC (elementar ou não) e participasse uma q-route sinalizada numa posição da matriz R, o bit de posição (i − 1) será sinalizado como 1 e caso contrário 0. O redução do tempo computacional foi notável na troca das estruturas de list<int> por bitset<|N|>.