-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathBucketGraph-final-clear-15.txt
More file actions
2673 lines (2673 loc) · 500 KB
/
BucketGraph-final-clear-15.txt
File metadata and controls
2673 lines (2673 loc) · 500 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
ABucket Graph Based Labelling Algorithm for Vehicle
Routing
Ruslan Sadykov, Artur Alves Pessoa, Eduardo Uchoa
To cite this version:
Ruslan Sadykov, Artur Alves Pessoa, Eduardo Uchoa. A Bucket Graph Based Labelling Algorithm
for Vehicle Routing. Transportation Science, 2021, 55 (1), pp.4-28. 10.1287/trsc.2020.0985. hal-
02378624v2
HALId: hal-02378624
https://inria.hal.science/hal-02378624v2
Submitted on 3 Nov 2020
HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est
archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents
entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non,
lished or not. The documents may come from émanant des établissements d’enseignement et de
teaching and research institutions in France or recherche français ou étrangers, des laboratoires
abroad, or from public or private research centers. publics ou privés.
HALAuthorization
ABucket Graph Based Labeling Algorithm with
Application to Vehicle Routing
1 2 2
Ruslan Sadykov , Eduardo Uchoa , and Artur Pessoa
1INRIA Bordeaux – Sud-Ouest 200 Avenue de la Veille Tour, 33405 Talence,
France
2Universidade Federal Fluminense - Engenharia de Produ¸c˜ao , Rua Passo da
P´atria 156, Niter´oi - RJ - Brasil - 24210-240,
Abstract
Weconsider the Shortest Path Problem with Resource Constraints (SPPRC) arising as
a subproblem in state-of-the-art Branch-Cut-and-Price algorithms for vehicle routing prob-
lems. We propose a variant of the bi-directional label correcting algorithm in which the
labels are stored and extended according to the so-called bucket graph. Such organization
of labels helps to decrease significantly the number of dominance checks and the running
time of the algorithm. We also show how the forward/backward route symmetry can be
exploited and how to eliminate arcs from the bucket graph using reduced costs. The pro-
posed algorithm can be especially beneficial for vehicle routing instances with large vehicle
capacity and/or with time window constraints. Computational experiments were performed
on instances from the distance constrained vehicle routing problem, including multi-depot
and site-dependent variants, on the vehicle routing problem with time windows, and on
the “nightmare” instances of the heterogeneous fleet vehicle routing problem. Significant
improvements over the best algorithms in the literature were achieved and many instances
could be solved for the first time.
1 Introduction
The best known exact approach for many classical variants of the Vehicle Routing Problem
(VRP) is a Branch-Cut-and-Price (BCP) algorithm in which the master problem contains route
variables, customer visiting constraints and additional cuts. Because of their exponential number,
theroutevariablesaregenerateddynamicallybysolvingpricingsubproblemsmodeledasShortest
Path Problems with Resource Constraints (SPPRC). In those problems, one looks for least cost
paths joining a source vertex with a sink vertex such that the accumulated consumption of
resources along the path respects given lower and upper limits. Dynamic Programming labeling
algorithms are the most usual way of solving those problems.
Labeling algorithms differ from the traditional “table filling” dynamic programming algo-
rithms because they only store (as labels) the reachable states, those representing feasible partial
paths. More importantly, while traditional dynamic programming only performs dominance
over identical states, labeling algorithms perform dominance between labels corresponding to
0
non-identical states. Typically, a label L0 representing a path PL is dominated, and therefore
eliminated, if there is another label L representing a path PL that ends in the same vertex
0
and is not more costly and does not use more resources than PL . Mono-directional labeling
algorithms start from a single label representing a null path at the source vertex. At each step,
a non-extended label L is extended to additional labels corresponding to the possible ways of
adding a single arc to PL. Dominance may be used to eliminate labels, avoiding future exten-
sions. If there are no non-extended labels, the algorithm stops and optimal solutions are found
among the labels representing paths ending in the sink vertex. The general labeling algorithm
1
has several degrees of freedom. In particular, there are many possible ways of choosing the
next label to be extended and how often and how extensively dominance checks are performed.
Particular labeling algorithms are classified as being either label-setting or label-correcting. The
defining property of a label-setting algorithm is that it only extends labels that can never be
dominated by another label created after that extension.
There is a large literature on labeling algorithms for SPPRC, we refer to Irnich and De-
saulniers (2005) and Pugliese and Guerriero (2013) for surveys. However, somehow surprisingly,
not so many papers discuss in depth issues related to label organization and dominance strate-
gies. In fact, even though the pricing time is a bottleneck in many BCP algorithms for VRP,
authors often skip the details of the labeling algorithm used. An exception is the recent algo-
rithm for the Capacitated VRP (CVRP) in Pecin et al. (2017b). In that case, assuming that the
consumptions of the single resource (capacity) are given by positive integer numbers, labels are
organized in buckets corresponding to each possible consumption. Dominance is only performed
for labels in the same bucket, that by definition have the same resource consumption. However,
that approach cannot be applied in cases where resource consumptions are given by arbitrary
real numbers. In fact, if the consumptions are given by larger integer numbers the algorithm
becomes slow, since few dominance checks are performed and too many undetected dominated
labels are expanded. The opposite approach is to perform full label dominance after each ex-
tension. In this case, the running time may suffer a lot from too many dominance checks with
negative results.
Lozano and Medaglia (2013) proposed the so-called Pulse Algorithm for the SPPRC. Pulse is
better viewed as a depth-first branch-and-bound search algorithm than as a dynamic program-
ming labeling algorithm, because it uses dominance in a severely limited way — each vertex
only keeps a handful of partial paths for performing dominance checks. The main mechanism
in Pulse for trying to avoid an exponential explosion in its search is bounding, a partial path is
pruned if it can be shown that it cannot be extended into a full path ending at the sink vertex
that costs less than the currently best known source to sink path. Pulse produced excellent
results, much better than label-setting algorithms, on some stand-alone SPPRCs where all arc
costs are positive. The last feature helps Pulse because it allows good bounds to be computed by
Dijkstra’s-like algorithms. Up to now, as far as we know, Pulse was only tested as a subproblem
solver in a column generation algorithm for VRP with Time Windows (VRPTW) in Lozano,
Duque, and Medaglia (2015). The SPPRCs that appear in that context are more complex be-
cause the master dual variables make arc costs to be possibly negative. The test was calculating
the elementary route bound on instances with 100 customers. The variant of Pulse used for the
VRPTWonlyperformsanevenmorebasicformofdominancecalledrollbackpruning. However,
it proposes a more sophisticated bounding mechanism that only considers the time resource. The
obtained results compare favourably with the labeling algorithms of Desaulniers, Lessard, and
Hadjar (2008) and Baldacci, Mingozzi, and Roberti (2011). It is not known how Pulse would
perform on larger instances and how it would handle the modifications in the SPPRC induced
by cuts, essential for modern BCP algorithms for VRP.
The main original contributions of this paper are the following:
• In Section 3, a new variant of the labeling algorithm is proposed. The approach relies on
a so-called bucket graph, consisting of buckets and bucket arcs. Labels for paths ending
in the same vertex of the original graph and having similar resource consumption are
grouped together in buckets. A bucket arc links two buckets if a label in the first one
can be possibly extended to a label in the second. Labels within the same bucket are
always pairwise undominated, i.e. there is no label which is dominated by another label
in the same bucket. However, dominance checks between labels in different buckets are
only performed before an extension, when it is checked whether a candidate label to be
extended is dominated or not. Moreover, this inter-bucket dominance uses bounds on the
costs of all labels in a bucket, avoiding many unnecessary checks. The key parameter of
the algorithm is the step size, used for determining the resource consumption intervals that
define each bucket. If the step size is sufficiently small, the bucket graph is acyclic and the
algorithm becomes a label-setting algorithm. In general, the bucket graph has cycles and
2
the algorithm is a label-correcting algorithm. A bi-directional version of the bucket graph
based labeling algorithm is also proposed (since Righini and Salani (2006) it is known
that bi-directional labeling algorithms are often more efficient than their mono-directional
counterparts). The concatenation of labels step is also accelerated by bounds on the costs.
Bi-directional search also allows us to exploit the forward/backward symmetry of routes
that exists on some VRP variants, for example, on the classical Capacitated VRP (CVRP).
Onthosecases, the backward search is replaced by a “reversed copy” of the forward search,
reducing the running time.
• In Section 4, a procedure for accelerating the labeling algorithm by removing arcs from the
bucket graph using reduced cost arguments is proposed. We call it bucket arc elimination
procedure. The concept of jump bucket arcs is introduced. The new fixing procedure
generalizes both the procedures in Irnich et al. (2010) and in Pessoa et al. (2010). After a
fixing, some bucket arcs are eliminated, and thus the number of extensions and the running
times are reduced in future calls to the labeling algorithm.
The new labeling algorithm was embedded as the pricing method in a modern BCP algo-
rithm for VRPs. Our BCP also includes many ingredients found in other state-of-the-art BCP
algorithms, like dynamic ng−path relaxation, rounded capacity cuts, limited arc memory rank-
1 cuts, automatic dual price smoothing stabilization, a procedure for enumerating elementary
paths, and multi-phase strong branching with pseudo-costs. The algorithm was computation-
ally tested on several VRP variants with time window constraints and/or large vehicle capacity.
Pretests have shown that the labeling algorithm could perform very well, but that performance
is rather sensitive to the choice of the step size parameter. Moreover, the good step size val-
ues varied strongly from instance to instance. Therefore, a simple but effective scheme for an
automatic dynamic adjustment of the step size was devised. Other specific experiments indi-
cate that, on the hardest instances, the new bucket arc fixing procedure can indeed be better
than existing schemes for fixing arcs by reduced cost. Lastly, extensive experiments show that
the final BCP algorithm outperforms significantly other recent state-of-art algorithms for the
VRPTW and the Multi-Depot VRP with Distance Constraints (MDVRPDC). Moreover, our
algorithm is the first exact approach that can handle medium-sized instances of the classical
Distance Constrained Vehicle Routing Problem (DCVRP), including the site-dependent vari-
ant. Our algorithm is also the first exact method successfully applied for a set of “nightmare”
instances of the Heterogeneous Fleet VRP (HFVRP).
The remainder of this article has the following structure. Section 2 defines the exact SPPRC
solved in this paper. It is explained how this SPPRC arises as a pricing subproblem for solving a
Heterogeneous Fleet Vehicle Routing Problem with Time Windows (HFVRPTW) by a column-
and-cut generation algorithm. Section 3 describes the bucket graph labeling algorithm proposed
in this work. Section 4 presents the bucket arc elimination procedure and introduces the key
concept of jump bucket arcs. Section 5 presents the complete BCP algorithm for HFVRPTW
where the bucket graph labeling algorithm was embedded. Section 6 presents results of the
computational experiments. There are experiments devised to assess the impact of the bucket
step size and experiments for measuring the impact of the introduced bucket arc elimination
procedure. Moreover, extensive experiments evaluate the overall BCP performance on several
classical VRP variants that are particular cases of the HFVRPTW. Section 7 contains final
remarks. Finally, very detailed computational results are presented in the online appendix.
2 Application
In order to give a precise definition of the SPPRC addressed in this paper, we first need to define
its application; defining the family of VRPs that we ultimately want to solve and outlining the
column-and-cut generation algorithm where that SPPRC arises as the pricing subproblem.
3
2.1 HFVRPTWDefinition
The Heterogeneous Fleet Vehicle Routing Problem with Time Windows (HFVRPTW) (Jiang
et al. 2014) is defined as follows. Let G = (V,A) be a directed graph with vertex set V =
{0,...,n +1}. For convenience, the depot vertex is split into the source vertex 0 and the sink
vertex n + 1; vertices in V 0 = V \ {0,n + 1} represent the n customers. The arc set is defined
as A = {(v,v0) : v,v0 ∈ V,v 6= v0,v 6= n + 1,v0 6= 0,(v,v0) 6= (0,n + 1)}. Each vertex v ∈ V
has a demand w , a service time (duration) s , and a time window [l ,u ] associated with it.
v v v v
Demands and service times are non-negative for customers v ∈ V0 and equal to zero for the
depot vertices, l is assumed to be equal to 0. The fleet is composed of a set M of different types
0
of vehicles. For each m ∈ M, there are U available vehicles, each with a capacity W . Let
m m
W=max{Wm:m∈M}bethelargest capacity. Every vehicle type is associated with a fixed
cost denoted by fm. For each arc a ∈ A and m ∈ M there is a cost cm and a non-negative travel
a
time tm associated to the traversal of this arc by a vehicle of type m. We assume that G does
a
not have any cycle where, for some vehicle type, all vertices have zero demands and zero service
times and all arcs have zero time. A route P = (v = 0,v ,...,v ,v =n+1)foravehicle of
0 1 k k+1
type m ∈ M is a walk where v ,...,v are not necessarily distinct customers in V0 and is said to
1 k P
be feasible if 1) it satisfies vehicle capacity: k w ≤W ;and2)theearliest start of service
j=1 vj m
time Sj at every visited vertex vj, 0 ≤ j ≤ k + 1, falls within the corresponding time window:
l ≤S ≤u ,whereS =l andS =max{l ,S +s +tm }. A vehicle may arrive
v j v 0 0 j v j−1 v
j j j j−1 (v ,v )
j−1 j
at a vertex before the beginning of its time window and wait, but it cannot arrive after the end
P
of the time window. The cost of route P is calculated as f + k+1cm . A route is said to
m j=1 (v ,v )
j−1 j
be elementary if the same customer is not visited more than once. The objective is to determine
a set of feasible elementary routes with minimal total cost such that: (i) each customer is visited
by exactly one route; (ii) the number of routes associated to a vehicle type does not exceed its
availability. Clearly, some of most classical VRP variants, like CVRP, VRPTW and HFVRP,
are particular cases of HFVRPTW. Other variants that are also particular cases of HFVRPTW
are listed below.
In the Multi-Depot VRP (MDVRP), the vehicles themselves are identical, they only differ
by being attached to different depots. It can be easily modeled as a HFVRP by associating each
depot to a vehicle type and setting costs cm and times tm for leaving the depot, together
m m (0,v) (0,v)
with costs c and times t for entering the depot, that depend on m ∈ M. The Site
(v,n+1) (v,n+1)
Dependent VRP (SDVRP), a variant where vehicles differ only by the subset of the customers
that they can visit, is also easily modeled as a HFVRP by setting infinite costs for cm if
(v,v0)
vehicle type m cannot visit either v or v0.
Theclassical Distance Constrained Vehicle Routing Problem (DCVRP) can also be solved as
a HFVRPTW.Inthisvariant, besides the capacity constraint, the route length is also forbidden
to be above a certain threshold D. Since service times are included in that “length”, this is
actually a time limit for returning to the depot. It can be modeled by setting time window [0,D]
for every v ∈ V .
2.2 Set Partitioning Formulation and Cuts
Let Ωm be the set of all feasible elementary routes for vehicle type m ∈ M. A set partitioning
formulation over those sets would lead to a hard pricing problem, probably intractable on large
instances. A more tractable (but weaker) formulation can be defined using a relaxed set of
routes that includes some non-elementary routes, i.e. routes in which some customers are visited
more than once. In this work we assume that the ng-route relaxation (Baldacci, Mingozzi, and
Roberti 2011), a route relaxation with a good tradeoff between formulation strength and pricing
difficulty, is being used. Let N ⊆ V0 be the neighborhood of v ∈ V0, typically containing the
v
closest customers to v. An ng-route can only revisit a customer v, forming a cycle, if the cycle
contains another customer v0 with v ∈/ N 0. In many cases, reasonably small neighborhoods (for
v
example, with |N | = 8) already provide bounds that are close to those that would be obtained
v
by pricing elementary routes (Poggi and Uchoa 2014, Contardo, Desaulniers, and Lessard 2015).
4
Let ΩN ⊇ Ωm be the set of ng-routes for vehicle type m ∈ M with respect to a given set
m
N P
of neighborhoods N = (N ,...,N ). We denote by c the cost of route P ∈ Ω , by x 0
1 n P P m (v,v )
0 P P
the number of times arc (v,v ) ∈ A appears in route P, and by y = + − x /2
v a∈δ ({v})∪δ ({v}) a
the number of times vertex v ∈ V0 is visited in route P (this “symmetric” definition of yP is
v
exploited in Section 3.6). Let λP be a binary variable indicating whether route P is selected or
not in the solution. The Set Partitioning Formulation (SPF) for the HFVRPTW considered in
this paper is the following.
(SPF) min X X c λ (1)
P P
m∈MP∈ΩN
m
subject to X X yPλP =1 ∀v ∈ V0, (2)
v
m∈MP∈ΩN
X m
λ ≤U ∀m∈M, (3)
P m
P∈ΩN
m
λ ∈{0,1} ∀m∈M,P ∈ΩN. (4)
P m
Acolumngeneration algorithm should be used to solve the linear relaxation of (1)-(4). However,
even using large neighborhoods (or even enforcing that all routes are elementary) the resulting
bounds are often not good enough for building an effective branch-and-price algorithm. There-
fore, the SPF should be reinforced by adding cuts.
Let C ⊆ V0 be a subset of the customers, define w(C) = P wv as its total demand. The
v∈C
value dw(C)/We is a valid lower bound on the number of vehicles that must visit C. Therefore,
the following Rounded Capacity Cut (RCC) (Laporte and Nobert 1983) is valid:
X X X P
m∈M N + − xaλP ≥2dw(C)/We. (5)
P∈Ωm a∈δ (C)∪δ (C)
RCCs are known to provide a significant reinforcement of the SPF on the CVRP (Fukasawa
et al. 2006). However, they do not work so well on many HFVRP and VRPTW instances. This
happens because the expression dw(C)/We, which depends only on the largest vehicle capacity
Wanddisregards time windows, can be a poor bound on the actual number of vehicles visiting
C. The coefficient of a variable λ in a RCC is given by a linear expression over the values of
P
xP. This means that RCCs are robust cuts (Pessoa, de Arag˜ao, and Uchoa 2008), such cuts do
a
not have any impact in the difficulty of the pricing subproblem.
Using a Chv´atal-Gomory rounding of a subset C ⊆ V0 of Constraints (2), relaxed to ≤, with
multipliers p (0 < p < 1), v ∈ C, the following valid Rank-1 Cut (R1C) is obtained:
v v
X X$XpyP%λ ≤$Xp%. (6)
v v P v
m∈MP∈ΩN v∈C v∈C
m
The Subset Row Cuts (SRCs) proposed in Jepsen et al. (2008) are the particular R1Cs with
multipliers p = 1/K, where K is an integer, for all v ∈ C. Recently, the optimal multiplier
v
vectors for R1Cs with up to five rows have been determined by Pecin et al. (2017c)
• For |C| = 3, (1, 1, 1).
2 2 2
• For |C| = 4, (2, 1, 1, 1) and its permutations.
3 3 3 3
• For |C| = 5, (1, 1, 1, 1, 1), (2, 2, 1, 1, 1), (3, 1, 1, 1, 1), (3, 2, 2, 1, 1), (1, 1, 1, 1, 1),
3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 2 2 2 2 2
(2, 2, 2, 1, 1), (3, 3, 2, 2, 1) and their permutations.
3 3 3 3 3 4 4 4 4 4
Theyareoptimal in the sense that they generate R1Cs that are equivalent or dominate the R1Cs
generated with any other multipliers. When non-elementary routes can be generated, one can
also apply cuts (6) with C = {v} and p = 1/2 for some v ∈ V0.
v
5
R1Cs are known to be very effective. However, because of the rounding down operator, the
P
coefficient of a variable λP in a R1C is not given by a linear expression over the values of x ,
a
so those cuts are non-robust. The concept of limited-memory for reducing the negative impact
of R1Cs in the pricing, first proposed in Pecin et al. (2014, 2017b), represented a breakthrough
in the performance of BCP algorithms for VRP. In this paper, we assume that the generalized
arc memory variant of the concept (Pecin et al. 2017a) is being used. Each R1C, indexed by `,
is associated to a customer subset C` ⊆ V0, a multiplier vector (p`)v∈C`, and an arc memory
v
set AM` with AM` ⊆ A. The idea is that, when a route P ∈ ΩN leaves the memory set, i.e.
m
follows an arc not in AM`, it “forgets” previous visits to nodes in C`, yielding a coefficient for
P ` P
λP in the cut ` that may be smaller than the original coefficient b ` p y c. The memory set
v∈C v v
AM` is defined during the cut separation procedure as a minimal set preserving the coefficients
of the route variables λP that have a positive value in the current linear relaxation solution.
Given C ⊆ V0, a multiplier vector p of dimension |C|, and a memory arc set AM ⊆ A, the
limited-arc-memory R1C cut is defined as:
X Xα(C,AM,p,P)λP ≤$Xpv% (7)
m∈MP∈ΩN v∈C
m
where the coefficient α(C,AM,p,P) of the route variable λP, P ∈ ΩN, is computed by the
m
following pseudocode:
Function α(C, AM, p, P = (v = 0,v ,...,v ,v =n+1))
0 1 k k+1
α←0,S←0;
for j = 1 to k do
if (v , v ) ∈/ AM then
j−1 j
S ←0;
if v ∈ C then
j
S ←S+p ;
v
j
if S ≥ 1 then
S ←S−1,α←α+1;
return α;
This function can be explained as follows. Whenever a route P visits a vertex v ∈ C,
the multiplier p is added to the state variable S. When S ≥ 1, S is decremented and α is
v P
incremented. If AM = A, the function returns b p yPc and the limited-memory cut would
v∈C v v
be equivalent to the original cut. On the other hand, if AM ⊂ A, it may happen that P
uses an arc not in AM when S > 0, causing the state S to be reset to zero and “forgetting”
some previous visits to nodes in C. In this case, the returned coefficient may be less than the
original coefficient. However, memory sets can be “corrected” in the next separation round. The
final linear relaxation bound obtainable with limited memory R1Cs is exactly that potentially
achieved with ordinary R1Cs.
2.3 Pricing Problem
We now define the pricing problem for the SPF over ng-routes and with additional RCCs and
limited-memory R1Cs, which decomposes into subproblems, one for each vehicle type. In the
N
subproblem for type m ∈ M, we search for a route P ∈ Ω with the minimum reduced cost. Let
m
J be the current set of active RCCs (5), and L be the current set of active limited memory R1Cs
(7). Each cut ∈ J is determined by a set C of customers. Each cut ` ∈ L is determined by
` ` `
the triple (C ,AM ,p ). Let (π,µ,ν,σ) be the current dual solution of the linear relaxation of
(1)-(4) with sets J and L of cuts added, where π corresponds to the partitioning constraints (2),
µ corresponds to Constraints (3), ν corresponds to the set J of active RCCs, and σ corresponds
6
m
to the set L of active limited memory R1Cs. Let c¯ (π,ν) be the vector of current arc reduced
costs, where X
m m πv πv0
c¯ 0 (π,ν) = c 0 − − − ν, (8)
(v,v ) (v,v ) 2 2
∈J:
(v,v0)∈δ+(C)∪δ−(C)
m
where π0 and πn+1 are defined as zero. The pricing subproblem (PSP ) for vehicle type m ∈ M
is then formulated as
X m X ` ` ` !
min c¯ (π,ν)− σ ·α(C ,AM ,p ,P)−µ .
N a ` m
P∈Ωm a∈P `∈L
3 Bucket Graph based Labeling Algorithm
3.1 SPPRCover Forward and Backward graphs
We now formulate the pricing problem defined in Section 2.3 as a SPPRC in a forward graph
~ ~ ~
G = (V,A) that is identical to G, so A = A. In this section we consider the dual solution
(π,µ,ν,σ) fixed and also drop index m for more clarity. Therefore, the reduced cost of an arc
~
a ∈ A is denoted simply as c¯ . Define a set of two resources R = {1,2} corresponding to vehicle
a
0 ~ 0
capacity and time. The capacity resource consumption of each arc (v,v ) ∈ A equals to wv and
the time resource consumption of the same arc equals to s +t 0 . For convenience, we use the
v (v,v )
~
same notation d for the resource consumption of an arc ~a ∈ A for both resources r ∈ R. Each
~a,r
vertex v ∈ V has lower and upper bounds l andu on the accumulated resource consumption
v,r v,r
to v of each resource r ∈ R. For the second resource (time) these bounds correspond to original
time windows. For the first (capacity) resource, we have l =0and u =W. To simplify
v,1 v,1
the notation, we often drop the resource index r to represent a vector with the corresponding
values for all resources in R, e.g. l = (l , . . . , l )>. Moreover, we use x y to denote the
v v,1 v,|R|
~
component-wise product of two vectors x and y. We always represent a forward path P in graph
~ ~ ~ ~ ~ ~ ~ ~
~ ~ P P P P P P P P
Gas defined by its arcs: P = (~a ,~a ,...,~a ), with ~a =(v , v ), v =0, v =n+1.
1 2 ~ j j−1 j 0 ~
|P| ~ |P|
For lightening the notation, we may drop the superscript P when it is clear from the context.
~ |R|
~ P
Path P yields a vector of accumulated resource consumptions qj ∈ IR at vertices that can be
computed as: (
l if j = 0;
~ 0 n o
qP = ~ (9)
j max qP +d , lv , otherwise
j−1 ~aj j
where the max denotes the component-wise maximum function of two vectors. A forward path
~
P is feasible if it respects
• the resource consumption bounds:
~
P ~
qj ≤ uv , ∀j ∈ {0,...,|P|}; (10)
j
• and ng-path neighborhoods:
~
∀(i,j) ∈ {(i,j) : 0 ≤ i < j ≤ |P|, v = v = v} ∃h: i < h < j, v 6∈ N . (11)
i j v
h
~
Condition (11) can be rewritten in the following way. Let FP be the set of vertices defined as
j
~ ~ ~ ~
P P P ~ P
F =∅andF =(F ∩N )∪{v }for all 1 ≤ j ≤ |P|. Then (11) is equivalent to v 6∈ F
0 j j−1 vj j j j−1
~
~ P ~
for all 1 ≤ j ≤ |P|. Let c¯ (π,µ,ν,σ) be the total reduced cost of path P:
~ X X
P ` ` ` ~
c¯ (π,µ,ν,σ) = c¯ (π,ν) − σ ·α(C ,AM ,p ,P)−µ.
~a `
~ `∈L
~a∈P
7
~
Let also P be the set of all feasible forward paths. The pricing subproblem then can be refor-
~
~ P
mulated as finding a path in P minimizing the total reduced cost: min~ ~ c¯ (π,µ,ν,σ). In the
P P∈P
remainder of this section, we use simplified notations c¯ and c¯ as the dual solution (π,µ,ν,σ)
a
is fixed.
~ ~ ~
Wenowdefine the backward graph G = (V,A) with source n+1 and sink 0. Set A contains
0 0 ~
one backward arc a~ = (v ,v) for each forward arc ~a = (v,v ) ∈ A. Each backward arc a ~ has the
same reduced cost c¯ = c¯ and same resource consumption d = d as the corresponding forward
a~ ~a a~ ~a
arc.
~ ~ ~
AbackwardpathP isdenotedbyP =(a~ ,a~ ,...,a~ ) in graph G, a ~ =(v , v ), v =n+1,
1 2 ~ j j−1 j 0
|P| ~
v ~ =0, possibly containing cycles, where we may add the superscript P if necessary as in the
|P| ~ |R|
forward graph. The accumulated consumption vector qP ∈ IR in P ~ is calculated recursively
j
as (
u , if j = 0;
~ n+1
qP = n P~ o
j min q −d , uv , otherwise.
a~ j
j−1 j
where the min denotes the component-wise minimum function of two vectors. Feasibility condi-
tions for a backward path P ~ are the same as for a forward path except that (10) is replaced by
P~ ~ ~
q ≥l , for all j ∈ {0,...,|P|}. We denote as P the set of all feasible backward paths. Sets
v
j j
P~ ~
Fj , 0 ≤ j ≤ |P|, are defined in the same way as for a forward path.
~ ~
It is easy to see that a forward path P belongs to P if and only if the corresponding backward
~ ~ ~ ~ 0 0 ~
path P belongs to P, where |P| = |P|, ~a = (v,v ) and a ~ =(v,v), 1 ≤ j ≤ |P|. Also, we
j |P|+1−j
~ ~
P P ~
have qj ≤ q ~ for 0 ≤ j ≤ |P|. An example of a pair of forward and backward paths together
|P|−j
with their consumption of one resource is given in Figure 1. Moreover, the total reduced costs
~ ~
of P and P are equal, as coefficients α(C,AM,p,P) do not change if we traverse path P in the
backward order in function α. Therefore the pricing problem defined in Section 2.3 can be also
reformulated as finding a path in P~ minimizing the total reduced cost.
vP~ vP~ vP~ vP~ vP~ vP~ vP~
6 5 4 3 2 1 0
qP u
j,1 v
l
v
~ ~
P( ) P( )
~ ~ ~ ~ ~ ~ ~
0 = vP vP vP vP vP vP vP =n+1
0 1 2 3 4 5 6
Figure 1: An example of a forward and the corresponding backward paths in the case of one
resource
~ ~
From now on, we use accent ◦ for a forward entity, accent ◦ for a backward entity, and no
accent for an entity which can be both forward or backward (when it is applied). We also use
~ ~
accent ◦◦ for an entity of the opposite sense.
8
3.2 Labels and Dominance Rule
L L L L L
WedevisealabelingalgorithmforthepreviouslydefinedSPPRCwhereeachlabelL = (c¯ ,vP,q ,F ,S )
corresponds to a partial forward or backward path P (partial means that we may have v 6∈
L P L P L P L P L |L| |P|
{0,n+1}), where c¯ = c¯ , v =v ,q =q ,F =F ,andS ∈IR givesthecurrent
|P| |P| |P|
state (computed as in Function α) of each cut ` ∈ L for label L.
0 0 0 0
0 L L L L L L L L
Alabel L dominates label L if v =v ,q ≤q (q ≥q forbackwardlabels),F ⊆F ,
and X
0
L L
c¯ − σ ≤c¯ , (12)
`
0
`∈L: SL>SL
` `
L L0
as σ` ≤ 0, ` ∈ L (Jepsen et al. 2008). Condition c¯ > c¯ is sufficient to verify that L does not
dominate L0.
3.3 Bucket Graph
A critical aspect of labeling algorithms that solve the previously described SPPRC is when to
performdominancechecks. Givenasetoflabelsthatpotentiallydominateeachother, dominance
checks may be performed for all pairs of labels. However, it can be prohibitively time consuming.
Alternatively, skipping too many dominance checks may cause a premature explosion on the
number of maintained labels. One approach to address this issue is to partition the labels into
buckets and to ensure that no pair of labels inside a bucket dominate each other. Pecin et al.
(2017b) followed this approach by defining buckets for every possible resource consumption of
labels and skipping inter-bucket dominance checks. In this paper we define buckets differently
in order to avoid resource discretisation. Also, we perform inter-bucket dominance checks, but
less frequently.
In the proposed labeling algorithm, labels are grouped into buckets based on their final
vertices and on ranges defined for both accumulated resource consumption values. Moreover,
we define bucket arcs connecting pairs of buckets through which the labels can be extended.
Different bucket graphs are then defined for forward and backward labeling. Bucket graphs are
useful because they help to determine an efficient order of treatment for the buckets. If the
bucket graph is acyclic, it is desirable to process the buckets in its topological order because
no further extension from a bucket is necessary after it has been processed. If the bucket
graph contains cycles, then buckets are handled in the topological order of the graph’s strongly
connected components, trying to minimize such reprocessing. Additionally, the bucket graph is
used to avoid label extensions that are proved not to contribute to a solution that improves the
current best one. This is achieved by removing arcs from the bucket graph based on a reduced
cost argument. In what follows, we present all the notation required to formalize these ideas.
˜
The set of buckets associated to a given vertex v ∈ V is determined by a step size d for
r
each resource r ∈ R. Let K be the set of all |R|-dimensional integer vectors such that the r-th
v
˜ ~
component belongs to {0,1,...,b(u −l )/d c}, r ∈ R. A forward bucket b is defined by a
v, r v, r r
˜ ˜
pair of vertex and lower bound vector (v˜ ,l ) = (v,l + κ d), v ∈ V , κ ∈ K . A forward label
~ ~ v v
b b
~ ~
~ ~ L ˜ L ˜ ˜
Lis contained in forward bucket b if v =v˜ and l ≤ q <l +d. Similarly, a backward bucket
~ ~ ~
b b b
~ ˜
b is defined by a pair of vertex and upper bound vector (v˜ ,u˜ ) = (v,u −κd), v ∈ V, κ ∈ K .
b ~ b ~ v v
~ ~ L~ L~ ˜ L
Abackward label L is contained in backward bucket b if v = v˜ ~ and u˜ ~ ≥ q >u˜ ~ − d. Let b
b b b
be the bucket containing label L.
b ˜ ˜
For a forward (backward) bucket b, let κ be the vector κ ∈ K such that l = l +κd
v˜ b v˜
b b
˜ 0
(u˜ =u −κd). Wesaythat bucket b is component-wise smaller than bucket b (denoted as
b v˜
b 0
0 0 b b
b ≺b) if buckets are of the same sense, v˜ =v˜ , and κ ≤κ.
b b
~ ~ ~ ~
Let B (B) be the set of all forward (backward) buckets. We define as Γ (Γ) the following set
of directed forward (backward) bucket arcs.
9
Each forward/backward bucket arc γ ∈ Γ is defined by a pair (b ,a ) of bucket and arc of the
γ γ
corresponding sense, b ∈ B, a ∈ A, and v˜ is the tail of a . The tail of a forward/backward
γ γ bγ γ
~ ˜ 0 0
bucket arc γ is bucket b . Set Γ contains ~γ if l +d ≤u ,where v is the head of ~a . The
γ ~ ~a v ~γ
b ~γ
~γ
~ head ~0 ~ 0
head of a forward bucket arc ~γ ∈ Γ, denoted by b , is the bucket b ∈ B such that v˜ 0 = v
~γ ~
b
˜ ˜ 0 ˜ ˜ ~ 0 0
and l 0 ≤ max l +d ,l <l 0 +d. Set Γ contains γ ~ if u˜ −d ≥l ,where v is the head
~ ~ ~a v ~ ~ a~ v
b b ~γ b b γ~
~γ γ~
head 0~ ~
of a ~ . The head of a backward bucket arc γ,~ denoted by b , is the bucket b ∈ B such that
γ~ γ~
0 0 ˜ ~ ~ ~ ~ ~ ~
v˜ 0 = v and u˜ 0 ≥ min u˜ −d ,u >u˜ 0 −d. Let B = (B,Γ) and B = (B,Γ) be the directed
~ ~ ~ a~ v ~
b b b γ~ b
γ~
forward and backward bucket graphs, respectively.
For each forward/backward bucket b ∈ B, we define the set Φb of “adjacent” component-wise
smaller buckets:
n 0 0 0 b0 b b0 b 0 o
Φ = b : v˜ =v˜ , ∃r ∈ R,κ 0 = κ 0 −1, κ = κ , ∀r ∈ R\{r } .
b b b r r r r
0 0 Φ Φ
~ ~
As |R| = 2, we have |Φb| ≤ 2. By definition, we have b ≺ b for all b ∈ Φb. Let Γ (Γ )
0 0
be the set of directed forward (backward) bucket arcs (b ,b) such that b ∈ B, b ∈ Φb. Let
~ Φ head
Φ ~ ~ ~ ~ ~
B =(B,φ(Γ)∪Γ )betheextended forward bucket graph, where φ(Γ) = {(b ,b ) : ~γ ∈ Γ}.
~γ ~γ
~
Φ Φ
~ ~ ~
Analogously, B = (B,φ(Γ) ∪ Γ ) is the extended backward bucket graph. Those extended
graphs are not used in the core of the labeling algorithm, they are needed only in the initialization
to compute their sets of strongly connected components and appropriate topological orders for
them. Let Cb be the strongly connected component of a forward/backward bucket b.
Forward/backward label L, obtained by extension from label L0 along a bucket arc γ with
0
bγ = bL , is not necessary contained in bucket bhead. For forward labels, this happens when
γ
L0 ˜ ˜
q +d ≥lhead +d , for some r ∈ R. The backward case is analogous. So, we may have
r aγ,r bγ ,r r
head L
bγ ≺ b . Even in this case, we still consider that such an extension has been made along
0
Φ L L
γ. The bucket arcs in Γ ensure that there is always a path from b to b in the extended
forward bucket graph. Therefore, C L cannot be before C 0 in the topological order of strongly
b bL
Φ
connected components in Γ .
v = 1 v = 3
source sink
v = 2 v = 4
Figure 2: An example of Forward Graph
Figure 3 shows a small extended bucket graph that corresponds to the forward graph depicted
in Figure 2. In this figure, each rectangle represents the space of possible resource consumption
vectors for partial paths finishing in a corresponding vertex. The consumptions of the first
and second resource determine the shifts in the horizontal and vertical directions, respectively.
Thus, each square is associated with two ranges for the consumptions of both resources whose
dimensions are determined by the bucket steps. Each node of the extended bucket graph is
~ ~Φ
depicted inside the corresponding square. The bucket arcs that belong to Γ and Γ correspond
to arrows between rectangles and between squares of the same rectangle, respectively. Finally,
an example of a strongly connected component of this extended bucket graph is bold printed in
the figure.
10
˜
bucket d1 v = 1 v = 3
steps
˜
d
2
source sink
u v = 2 v = 4
2,2
r = 2
l2,2
r = 1 u
l2,1 2,1
Figure 3: An example of Extended Bucket Graph for the forward graph of Figure 2
3.4 Mono-directional labeling algorithm
Inthissubsection, wedescribethemono-directionallabelingalgorithm, whichcanberunineither
forward or backward sense to solve the pricing problem. An auxiliary function Extend(L0,γ,L)
0
presented below extends a label L to label L along a bucket arc γ ∈ Γ. It returns false if this
extension is not possible. One can easily see that the steps performed by this function initialize
the reduced cost and the final vertex of the new label, calculate its resource consumptions and
check their bounds, obtain its ng-route information and check its feasibility, and finally update
its reduced cost considering the active R1Cs.
best
ThelabelingalgorithmispresentedinAlgorithm1. Inthisalgorithm, wemaintainvaluesc¯
b
equal to the smallest reduced cost of labels L such that bL b. It also uses the auxiliary function
DominatedInCompWiseSmallerBuckets(L,b,Bvisited) presented below, which checks whether a
0 0 0 visited
label L is dominated by a label contained in a bucket b such that b b, b 6∈ B . To avoid
best
checking all component-wise smaller buckets, it assumes that the values of c¯ are updated
b
L
(for all buckets preceding b in the topological order) and uses it to prune the search. If the
0 best L 0
search reaches a bucket b such that c¯ 0 >c¯ , one can conclude that no label in b or in the
b
component-wise smaller buckets can dominate L, and this search branch can be pruned. This
function also receives the set Bvisited of visited buckets needed to avoid processing the same
bucket twice. For our case with one or two resources it is easy to do a specific implementation
to verify whether a bucket belongs to set Bvisited in a constant time. The same implementation
can be used in Functions ConcatenateLabel and UpdateBucketsSet described later.
0 0
Twobucketsbandb suchthatb ∈ Φb maybelongtothesamestronglyconnectedcomponent.
This may happen, for example, when b and b0 are forward buckets and there is another forward
00 00 0 ˜0 ˜00 ˜
bucket b with v˜ 6=v˜ = v˜ such that l <l <l , for some r ∈ R. In that case, the
b b b b ,r b ,r b,r
0 00 00 0
extended bucket graph may contain the directed cycle ((b ,b),(b,b ),(b ,b )). Therefore values
best
c¯ for buckets in the same strongly connected component are calculated in a lexicographic
b
b best best
order of κ to ensure that c¯ 0 is set before c¯ .
b b
11
Function Extend(L0,γ,L)
0
L L L
c¯ ←c¯ +c¯ , v ←the head of a
aγ γ
0
qL ←qL
if L is a forward label then
qL ←max{qL+d ,l }
aγ vL
if qL > u then return false
vL
if L is a backward label then
qL ←min{qL−d ,u }
a L
γ v
if qL < l then return false
vL
0
if vL ∈ FL then return false
0
FL←(FL ∩N )∪{vL}
vL
for ` ∈ L do 0
if a ∈ AM` then SL ← SL
γ ` `
else SL ← 0
`
if vL ∈ C` then
L L `
S` ←S` +p L
v
if SL ≥ 1 then
`
L L L L
S ←S −1,c¯ ←c¯ −σ
` ` `
return true
3.5 Bi-directional labeling algorithm
~ ~
Wecall a pair of forward and backward labels L and L ω-compatible if
~ ~ ~ ~ ~ ~ ~ ~
vL 6= vL, qL +d ≤qL, FL∩FL=∅, andc¯(PL||PL)<ω,
~ ~
L L
(v ,v )
~ ~ ~ ~
where PL||PL is the path obtained by concatenation of partial paths PL and PL along arc
~ ~ ~ ~
L L ~ L L
(v ,v ) ∈ A, and its total reduced cost c¯(P ||P ) is calculated as
~ ~ ~ ~ X
L L L L
c¯(P ||P ) = c¯ +c¯ ~ ~ +c¯ − σ .
L L `
(v ,v )
~`∈L:~
SL+SL≥1
` `
~ ~ ~ ~
~ ~ L L L L
For a pair of forward and backward labels L and L such that v 6=v , c¯ +c¯ ~ ~ +c¯ is
L L
(v ,v )
~ ~
a lower bound on value c¯(PL||PL).
For the bi-directional labeling algorithm, we need to choose a resource r∗ ∈ R and a threshold
value q∗ ∈ [l ∗,u ∗] for it. The bi-directional labeling algorithm is presented in Algorithm 2.
0,r n+1,r
~ best visited
~ ~
It uses the auxiliary procedure ConcatenateLabel(L,b,P , B ), presented below, which
L~ L~ visited
~ ~ ~ ~ ~ ~ ~
tries to find a backward label L such that b b, b 6∈ B , and such that pair (L,L) is
best ~ ~ ~ ~
P L L L L
c¯ -compatible, i.e. concatenation of partial paths P and P along arc (v ,v ) improves on
best best
P . We use values c¯ as bounds to prune the search. From the reasoning of the previous
~ best
L best P
paragraph, if c¯ + c¯ ~ +c¯ ≥ c¯ then such a label does not exist. All buckets that
(vL,v˜ ) ~
b ~ b
~ best best
may contain extensions for L that improve on P are tried. In the literature, values c¯ ~ are
b
referred as completion bounds (Christofides, Mingozzi, and Toth 1981).
3.6 Symmetric case
In this section, we suppose that 1) all time windows are the same; and 2) R1Cs arc memories
are symmetric: (v,v0) ∈ AM` if and only if (v0,v) ∈ AM` for all ` ∈ L. We now show that in
this case the forward/backward route symmetry can be exploited.
12
Algorithm 1: Mono-directional labeling algorithm
if forward algorithm then Linit ← (0,0,l ,∅,0)
0
if backward algorithm then Linit ← (0,n+1,u , ∅, 0)
n+1
init
init L init
insert initial label L to its bucket b and mark L as non-extended
foreach strongly connected component C in BΦ in a topological order do
repeat
foreach bucket b ∈ C do 0 L0
foreach non-extended label L : b =bdo
0
0 L
if not DominatedInCompWiseSmallerBuckets(L ,b ,∅) then
0
foreach bucket arc γ ∈ Γ such that b = bL do
γ
0
if Extend(L ,γ,L) then
if L is not dominated by a label in bL then
mark L as non-extended and insert in bL
remove labels dominated by L from bL
mark L0 as extended
until all labels in all buckets b ∈ C are extended b
foreach bucket b ∈ C in a lexicographic order of κ do
best L 0 best
c¯ ←min min L {c¯ },min {c¯ 0 }
b L: b =b b ∈Φb b
best L 0
return P =argminPL:vL=v0 c¯ , where v is the sink in G
Function DominatedInCompWiseSmallerBuckets(L,b,Bvisited)
Bvisited ← Bvisited ∪ {b}
L best
if C precedes C L in the topological order used and c¯ < c¯ then return false
b b b
if b 6= bL and L is dominated by a label in bucket b then return true
for b0 ∈ Φb \ Bvisited do
if DominatedInCompWiseSmallerBuckets(L,b0,Bvisited) then return true
return false
First, we redefine the resource consumption of arcs. We make the capacity resource consump-
0 ~ 1 1 0
tion of each arc (v,v ) ∈ A equal to 2wv + 2wv , and we make the time resource consumption of
this arc equal to 1s + t 0 +1s 0. Thus, the cost and the resource consumption of two arcs
2 v (v,v ) 2 v
(v,v0) and (v0,v), v,v0 ∈ V , become the same. Moreover, as for any route P coefficients xP 0
(v,v )
and xP are the same in constraints (2) and cuts (5), reduced costs of these arcs are the same:
(v0,v)
c¯ 0 =c¯ 0 , ∀v,v0 ∈ V. (13)
(v,v ) (v ,v)
L~
~ ~ ~ ~
Consider now a backward label L and the corresponding partial path P = P . Let P be
~ ~
P P ~ ~
the partial forward path such that v =v , 1 ≤ j ≤ |P|, and L be the forward label such that
j j
~
~L ~
P =P. From (13) and from the fact that the R1Cs arc memories are symmetric, we have
~ ~ ~ ~ ~ ~
L L L L L L
c¯ =c¯ , F =F ,and S =S . As time windows are the same, resource bounds are also the
~ ~
same: [l ,u ] = [l,u] for all v ∈ V . Then, qL −l = u−qL. Moreover, for every backward bucket
v v
~ ~
~ ~ ˜ b b
b, there exists a symmetric forward bucket b such that l −l = u−u˜ and κ = κ .
~ ~
b b
In this case (which we call symmetric), in the bi-directional labeling algorithm, we set q∗ =
1l ∗ +1u ∗, skip the backward labeling step, and use symmetric forward buckets and labels
2 0,r 2 n+1,r
instead of backward buckets and labels in the concatenation step.
13
Algorithm 2: Bi-directional labeling algorithm
~
~ L ∗
run forward labeling algorithm where only labels L, q ∗ ≤ q are kept
r
~ L~ ∗
run backward labeling algorithm where only labels L, q ∗ > q , are kept
r
let Pbest be the best complete path obtained in the two algorithms above
~
foreach forward label L do
~
~ ~ ~L
foreach bucket arc ~γ ∈ Γ such that b = b do
~γ
~0
~ ~0 L ∗
if Extend(L,~γ,L ) and q ∗ > q then
r
~0
~ ~ L ˜
let b ∈ B be the bucket such that u˜ ~ ≥ q >u˜ ~ − d
b b
~ ~ best
ConcatenateLabel(L,b,P , ∅)
return Pbest
~ best visited
~ ~
Procedure ConcatenateLabel(L,b,P , B )
visited visited ~
B~ ←B~ ∪{b}
best Pbest
if c¯ +c¯ ~ +c¯ ≥c¯ then return
~ L ~
L (v ,v˜ ) b
b~
foreach label L~ : b ~ = b ~ do
L
~ ~ Pbest
if pair (L,L) is c¯ -compatible then
~ ~
Pbest ← P , ~a = (vL,vL), P
~ ~
L L
0~ visited
foreach b ∈ Φ ~ \B~ do
b
0~ best visited
~ ~
ConcatenateLabel(L,b ,P , B )
return
4 Bucket arc elimination
Arc elimination procedure by Irnich et al. (2010) can be employed to remove arcs from the
original graph using the argument that any path using one of these arcs is not contributing to
an optimal solution. In this section, we generalize this procedure to eliminate bucket arcs from
the bucket graph using the same argument. However, this generalization is not straightforward
because of the dominance between labels. Even labels from the same bucket may use different
bucket arcs when extended through the same path in the original graph. Hence, the same path
extension may be feasible for the dominated label and not feasible for the dominating label due
to removal of some bucket arcs. We introduce below the new concept of jump bucket arcs to
bring back compatibility between bucket arc elimination and dominance.
We call a path P ∈ Ωm, m ∈ M, improving if λP participates in an integer solution of the
original problem (SPF) with a cost smaller than the cost of the best solution found so far. We
denote the latter cost as UB, as it is an upper bound on the optimal solution value of (SPF).
Let ΩI be the set of improving paths in Ωm. We can exclude paths proved to be non-improving
m
from the solution space of the pricing problem. Note that if there are no improving paths (i.e.,
the best known solution is optimal) any path can be correctly excluded, so we only need to be
careful in the case where some ΩI sets are not empty. So, we assume that case in the remainder
m
of the section.
Suppose that some variables λP, P 6∈ ΩI , are fixed to zero in (SPF). Let (π¯,µ,¯ ν¯,σ¯) be the
m